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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? usb_core.h

?? STM32F10x USB Library V1.0
?? H
字號:
/******************** (C) COPYRIGHT 2007 STMicroelectronics ********************
* File Name          : usb_core.h
* Author             : MCD Application Team
* Version            : V1.0
* Date               : 10/08/2007
* Description        : Standard protocol processing functions prototypes
********************************************************************************
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __USB_CORE_H
#define __USB_CORE_H

/* Includes ------------------------------------------------------------------*/
/* Exported types ------------------------------------------------------------*/
typedef enum _CONTROL_STATE
{
  WAIT_SETUP,       /* 0 */
  SETTING_UP,       /* 1 */
  IN_DATA,          /* 2 */
  OUT_DATA,         /* 3 */
  LAST_IN_DATA,     /* 4 */
  LAST_OUT_DATA,    /* 5 */
  WAIT_STATUS_IN,   /* 7 */
  WAIT_STATUS_OUT,  /* 8 */
  STALLED,          /* 9 */
  PAUSE             /* 10 */
} CONTROL_STATE;    /* The state machine states of a control pipe */

typedef struct OneDescriptor
{
  u8 *Descriptor;
  u16 Descriptor_Size;
}
ONE_DESCRIPTOR, *PONE_DESCRIPTOR;
/* All the request process routines return a value of this type
   If the return value is not SUCCESS or NOT_READY,
   the software will STALL the correspond endpoint */
typedef enum _RESULT
{
  USB_SUCCESS = 0,    /* Process sucessfully */
  USB_ERROR,
  USB_UNSUPPORT,
  USB_NOT_READY       /* The process has not been finished, endpoint will be
                         NAK to further rquest */
} RESULT;


/*-*-*-*-*-*-*-*-*-*-* Definitions for endpoint level -*-*-*-*-*-*-*-*-*-*-*-*/
typedef struct _ENDPOINT_INFO
{
  /* When send data out of the device,
   CopyData() is used to get data buffer 'Length' bytes data
   if Length is 0,
    CopyData() returns the total length of the data
    if the request is not supported, returns 0
    (NEW Feature )
     if CopyData() returns -1, the calling routine should not proceed
     further and will resume the SETUP process by the class device
   if Length is not 0,
    CopyData() returns a pointer to indicate the data location
   Usb_wLength is the data remain to be sent,
   Usb_wOffset is the Offset of original data
  When receive data from the host,
   CopyData() is used to get user data buffer which is capable
   of Length bytes data to copy data from the endpoint buffer.
   if Length is 0,
    CopyData() returns the available data length,
   if Length is not 0,
    CopyData() returns user buffer address
   Usb_rLength is the data remain to be received,
   Usb_rPointer is the Offset of data buffer
  */
  u16  Usb_wLength;
  u16  Usb_wOffset;
  u16  PacketSize;
  u8   *(*CopyData)(u16 Length);
}
ENDPOINT_INFO;

/*-*-*-*-*-*-*-*-*-*-*-* Definitions for device level -*-*-*-*-*-*-*-*-*-*-*-*/

typedef struct _DEVICE
{
  u8 Total_Endpoint;     /* Number of endpoints that are used */
  u8 Total_Configuration;/* Number of configuration available */
}
DEVICE;

typedef union
{
  u16 w;
  struct BW
  {
    u8 bb1;
    u8 bb0;
  }
  bw;
} u16_u8;

typedef struct _DEVICE_INFO
{
  u8 USBbmRequestType;       /* bmRequestType */
  u8 USBbRequest;            /* bRequest */
  u16_u8 USBwValues;         /* wValue */
  u16_u8 USBwIndexs;         /* wIndex */
  u16_u8 USBwLengths;        /* wLength */

  u8 ControlState;           /* of type CONTROL_STATE */
  u8 Current_Feature;
  u8 Current_Configuration;   /* Selected configuration */
  u8 Current_Interface;       /* Selected interface of current configuration */
  u8 Current_AlternateSetting;/* Selected Alternate Setting of current
                                     interface*/

  ENDPOINT_INFO Ctrl_Info;
}
DEVICE_INFO;

