Common IO - basic v1.0.0
Common IO - basic v1.0.0 Library
 
Loading...
Searching...
No Matches
iot_usb_device.h
Go to the documentation of this file.
1/*
2 * Common IO - basic V1.0.0
3 * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a copy of
6 * this software and associated documentation files (the "Software"), to deal in
7 * the Software without restriction, including without limitation the rights to
8 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 * the Software, and to permit persons to whom the Software is furnished to do so,
10 * subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be included in all
13 * copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 *
22 * http://aws.amazon.com/freertos
23 * http://www.FreeRTOS.org
24 */
25
30#ifndef _IOT_USB_DEVICE_H_
31#define _IOT_USB_DEVICE_H_
32
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 )
49
53#define IOT_USB_SETUP_PACKET_SIZE ( 8U )
54
58#define IOT_USB_ENDPOINT_NUMBER_MASK ( 0x0FU )
59
63#define IOT_USB_UNINITIALIZED_VAL_32 ( 0xFFFFFFFFU )
64
73typedef enum
74{
92
96typedef enum
97{
116
120typedef enum
121{
128
132typedef enum
133{
139
143typedef enum
144{
150
154typedef enum
155{
160
164struct IotUsbDevice;
165
171typedef struct IotUsbDevice * IotUsbDeviceHandle_t;
172
189typedef int32_t (* IotUsbDeviceCallback_t) ( IotUsbDeviceHandle_t const pxUsbDevice,
190 uint32_t ulDeviceEvent,
191 void * pvUserContext );
192
206 void * pvUserContext );
207
211typedef struct
212{
233 uint8_t ucZlt;
234 uint8_t ucInterval;
236
240typedef struct
241{
245
257IotUsbDeviceHandle_t iot_usb_device_open( int32_t lUsbDeviceControllerInstance );
258
274int32_t iot_usb_device_connect( IotUsbDeviceHandle_t const pxUsbDevice );
275
289
303 IotUsbDeviceCallback_t xCallback,
304 void * pvUserContext );
305
325 IotUsbDeviceEndpointConfig_t * pxEpConfig );
326
342 uint8_t ucEndpointAddress,
344 void * pvUserContext );
345
359 uint8_t ucEndpointAddress );
360
387 uint8_t ucEndpointAddress );
388
402 uint8_t ucEndpointAddress );
403
425 uint8_t ucEndpointAddress,
426 uint8_t * const pvBuffer,
427 size_t xBytes );
428
450 uint8_t ucEndpointAddress,
451 uint8_t * const pvBuffer,
452 size_t xBytes );
453
477 uint8_t ucEndpointAddress,
478 uint8_t * const pvBuffer,
479 size_t xBytes );
480
504 uint8_t ucEndpointAddress,
505 uint8_t * const pvBuffer,
506 size_t xBytes );
507
530 IotUsbDeviceIoctlRequest_t xUsbDeviceRequest,
531 void * const pvBuffer );
532
548 uint8_t ucEndpointAddress );
549
561int32_t iot_usb_device_close( IotUsbDeviceHandle_t const pxUsbDevice );
562
566/* end of group iot_usb_device */
567
568#endif /* ifndef _IOT_USB_DEVICE_H_ */
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