diff options
Diffstat (limited to 'Demos/Device/LowLevel/GenericHID')
| -rw-r--r-- | Demos/Device/LowLevel/GenericHID/Descriptors.c | 4 | ||||
| -rw-r--r-- | Demos/Device/LowLevel/GenericHID/GenericHID.c | 34 |
2 files changed, 26 insertions, 12 deletions
diff --git a/Demos/Device/LowLevel/GenericHID/Descriptors.c b/Demos/Device/LowLevel/GenericHID/Descriptors.c index abc9e801..a981b93c 100644 --- a/Demos/Device/LowLevel/GenericHID/Descriptors.c +++ b/Demos/Device/LowLevel/GenericHID/Descriptors.c @@ -143,7 +143,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = { .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | GENERIC_IN_EPNUM), + .EndpointAddress = (ENDPOINT_DIR_IN | GENERIC_IN_EPNUM), .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), .EndpointSize = GENERIC_EPSIZE, .PollingIntervalMS = 0x01 @@ -153,7 +153,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = { .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | GENERIC_OUT_EPNUM), + .EndpointAddress = (ENDPOINT_DIR_OUT | GENERIC_OUT_EPNUM), .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), .EndpointSize = GENERIC_EPSIZE, .PollingIntervalMS = 0x01 diff --git a/Demos/Device/LowLevel/GenericHID/GenericHID.c b/Demos/Device/LowLevel/GenericHID/GenericHID.c index 70ca0a5c..69c41765 100644 --- a/Demos/Device/LowLevel/GenericHID/GenericHID.c +++ b/Demos/Device/LowLevel/GenericHID/GenericHID.c @@ -36,9 +36,6 @@ #include "GenericHID.h" -/** Static buffer to hold the last received report from the host, so that it can be echoed back in the next sent report */ -static uint8_t LastReceived[GENERIC_REPORT_SIZE]; - /** Main program entry point. This routine configures the hardware required by the application, then * enters a loop to run the application tasks in sequence. @@ -155,13 +152,26 @@ void EVENT_USB_Device_ControlRequest(void) void ProcessGenericHIDReport(uint8_t* DataArray) { /* - This is where you need to process the reports being sent from the host to the device. - DataArray is an array holding the last report from the host. This function is called - each time the host has sent a report to the device. + This is where you need to process reports sent from the host to the device. This + function is called each time the host has sent a new report. DataArray is an array + holding the report sent from the host. */ - for (uint8_t i = 0; i < GENERIC_REPORT_SIZE; i++) - LastReceived[i] = DataArray[i]; + uint8_t NewLEDMask = LEDS_NO_LEDS; + + if (DataArray[0]) + NewLEDMask |= LEDS_LED1; + + if (DataArray[1]) + NewLEDMask |= LEDS_LED1; + + if (DataArray[2]) + NewLEDMask |= LEDS_LED1; + + if (DataArray[3]) + NewLEDMask |= LEDS_LED1; + + LEDs_SetAllLEDs(NewLEDMask); } /** Function to create the next report to send back to the host at the next reporting interval. @@ -176,8 +186,12 @@ void CreateGenericHIDReport(uint8_t* DataArray) an array to hold the report to the host. */ - for (uint8_t i = 0; i < GENERIC_REPORT_SIZE; i++) - DataArray[i] = LastReceived[i]; + uint8_t CurrLEDMask = LEDs_GetLEDs(); + + DataArray[0] = ((CurrLEDMask & LEDS_LED1) ? 1 : 0); + DataArray[1] = ((CurrLEDMask & LEDS_LED2) ? 1 : 0); + DataArray[2] = ((CurrLEDMask & LEDS_LED3) ? 1 : 0); + DataArray[3] = ((CurrLEDMask & LEDS_LED4) ? 1 : 0); } void HID_Task(void) |
