亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? upsd3400_upsd_usb.c

?? uPSD34xx Disk driver
?? C
?? 第 1 頁 / 共 2 頁
字號:
   {
    ep1state = US_EPSTALL;                   //EP halt
    USEL     = OUTDIR | SELEP1;
    UCON    |= STALL;
   }
  else
   {
    STALL_EP0();
    return;
   }

  TransmitZeroLengthEP0();
 }





void OnSetAddress()
/******************************************************************************
 Function   : void OnSetAddress()
 Parameters : none
 Description: Handler for SET_ADDRESS packets
 ******************************************************************************/
 {
  usbState = US_ADDRESSED;
  TransmitZeroLengthEP0();
 }





void OnGetDescriptor()
/******************************************************************************
 Function   : void OnGetDescriptor()
 Parameters : none
 Description: Handler for GET_DESCRIPTOR() requests
 ******************************************************************************/
 {
  data unsigned int bytesRequested;

  switch (setupPacket.wValue.hi)
   {
    case DT_DEVICE:
     {
      pTransmitBufferEP0 = (unsigned char*) &deviceDesc;
      bytesToTransmitEP0 = sizeof(deviceDesc);
      break;
     }

    case DT_CONFIGURATION:
     {
      pTransmitBufferEP0 = (unsigned char*) &configDesc;
      bytesToTransmitEP0 = configDesc.wTotalLength.lo;
      break;
     }

    case DT_STRING:
     {
      pTransmitBufferEP0 = (unsigned char*) stringDescTable[setupPacket.wValue.lo<4?setupPacket.wValue.lo:4];
      bytesToTransmitEP0 = *pTransmitBufferEP0;         // choose requested string
      break;
     }

    default:
     {
      STALL_EP0();                        // Unrecognized descriptor, so stall EP0
      return;
     }
   }

  bytesRequested = (setupPacket.wLength.hi << 8) | setupPacket.wLength.lo;
  if (bytesToTransmitEP0 > bytesRequested)
   {
    bytesToTransmitEP0 = bytesRequested;  //adjust size if host wants shorter data
   }

  UCON &= ~TOGGLE;                           // Set DATA0
  TransmitEP0();
 }










void OnSetDescriptor()
/******************************************************************************
 Function   : void OnSetDescriptor()
 Parameters : none
 Description: Handler for SET_DESCRIPTOR request
 ******************************************************************************/
 {
  STALL_EP0();
 }








void OnGetConfiguration()
/******************************************************************************
 Function   : void OnGetConfiguration()
 Parameters : none
 Description: Handler for GET_CONFIGURATION request
 ******************************************************************************/
 {

  USEL        = INDIR | SELEP0;              //select EP0 OUT
  UCON       |= TOGGLE;                      //Expect DATA1
  USB_FIFO[0] = confignum;

  USIZE       = 1;
  bytesToTransmitEP0 = 0x00;
 }







void OnSetConfiguration()
/******************************************************************************
 Function   : void OnSetConfiguration()
 Parameters : none
 Description: Handler for SET_CONFIGURATION requests.
 ******************************************************************************/
 {
 //Suba 05/18/2005-added the following code to comply chap 9 test
 if ((setupPacket.wValue.lo == 0)||(setupPacket.wValue.lo == 1) )
  {	//if set configuration command is issued with a 1 set the state; if it is 
  //issued with a 1 or 0, send NULL packet and store config value sent.
   if (setupPacket.wValue.lo == 1)
   	usbState = US_CONFIGURED;
   TransmitZeroLengthEP0();
   confignum = setupPacket.wValue.lo;
  }
  else//all other values send request error by stalling endpoint 0.
    STALL_EP0();                             // stall EP0
 }

	 //Suba 05/18/2005 - commented out the following code as it failed chap9 test
            

 // if (setupPacket.wValue.lo == 0)     // configuration value is 0 => address state
 //  {
 //   if (usbState == US_CONFIGURED)
