35 typedef enum _CONTROL_STATE
52 uint16_t Descriptor_Size;
96 uint8_t *(*CopyData)(uint16_t Length);
103 uint8_t Total_Endpoint;
104 uint8_t Total_Configuration;
121 uint8_t USBbmRequestType;
127 uint8_t ControlState;
128 uint8_t Current_Feature;
129 uint8_t Current_Configuration;
130 uint8_t Current_Interface;
131 uint8_t Current_AlternateSetting;
143 void (*Process_Status_IN)(void);
144 void (*Process_Status_OUT)(void);
162 RESULT (*Class_Data_Setup)(uint8_t RequestNo);
173 RESULT (*Class_NoData_Setup)(uint8_t RequestNo);
183 RESULT (*Class_Get_Interface_Setting)(uint8_t Interface, uint8_t AlternateSetting);
185 uint8_t* (*GetDeviceDescriptor)(uint16_t Length);
186 uint8_t* (*GetConfigDescriptor)(uint16_t Length);
187 uint8_t* (*GetStringDescriptor)(uint16_t Length);
193 uint8_t MaxPacketSize;
199 void (*User_GetConfiguration)(void);
200 void (*User_SetConfiguration)(void);
201 void (*User_GetInterface)(void);
202 void (*User_SetInterface)(void);
203 void (*User_GetStatus)(void);
204 void (*User_ClearFeature)(void);
205 void (*User_SetEndPointFeature)(void);
206 void (*User_SetDeviceFeature)(void);
207 void (*User_SetDeviceAddress)(void);
212 #define Type_Recipient (pInformation->USBbmRequestType & (REQUEST_TYPE | RECIPIENT))
214 #define Usb_rLength Usb_wLength
215 #define Usb_rOffset Usb_wOffset
217 #define USBwValue USBwValues.w
218 #define USBwValue0 USBwValues.bw.bb0
219 #define USBwValue1 USBwValues.bw.bb1
220 #define USBwIndex USBwIndexs.w
221 #define USBwIndex0 USBwIndexs.bw.bb0
222 #define USBwIndex1 USBwIndexs.bw.bb1
223 #define USBwLength USBwLengths.w
224 #define USBwLength0 USBwLengths.bw.bb0
225 #define USBwLength1 USBwLengths.bw.bb1
229 uint8_t Setup0_Process(
void);
230 uint8_t Post0_Process(
void);
231 uint8_t Out0_Process(
void);
232 uint8_t In0_Process(
void);
234 RESULT Standard_SetEndPointFeature(
void);
235 RESULT Standard_SetDeviceFeature(
void);
237 uint8_t *Standard_GetConfiguration(uint16_t Length);
238 RESULT Standard_SetConfiguration(
void);
239 uint8_t *Standard_GetInterface(uint16_t Length);
240 RESULT Standard_SetInterface(
void);
241 uint8_t *Standard_GetDescriptorData(uint16_t Length, PONE_DESCRIPTOR pDesc);
243 uint8_t *Standard_GetStatus(uint16_t Length);
244 RESULT Standard_ClearFeature(
void);
245 void SetDeviceAddress(uint8_t);
246 void NOP_Process(
void);
250 extern DEVICE Device_Table;
254 extern __IO uint16_t SaveRState;
255 extern __IO uint16_t SaveTState;