USB HID class types

nRF5 SDK v12.2.0

nRF52840 only: Module with types and definitions used by HID modules. More...

Data Structures

union app_usbd_hid_descriptor_t
HID descriptor, binary layout. More...

Macros

#define APP_USBD_HID_CLASS 0x03
HID class definition in interface descriptor. More...
#define APP_USBD_HID_REPORT_ITEM (size) APP_USBD_HID_DESCRIPTOR_REPORT , ((size) & 0xFF), ((size) / 256)
HID report descriptor entry at the end of HID descriptor. More...
#define APP_USBD_HID_PHYSICAL_ITEM (size) APP_USBD_HID_DESCRIPTOR_PHYSICAL , ((size) & 0xFF), ((size) / 256)
HID physical descriptor entry at the end of HID descriptor. More...
#define APP_USBD_HID_BCD_MAKE (major, minor)   0x##minor, 0x##major
Helper macro for HID BCD release. More...
#define APP_USBD_HID_BCD_V1_11 APP_USBD_HID_BCD_MAKE (1, 11)
HID 1.11 BCD value definition. More...
#define APP_USBD_HID_INTERFACE_DSC (interface_number, endpoints_num, subclass, protocol)
Initializer of interface descriptor for HID classes. More...
#define APP_USBD_HID_HID_DSC (...)
Initializer of HID descriptor for HID classes. More...
#define APP_USBD_HID_EP_DSC (endpoint, ep_size, ep_interval)
Initializer of endpoint descriptor for HID classes. More...

Enumerations

enum app_usbd_hid_subclass_t {
APP_USBD_HID_SUBCLASS_NONE = 0x00,
APP_USBD_HID_SUBCLASS_BOOT = 0x01
}
HID subclass definition. More...
enum app_usbd_hid_protocol_t {
APP_USBD_HID_PROTO_GENERIC = 0x00,
APP_USBD_HID_PROTO_KEYBOARD = 0x01,
APP_USBD_HID_PROTO_MOUSE = 0x02,
APP_USBD_HID_PROTO_MULTITOUCH = 0x03
}
HID descriptor types. More...
enum app_usbd_hid_country_code_t {
APP_USBD_HID_COUNTRY_NOT_SUPPORTED = 0,
APP_USBD_HID_COUNTRY_ARABIC = 1,
APP_USBD_HID_COUNTRY_BELGIAN = 2,
APP_USBD_HID_COUNTRY_CANADIAN_BILINGUAL = 3,
APP_USBD_HID_COUNTRY_CANADIAN_FRENCH = 4,
APP_USBD_HID_COUNTRY_CZECH_REPUBLIC = 5,
APP_USBD_HID_COUNTRY_DANISH = 6,
APP_USBD_HID_COUNTRY_FINNISH = 7,
APP_USBD_HID_COUNTRY_FRENCH = 8,
APP_USBD_HID_COUNTRY_GERMAN = 9,
APP_USBD_HID_COUNTRY_GREEK = 10,
APP_USBD_HID_COUNTRY_HEBREW = 11,
APP_USBD_HID_COUNTRY_HUNGARY = 12,
APP_USBD_HID_COUNTRY_INTERNATIONAL_ISO = 13,
APP_USBD_HID_COUNTRY_ITALIAN = 14,
APP_USBD_HID_COUNTRY_JAPAN_KATAKANA = 15,
APP_USBD_HID_COUNTRY_KOREAN = 16,
APP_USBD_HID_COUNTRY_LATIN_AMERICAN = 17,
APP_USBD_HID_COUNTRY_NETHERLANDS_DUTCH = 18,
APP_USBD_HID_COUNTRY_NORWEGIAN = 19,
APP_USBD_HID_COUNTRY_PERSIAN_FARSI = 20,
APP_USBD_HID_COUNTRY_POLAND = 21,
APP_USBD_HID_COUNTRY_PORTUGUESE = 22,
APP_USBD_HID_COUNTRY_RUSSIA = 23,
APP_USBD_HID_COUNTRY_SLOVAKIA = 24,
APP_USBD_HID_COUNTRY_SPANISH = 25,
APP_USBD_HID_COUNTRY_SWEDISH = 26,
APP_USBD_HID_COUNTRY_SWISS_FRENCH = 27,
APP_USBD_HID_COUNTRY_SWISS_GERMAN = 28,
APP_USBD_HID_COUNTRY_SWITZERLAND = 29,
APP_USBD_HID_COUNTRY_TAIWAN = 30,
APP_USBD_HID_COUNTRY_TURKISH_Q = 31,
APP_USBD_HID_COUNTRY_UK = 32,
APP_USBD_HID_COUNTRY_US = 33,
APP_USBD_HID_COUNTRY_YUGOSLAVIA = 34,
APP_USBD_HID_COUNTRY_TURKISH_F = 35
}
HID protocol types defined by specification. More...
enum app_usbd_hid_descriptor_type_t {
APP_USBD_HID_DESCRIPTOR_HID = 0x21,
APP_USBD_HID_DESCRIPTOR_REPORT = 0x22,
APP_USBD_HID_DESCRIPTOR_PHYSICAL = 0x23
}
HID descriptor types. More...
enum app_usbd_hid_req_t {
APP_USBD_HID_REQ_GET_REPORT = 0x01,
APP_USBD_HID_REQ_GET_IDLE = 0x02,
APP_USBD_HID_REQ_GET_PROTOCOL = 0x03,
APP_USBD_HID_REQ_SET_REPORT = 0x09,
APP_USBD_HID_REQ_SET_IDLE = 0x0A,
APP_USBD_HID_REQ_SET_PROTOCOL = 0x0B
}
HID requests defined by specification. More...
enum app_usbd_hid_report_type_t {
APP_USBD_HID_REPORT_TYPE_INPUT = 0x01,
APP_USBD_HID_REPORT_TYPE_OUTPUT = 0x02,
APP_USBD_HID_REPORT_TYPE_FEATURE = 0x03
}
HID report type. More...