//     {
//      TransmitZeroLengthEP0();
//     }
//    usbState = US_ADDRESSED;
//   }
//  else
//  if (setupPacket.wValue.lo == 1)            // corresponds to configuration value
 //  {
 //   if (usbState != US_CONFIGURED)
  //   {
// Bulk transactions are initialized to DATA0
// when the endpoint is configured by an appropriate control transfer.
// The host will also start the first bulk transaction with DATA0.
// This recovery after STALL sets the data toggle bit to DATA0 for the endpoint
// on both the host and the device.
/*

      USEL   = OUTDIR | SELEP3;              //Select EP3 OUT
      UCON   = ENABLE_FIFO | EPFIFO_BSY;
      USIZE  = 0;

      USEL   = INDIR | SELEP1;               //Select EP1 IN
      UCON   = ENABLE_FIFO;

      UIE1  |= IN1IE;                        //Enable EP1 IN INT
      UIE2  |= OUT3IE;                       //Enable EP3 OUT INT


//      USEL   = OUTDIR | SELEP3;            //Select EP0 OUT
//      USIZE  = 0;                          //flush FIFO

      UIF1  &= ~IN1F;                        //clear INT Flag
      UIF2  &= ~OUT3F;                       //clear INT Flag
      */
 //     usbState  = US_CONFIGURED;
 //    }
 //   confignum = setupPacket.wValue.lo;
 //   TransmitZeroLengthEP0();
//    OnDeviceConfigured();
 //  }
//  else
//   {
//    STALL_EP0();                             // stall EP0
//   }
//}






void OnGetInterface()
/******************************************************************************
 Function   : void OnGetInterface()
 Parameters : none
 Description: Handler for GET_INTERFACE request
 ******************************************************************************/
 {

  USEL  = INDIR | SELEP0;                    //select EP0 OUT
  UCON |= TOGGLE;                            //Expect DATA1
  USIZE = 0;                                 //zero length data
 }








void OnSetInterface()
/******************************************************************************
 Function   : void OnSetInterface()
 Parameters : none
 Description: Handler for SET_INTERFACE() requests.
 ******************************************************************************/
 {
  if (setupPacket.wValue.lo == 0)
   {
    TransmitZeroLengthEP0();                 //zero length data
   }
  else
   {
    STALL_EP0();
   }
 }







void UsbInitialize()
/******************************************************************************
 Function   : void UsbInitialize()
 Parameters : none
 Description: USB driver module initialization routine.
 ******************************************************************************/
 {
  data unsigned int count;

  UCTL &= ~VISIBLE;                          // Disable USB FIFO in RAM area

  CCON1  &= ~0x07;            //CPUCLK prescaler = 1; only for silicon revision #0

/*                                             //Set PLL clk
  CCON0 |= 0xE0;                             //PLL enable
  CCON1 = 0x68;                              //40MHz, PLLM=22, PLLD=8

  CCON0 |= 0xE0;                             //PLL enable
  CCON1  = 0xE9;                             //33MHz, PLLM=30, PLLD=9

  CCON0 |= 0x70;                             //PLL enable
  CCON1  = 0xE3;                             //30MHz, PLLM=14, PLLD=3

  CCON0 |= 0xE0;                             //PLL enable
  CCON1  = 0x23;                             //24MHz, PLLM=18, PLLD=3

  CCON0 |= 0xE0;                             //PLL enable
  CCON1  = 0x63;                             //20MHz, PLLM=22, PLLD=3

  CCON0  |= 0xE0;                            //PLL enable
  CCON1   = 0xC3;                            //16MHz, PLLM=28, PLLD=3

  CCON0  |= 0xE0;                            //PLL enable
  CCON1   = 0xE2;                            //12MHz, PLLM=18, PLLD=2

  CCON0  |= 0xE0;                            //PLL enable
  CCON1   = 0xE0;                            //6MHz, PLLM=18, PLLD=0

  CCON0  |= 0xE0;                            //PLL enable
  CCON1   = 0xEF;                            //3MHz, PLLM=18, PLLD=-1
  */

#ifdef DK3400
  CCON0 |= 0xE0;                             //PLL enable
  CCON1  = 0x68;                             //40MHz, PLLM=22, PLLD=8
#else //DK3420)
  CCON0 |= 0xE0;                             //PLL enable
  CCON1  = 0x23;                             //24MHz, PLLM=18, PLLD=3
#endif

  for (count=0; count<1000; count++)         // (wait 200us min.)
   {
    ACC = 0;                                 //now wait for PLL output is stabilized
   }

  IP     = 0;                                //USB interrupt has the highest priority!!!
  IPA    = 1;                                
  IEA   |= 0x01;                             // Enable USB Interrupt
  EA     = 1;

  UBASEH = USB_BASE_ADDR >> 8;               // Set USB FIFO base address
  UBASEL = USB_BASE_ADDR;                    // Set USB FIFO base address
  UCTL  |= VISIBLE;                          // Enable USB FIFO in RAM area

  remotewakeupen = 0x01;

  OnUsbReset();

  UCTL &= ~VISIBLE;                          // Disable USB FIFO in RAM area
 }















