X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/071e02c6b6b4837fa9cf0b6d4c749994e02638d7..d06febbb59f5da074e075cc2c92375d46a1b231a:/LUFA/Drivers/USB/Class/Common/HID.h diff --git a/LUFA/Drivers/USB/Class/Common/HID.h b/LUFA/Drivers/USB/Class/Common/HID.h index d7b6983b6..822a8b502 100644 --- a/LUFA/Drivers/USB/Class/Common/HID.h +++ b/LUFA/Drivers/USB/Class/Common/HID.h @@ -60,46 +60,7 @@ #error Do not include this file directly. Include LUFA/Drivers/Class/HID.h instead. #endif - /* Macros: */ - /** HID Class Specific Request to get the current HID report from the device. */ - #define REQ_GetReport 0x01 - - /** HID Class Specific Request to get the current device idle count. */ - #define REQ_GetIdle 0x02 - - /** HID Class Specific Request to set the current HID report to the device. */ - #define REQ_SetReport 0x09 - - /** HID Class Specific Request to set the device's idle count. */ - #define REQ_SetIdle 0x0A - - /** HID Class Specific Request to get the current HID report protocol mode. */ - #define REQ_GetProtocol 0x03 - - /** HID Class Specific Request to set the current HID report protocol mode. */ - #define REQ_SetProtocol 0x0B - - /** Descriptor header type value, to indicate a HID class HID descriptor. */ - #define DTYPE_HID 0x21 - - /** Descriptor header type value, to indicate a HID class HID report descriptor. */ - #define DTYPE_Report 0x22 - - /** Constant for the protocol value of a HID interface descriptor, indicating that the interface does not support - * any HID class boot protocol (see HID Class Specification). - */ - #define HID_NON_BOOT_PROTOCOL 0x00 - - /** Constant for the protocol value of a HID interface descriptor, indicating that the interface supports the - * HID class Keyboard boot protocol (see HID Class Specification). - */ - #define HID_BOOT_KEYBOARD_PROTOCOL 0x01 - - /** Constant for the protocol value of a HID interface descriptor, indicating that the interface supports the - * HID class Mouse boot protocol (see HID Class Specification). - */ - #define HID_BOOT_MOUSE_PROTOCOL 0x02 - + /* Macros: */ /** Constant for a keyboard report modifier byte, indicating that the keyboard's left control key is currently pressed. */ #define HID_KEYBOARD_MODIFER_LEFTCTRL (1 << 0) @@ -137,31 +98,92 @@ #define HID_KEYBOARD_LED_KATANA (1 << 3) /* Type Defines: */ + /** Enum for the HID class specific control requests that can be issued by the USB bus host. */ + enum HID_ClassRequests_t + { + HID_REQ_GetReport = 0x01, /**< HID class-specific Request to get the current HID report from the device. */ + HID_REQ_GetIdle = 0x02, /**< HID class-specific Request to get the current device idle count. */ + HID_REQ_SetReport = 0x09, /**< HID class-specific Request to set the current HID report to the device. */ + HID_REQ_SetIdle = 0x0A, /**< HID class-specific Request to set the device's idle count. */ + HID_REQ_GetProtocol = 0x03, /**< HID class-specific Request to get the current HID report protocol mode. */ + HID_REQ_SetProtocol = 0x0B, /**< HID class-specific Request to set the current HID report protocol mode. */ + }; + + /** Enum for the HID class specific descriptor types. */ + enum HID_DescriptorTypes_t + { + HID_DTYPE_HID = 0x21, /**< Descriptor header type value, to indicate a HID class HID descriptor. */ + HID_DTYPE_Report = 0x22, /**< Descriptor header type value, to indicate a HID class HID report descriptor. */ + }; + + /** Enum for the HID class boot protocols that may be supported by HID devices. */ + enum HID_BootProtocols_t + { + HID_BOOTP_NonBootProtocol = 0x00, /**< Constant for the protocol value of a HID interface descriptor, indicating + * that the interface does not support any HID class boot protocol (see HID + * Class Specification). + */ + HID_BOOTP_KeyboardBootProtocol = 0x01, /**< Constant for the protocol value of a HID interface descriptor, indicating + * that the interface supports the HID class Keyboard boot protocol (see HID + * Class Specification). + */ + HID_BOOTP_MouseBootProtocol = 0x02, /**< Constant for the protocol value of a HID interface descriptor, indicating + * that the interface supports the HID class Mouse boot protocol (see HID Class + * Specification). + */ + }; + /** Enum for the different types of HID reports. */ enum HID_ReportItemTypes_t { - REPORT_ITEM_TYPE_In = 0, /**< Indicates that the item is an IN report type. */ - REPORT_ITEM_TYPE_Out = 1, /**< Indicates that the item is an OUT report type. */ - REPORT_ITEM_TYPE_Feature = 2, /**< Indicates that the item is a FEATURE report type. */ + HID_REPORT_ITEM_In = 0, /**< Indicates that the item is an IN report type. */ + HID_REPORT_ITEM_Out = 1, /**< Indicates that the item is an OUT report type. */ + HID_REPORT_ITEM_Feature = 2, /**< Indicates that the item is a FEATURE report type. */ }; - /** \brief HID Class Specific HID Descriptor. + /** \brief HID class-specific HID Descriptor (LUFA naming conventions). + * + * Type define for the HID class-specific HID descriptor, to describe the HID device's specifications. Refer to the HID + * specification for details on the structure elements. + * + * \see \ref USB_HID_StdDescriptor_HID_t for the version of this type with standard element names. + */ + typedef struct + { + USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */ + + uint16_t HIDSpec; /**< BCD encoded version that the HID descriptor and device complies to. */ + uint8_t CountryCode; /**< Country code of the localized device, or zero if universal. */ + + uint8_t TotalReportDescriptors; /**< Total number of HID report descriptors for the interface. */ + + uint8_t HIDReportType; /**< Type of HID report, set to \ref HID_DTYPE_Report. */ + uint16_t HIDReportLength; /**< Length of the associated HID report descriptor, in bytes. */ + } USB_HID_Descriptor_HID_t; + + /** \brief HID class-specific HID Descriptor (USB-IF naming conventions). * - * Type define for the HID class specific HID descriptor, to describe the HID device's specifications. Refer to the HID + * Type define for the HID class-specific HID descriptor, to describe the HID device's specifications. Refer to the HID * specification for details on the structure elements. + * + * \see \ref USB_HID_Descriptor_HID_t for the version of this type with non-standard LUFA specific + * element names. */ typedef struct { - USB_Descriptor_Header_t Header; - - uint16_t HIDSpec; - uint8_t CountryCode; + uint8_t bLength; /**< Size of the descriptor, in bytes. */ + uint8_t bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value + * given by the specific class. + */ + + uint16_t bcdHID; /**< BCD encoded version that the HID descriptor and device complies to. */ + uint8_t bCountryCode; /**< Country code of the localized device, or zero if universal. */ - uint8_t TotalReportDescriptors; + uint8_t bNumDescriptors; /**< Total number of HID report descriptors for the interface. */ - uint8_t HIDReportType; - uint16_t HIDReportLength; - } USB_HID_Descriptor_t; + uint8_t bDescriptorType2; /**< Type of HID report, set to \ref HID_DTYPE_Report. */ + uint16_t wDescriptorLength; /**< Length of the associated HID report descriptor, in bytes. */ + } USB_HID_StdDescriptor_HID_t; /** \brief Standard HID Boot Protocol Mouse Report. * @@ -169,9 +191,9 @@ */ typedef struct { - uint8_t Button; /**< Button mask for currently pressed buttons in the mouse */ - int8_t X; /**< Current delta X movement of the mouse */ - int8_t Y; /**< Current delta Y movement on the mouse */ + uint8_t Button; /**< Button mask for currently pressed buttons in the mouse. */ + int8_t X; /**< Current delta X movement of the mouse. */ + int8_t Y; /**< Current delta Y movement on the mouse. */ } USB_MouseReport_Data_t; /** \brief Standard HID Boot Protocol Keyboard Report. @@ -181,10 +203,10 @@ typedef struct { uint8_t Modifier; /**< Keyboard modifier byte, indicating pressed modifier keys (a combination of - * HID_KEYBOARD_MODIFER_* masks) + * HID_KEYBOARD_MODIFER_* masks). */ - uint8_t Reserved; /**< Reserved for OEM use, always set to 0 */ - uint8_t KeyCode[6]; /**< Key codes of the currently pressed keys */ + uint8_t Reserved; /**< Reserved for OEM use, always set to 0. */ + uint8_t KeyCode[6]; /**< Key codes of the currently pressed keys. */ } USB_KeyboardReport_Data_t; /** Type define for the data type used to store HID report descriptor elements. */