Norimasa Okamoto
/
lpc1549-USBROM_msc_example
USB Device ROM Stack API example program
Embed:
(wiki syntax)
Show/hide line numbers
usb.h
00001 #ifndef _USB_H_ 00002 #define _USB_H_ 00003 00004 typedef enum { 00005 LPC_OK=0, 00006 } ErrorCode_t; 00007 00008 typedef uint32_t USBD_HANDLE_T; 00009 typedef void* USB_CB_T; 00010 typedef void* USB_PARAM_CB_T; 00011 00012 typedef struct _USB_CORE_DESCS_T { 00013 const uint8_t *device_desc; 00014 const uint8_t *string_desc; 00015 const uint8_t *full_speed_desc; 00016 const uint8_t *high_speed_desc; 00017 const uint8_t *device_qualifier; 00018 } USB_CORE_DESCS_T; 00019 00020 typedef struct USBD_API_INIT_PARAM { 00021 uint32_t usb_reg_base; 00022 uint8_t* mem_base; 00023 uint32_t mem_size; 00024 uint8_t max_num_ep; 00025 uint8_t pad0[3]; 00026 USB_CB_T USB_Reset_Event; 00027 USB_CB_T USB_Suspend_Event; 00028 USB_CB_T USB_Resume_Event; 00029 USB_CB_T reserved_sbz; 00030 USB_CB_T USB_SOF_Event; 00031 USB_PARAM_CB_T USB_WakeUpCfg; 00032 USB_PARAM_CB_T USB_Power_Event; 00033 USB_PARAM_CB_T USB_Error_Event; 00034 USB_CB_T USB_Configure_Event; 00035 USB_CB_T USB_Interface_Event; 00036 USB_CB_T USB_Feature_Event; 00037 uint32_t (* virt_to_phys)(void* vaddr); 00038 void (* cache_flush)(uint32_t* start_adr, uint32_t* end_adr); 00039 } USBD_API_INIT_PARAM_T; 00040 00041 typedef struct USBD_HW_API { 00042 uint32_t (*GetMemSize)(USBD_API_INIT_PARAM_T* param); 00043 ErrorCode_t (*Init)(USBD_HANDLE_T* phUsb, USB_CORE_DESCS_T* pDesc, USBD_API_INIT_PARAM_T* param); 00044 void (*Connect)(USBD_HANDLE_T hUsb, uint32_t con); 00045 void (*ISR)(USBD_HANDLE_T hUsb); 00046 } USBD_HW_API_T; 00047 00048 typedef struct USBD_CORE_API { 00049 void* dummy; 00050 //TODO 00051 } USBD_CORE_API_T; 00052 00053 typedef struct USBD_MSC_INIT_PARAM { 00054 uint8_t* mem_base; 00055 uint32_t mem_size; 00056 const uint8_t* InquiryStr; 00057 uint32_t BlockCount; 00058 uint32_t BlockSize; 00059 uint32_t MemorySize; 00060 const uint8_t* intf_desc; 00061 void (*MSC_Write)(uint32_t offset, uint8_t** src, uint32_t length, uint32_t high_offset); 00062 void (*MSC_Read)(uint32_t offset, uint8_t** dst, uint32_t length, uint32_t high_offset); 00063 ErrorCode_t (*MSC_Verify)(uint32_t offset, uint8_t buf[], uint32_t length, uint32_t high_offset); 00064 void (*MSC_GetWriteBuf)(uint32_t offset, uint8_t** buff_adr, uint32_t length, uint32_t high_offset); 00065 ErrorCode_t (*MSC_Ep0_Hdlr)(USBD_HANDLE_T hUsb, void* data, uint32_t event); 00066 uint64_t MemorySize64; 00067 } USBD_MSC_INIT_PARAM_T; 00068 00069 typedef struct USBD_MSC_API { 00070 uint32_t (*GetMemSize)(USBD_MSC_INIT_PARAM_T* param); 00071 ErrorCode_t (*init)(USBD_HANDLE_T hUsb, USBD_MSC_INIT_PARAM_T* param); 00072 } USBD_MSC_API_T; 00073 00074 typedef struct USBD_HID_API { 00075 void* dummy; 00076 // TODO 00077 } USBD_HID_API_T; 00078 typedef struct USBD_CDC_API { 00079 void* dummy; 00080 // TODO 00081 } USBD_CDC_API_T; 00082 00083 typedef struct USBD_API { 00084 const USBD_HW_API_T* hw; 00085 const USBD_CORE_API_T* core; 00086 const USBD_MSC_API_T* msc; 00087 const void* dfu; 00088 const USBD_HID_API_T* hid; 00089 const USBD_CDC_API_T* cdc; 00090 const uint32_t* reserved6; 00091 uint32_t version; 00092 } USBD_API_T; 00093 00094 typedef struct _ROM { 00095 const USBD_API_T * pUSBD; 00096 } ROM; 00097 00098 extern USBD_API_T* pUsbApi; 00099 extern USBD_HANDLE_T hUsb; 00100 00101 extern uint32_t USBD_MSC_MemorySize; 00102 extern uint32_t USBD_MSC_BlockSize; 00103 extern uint32_t USBD_MSC_BlockGroup; 00104 extern uint32_t USBD_MSC_BlockCount; 00105 extern uint8_t* USBD_MSC_BlockBuf; 00106 extern uint8_t USBD_MSC_MediaReady; 00107 00108 #endif // _USB_H_
Generated on Wed Jul 13 2022 18:15:15 by 1.7.2