Fix "grep: Version.h: No such file or directory" error when including the core LUFA...
[pub/USBasp.git] / Demos / Device / LowLevel / KeyboardMouse / Descriptors.c
index b04dccd..73e65f0 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
+     Copyright (C) Dean Camera, 2013.
 
   dean [at] fourwalledcubicle [dot] com
 
   dean [at] fourwalledcubicle [dot] com
-      www.fourwalledcubicle.com
+           www.lufa-lib.org
 */
 
 /*
 */
 
 /*
-  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2013  Dean Camera (dean [at] fourwalledcubicle [dot] com)
   Copyright 2010  Denver Gingerich (denver [at] ossguy [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   Copyright 2010  Denver Gingerich (denver [at] ossguy [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
@@ -19,7 +19,7 @@
   advertising or publicity pertaining to distribution of the
   software without specific, written prior permission.
 
   advertising or publicity pertaining to distribution of the
   software without specific, written prior permission.
 
-  The author disclaim all warranties with regard to this
+  The author disclaims all warranties with regard to this
   software, including all implied warranties of merchantability
   and fitness.  In no event shall the author be liable for any
   special, indirect or consequential damages or any damages
   software, including all implied warranties of merchantability
   and fitness.  In no event shall the author be liable for any
   special, indirect or consequential damages or any damages
  *
  *  This descriptor describes the mouse HID interface's report structure.
  */
  *
  *  This descriptor describes the mouse HID interface's report structure.
  */
-USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] =
+const USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] =
 {
 {
-       0x05, 0x01,          /* Usage Page (Generic Desktop)                    */
-       0x09, 0x02,          /* Usage (Mouse)                                   */
-       0xA1, 0x01,          /* Collection (Application)                        */
-       0x09, 0x01,          /*   Usage (Pointer)                               */
-       0xA1, 0x00,          /*   Collection (Physical)                         */
-       0x95, 0x03,          /*     Report Count (3)                            */
-       0x75, 0x01,          /*     Report Size (1)                             */
-       0x05, 0x09,          /*     Usage Page (Button)                         */
-       0x19, 0x01,          /*     Usage Minimum (Button 1)                    */
-       0x29, 0x03,          /*     Usage Maximum (Button 3)                    */
-       0x15, 0x00,          /*     Logical Minimum (0)                         */
-       0x25, 0x01,          /*     Logical Maximum (1)                         */
-       0x81, 0x02,          /*     Input (Data, Variable, Absolute)            */
-       0x95, 0x01,          /*     Report Count (1)                            */
-       0x75, 0x05,          /*     Report Size (5)                             */
-       0x81, 0x01,          /*     Input (Constant)                            */
-       0x75, 0x08,          /*     Report Size (8)                             */
-       0x95, 0x02,          /*     Report Count (2)                            */
-       0x05, 0x01,          /*     Usage Page (Generic Desktop Control)        */
-       0x09, 0x30,          /*     Usage X                                     */
-       0x09, 0x31,          /*     Usage Y                                     */
-       0x15, 0x81,          /*     Logical Minimum (-127)                      */
-       0x25, 0x7F,          /*     Logical Maximum (127)                       */
-       0x81, 0x06,          /*     Input (Data, Variable, Relative)            */
-       0xC0,                /*   End Collection                                */
-       0xC0,                /* End Collection                                  */
+       HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
+       HID_RI_USAGE(8, 0x02), /* Mouse */
+       HID_RI_COLLECTION(8, 0x01), /* Application */
+           HID_RI_USAGE(8, 0x01), /* Pointer */
+           HID_RI_COLLECTION(8, 0x00), /* Physical */
+               HID_RI_USAGE_PAGE(8, 0x09), /* Button */
+               HID_RI_USAGE_MINIMUM(8, 0x01),
+               HID_RI_USAGE_MAXIMUM(8, 0x03),
+               HID_RI_LOGICAL_MINIMUM(8, 0x00),
+               HID_RI_LOGICAL_MAXIMUM(8, 0x01),
+               HID_RI_REPORT_COUNT(8, 0x03),
+               HID_RI_REPORT_SIZE(8, 0x01),
+               HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
+               HID_RI_REPORT_COUNT(8, 0x01),
+               HID_RI_REPORT_SIZE(8, 0x05),
+               HID_RI_INPUT(8, HID_IOF_CONSTANT),
+               HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
+               HID_RI_USAGE(8, 0x30), /* Usage X */
+               HID_RI_USAGE(8, 0x31), /* Usage Y */
+               HID_RI_LOGICAL_MINIMUM(8, -1),
+               HID_RI_LOGICAL_MAXIMUM(8, 1),
+               HID_RI_PHYSICAL_MINIMUM(8, -1),
+               HID_RI_PHYSICAL_MAXIMUM(8, 1),
+               HID_RI_REPORT_COUNT(8, 0x02),
+               HID_RI_REPORT_SIZE(8, 0x08),
+               HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE),
+           HID_RI_END_COLLECTION(0),
+       HID_RI_END_COLLECTION(0),
 };
 
 /** Same as the MouseReport structure, but defines the keyboard HID interface's report structure. */
 };
 
 /** Same as the MouseReport structure, but defines the keyboard HID interface's report structure. */
-USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] =
+const USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] =
 {
 {
-       0x05, 0x01,          /* Usage Page (Generic Desktop)                    */
-       0x09, 0x06,          /* Usage (Keyboard)                                */
-       0xa1, 0x01,          /* Collection (Application)                        */
-       0x75, 0x01,          /*   Report Size (1)                               */
-       0x95, 0x08,          /*   Report Count (8)                              */
-       0x05, 0x07,          /*   Usage Page (Key Codes)                        */
-       0x19, 0xe0,          /*   Usage Minimum (Keyboard LeftControl)          */
-       0x29, 0xe7,          /*   Usage Maximum (Keyboard Right GUI)            */
-       0x15, 0x00,          /*   Logical Minimum (0)                           */
-       0x25, 0x01,          /*   Logical Maximum (1)                           */
-       0x81, 0x02,          /*   Input (Data, Variable, Absolute)              */
-       0x95, 0x01,          /*   Report Count (1)                              */
-       0x75, 0x08,          /*   Report Size (8)                               */
-       0x81, 0x03,          /*   Input (Const, Variable, Absolute)             */
-       0x95, 0x05,          /*   Report Count (5)                              */
-       0x75, 0x01,          /*   Report Size (1)                               */
-       0x05, 0x08,          /*   Usage Page (LEDs)                             */
-       0x19, 0x01,          /*   Usage Minimum (Num Lock)                      */
-       0x29, 0x05,          /*   Usage Maximum (Kana)                          */
-       0x91, 0x02,          /*   Output (Data, Variable, Absolute)             */
-       0x95, 0x01,          /*   Report Count (1)                              */
-       0x75, 0x03,          /*   Report Size (3)                               */
-       0x91, 0x03,          /*   Output (Const, Variable, Absolute)            */
-       0x95, 0x06,          /*   Report Count (6)                              */
-       0x75, 0x08,          /*   Report Size (8)                               */
-       0x15, 0x00,          /*   Logical Minimum (0)                           */
-       0x25, 0x65,          /*   Logical Maximum (101)                         */
-       0x05, 0x07,          /*   Usage Page (Keyboard)                         */
-       0x19, 0x00,          /*   Usage Minimum (Reserved (no event indicated)) */
-       0x29, 0x65,          /*   Usage Maximum (Keyboard Application)          */
-       0x81, 0x00,          /*   Input (Data, Array, Absolute)                 */
-       0xC0                 /* End Collection                                  */
+       HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
+       HID_RI_USAGE(8, 0x06), /* Keyboard */
+       HID_RI_COLLECTION(8, 0x01), /* Application */
+           HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
+           HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */
+           HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
+           HID_RI_LOGICAL_MINIMUM(8, 0x00),
+           HID_RI_LOGICAL_MAXIMUM(8, 0x01),
+           HID_RI_REPORT_SIZE(8, 0x01),
+           HID_RI_REPORT_COUNT(8, 0x08),
+           HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
+           HID_RI_REPORT_COUNT(8, 0x01),
+           HID_RI_REPORT_SIZE(8, 0x08),
+           HID_RI_INPUT(8, HID_IOF_CONSTANT),
+           HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */
+           HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */
+           HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */
+           HID_RI_REPORT_COUNT(8, 0x05),
+           HID_RI_REPORT_SIZE(8, 0x01),
+           HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
+           HID_RI_REPORT_COUNT(8, 0x01),
+           HID_RI_REPORT_SIZE(8, 0x03),
+           HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
+           HID_RI_LOGICAL_MINIMUM(8, 0x00),
+           HID_RI_LOGICAL_MAXIMUM(8, 0x65),
+           HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
+           HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
+           HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */
+           HID_RI_REPORT_COUNT(8, 0x06),
+           HID_RI_REPORT_SIZE(8, 0x08),
+           HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE),
+       HID_RI_END_COLLECTION(0),
 };
 
 /** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall
 };
 
 /** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall
@@ -118,14 +120,14 @@ USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] =
  *  number of device configurations. The descriptor is read out by the USB host when the enumeration
  *  process begins.
  */
  *  number of device configurations. The descriptor is read out by the USB host when the enumeration
  *  process begins.
  */
-USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
+const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
 {
        .Header                 = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
 
        .USBSpecification       = VERSION_BCD(01.10),
 {
        .Header                 = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
 
        .USBSpecification       = VERSION_BCD(01.10),
-       .Class                  = 0x00,
-       .SubClass               = 0x00,
-       .Protocol               = 0x00,
+       .Class                  = USB_CSCP_NoDeviceClass,
+       .SubClass               = USB_CSCP_NoDeviceSubclass,
+       .Protocol               = USB_CSCP_NoDeviceProtocol,
 
        .Endpoint0Size          = FIXED_CONTROL_ENDPOINT_SIZE,
 
 
        .Endpoint0Size          = FIXED_CONTROL_ENDPOINT_SIZE,
 
@@ -145,7 +147,7 @@ USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
  *  and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting
  *  a configuration so that the host may correctly communicate with the USB device.
  */
  *  and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting
  *  a configuration so that the host may correctly communicate with the USB device.
  */
-USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
+const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 {
        .Config =
                {
 {
        .Config =
                {
@@ -157,7 +159,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
                        .ConfigurationNumber    = 1,
                        .ConfigurationStrIndex  = NO_DESCRIPTOR,
 
                        .ConfigurationNumber    = 1,
                        .ConfigurationStrIndex  = NO_DESCRIPTOR,
 
-                       .ConfigAttributes       = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED),
+                       .ConfigAttributes       = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED),
 
                        .MaxPowerConsumption    = USB_CONFIG_POWER_MA(100)
                },
 
                        .MaxPowerConsumption    = USB_CONFIG_POWER_MA(100)
                },
@@ -171,21 +173,21 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
                        .TotalEndpoints         = 2,
 
 
                        .TotalEndpoints         = 2,
 
-                       .Class                  = 0x03,
-                       .SubClass               = 0x01,
-                       .Protocol               = 0x01,
+                       .Class                  = HID_CSCP_HIDClass,
+                       .SubClass               = HID_CSCP_BootSubclass,
+                       .Protocol               = HID_CSCP_KeyboardBootProtocol,
 
                        .InterfaceStrIndex      = NO_DESCRIPTOR
                },
 
        .HID1_KeyboardHID =
                {
 
                        .InterfaceStrIndex      = NO_DESCRIPTOR
                },
 
        .HID1_KeyboardHID =
                {
-                       .Header                 = {.Size = sizeof(USB_Descriptor_HID_t), .Type = DTYPE_HID},
+                       .Header                 = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID},
 
                        .HIDSpec                = VERSION_BCD(01.11),
                        .CountryCode            = 0x00,
                        .TotalReportDescriptors = 1,
 
                        .HIDSpec                = VERSION_BCD(01.11),
                        .CountryCode            = 0x00,
                        .TotalReportDescriptors = 1,
-                       .HIDReportType          = DTYPE_Report,
+                       .HIDReportType          = HID_DTYPE_Report,
                        .HIDReportLength        = sizeof(KeyboardReport)
                },
 
                        .HIDReportLength        = sizeof(KeyboardReport)
                },
 
@@ -193,20 +195,20 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
                {
                        .Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
 
                {
                        .Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
 
-                       .EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_IN | KEYBOARD_IN_EPNUM),
+                       .EndpointAddress        = KEYBOARD_IN_EPADDR,
                        .Attributes             = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
                        .EndpointSize           = HID_EPSIZE,
                        .Attributes             = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
                        .EndpointSize           = HID_EPSIZE,
-                       .PollingIntervalMS      = 0x0A
+                       .PollingIntervalMS      = 0x05
                },
 
        .HID1_ReportOUTEndpoint =
                {
                        .Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
 
                },
 
        .HID1_ReportOUTEndpoint =
                {
                        .Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
 
-                       .EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_OUT | KEYBOARD_OUT_EPNUM),
+                       .EndpointAddress        = KEYBOARD_OUT_EPADDR,
                        .Attributes             = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
                        .EndpointSize           = HID_EPSIZE,
                        .Attributes             = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
                        .EndpointSize           = HID_EPSIZE,
-                       .PollingIntervalMS      = 0x0A
+                       .PollingIntervalMS      = 0x05
                },
 
        .HID2_MouseInterface =
                },
 
        .HID2_MouseInterface =
