AG903ライブラリリファレンス
内容インデックスホーム
Body Source
本文ソース
1: 9: 10: 14: #ifndef __USBH_API_H__ 15: #define __USBH_API_H__ 16: 17: 18: 19: 20: 21: 22: 23: #include "uhs_type.h" 24: #include "depend_cfg.h" 25: #include "open_usbdi.h" 26: #include "wrapper_kernel.h" 27: #include "usbc_api.h" 28: 29: 50: struct usbh_overcurrent_info { 51: struct usbd_usb_deviceinfo *usbhub; 52: uhs_ubit8_t port_num; 53: uhs_ubit8_t ovcr_kind; 54: }; 55: 56: 57: struct usbh_split_err_notify_info { 58: 59: struct usbd_usb_spliterrinfo *split_err_info; 61: }; 62: 63: 64: 67: 68: 69: typedef struct usbd_usb_deviceinfo *PUSB_DEVICE; 70: 71: 72: typedef enum { 73: DEV_TYPE_NONE, 74: DEV_TYPE_OTHER, 75: DEV_TYPE_ROOT, 76: DEV_TYPE_HUB, 77: DEV_TYPE_STOR, 78: DEV_TYPE_CDC, 79: DEV_TYPE_HID 80: } DEVICE_TYPE; 81: 82: 85: 86: 87: 90: 91: 92: typedef enum _usb_logtype { 93: USB_MSGMON_LOGTYPE_ANALYSIS, 94: USB_MSGMON_LOGTYPE_NORMALOP 95: } usb_logtype; 96: 97: 98: 101: typedef struct _usb_msgformat { 102: uhs_ubit8_t msglayer; 103: uhs_ubit8_t msgsublayer; 104: uhs_ubit8_t msgtype; 105: uhs_ubit8_t msglevel; 106: uhs_ubit16_t msgdata; 107: uhs_ubit16_t extdatasize; 108: void * extdata; 109: SYSTIM rcvdtime; 110: } usb_msgformat; 111: 112: 113: 117: uhs_ubit8_t msgsublayer; 118: uhs_ubit8_t msgtype; 119: uhs_ubit8_t msglevel; 120: uhs_ubit16_t msgdata; 121: uhs_ubit16_t extdatasize; 122: void * extdata; 123: SYSTIM rcvdtime; 124: } usb_simple_msgformat; 125: 126: 127: 128: typedef enum _usb_msglayer { 129: USB_MSGMON_LAYER_USBH_HCD, 130: USB_MSGMON_LAYER_USBH_CORE, 131: USB_MSGMON_LAYER_USBH_CLASSDRIVER, 132: USB_MSGMON_LAYER_USBH_FILESYSTEM 133: } usb_msglayer; 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: typedef enum _usb_msgsublayer_hcd { 144: USB_MSGMON_SUBLAYER_HCD_OHCI, 145: USB_MSGMON_SUBLAYER_HCD_EHCI 146: } usb_msgsublayer_hcd; 147: 148: 149: typedef enum _usb_msgsublayer_clsdrv { 150: USB_MSGMON_SUBLAYER_CLSDRV_STOR, 151: USB_MSGMON_SUBLAYER_CLSDRV_HUB, 152: USB_MSGMON_SUBLAYER_CLSDRV_CDC, 153: USB_MSGMON_SUBLAYER_CLSDRV_HID 154: } usb_msgsublayer_clsdrv; 155: 156: 157: 158: 159: 160: 161: typedef enum _usg_msglevel { 162: USB_MSGMON_MSGLVL_MILESTONE, 163: USB_MSGMON_MSGLVL_ERROR, 164: USB_MSGMON_MSGLVL_WARNING 165: } usb_msglevel; 166: 167: 168: 169: 170: #define USBHC_ILLEGAL_ERROR (1) 171: 172: #define USBHC_RESOURCE_UNAVAIL (2) 173: 174: #define USBHC_INVALID_PARAMETER (3) 175: 180: 181: #define USBHC_EHCI_INIT_COMP (1) 182: 183: #define USBHC_EHCI_EXIT_COMP (2) 184: 185: #define USBHC_DEVICE_CONNECT (3) 186: 187: #define USBHC_DEVICE_DISCONNECT (4) 188: 189: #define USBHC_EHCI_PORTPOWER_ON (5) 190: 191: #define USBHC_EHCI_PORTPOWER_OFF (6) 192: 193: 194: 195: #define USBC_INVALID_ADDRESS (1) 196: 197: #define USBC_INVALID_INTERFACE (2) 198: 199: #define USBC_INVALID_ENDPOINT (3) 200: 201: #define USBC_INVALID_PIPE (4) 202: 203: #define USBC_INVALID_PARAMETER (5) 204: 205: #define USBC_PIPE_HALT_ERROR (6) 206: 207: #define USBC_NO_BANDWIDTH (7) 208: 209: #define USBC_INIT_ERROR (8) 210: 211: #define USBC_HOST_INIT_ERROR (9) 212: 213: #define USBC_ILLEGAL_ERROR (10) 214: 215: #define USBC_RESOURCE_UNAVAIL (11) 216: 217: #define USBC_BUS_SUSPEND (12) 218: 219: #define USBC_REQUEST_QUEUE_FULL (13) 220: 221: 222: 223: #define USBC_INIT_COMP (1) 224: 225: #define USBC_EXIT_COMP (2) 226: 227: #define USBC_ENUM_START (3) 228: 229: #define USBC_ENUM_END (4) 230: 231: 232: 233: #define USBCLS_HUB_DETECT_OVERCURRENT (1) 234: 235: #define USBCLS_HUB_ILLEGAL_ERROR (2) 236: 237: #define USBCLS_HUB_RESOURCE_UNAVAIL (3) 238: 239: #define USBCLS_HUB_INVALID_PARAMETER (4) 240: 241: #define USBCLS_HUB_IMPORTANT_ERROR (5) 242: 243: #define USBCLS_HUB_INVALID_STATUS (6) 244: 245: #define USBCLS_HUB_OVERCONN (7) 246: 247: 248: 249: #define USBCLS_HUB_INIT_COMP (1) 250: 251: #define USBCLS_HUB_EXIT_COMP (2) 252: 253: #define USBCLS_HUB_DEVICE_CONNECTED (3) 254: 255: #define USBCLS_HUB_DEVICE_DISCONNECTED (4) 256: 257: #define USBCLS_HUB_DEVICE_CONNECT_NG (5) 258: 259: 260: 261: 264: 265: 266: 267: 268: 269: #define USBH_ASSERT_MEM_TOPID (0x00010000) 270: 271: #define USBH_ASSERT_MEM_CREATE (USBH_ASSERT_MEM_TOPID | 0x00000001) 272: 273: #define USBH_ASSERT_MEM_ALLOC (USBH_ASSERT_MEM_TOPID | 0x00000002) 274: 275: #define USBH_ASSERT_MEM_FREE (USBH_ASSERT_MEM_TOPID | 0x00000003) 276: 277: #define USBH_ASSERT_MEM_DELETE (USBH_ASSERT_MEM_TOPID | 0x00000004) 278: 279: 280: #define USBH_ASSERT_SEM_TOPID (0x00020000) 281: 282: #define USBH_ASSERT_SEM_CREATE (USBH_ASSERT_SEM_TOPID | 0x00000001) 283: 284: #define USBH_ASSERT_SEM_ACQU (USBH_ASSERT_SEM_TOPID | 0x00000002) 285: 286: #define USBH_ASSERT_SEM_REL (USBH_ASSERT_SEM_TOPID | 0x00000003) 287: 288: #define USBH_ASSERT_SEM_DELETE (USBH_ASSERT_SEM_TOPID | 0x00000004) 289: 290: 291: #define USBH_ASSERT_EVF_TOPID (0x00030000) 292: 293: #define USBH_ASSERT_EVF_CREATE (USBH_ASSERT_EVF_TOPID | 0x00000001) 294: 295: #define USBH_ASSERT_EVF_SET (USBH_ASSERT_EVF_TOPID | 0x00000002) 296: 297: #define USBH_ASSERT_EVF_WAIT (USBH_ASSERT_EVF_TOPID | 0x00000003) 298: 299: #define USBH_ASSERT_EVF_DELETE (USBH_ASSERT_EVF_TOPID | 0x00000004) 300: 301: 302: #define USBH_ASSERT_DTQ_TOPID (0x00040000) 303: 304: #define USBH_ASSERT_DTQ_CREATE (USBH_ASSERT_DTQ_TOPID | 0x00000001) 305: 306: #define USBH_ASSERT_DTQ_SND (USBH_ASSERT_DTQ_TOPID | 0x00000002) 307: 308: #define USBH_ASSERT_DTQ_RCV (USBH_ASSERT_DTQ_TOPID | 0x00000003) 309: 310: #define USBH_ASSERT_DTQ_DELETE (USBH_ASSERT_DTQ_TOPID | 0x00000004) 311: 312: 313: #define USBH_ASSERT_TIM_TOPID (0x00050000) 314: 315: #define USBH_ASSERT_TIM_GET (USBH_ASSERT_TIM_TOPID | 0x00000001) 316: 317: #define USBH_ASSERT_TIM_WAIT (USBH_ASSERT_TIM_TOPID | 0x00000002) 318: 319: 320: #define USBH_ASSERT_CYC_TOPID (0x00060000) 321: 322: #define USBH_ASSERT_CYC_CREATE (USBH_ASSERT_CYC_TOPID | 0x00000001) 323: 324: #define USBH_ASSERT_CYC_INACT (USBH_ASSERT_CYC_TOPID | 0x00000002) 325: 326: #define USBH_ASSERT_CYC_DELETE (USBH_ASSERT_CYC_TOPID | 0x00000003) 327: 328: 329: #define USBH_ASSERT_THREAD_TOPID (0x00070000) 330: 331: #define USBH_ASSERT_THREAD_CREATE (USBH_ASSERT_THREAD_TOPID | 0x00000001) 332: 333: #define USBH_ASSERT_THREAD_EXIT (USBH_ASSERT_THREAD_TOPID | 0x00000002) 334: 335: #define USBH_ASSERT_THREAD_DELETE (USBH_ASSERT_THREAD_TOPID | 0x00000003) 336: 337: 338: #define USBH_ASSERT_MBOX_TOPID (0x00080000) 339: 340: #define USBH_ASSERT_MBOX_CREATE (USBH_ASSERT_MBOX_TOPID | 0x00000001) 341: 342: #define USBH_ASSERT_MBOX_SND (USBH_ASSERT_MBOX_TOPID | 0x00000002) 343: 344: #define USBH_ASSERT_MBOX_RCV (USBH_ASSERT_MBOX_TOPID | 0x00000003) 345: 346: #define USBH_ASSERT_MBOX_DELETE (USBH_ASSERT_MBOX_TOPID | 0x00000004) 347: 348: 349: #define USBH_ASSERT_INT_TOPID (0x00090000) 350: 351: #define USBH_ASSERT_INT_REG (USBH_ASSERT_INT_TOPID | 0x00000001) 352: 353: #define USBH_ASSERT_INT_ENA (USBH_ASSERT_INT_TOPID | 0x00000002) 354: 355: #define USBH_ASSERT_INT_DIS (USBH_ASSERT_INT_TOPID | 0x00000003) 356: 357: #define USBH_ASSERT_INT_UNREG (USBH_ASSERT_INT_TOPID | 0x00000004) 358: 359: 360: 361: 362: typedef int (*usb_class_init_callback_t)(void * stCallback); 363: 364: 365: 366: 375: typedef struct _app_callback_info { 376: 377: class_driver_type clsdrv_type; 378: usb_common_callback_t attach_callback; 379: usb_common_callback_t detach_callback; 380: usb_class_init_callback_t class_ini_callback; 381: uhs_boolean_t is_lastnode; 382: 383: } app_callback_info; 384: 385: 386: 390: typedef struct _usbh_regist_info { 391: 392: 393: 394: usb_common_callback_t overload_callback; 395: usb_common_callback_t status_notify_callback; 396: usb_common_callback_t split_err_notify_callback; 397: usb_common_callback_t assert_callback; 398: usb_logtype logtype; 399: 400: 401: 402: app_callback_info * app_callback; 403: 404: } usbh_regist_info; 405: 406: 407: extern uhs_status_t Usbh_Init( usbh_regist_info init ); 408: extern uhs_status_t Usbh_Exit( void ); 409: extern uhs_status_t Usbh_Api_RegistAppCallback( usbh_regist_info init ); 410: extern uhs_status_t Usbh_Api_DriverRegister(struct class_driver_reginfo * driver_info); 411: extern void Usbh_Api_DriverUnRegister(struct class_driver_reginfo * driver_info); 412: extern uhs_status_t Usbh_Api_OpenPipe(struct usb_control_block* ucb); 413: extern uhs_status_t Usbh_Api_ClosePipe(struct usb_control_block* ucb); 414: extern uhs_status_t Usbh_Api_ControlMsg(struct usb_control_block* ucb); 415: extern uhs_status_t Usbh_Api_BulkMsg(struct usb_control_block* ucb); 416: extern uhs_status_t Usbh_Api_IntMsg(struct usb_control_block* ucb); 417: extern uhs_status_t Usbh_Api_SyncControlMsg(struct usb_control_block* ucb, const udi_ubit8_t bmRequestType, const udi_ubit8_t bRequest, 418: const udi_ubit8_t wValue0, const udi_ubit8_t wValue1, const udi_ubit8_t wIndex0, const udi_ubit8_t wIndex1, void *buf, const uhs_ubit32_t size); 419: extern uhs_status_t Usbh_Api_SyncBulkMsg( struct usb_control_block* ucb ); 420: extern uhs_status_t Usbh_Api_CancelPipe(struct usb_control_block* ucb); 421: extern uhs_status_t Usbh_Api_GetDescriptor(struct usb_control_block* ucb, struct usbd_usb_deviceinfo* usbdev, const uhs_ubit8_t type, const uhs_ubit8_t index, const uhs_ubit16_t wIndex, void *buf, const uhs_ubit32_t size); 422: extern uhs_status_t Usbh_Api_SetDescriptor(struct usb_control_block* ucb, struct usbd_usb_deviceinfo* usbdev, const uhs_ubit8_t type, const uhs_ubit8_t index, const uhs_ubit16_t wIndex, void *buf, const uhs_ubit32_t size); 423: extern uhs_status_t Usbh_Api_ClearFeature(struct usb_control_block* ucb, struct usbd_usb_deviceinfo* usbdev, const uhs_ubit8_t bmRequest, const uhs_ubit16_t feature_select, const uhs_ubit16_t wIndex); 424: extern uhs_status_t Usbh_Api_SetFeature(struct usb_control_block* ucb, struct usbd_usb_deviceinfo* usbdev, const uhs_ubit8_t bmRequest, const uhs_ubit16_t feature_select, const uhs_ubit16_t wIndex); 425: extern uhs_status_t Usbh_Api_GetStatus(struct usb_control_block* ucb, struct usbd_usb_deviceinfo* usbdev, const uhs_ubit8_t bmRequest, const uhs_ubit16_t wIndex, void *buf); 426: extern uhs_status_t Usbh_Api_SetAddress(struct usb_control_block* ucb, struct usbd_usb_deviceinfo* usbdev, const uhs_ubit16_t address); 427: extern uhs_status_t Usbh_Api_GetConfiguration(struct usb_control_block* ucb, struct usbd_usb_deviceinfo* usbdev, void *buf); 428: extern uhs_status_t Usbh_Api_SetConfiguration(struct usb_control_block* ucb, struct usbd_usb_deviceinfo* usbdev, const uhs_ubit16_t config_num); 429: extern uhs_status_t Usbh_Api_GetInterface(struct usb_control_block* ucb, struct usbd_usb_deviceinfo* usbdev, const uhs_ubit16_t wIndex, void *buf); 430: extern uhs_status_t Usbh_Api_SetInterface(struct usb_control_block* ucb, struct usbd_usb_deviceinfo* usbdev, const uhs_ubit16_t intf_num, const uhs_ubit16_t alt_num); 431: extern uhs_status_t Usbh_Api_AllocUsbCtrlBlock(struct usb_control_block ** ucb); 432: extern uhs_status_t Usbh_Api_FreeUsbCtrlBlock(struct usb_control_block * ucb); 433: extern void Usbh_Api_FixupUsbCtrlBlock(struct usb_control_block * ucb, struct usbd_usb_deviceinfo* usbdev, const uhs_ubit32_t pipe, usb_device_request_t *setup_data, void *data_buf, const uhs_ubit32_t data_len, const uhs_ubit8_t interval, usb_common_callback_t complete_func, void *context); 434: extern void Usbh_Api_FixupPipeInfo( uhs_ubit32_t *pipe, const uhs_ubit8_t usb_addr, const uhs_ubit8_t ep_num, const uhs_ubit8_t packet_id, const uhs_ubit8_t ep_type, const uhs_ubit32_t maxpkt_size); 435: extern uhs_boolean_t Usbh_Api_PipeIsOpened(struct usb_control_block* ucb); 436: extern uhs_ubit32_t Usbh_Api_GetPipeAddr(const uhs_ubit32_t pipe); 437: extern uhs_ubit32_t Usbh_Api_GetPipeEpNum(const uhs_ubit32_t pipe); 438: extern uhs_ubit32_t Usbh_Api_GetPipePID(const uhs_ubit32_t pipe); 439: extern uhs_boolean_t Usbh_Api_GetPipeDirIn(const uhs_ubit32_t pipe); 440: extern uhs_ubit32_t Usbh_Api_GetPipeEpType(const uhs_ubit32_t pipe); 441: extern uhs_ubit32_t Usbh_Api_GetPipeMaxPktSize(const uhs_ubit32_t pipe); 442: extern uhs_ubit8_t Usbh_Api_GetPortPower(struct usbd_usb_deviceinfo *usbhub, const uhs_ubit8_t port_num); 443: extern void Usbh_Api_SetPortPower(struct usbd_usb_deviceinfo *usbhub, const uhs_ubit8_t port_num, const uhs_ubit8_t stat); 444: extern struct usbd_usb_deviceinfo * Usbh_Api_EnumRootHub( struct usbd_usb_deviceinfo * pRootHub ); 445: extern struct usbd_usb_deviceinfo * Usbh_Api_EnumDevice( struct usbd_usb_deviceinfo * pParent, struct usbd_usb_deviceinfo * pChild ); 446: extern uhs_ubit8_t Usbh_Api_GetDeviceType( struct usbd_usb_deviceinfo * pDev ); 447: extern uhs_boolean_t Usbh_Api_GetVidPid( struct usbd_usb_deviceinfo * pDev, udi_ubit16_t *pVid, udi_ubit16_t *pPid ); 448: extern uhs_boolean_t Usbh_Api_GetSerial( struct usbd_usb_deviceinfo * pDev, udi_ubit8_t *pSerial, udi_ubit8_t bufsize ); 449: extern uhs_status_t Usbh_Api_GetVersion(uhs_ubit8_t* pu8MajorVersion, uhs_ubit8_t* pu8MinorVersion); 450: extern uhs_status_t Usbh_Api_ResetTT(struct usbd_usb_deviceinfo *usbhub, const uhs_ubit16_t tt_num); 451: extern uhs_status_t Usbh_Api_ClearTTBuffer(struct usbd_usb_deviceinfo *usbhub, const uhs_ubit16_t tt_num, struct usbd_usb_spliterrinfo *split_err_info); 452: extern void Usb_Core_ReportStatus( const char *pFileName, uhs_ubit32_t nLine, usb_msglevel level, uhs_ubit16_t msgdata ); 453: extern void Hcd_EHCI_ReportStatus( const char *pFileName, uhs_ubit32_t nLine, usb_msglevel level, uhs_ubit16_t msgdata ); 454: extern uhs_status_t Usbh_Api_ReqDisableAttDet( void ); 455: extern uhs_status_t Usbh_Api_CancelDisableAttDet( void ); 456: extern uhs_status_t Usbh_Api_ReqSuspend( void ); 457: extern uhs_status_t Usbh_Api_ReqResume( void ); 458: 459: 460: 461: 462: 463: 464: #define Usbh_FixupCtrlUcb(ucb, usbdev, pipe, setup, buf, size, function, context) \ 465: Usbh_Api_FixupUsbCtrlBlock(ucb, usbdev, pipe, setup, buf, size, 0x00, function, context) 466: 467: #define Usbh_FixupBulkUcb(ucb, usbdev, pipe, buf, size, function, context) \ 468: Usbh_Api_FixupUsbCtrlBlock(ucb, usbdev, pipe, NULL, buf, size, 0, function, context) 469: 470: #define Usbh_FixupIntrUcb(ucb, usbdev, pipe, buf, size, interval, function, context) \ 471: Usbh_Api_FixupUsbCtrlBlock(ucb, usbdev, pipe, NULL, buf, size, interval, function, context) 472: 473: #define Usbh_FixupIsoUcb(ucb, usbdev, pipe, buf, size, function, context) \ 474: Usbh_Api_FixupUsbCtrlBlock(ucb, usbdev, pipe, NULL, buf, size, 0, function, context) 475: 476: 477: #endif
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.