typedef struct _DEVICE_PROP
{
  void (*Init)(void);        /* Initialize the device */
  void (*Reset)(void);       /* Reset routine of this device */

  /* Device dependent process after the status stage */
  void (*Process_Status_IN)(void);
  void (*Process_Status_OUT)(void);

  /* Procedure of process on setup stage of a class specified request with data stage */
  /* All class specified requests with data stage are processed in Class_Data_Setup
   Class_Data_Setup()
    responses to check all special requests and fills ENDPOINT_INFO
    according to the request
    If IN tokens are expected, then wLength & wOffset will be filled
    with the total transferring bytes and the starting position
    If OUT tokens are expected, then rLength & rOffset will be filled
    with the total expected bytes and the starting position in the buffer

    If the request is valid, Class_Data_Setup returns SUCCESS, else UNSUPPORT

   CAUTION:
    Since GET_CONFIGURATION & GET_INTERFACE are highly related to
    the individual classes, they will be checked and processed here.
  */
  RESULT (*Class_Data_Setup)(u8 RequestNo);

  /* Procedure of process on setup stage of a class specified request without data stage */
  /* All class specified requests without data stage are processed in Class_NoData_Setup
   Class_NoData_Setup
    responses to check all special requests and perform the request

   CAUTION:
    Since SET_CONFIGURATION & SET_INTERFACE are highly related to
    the individual classes, they will be checked and processed here.
  */
  RESULT (*Class_NoData_Setup)(u8 RequestNo);

  /*Class_Get_Interface_Setting
   This function is used by the file usb_core.c to test if the selected Interface
   and Alternate Setting (u8 Interface, u8 AlternateSetting) are supported by
   the application.
   This function is writing by user. It should return "SUCCESS" if the Interface
   and Alternate Setting are supported by the application or "UNSUPPORT" if they
   are not supported. */

  RESULT  (*Class_Get_Interface_Setting)(u8 Interface, u8 AlternateSetting);

  u8* (*GetDeviceDescriptor)(u16 Length);
  u8* (*GetConfigDescriptor)(u16 Length);
  u8* (*GetStringDescriptor)(u16 Length);

  u8* RxEP_buffer;
  u8 MaxPacketSize;

}
DEVICE_PROP;

typedef struct _USER_STANDARD_REQUESTS
{
  void (*User_GetConfiguration)(void);       /* Get Configuration */
  void (*User_SetConfiguration)(void);       /* Set Configuration */
  void (*User_GetInterface)(void);           /* Get Interface */
  void (*User_SetInterface)(void);           /* Set Interface */
  void (*User_GetStatus)(void);              /* Get Status */
  void (*User_ClearFeature)(void);           /* Clear Feature */
  void (*User_SetEndPointFeature)(void);     /* Set Endpoint Feature */
  void (*User_SetDeviceFeature)(void);       /* Set Device Feature */
  void (*User_SetDeviceAddress)(void);       /* Set Device Address */
}
USER_STANDARD_REQUESTS;

/* Exported constants --------------------------------------------------------*/
#define Type_Recipient (pInformation->USBbmRequestType & (REQUEST_TYPE | RECIPIENT))

#define Usb_rLength Usb_wLength
#define Usb_rOffset Usb_wOffset

#define USBwValue USBwValues.w
#define USBwValue0 USBwValues.bw.bb0
#define USBwValue1 USBwValues.bw.bb1
#define USBwIndex USBwIndexs.w
#define USBwIndex0 USBwIndexs.bw.bb0
#define USBwIndex1 USBwIndexs.bw.bb1
#define USBwLength USBwLengths.w
#define USBwLength0 USBwLengths.bw.bb0
#define USBwLength1 USBwLengths.bw.bb1