void ReadSetupPacket(void)
/******************************************************************************
 Function   : ReadSetupPacket()
 Parameters : none
 Description: Reads a setup packet from USB Setup Command Register.
 ******************************************************************************/
 {
  data unsigned char i;
  unsigned char* p = (unsigned char*) &setupPacket;

  USTA &= ~SETUP;                            // Clear setup bit in USTA

  for (i=0; i<8; i++)
   {
    USCI = i;
    *p++ = USCV;
   }

  return;
 }








void OnSetupPacket()
/******************************************************************************
 Function   : void OnSetupPacket()
 Parameters : none
 Description: Handler for SETUP packets received on EP0.
              Handle standard request and Mass Storage class request.
 ******************************************************************************/
 {
  if ((setupPacket.bmRequestType & 0x60) == 0)               //Standard request...
   {
    switch (setupPacket.bRequest)            // Standard request
     {
      case GET_STATUS:        OnGetStatus();        break;
      case CLEAR_FEATURE:     OnClearFeature();     break;
      case SET_FEATURE:       OnSetFeature();       break;
      case SET_ADDRESS:       OnSetAddress();       break;
      case GET_DESCRIPTOR:    OnGetDescriptor();    break;
      case SET_DESCRIPTOR:    OnSetDescriptor();    break;
      case GET_CONFIGURATION: OnGetConfiguration(); break;
      case SET_CONFIGURATION: OnSetConfiguration(); break;
      case GET_INTERFACE:     OnGetInterface();     break;
      case SET_INTERFACE:     OnSetInterface();     break;
      default:
      break;
     }
   }

/* Class request specific commands */
  else
  if (setupPacket.bmRequestType & 0x20)
   {
    if ((setupPacket.bmRequestType == CLASS_INTERFACE_TO_HOST)
    && (setupPacket.bRequest == 0xFE))       //Get Max LUN
     {
/*
      Get Max LUN (class-specific request)
      The device may implement several logical units that share common device characteristics.
      The host uses bCBWLUN to designate which logical unit of the device is the
      destination of the CBW. The Get Max LUN device request is used to determine
      the number of logical units supported by the device.
      Logical Unit Numbers on the device shall be numbered contiguously starting
      from LUN 0 to a maximum LUN of 15 (Fh).
      The device shall return one byte of data that contains the maximum LUN supported
      by the device.
      We have no LUN is associated with the device, the value returned is 0.
      */
      USEL        = INDIR | SELEP0;          //select EP0 OUT
      UCON       |= TOGGLE;                  //Expect DATA1
      USB_FIFO[0] = 0x00;                    //no LUN associated with the device
      USIZE       = 1;
     }
    else
    if ((setupPacket.bmRequestType == CLASS_INTERFACE_TO_DEVICE)
    && (setupPacket.bRequest == 0xFF))       //Bulk-Only Mass Storage Reset
     {
/*
      Bulk-Only Mass Storage Reset (class-specific request)
      This request is used to reset the mass storage device and its associated
      interface.This class-specific request shall ready the device for the next
      CBW from the host.The host shall send this request via the default pipe to
      the device. The device shall preserve the value of its bulk
      data toggle bits and endpoint STALL conditions despite the Bulk-Only Mass
      Storage Reset.
      The device shall NAK the status stage of the device request until the Bulk-Only
      Mass Storage Reset is complete.
      */
     }
   }
  else
   {
    STALL_EP0();                // It's not a request we handle, so stall endpoint
   }

  return;
 }