@@ -218,21 +220,21 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
                        .TotalEndpoints         = 1,
 
 
                        .TotalEndpoints         = 1,
 
-                       .Class                  = 0x03,
-                       .SubClass               = 0x01,
-                       .Protocol               = 0x02,
+                       .Class                  = HID_CSCP_HIDClass,
+                       .SubClass               = HID_CSCP_BootSubclass,
+                       .Protocol               = HID_CSCP_MouseBootProtocol,
 
                        .InterfaceStrIndex      = NO_DESCRIPTOR
                },
 
        .HID2_MouseHID =
                {
 
                        .InterfaceStrIndex      = NO_DESCRIPTOR
                },
 
        .HID2_MouseHID =
                {
-                       .Header                 = {.Size = sizeof(USB_Descriptor_HID_t), .Type = DTYPE_HID},
+                       .Header                 = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID},
 
                        .HIDSpec                = VERSION_BCD(01.11),
                        .CountryCode            = 0x00,
                        .TotalReportDescriptors = 1,
 
                        .HIDSpec                = VERSION_BCD(01.11),
                        .CountryCode            = 0x00,
                        .TotalReportDescriptors = 1,
-                       .HIDReportType          = DTYPE_Report,
+                       .HIDReportType          = HID_DTYPE_Report,
                        .HIDReportLength        = sizeof(MouseReport)
                },
 
                        .HIDReportLength        = sizeof(MouseReport)
                },
 
@@ -240,10 +242,10 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
                {
                        .Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
 
                {
                        .Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
 
-                       .EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_IN | MOUSE_IN_EPNUM),
+                       .EndpointAddress        = MOUSE_IN_EPADDR,
                        .Attributes             = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
                        .EndpointSize           = HID_EPSIZE,
                        .Attributes             = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
                        .EndpointSize           = HID_EPSIZE,
-                       .PollingIntervalMS      = 0x0A
+                       .PollingIntervalMS      = 0x05
                }
 };
 
                }
 };
 
@@ -251,7 +253,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
  *  the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate
  *  via the language ID table available at USB.org what languages the device supports for its string descriptors.
  */
  *  the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate
  *  via the language ID table available at USB.org what languages the device supports for its string descriptors.
  */
-USB_Descriptor_String_t PROGMEM LanguageString =
+const USB_Descriptor_String_t PROGMEM LanguageString =
 {
        .Header                 = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
 
 {
        .Header                 = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
 
@@ -262,7 +264,7 @@ USB_Descriptor_String_t PROGMEM LanguageString =
  *  form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
  *  Descriptor.
  */
  *  form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
  *  Descriptor.
  */
-USB_Descriptor_String_t PROGMEM ManufacturerString =
+const USB_Descriptor_String_t PROGMEM ManufacturerString =
 {
        .Header                 = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
 
 {
        .Header                 = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
 
@@ -273,7 +275,7 @@ USB_Descriptor_String_t PROGMEM ManufacturerString =
  *  and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
  *  Descriptor.
  */
  *  and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
  *  Descriptor.
  */
-USB_Descriptor_String_t PROGMEM ProductString =
+const USB_Descriptor_String_t PROGMEM ProductString =
 {
        .Header                 = {.Size = USB_STRING_LEN(28), .Type = DTYPE_String},
 
 {
        .Header                 = {.Size = USB_STRING_LEN(28), .Type = DTYPE_String},
 
@@ -324,19 +326,19 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
                        }
 
                        break;
                        }
 
                        break;
-               case DTYPE_HID:
+               case HID_DTYPE_HID:
                        if (!(wIndex))
                        {
                                Address = &ConfigurationDescriptor.HID1_KeyboardHID;
                        if (!(wIndex))
                        {
                                Address = &ConfigurationDescriptor.HID1_KeyboardHID;
-                               Size    = sizeof(USB_Descriptor_HID_t);
+                               Size    = sizeof(USB_HID_Descriptor_HID_t);
                        }
                        else
                        {
                                Address = &ConfigurationDescriptor.HID2_MouseHID;
                        }
                        else
                        {
                                Address = &ConfigurationDescriptor.HID2_MouseHID;
-                               Size    = sizeof(USB_Descriptor_HID_t);
+                               Size    = sizeof(USB_HID_Descriptor_HID_t);
                        }
                        break;
                        }
                        break;
-               case DTYPE_Report:
+               case HID_DTYPE_Report:
                        if (!(wIndex))
                        {
                                Address = &KeyboardReport;
                        if (!(wIndex))
                        {
                                Address = &KeyboardReport;