/* Exported macro ------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */
u8 Setup0_Process(void);
u8 Post0_Process(void);
u8 Out0_Process(void);
u8 In0_Process(void);

RESULT Standard_SetEndPointFeature(void);
RESULT Standard_SetDeviceFeature(void);

u8 *Standard_GetConfiguration(u16 Length);
RESULT Standard_SetConfiguration(void);
u8 *Standard_GetInterface(u16 Length);
RESULT Standard_SetInterface(void);
u8 *Standard_GetDescriptorData(u16 Length, PONE_DESCRIPTOR pDesc);

u8 *Standard_GetStatus(u16 Length);
RESULT Standard_ClearFeature(void);
void SetDeviceAddress(u8);
void NOP_Process(void);

extern DEVICE_PROP Device_Property;
extern  USER_STANDARD_REQUESTS User_Standard_Requests;
extern  DEVICE  Device_Table;
extern DEVICE_INFO Device_Info;

/* cells saving status during interrupt servicing */
extern u16 SaveRState;
extern u16 SaveTState;

#endif /* __USB_CORE_H */

/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久88色综合天天6 | 精品三级在线看| 亚洲一级二级三级在线免费观看| 中文字幕在线一区二区三区| 国产精品伦理在线| 一区二区高清在线| 男女男精品视频| 亚洲在线观看免费视频| 亚洲午夜激情网站| 亚洲成av人片www| 亚洲sss视频在线视频| 洋洋成人永久网站入口| 1024成人网| 玉足女爽爽91| 亚洲午夜精品网| 日日摸夜夜添夜夜添亚洲女人| 午夜电影网亚洲视频| 亚洲国产一区二区三区青草影视 | 欧美喷水一区二区| 色综合久久综合网| 欧洲精品一区二区三区在线观看| 色天天综合色天天久久| 在线不卡a资源高清| 欧美色区777第一页| 色噜噜久久综合| 精品视频一区二区不卡| 日韩欧美不卡在线观看视频| 欧美xxxxx裸体时装秀| 日本一区二区免费在线| 久久久久综合网| 中文字幕欧美一| 亚洲国产成人tv| 麻豆成人91精品二区三区| 精品一区二区三区在线视频| 久久国产精品99久久人人澡| 国产高清在线精品| 波多野结衣亚洲| 在线观看国产一区二区| 欧美乱妇15p| 久久一区二区三区四区| 国产精品区一区二区三| 一级中文字幕一区二区| 日韩不卡免费视频| 97久久精品人人做人人爽| 欧美精品在线视频| 亚洲免费资源在线播放| 日本美女一区二区三区| 91精品福利视频| 日韩理论片中文av| 国产激情一区二区三区| 日韩网站在线看片你懂的| 亚洲影视在线播放| 日本精品一级二级| 亚洲另类在线视频| 国产露脸91国语对白| 日韩欧美国产一二三区| 亚洲福利一区二区三区| 91首页免费视频| 亚洲欧洲国产日本综合| 成人丝袜18视频在线观看| 欧美激情一区二区三区| 激情六月婷婷综合| 欧美大度的电影原声| 日韩高清不卡在线| 日韩欧美一二三| 捆绑紧缚一区二区三区视频| 91精品国产色综合久久不卡蜜臀| 亚洲成av人片在线| 欧美va亚洲va香蕉在线| 国产揄拍国内精品对白| 国产日韩欧美综合一区| www.欧美精品一二区| 亚洲精品国久久99热| 欧美裸体bbwbbwbbw| 蜜桃av噜噜一区| 中文字幕精品一区二区三区精品| 高清成人免费视频| 洋洋成人永久网站入口| 日韩欧美一区二区三区在线| 国产乱子伦视频一区二区三区| 中文字幕精品在线不卡| 欧美精品免费视频| 国产成人精品免费视频网站| 综合久久综合久久| 制服丝袜一区二区三区| 日韩和的一区二区| 国产精品视频麻豆| 日韩一区二区在线观看| 91亚洲精华国产精华精华液| 久久精品二区亚洲w码| 国产精品每日更新在线播放网址| 欧美日韩电影在线播放| 国产suv精品一区二区三区| 丝瓜av网站精品一区二区| 国产精品久久久久影视| 欧美大片在线观看| 欧美亚洲禁片免费| 99久久99久久精品免费观看| 国产一区二区三区香蕉| 日韩中文字幕区一区有砖一区 | 亚洲三级视频在线观看| 久久免费电影网| 欧美日韩免费在线视频| 99久精品国产| 9l国产精品久久久久麻豆| 国模冰冰炮一区二区| 日韩电影在线观看一区| 亚洲图片欧美一区| 亚洲色欲色欲www在线观看| 久久久www免费人成精品| 宅男在线国产精品| 在线不卡欧美精品一区二区三区| 北岛玲一区二区三区四区| 国产在线精品一区二区不卡了| 国产成人av电影在线观看| 狠狠色狠狠色合久久伊人| 免费人成黄页网站在线一区二区| 日韩av在线发布| 精品制服美女丁香| 国产自产视频一区二区三区| 国产精品99久久久久久似苏梦涵| 一区二区欧美精品| ...xxx性欧美| 一区二区三区小说| 亚洲天堂福利av| 成人欧美一区二区三区小说| 国产精品人成在线观看免费 | 欧美美女一区二区| 欧美人与禽zozo性伦| 欧美一区中文字幕| 久久久久久久久久久99999| 日韩一区二区精品| 国产色产综合产在线视频| 色88888久久久久久影院按摩| 欧美日韩在线不卡| 日韩精品一区二区三区四区| 精品久久久久香蕉网| 国产精品久久久久久久午夜片| 亚洲人精品午夜| 日韩精品高清不卡| 成人av在线资源网站| 色噜噜狠狠色综合中国| 91麻豆精品国产91久久久| 国产亚洲成av人在线观看导航| 一区二区三区在线免费播放 | 日本伦理一区二区| 久久久99精品久久| 免费观看在线综合| 欧美日韩五月天| 中文字幕亚洲欧美在线不卡| 美女免费视频一区二区| 欧美性猛交xxxx乱大交退制版| 亚洲国产高清aⅴ视频| 久久99精品国产91久久来源| 96av麻豆蜜桃一区二区| 日韩精品一区在线观看| 最新国产成人在线观看| 久久99热狠狠色一区二区| 91蝌蚪porny成人天涯| 国产精品色眯眯| 国产v综合v亚洲欧| 日韩精品一区二区三区在线观看| 亚洲第一久久影院| 在线亚洲高清视频| 亚洲品质自拍视频| 成人av网站在线| 国产精品久久久久久久久搜平片| 激情图区综合网| 26uuu亚洲综合色| 精品中文字幕一区二区小辣椒| 91麻豆精品国产91久久久更新时间| 午夜视频久久久久久| 欧美性猛交xxxx乱大交退制版| 亚洲综合自拍偷拍| 欧美一区三区四区| 免费人成精品欧美精品| 2024国产精品视频| 国产精品一区二区视频| 中文字幕在线一区免费| 欧美伊人久久大香线蕉综合69| 亚洲欧洲日韩在线| 这里只有精品99re| 成人黄色综合网站| 亚洲男帅同性gay1069| 3d动漫精品啪啪一区二区竹菊 | 亚洲免费观看高清在线观看| 色天使色偷偷av一区二区| 日韩国产欧美三级| 久久精品一区八戒影视| 成人午夜视频福利| 午夜精品久久久久久久99水蜜桃| 欧美疯狂性受xxxxx喷水图片| 日本成人在线网站| 国产精品久99| 国产偷v国产偷v亚洲高清| 成a人片亚洲日本久久| 亚洲成人免费影院| 亚洲国产精品成人久久综合一区| 欧洲日韩一区二区三区| 粉嫩13p一区二区三区|