/* *************************************************************************
  ***                                                                      ***
  **                         *** End of File ***                            **
  ***                                                                      ***
   *************************************************************************  */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩日日骚| 色天天综合色天天久久| 综合亚洲深深色噜噜狠狠网站| 欧美日韩精品免费观看视频| 成人综合婷婷国产精品久久免费| 午夜精品福利一区二区三区av| 国产精品拍天天在线| 日韩视频免费观看高清完整版| 99re热这里只有精品免费视频| 国产一区欧美日韩| 91蜜桃免费观看视频| 久久激情五月激情| 五月天欧美精品| 亚洲综合成人在线视频| 国产精品国产三级国产aⅴ原创| 欧美刺激午夜性久久久久久久| 欧美美女黄视频| 在线观看欧美精品| 色天天综合久久久久综合片| 成人91在线观看| 亚洲精品乱码久久久久久黑人| 99热国产精品| 国产经典欧美精品| 精品一区二区三区香蕉蜜桃| 日本欧洲一区二区| 午夜免费久久看| 午夜精品久久久久久久久久| 亚洲色图在线播放| 亚洲欧美视频在线观看视频| 国产精品久久久久四虎| 国产精品理伦片| 国产精品每日更新| 国产精品色在线观看| 国产精品污网站| 中文字幕日韩欧美一区二区三区| 中文字幕欧美激情| 中文字幕av一区 二区| 欧美经典一区二区三区| 中文字幕免费在线观看视频一区| 久久久www成人免费无遮挡大片| 久久综合成人精品亚洲另类欧美| 久久日韩粉嫩一区二区三区| 日本一区二区综合亚洲| 日韩一区有码在线| 一区二区三区四区在线| 欧美刺激午夜性久久久久久久| 麻豆91精品视频| 蜜桃av一区二区| 久久狠狠亚洲综合| 国产精品一区不卡| 9i在线看片成人免费| 欧洲av一区二区嗯嗯嗯啊| 欧美精品色综合| 精品粉嫩aⅴ一区二区三区四区| 久久久久久免费网| 中文字幕一区免费在线观看| 亚洲另类在线一区| 婷婷久久综合九色综合伊人色| 日韩电影免费一区| 精品一区二区久久| 99久久久精品| 91麻豆精品国产91久久久久久| 精品999在线播放| 国产精品国产三级国产aⅴ中文| 一级中文字幕一区二区| 色先锋久久av资源部| 欧美一级视频精品观看| 久久精品日韩一区二区三区| 亚洲人成精品久久久久| 日韩av网站免费在线| 国产精品99久久久久久有的能看| 暴力调教一区二区三区| 国产精品一区二区在线观看不卡| 青青青伊人色综合久久| 高清国产午夜精品久久久久久| 91久久精品国产91性色tv| 日韩一级片在线观看| 欧美国产精品久久| 天堂蜜桃一区二区三区| 成人一区二区三区中文字幕| 欧美日韩成人高清| 国产精品美女久久福利网站| 日韩电影在线观看网站| 99精品久久99久久久久| 91精品婷婷国产综合久久| 中文字幕亚洲区| 蜜乳av一区二区| 欧日韩精品视频| 国产精品色哟哟| 麻豆精品一区二区| 在线观看一区二区精品视频| 久久久久久久久久久久电影| 午夜精品久久久久久久蜜桃app| 成人精品视频一区| 日韩欧美另类在线| 亚洲一二三四久久| 成人自拍视频在线观看| 91精品国产综合久久久蜜臀粉嫩 | 亚洲午夜一区二区| 精品中文字幕一区二区| 91亚洲永久精品| 久久亚洲欧美国产精品乐播| 偷拍与自拍一区| 色悠久久久久综合欧美99| 国产日韩欧美一区二区三区综合| 日韩精品成人一区二区三区 | 精品久久久久久最新网址| 亚洲黄色录像片| 成人免费毛片aaaaa**| 日韩精品一区在线| 午夜精品福利在线| 欧美在线综合视频| 成人免费一区二区三区在线观看| 国产成人精品亚洲日本在线桃色| 日韩欧美中文一区| 美女一区二区视频| 欧美一区二区在线免费播放| 亚洲成人激情自拍| 欧美亚洲精品一区| 成人免费观看男女羞羞视频| 久久综合色综合88| 韩国av一区二区三区四区| 91麻豆精品国产91久久久更新时间| 国产日韩欧美精品在线| 欧美一区二区视频观看视频| 亚洲午夜精品网| 在线中文字幕一区| 亚洲精品视频自拍| 91尤物视频在线观看| ㊣最新国产の精品bt伙计久久| 国产99久久久精品| 国产精品美女久久久久久久| 成人网在线播放| 亚洲视频小说图片| 在线精品视频小说1| 亚洲高清免费观看高清完整版在线观看| 色婷婷激情一区二区三区| 一区精品在线播放| 色婷婷综合视频在线观看| 伊人一区二区三区| 欧美日本一道本| 久久电影国产免费久久电影 | 亚洲三级理论片| 色偷偷久久一区二区三区| 亚洲一区二区三区四区中文字幕| 欧美三级三级三级| 免费三级欧美电影| 国产欧美精品一区二区色综合 | 免费高清在线视频一区·| 日韩亚洲欧美在线观看| 精品国产乱码久久久久久免费| 精品国产91乱码一区二区三区| 精品午夜一区二区三区在线观看| 日韩午夜精品视频| 国产在线不卡视频| 国产精品久久看| 欧美在线视频你懂得| 午夜成人免费电影| 日韩一区二区精品葵司在线 | 精品无人码麻豆乱码1区2区| 久久综合色8888| 成人ar影院免费观看视频| 一区二区三区精品久久久| 欧美精品欧美精品系列| 国产精品18久久久| 亚洲电影中文字幕在线观看| 日韩久久久久久| 99re这里只有精品首页| 日韩成人免费电影| 国产精品久99| 欧美精品久久天天躁| 国产精品自拍毛片| 亚洲激情欧美激情| 精品国产一二三区| 91浏览器在线视频| 老司机精品视频线观看86| 中文字幕乱码日本亚洲一区二区| 91精彩视频在线观看| 免费成人在线观看视频| 中文字幕一区二区不卡| 日韩免费电影一区| 国产999精品久久久久久绿帽| 色欧美乱欧美15图片| 亚洲成人你懂的| 精品剧情v国产在线观看在线| 成人激情免费电影网址| 午夜电影一区二区三区| 国产欧美日韩激情| 欧美一区二区三区成人| 91一区在线观看| 精品亚洲欧美一区| 午夜精品久久久久久久久久| 中文字幕中文字幕在线一区| 日韩一区二区三区视频| 91黄色免费观看| 丁香五精品蜜臀久久久久99网站| 日本 国产 欧美色综合| 艳妇臀荡乳欲伦亚洲一区| 欧美国产禁国产网站cc| 精品国产一二三区|