aboutsummaryrefslogtreecommitdiffstats
path: root/Demos/Device/ClassDriver/GenericHID/GenericHID.c
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2011-08-22 13:03:56 +0000
committerDean Camera <dean@fourwalledcubicle.com>2011-08-22 13:03:56 +0000
commitd0ac8e46f958e81f78876740202ca489569f5689 (patch)
tree43b71715d52e266156428023db2b83b81cf3f540 /Demos/Device/ClassDriver/GenericHID/GenericHID.c
parent40946a570405a522b2cd04295bc2dad746b936fc (diff)
downloadlufa-d0ac8e46f958e81f78876740202ca489569f5689.tar.gz
lufa-d0ac8e46f958e81f78876740202ca489569f5689.tar.bz2
lufa-d0ac8e46f958e81f78876740202ca489569f5689.zip
Renamed the JTAG_DEBUG_ASSERT() macro to JTAG_ASSERT().
Changed the reports in the GenericHID device demos to control the board LEDs, to reduce user confusion over the callback routines. Fixed swapped TWI_ADDRESS_READ and TWI_ADDRESS_WRITE values. Fixed TWI_ReadPacket() not releasing the TWI bus on read completion.
Diffstat (limited to 'Demos/Device/ClassDriver/GenericHID/GenericHID.c')
-rw-r--r--Demos/Device/ClassDriver/GenericHID/GenericHID.c44
1 files changed, 26 insertions, 18 deletions
diff --git a/Demos/Device/ClassDriver/GenericHID/GenericHID.c b/Demos/Device/ClassDriver/GenericHID/GenericHID.c
index 7eea008c5..f44d7fc2e 100644
--- a/Demos/Device/ClassDriver/GenericHID/GenericHID.c
+++ b/Demos/Device/ClassDriver/GenericHID/GenericHID.c
@@ -39,14 +39,6 @@
/** Buffer to hold the previously generated HID report, for comparison purposes inside the HID class driver. */
static uint8_t PrevHIDReportBuffer[GENERIC_REPORT_SIZE];
-/** Structure to contain reports from the host, so that they can be echoed back upon request */
-static struct
-{
- uint8_t ReportID;
- uint16_t ReportSize;
- uint8_t ReportData[GENERIC_REPORT_SIZE];
-} HIDReportEcho;
-
/** LUFA HID Class driver interface configuration and state information. This structure is
* passed to all HID Class driver functions, so that multiple instances of the same class
* within a device can be differentiated from one another.
@@ -151,13 +143,16 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
void* ReportData,
uint16_t* const ReportSize)
{
- if (HIDReportEcho.ReportID)
- *ReportID = HIDReportEcho.ReportID;
-
- memcpy(ReportData, HIDReportEcho.ReportData, HIDReportEcho.ReportSize);
-
- *ReportSize = HIDReportEcho.ReportSize;
- return true;
+ uint8_t* Data = (uint8_t*)ReportData;
+ uint8_t CurrLEDMask = LEDs_GetLEDs();
+
+ Data[0] = ((CurrLEDMask & LEDS_LED1) ? 1 : 0);
+ Data[1] = ((CurrLEDMask & LEDS_LED2) ? 1 : 0);
+ Data[2] = ((CurrLEDMask & LEDS_LED3) ? 1 : 0);
+ Data[3] = ((CurrLEDMask & LEDS_LED4) ? 1 : 0);
+
+ *ReportSize = sizeof(GENERIC_REPORT_SIZE);
+ return false;
}
/** HID class driver callback function for the processing of HID reports from the host.
@@ -174,8 +169,21 @@ void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDI
const void* ReportData,
const uint16_t ReportSize)
{
- HIDReportEcho.ReportID = ReportID;
- HIDReportEcho.ReportSize = ReportSize;
- memcpy(HIDReportEcho.ReportData, ReportData, ReportSize);
+ uint8_t* Data = (uint8_t*)ReportData;
+ uint8_t NewLEDMask = LEDS_NO_LEDS;
+
+ if (Data[0])
+ NewLEDMask |= LEDS_LED1;
+
+ if (Data[1])
+ NewLEDMask |= LEDS_LED1;
+
+ if (Data[2])
+ NewLEDMask |= LEDS_LED1;
+
+ if (Data[3])
+ NewLEDMask |= LEDS_LED1;
+
+ LEDs_SetAllLEDs(NewLEDMask);
}