30#ifndef _IOT_USB_DEVICE_H_
31#define _IOT_USB_DEVICE_H_
36#define IOT_USB_DEVICE_SUCCESS ( 0 )
37#define IOT_USB_DEVICE_ERROR ( 1 )
38#define IOT_USB_DEVICE_BUSY ( 2 )
39#define IOT_USB_DEVICE_INVALID_VALUE ( 3 )
40#define IOT_USB_DEVICE_WRITE_FAILED ( 4 )
41#define IOT_USB_DEVICE_READ_FAILED ( 5 )
42#define IOT_USB_DEVICE_FUNCTION_NOT_SUPPORTED ( 6 )
43#define IOT_USB_DEVICE_NOTHING_TO_CANCEL ( 7 )
48#define IOT_USB_CONTROL_ENDPOINT ( 0U )
53#define IOT_USB_SETUP_PACKET_SIZE ( 8U )
58#define IOT_USB_ENDPOINT_NUMBER_MASK ( 0x0FU )
63#define IOT_USB_UNINITIALIZED_VAL_32 ( 0xFFFFFFFFU )
190 uint32_t ulDeviceEvent,
191 void * pvUserContext );
206 void * pvUserContext );
304 void * pvUserContext );
342 uint8_t ucEndpointAddress,
344 void * pvUserContext );
359 uint8_t ucEndpointAddress );
387 uint8_t ucEndpointAddress );
402 uint8_t ucEndpointAddress );
425 uint8_t ucEndpointAddress,
426 uint8_t *
const pvBuffer,
450 uint8_t ucEndpointAddress,
451 uint8_t *
const pvBuffer,
477 uint8_t ucEndpointAddress,
478 uint8_t *
const pvBuffer,
504 uint8_t ucEndpointAddress,
505 uint8_t *
const pvBuffer,
531 void *
const pvBuffer );
548 uint8_t ucEndpointAddress );
void iot_usb_device_set_endpoint_callback(IotUsbDeviceHandle_t const pxUsbDevice, uint8_t ucEndpointAddress, IotUsbDeviceEndpointCallbackFn_t xCallback, void *pvUserContext)
Sets the endpoint callback to be called on endpoint transfer.
int32_t iot_usb_device_endpoint_stall(IotUsbDeviceHandle_t const pxUsbDevice, uint8_t ucEndpointAddress)
Stall the usb device specific endpoint. This function is to set stall conditions for the specific end...
IotUsbDeviceIoctlRequest_t
Ioctl request types.
Definition: iot_usb_device.h:97
int32_t iot_usb_device_disconnect(IotUsbDeviceHandle_t const pxUsbDevice)
Disconnect the USB device.
int32_t(* IotUsbDeviceCallback_t)(IotUsbDeviceHandle_t const pxUsbDevice, uint32_t ulDeviceEvent, void *pvUserContext)
The callback function for USB device event operation. This callback is passed to driver by using iot_...
Definition: iot_usb_device.h:189
IotUsbDeviceHandle_t iot_usb_device_open(int32_t lUsbDeviceControllerInstance)
Initiates the usb device controller interface.
int32_t iot_usb_device_endpoint_unstall(IotUsbDeviceHandle_t const pxUsbDevice, uint8_t ucEndpointAddress)
Uninstall the usb device specific endpoint.
IotUsbDeviceEndpointStatus_t
Defines endpoint state.
Definition: iot_usb_device.h:133
void iot_usb_device_set_device_callback(IotUsbDeviceHandle_t const pxUsbDevice, IotUsbDeviceCallback_t xCallback, void *pvUserContext)
Sets the application callback to be called on device event.
int32_t iot_usb_device_ioctl(IotUsbDeviceHandle_t const pxUsbDevice, IotUsbDeviceIoctlRequest_t xUsbDeviceRequest, void *const pvBuffer)
Used for various USB device control function.
int32_t iot_usb_device_write_sync(IotUsbDeviceHandle_t const pxUsbDevice, uint8_t ucEndpointAddress, uint8_t *const pvBuffer, size_t xBytes)
Starts the USB device write operation in blocking mode.
IotUsbDeviceEvent_t
common notify event types in device callback.
Definition: iot_usb_device.h:74
IotUsbHostController_t
Define device controller ID.
Definition: iot_usb_device.h:144
IotUsbDeviceState_t
USB device state.
Definition: iot_usb_device.h:121
int32_t iot_usb_device_close(IotUsbDeviceHandle_t const pxUsbDevice)
Close the USB device peripheral.
IotUsbDeviceOperationStatus_t
USB device driver operation status.
Definition: iot_usb_device.h:155
int32_t iot_usb_device_endpoint_close(IotUsbDeviceHandle_t const pxUsbDevice, uint8_t ucEndpointAddress)
De-initializes the usb device specific endpoint.
int32_t iot_usb_device_endpoint_cancel_transfer(IotUsbDeviceHandle_t const pxUsbDevice, uint8_t ucEndpointAddress)
This function is used to cancel the pending transfer for given endpoint.
int32_t(* IotUsbDeviceEndpointCallbackFn_t)(IotUsbDeviceOperationStatus_t xStatus, void *pvUserContext)
The callback typedef for USB device endpoint. For each endpoint, it's passed when user set endpoint c...
Definition: iot_usb_device.h:205
int32_t iot_usb_device_endpoint_open(IotUsbDeviceHandle_t const pxUsbDevice, IotUsbDeviceEndpointConfig_t *pxEpConfig)
Initiates the usb device specific endpoint.
int32_t iot_usb_device_read_sync(IotUsbDeviceHandle_t const pxUsbDevice, uint8_t ucEndpointAddress, uint8_t *const pvBuffer, size_t xBytes)
Starts the USB device read operation in blocking mode.
int32_t iot_usb_device_connect(IotUsbDeviceHandle_t const pxUsbDevice)
Connect the USB device.
int32_t iot_usb_device_write_async(IotUsbDeviceHandle_t const pxUsbDevice, uint8_t ucEndpointAddress, uint8_t *const pvBuffer, size_t xBytes)
Starts the USB device write operation in non-blocking mode.
int32_t iot_usb_device_read_async(IotUsbDeviceHandle_t const pxUsbDevice, uint8_t ucEndpointAddress, uint8_t *const pvBuffer, size_t xBytes)
Starts the USB device read operation in non-blocking mode.
struct IotUsbDevice * IotUsbDeviceHandle_t
IotUsbDeviceHandle_t is the handle type returned by calling iot_usb_device_open()....
Definition: iot_usb_device.h:171
@ eUSBDeviceLPMState3Suspend
Definition: iot_usb_device.h:112
@ eUSBDeviceGetSpeed
Definition: iot_usb_device.h:98
@ eUSBDeviceGetEndpointStatus
Definition: iot_usb_device.h:101
@ eUSBDeviceLPMState3Resume
Definition: iot_usb_device.h:113
@ eUSBDeviceLPMState2Resume
Definition: iot_usb_device.h:111
@ eUSBDeviceGetAddress
Definition: iot_usb_device.h:99
@ eUSBDeviceSetState
Definition: iot_usb_device.h:107
@ eUSBDeviceSetTestMode
Definition: iot_usb_device.h:105
@ eUSBDeviceLPMState1Suspend
Definition: iot_usb_device.h:108
@ eUSBDeviceGetStatus
Definition: iot_usb_device.h:103
@ eUSBDeviceLPMState1Resume
Definition: iot_usb_device.h:109
@ eUSBDeviceSetAddress
Definition: iot_usb_device.h:100
@ eUSBDeviceGetSyncFrame
Definition: iot_usb_device.h:104
@ eUSBDeviceLPMState2Suspend
Definition: iot_usb_device.h:110
@ eUSBDeviceGetState
Definition: iot_usb_device.h:102
@ eUSBDeviceRemoteWakeup
Definition: iot_usb_device.h:114
@ eUsbDeviceEndpointStateBusy
Definition: iot_usb_device.h:136
@ eUsbDeviceEndpointStateClosed
Definition: iot_usb_device.h:137
@ eUsbDeviceEndpointStateStalled
Definition: iot_usb_device.h:135
@ eUsbDeviceEndpointStateIdle
Definition: iot_usb_device.h:134
@ eUSBDeviceLPMState2Event
Definition: iot_usb_device.h:78
@ eUSBDeviceLPMState3Event
Definition: iot_usb_device.h:80
@ eUSBDeviceAttachEvent
Definition: iot_usb_device.h:90
@ eUSBDeviceLPMState2ResumeEvent
Definition: iot_usb_device.h:84
@ eUSBDeviceDetachEvent
Definition: iot_usb_device.h:89
@ eUSBDeviceLPMState1Event
Definition: iot_usb_device.h:76
@ eUSBDeviceLPMState1ResumeEvent
Definition: iot_usb_device.h:82
@ eUSBDeviceErrorEvent
Definition: iot_usb_device.h:88
@ eUSBDeviceBusResetEvent
Definition: iot_usb_device.h:75
@ eUSBDeviceLPMState3ResumeEvent
Definition: iot_usb_device.h:86
@ eUsbDeviceControllerOHCI
Definition: iot_usb_device.h:145
@ eUsbDeviceControllerEHCI
Definition: iot_usb_device.h:147
@ eUsbDeviceControllerUHCI
Definition: iot_usb_device.h:146
@ eUsbDeviceControllerXHCI
Definition: iot_usb_device.h:148
@ eUsbDeviceStateAddressing
Definition: iot_usb_device.h:125
@ eUsbDeviceStateDefault
Definition: iot_usb_device.h:124
@ eUsbDeviceStateConfigured
Definition: iot_usb_device.h:122
@ eUsbDeviceStateTestMode
Definition: iot_usb_device.h:126
@ eUsbDeviceStateAddress
Definition: iot_usb_device.h:123
@ eUsbDeviceCompleted
Definition: iot_usb_device.h:156
@ eUsbDeviceReadFailed
Definition: iot_usb_device.h:157
@ eUsbDeviceWriteFailed
Definition: iot_usb_device.h:158
#define IOT_USB_DEVICE_READ_FAILED
Definition: iot_usb_device.h:41
#define IOT_USB_DEVICE_WRITE_FAILED
Definition: iot_usb_device.h:40
#define IOT_USB_DEVICE_SUCCESS
Return values used by this driver.
Definition: iot_usb_device.h:36
Endpoint configuration structure.
Definition: iot_usb_device.h:212
uint8_t ucInterval
Definition: iot_usb_device.h:234
uint8_t ucTransferType
Definition: iot_usb_device.h:231
uint8_t ucZlt
Definition: iot_usb_device.h:233
uint8_t ucEndpointAddress
Definition: iot_usb_device.h:230
uint16_t usMaxPacketSize
Definition: iot_usb_device.h:213
Endpoint status structure.
Definition: iot_usb_device.h:241
uint16_t usEndpointStatus
Definition: iot_usb_device.h:243
uint8_t ucEndpointAddress
Definition: iot_usb_device.h:242