Detailed Description

nRF52840 only: Module with types and definitions used by HID modules.

Macro Definition Documentation

#define APP_USBD_HID_BCD_MAKE ( major,
minor
) 0x##minor, 0x##major

Helper macro for HID BCD release.

Parameters
major Hid release number major
minor Hid release number minor

app_usbd_hid_descriptor_t::bcdHID APP_USBD_HID_BCD_V1_11

#define APP_USBD_HID_BCD_V1_11 APP_USBD_HID_BCD_MAKE (1, 11)

HID 1.11 BCD value definition.

app_usbd_hid_descriptor_t::bcdHID

#define APP_USBD_HID_CLASS   0x03

HID class definition in interface descriptor.

app_usbd_descriptor_iface_t::bInterfaceClass

#define APP_USBD_HID_EP_DSC ( endpoint,
ep_size,
ep_interval
)
Value:
/*.bLength = */ sizeof ( app_usbd_descriptor_ep_t ), \
/*.bDescriptorType = */ APP_USBD_DESCRIPTOR_ENDPOINT , \
/*.bEndpointAddress = */ endpoint, \
/*.bmAttributes = */ APP_USBD_DESCRIPTOR_EP_ATTR_TYPE_INTERRUPT, \
/*.wMaxPacketSize = */ APP_USBD_U16_TO_RAW_DSC (ep_size), \
/*.bInterval = */ ep_interval, \

Initializer of endpoint descriptor for HID classes.

Parameters
endpoint Endpoint number
ep_size Endpoint size
ep_interval Endpoint interval (milliseconds)
#define APP_USBD_HID_HID_DSC ( ... )
Value:
/*.bLength = */ sizeof ( app_usbd_hid_descriptor_t ) + 3 * ( NUM_VA_ARGS (__VA_ARGS__)), \
/*.bDescriptorType = */ APP_USBD_HID_DESCRIPTOR_HID , \
/*.bcdHID = */ APP_USBD_HID_BCD_V1_11 , \
/*.bCountryCode = */ APP_USBD_HID_COUNTRY_NOT_SUPPORTED , \
/*.bNumDescriptors = */ ( NUM_VA_ARGS (__VA_ARGS__)), \
/*.bRDescriptorType = */ APP_USBD_HID_REPORT_ITEM ( sizeof (GET_VA_ARG_1_(__VA_ARGS__))), \
/*.wDescriptorLength = */

Initializer of HID descriptor for HID classes.

Parameters
... Report/physical item list
#define APP_USBD_HID_INTERFACE_DSC ( interface_number,
endpoints_num,
subclass,
protocol
)
Value:
/*.bLength = */ sizeof ( app_usbd_descriptor_iface_t ), \
/*.bDescriptorType = */ APP_USBD_DESCRIPTOR_INTERFACE , \
/*.bInterfaceNumber = */ interface_number, \
/*.bAlternateSetting = */ 0x00, \
/*.bNumEndpoints = */ endpoints_num, \
/*.bInterfaceClass = */ APP_USBD_HID_CLASS , \
/*.bInterfaceSubClass = */ subclass, \
/*.bInterfaceProtocol = */ protocol, \
/*.iInterface = 0, */ 0x00, \

Initializer of interface descriptor for HID classes.

Parameters
interface_number Interface number
endpoints_num Number of endpoints
subclass Subclass type app_usbd_hid_subclass_t
protocol Protocol type app_usbd_hid_protocol_t
#define APP_USBD_HID_PHYSICAL_ITEM ( size ) APP_USBD_HID_DESCRIPTOR_PHYSICAL , ((size) & 0xFF), ((size) / 256)

HID physical descriptor entry at the end of HID descriptor.

Parameters
size Physical descriptor size
#define APP_USBD_HID_REPORT_ITEM ( size ) APP_USBD_HID_DESCRIPTOR_REPORT , ((size) & 0xFF), ((size) / 256)

HID report descriptor entry at the end of HID descriptor.

Parameters
size Report descriptor size

Enumeration Type Documentation

HID protocol types defined by specification.

HID country code ID

Look into app_usbd_hid_descriptor_t::bCountryCode

Enumerator
APP_USBD_HID_COUNTRY_NOT_SUPPORTED

