USB Device HID API#
USBD_HID_ConfigureBufAlignOctets()#
Description#
Configures the alignment of the internal buffers.
Files#
usbd_hid.h/usbd_hid.c
Prototype#
void USBD_HID_ConfigureBufAlignOctets (CPU_SIZE_T buf_align_octets)Arguments#
buf_align_octets
Buffer alignment, in octets.
Returned Value#
None.
Notes / Warnings#
This function is optional, if it is not called, the default value will be used.
This function MUST be called before the HID class is initialized via the
USBD_HID_Init()function.
USBD_HID_ConfigureReportID_Qty()#
Description#
Configures the quantity of report IDs.
Files#
usbd_hid.h/usbd_hid.c
Prototype#
void USBD_HID_ConfigureReportID_Qty (CPU_INT08U report_id_qty)Arguments#
report_id_qty
Quantity of report IDs.
Returned Value#
None.
Notes / Warnings#
This function is optional, if it is not called, the default value will be used.
This function MUST be called before the HID class is initialized via the USBD_HID_Init() function.
USBD_HID_ConfigurePushPopItemsQty()#
Description#
Configures the quantity of push/pop items.
Files#
usbd_hid.h/usbd_hid.c
Prototype#
void USBD_HID_ConfigurePushPopItemsQty (CPU_INT08U push_pop_items_qty)Arguments#
push_pop_items_qty
Quantity of Push/pop items.
Returned Value#
None.
Notes / Warnings#
This function is optional, if it is not called, the default value will be used.
This function MUST be called before the HID class is initialized via the
USBD_HID_Init()function.
USBD_HID_ConfigureMemSeg()#
Description#
Configures the memory segment to use when allocating control data and buffers.
Files#
usbd_hid.h/usbd_hid.c
Prototype#
void USBD_HID_ConfigureMemSeg (MEM_SEG *p_mem_seg,
MEM_SEG *p_mem_seg_buf)Arguments#
p_mem_seg
Pointer to memory segment to use when allocating control data. Can be the same segment used for p_mem_seg_buf. DEF_NULL means general purpose heap segment.
p_mem_seg_buf
Pointer to memory segment to use when allocating data buffers. Can be the same segment used for p_mem_seg. DEF_NULL means general purpose heap segment.
Returned Value#
None.
Notes / Warnings#
This function is optional, if it is not called, the default value will be used.
This function MUST be called before the HID class is initialized via the
USBD_HID_Init()function.
USBD_HID_ConfigureTmrTaskStk()#
Description#
Configures the timer task stack.
Files#
usbd_hid.h/usbd_hid.c
Prototype#
void USBD_HID_ConfigureTmrTaskStk (CPU_INT32U stk_size_elements,
void *p_stk)Arguments#
stk_size_elements
Size of the stack, in stack elements.
p_stk
Pointer to base of the stack.
Returned Value#
None.
Notes / Warnings#
This function is optional, if it is not called, the default value will be used.
This function MUST be called before the HID class is initialized via the
USBD_HID_Init()function.
USBD_HID_Init()#
Description#
Initialize HID class.
Files#
usbd_hid.h/usbd_hid.c
Prototype#
void USBD_HID_Init (const USBD_HID_QTY_CFG *p_qty_cfg,
RTOS_ERR *p_err)Arguments#
p_qty_cfg
Pointer to HID class configuration structure.
p_err
Pointer to the variable that will receive one of these returned error codes from this function :
RTOS_ERR_NONERTOS_ERR_NOT_AVAILRTOS_ERR_OS_ILLEGAL_RUN_TIMERTOS_ERR_POOL_EMPTYRTOS_ERR_INVALID_CFGRTOS_ERR_BLK_ALLOC_CALLBACKRTOS_ERR_SEG_OVF
Returned Value#
None.
Notes / Warnings#
None.
USBD_HID_TmrTaskPrioSet()#
Description#
Sets priority of the HID timer task.
Files#
usbd_hid.h/usbd_hid.c
Prototype#
void USBD_HID_TmrTaskPrioSet (RTOS_TASK_PRIO prio,
RTOS_ERR *p_err)Arguments#
prio
Priority of the HID timer task.
p_err
Pointer to the variable that will receive one of the following error code(s) from this function:
RTOS_ERR_NONERTOS_ERR_INVALID_ARG
Returned Value#
None.
Notes / Warnings#
None.
USBD_HID_Add()#
Description#
Adds a new instance of the HID class.
Files#
usbd_hid.h/usbd_hid.c
Prototype#
CPU_INT08U USBD_HID_Add ( CPU_INT08U subclass,
CPU_INT08U protocol,
USBD_HID_COUNTRY_CODE country_code,
const CPU_INT08U *p_report_desc,
CPU_INT16U report_desc_len,
const CPU_INT08U *p_phy_desc,
CPU_INT16U phy_desc_len,
CPU_INT16U interval_in,
CPU_INT16U interval_out,
CPU_BOOLEAN ctrl_rd_en,
USBD_HID_CALLBACK *p_hid_callback,
RTOS_ERR *p_err)Arguments#
subclass
Subclass code.
protocol
Protocol code.
country_code
Country code ID.
p_report_desc
Pointer to the report descriptor structure. Content MUST be persistent.
report_desc_len
Report descriptor length.
p_phy_desc
Pointer to the physical descriptor structure. Content MUST be persistent.
phy_desc_len
Physical descriptor length.
interval_in
Polling interval for input transfers, in milliseconds. It must be a power of 2.
interval_out
Polling interval for output transfers, in milliseconds. It must be a power of 2. Used only when read operations are not through control transfers.
ctrl_rd_en
Enable read operations through the control transfers.
p_hid_callback
Pointer to HID descriptor and request callback structure. Content MUST be persistent.
p_err
Pointer to the variable that will receive one of these returned error codes from this function :
RTOS_ERR_NONERTOS_ERR_ALLOCRTOS_ERR_CLASS_INSTANCE_ALLOCRTOS_ERR_INVALID_ARGRTOS_ERR_SEG_OVF
Returned Value#
Class instance number, if no errors are returned.
USBD_CLASS_NBR_NONE, if any errors are returned.
Notes / Warnings#
None.
USBD_HID_ConfigAdd()#
Description#
Adds the HID class instance to the USB device configuration (see Note #1).
Files#
usbd_hid.h/usbd_hid.c
Prototype#
CPU_BOOLEAN USBD_HID_ConfigAdd (CPU_INT08U class_nbr,
CPU_INT08U dev_nbr,
CPU_INT08U config_nbr,
RTOS_ERR *p_err)Arguments#
class_nbr
Class instance number.
dev_nbr
Device number.
config_nbr
Configuration index to add HID class instance to.
p_err
Pointer to the variable that will receive one of these returned error codes from this function :
RTOS_ERR_NONERTOS_ERR_INVALID_DEV_STATERTOS_ERR_IF_ALT_ALLOCRTOS_ERR_ALLOCRTOS_ERR_CLASS_INSTANCE_ALLOCRTOS_ERR_IF_ALLOCRTOS_ERR_INVALID_ARGRTOS_ERR_EP_ALLOCRTOS_ERR_EP_NONE_AVAIL
Returned Value#
DEF_YES, if the HID class instance was added to USB device configuration successfully.DEF_NO, if it fails to be added.
Notes / Warnings#
Called several times, it creates multiple instances and configurations. For example, the following architecture could be created:
HS |-- Configuration 0 (HID class 0) (HID class 1) (HID class 2) |-- Interface 0 |-- Configuration 1 (HID class 0) |-- Interface 0Configuration Descriptor corresponding to a HID device uses the following format:
Configuration Descriptor
|-- Interface Descriptor (HID class)
|-- Endpoint Descriptor (Interrupt IN)
|-- Endpoint Descriptor (Interrupt OUT) - optionalUSBD_HID_IsConn()#
Description#
Gets the HID class connection state.
Files#
usbd_hid.h/usbd_hid.c
Prototype#
CPU_BOOLEAN USBD_HID_IsConn (CPU_INT08U class_nbr)Arguments#
class_nbr
Class instance number.
Returned Value#
DEF_YES, if HID class is connected.DEF_NO, it fails to connect.
Notes / Warnings#
None.
USBD_HID_Rd()#
Description#
Receives data from the host through the Interrupt OUT endpoint. This function is blocking.
Files#
usbd_hid.h/usbd_hid.c
Prototype#
CPU_INT32U USBD_HID_Rd (CPU_INT08U class_nbr,
void *p_buf,
CPU_INT32U buf_len,
CPU_INT16U timeout,
RTOS_ERR *p_err)Arguments#
class_nbr
Class instance number.
p_buf
Pointer to the receive buffer.
buf_len
Receive the buffer length, in octets.
timeout
Timeout, in milliseconds.
p_err
Pointer to the variable that will receive one of these returned error codes from this function :
RTOS_ERR_NONERTOS_ERR_INVALID_DEV_STATERTOS_ERR_NULL_PTRRTOS_ERR_EP_QUEUINGRTOS_ERR_RXRTOS_ERR_NOT_READYRTOS_ERR_EP_INVALIDRTOS_ERR_OS_SCHED_LOCKEDRTOS_ERR_NOT_AVAILRTOS_ERR_FAILRTOS_ERR_WOULD_OVFRTOS_ERR_OS_OBJ_DELRTOS_ERR_INVALID_HANDLERTOS_ERR_WOULD_BLOCKRTOS_ERR_IS_OWNERRTOS_ERR_INVALID_CLASS_STATERTOS_ERR_INVALID_EP_STATERTOS_ERR_ABORTRTOS_ERR_TIMEOUT
Returned Value#
Number of octets received, if no errors are returned.
0, if any errors are returned.
Notes / Warnings#
None.
USBD_HID_Wr()#
Description#
Sends data to the host through the Interrupt IN endpoint. This function is blocking.
Files#
usbd_hid.h/usbd_hid.c
Prototype#
CPU_INT32U USBD_HID_Wr (CPU_INT08U class_nbr,
void *p_buf,
CPU_INT32U buf_len,
CPU_INT16U timeout,
RTOS_ERR *p_err)Arguments#
class_nbr
Class instance number.
p_buf
Pointer to the transmit buffer. If more than one input report exists, the first byte must represent the Report ID.
buf_len
Transmit buffer length, in octets.
timeout
Timeout in milliseconds.
p_err
Pointer to the variable that will receive one of these returned error codes from this function :
RTOS_ERR_NONERTOS_ERR_INVALID_DEV_STATERTOS_ERR_NULL_PTRRTOS_ERR_EP_QUEUINGRTOS_ERR_TXRTOS_ERR_NOT_READYRTOS_ERR_EP_INVALIDRTOS_ERR_OS_SCHED_LOCKEDRTOS_ERR_NOT_AVAILRTOS_ERR_WOULD_OVFRTOS_ERR_OS_OBJ_DELRTOS_ERR_INVALID_HANDLERTOS_ERR_WOULD_BLOCKRTOS_ERR_INVALID_ARGRTOS_ERR_IS_OWNERRTOS_ERR_INVALID_CLASS_STATERTOS_ERR_INVALID_EP_STATERTOS_ERR_ABORTRTOS_ERR_TIMEOUT
Returned Value#
Number of octets sent, if no errors are returned.
0, if any errors are returned.
Notes / Warnings#
None.