NOT_SUPPORTED

APP_USBD_HID_COUNTRY_ARABIC

ARABIC

APP_USBD_HID_COUNTRY_BELGIAN

BELGIAN

APP_USBD_HID_COUNTRY_CANADIAN_BILINGUAL

CANADIAN_BILINGUAL

APP_USBD_HID_COUNTRY_CANADIAN_FRENCH

CANADIAN_FRENCH

APP_USBD_HID_COUNTRY_CZECH_REPUBLIC

CZECH_REPUBLIC

APP_USBD_HID_COUNTRY_DANISH

DANISH

APP_USBD_HID_COUNTRY_FINNISH

FINNISH

APP_USBD_HID_COUNTRY_FRENCH

FRENCH

APP_USBD_HID_COUNTRY_GERMAN

GERMAN

APP_USBD_HID_COUNTRY_GREEK

GREEK

APP_USBD_HID_COUNTRY_HEBREW

HEBREW

APP_USBD_HID_COUNTRY_HUNGARY

HUNGARY

APP_USBD_HID_COUNTRY_INTERNATIONAL_ISO

INTERNATIONAL_ISO

APP_USBD_HID_COUNTRY_ITALIAN

ITALIAN

APP_USBD_HID_COUNTRY_JAPAN_KATAKANA

JAPAN_KATAKANA

APP_USBD_HID_COUNTRY_KOREAN

KOREAN

APP_USBD_HID_COUNTRY_LATIN_AMERICAN

LATIN_AMERICAN

APP_USBD_HID_COUNTRY_NETHERLANDS_DUTCH

NETHERLANDS_DUTCH

APP_USBD_HID_COUNTRY_NORWEGIAN

NORWEGIAN

APP_USBD_HID_COUNTRY_PERSIAN_FARSI

PERSIAN_FARSI

APP_USBD_HID_COUNTRY_POLAND

POLAND

APP_USBD_HID_COUNTRY_PORTUGUESE

PORTUGUESE

APP_USBD_HID_COUNTRY_RUSSIA

RUSSIA

APP_USBD_HID_COUNTRY_SLOVAKIA

SLOVAKIA

APP_USBD_HID_COUNTRY_SPANISH

SPANISH

APP_USBD_HID_COUNTRY_SWEDISH

SWEDISH

APP_USBD_HID_COUNTRY_SWISS_FRENCH

SWISS_FRENCH

APP_USBD_HID_COUNTRY_SWISS_GERMAN

SWISS_GERMAN

APP_USBD_HID_COUNTRY_SWITZERLAND

SWITZERLAND

APP_USBD_HID_COUNTRY_TAIWAN

TAIWAN

APP_USBD_HID_COUNTRY_TURKISH_Q

TURKISH_Q

APP_USBD_HID_COUNTRY_UK

UK

APP_USBD_HID_COUNTRY_US

US

APP_USBD_HID_COUNTRY_YUGOSLAVIA

YUGOSLAVIA

APP_USBD_HID_COUNTRY_TURKISH_F

TURKISH_F

HID descriptor types.

app_usbd_hid_descriptor_t::bRDescriptorType

Enumerator
APP_USBD_HID_DESCRIPTOR_HID

HID descriptor

APP_USBD_HID_DESCRIPTOR_REPORT

REPORT descriptor

APP_USBD_HID_DESCRIPTOR_PHYSICAL

PHYSICAL descriptor

HID descriptor types.

Value need to be filled in interface descriptor. app_usbd_descriptor_iface_t::bInterfaceProtocol

Enumerator
APP_USBD_HID_PROTO_GENERIC

GENERIC protocol

APP_USBD_HID_PROTO_KEYBOARD

KEYBOARD protocol

APP_USBD_HID_PROTO_MOUSE

MOUSE protocol

APP_USBD_HID_PROTO_MULTITOUCH

MULTITOUCH protocol

HID report type.

Enumerator
APP_USBD_HID_REPORT_TYPE_INPUT

INPUT report type

APP_USBD_HID_REPORT_TYPE_OUTPUT

OUTPUT report type

APP_USBD_HID_REPORT_TYPE_FEATURE

FEATURE report type

HID requests defined by specification.

Enumerator
APP_USBD_HID_REQ_GET_REPORT

REPORT: device -> host (required)

APP_USBD_HID_REQ_GET_IDLE

IDLE: device -> host (not required)

APP_USBD_HID_REQ_GET_PROTOCOL

PROTOCOL: device -> host (required for boot protocol)

APP_USBD_HID_REQ_SET_REPORT

REPORT: host -> device (not required)

APP_USBD_HID_REQ_SET_IDLE

IDLE: no data stage (required for boot protocol)

APP_USBD_HID_REQ_SET_PROTOCOL

PROTOCOL: no data stage(required for boot protocol)

HID subclass definition.

See Also
HID 1.11 specification: Chapter 4.2 Subclass app_usbd_descriptor_iface_t::bInterfaceSubClass
Enumerator
APP_USBD_HID_SUBCLASS_NONE

Undefined subclass

APP_USBD_HID_SUBCLASS_BOOT

Boot subclass