diff options
author | Dean Camera <[email protected]> | 2011-08-22 13:03:56 +0000 |
---|---|---|
committer | Dean Camera <[email protected]> | 2011-08-22 13:03:56 +0000 |
commit | d0ac8e46f958e81f78876740202ca489569f5689 (patch) | |
tree | 43b71715d52e266156428023db2b83b81cf3f540 /Demos | |
parent | 40946a570405a522b2cd04295bc2dad746b936fc (diff) | |
download | qmk_firmware-d0ac8e46f958e81f78876740202ca489569f5689.tar.gz qmk_firmware-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')
-rw-r--r-- | Demos/Device/ClassDriver/GenericHID/GenericHID.c | 44 | ||||
-rw-r--r-- | Demos/Device/LowLevel/GenericHID/GenericHID.c | 34 | ||||
-rw-r--r-- | Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c | 2 |
3 files changed, 51 insertions, 29 deletions
diff --git a/Demos/Device/ClassDriver/GenericHID/GenericHID.c b/Demos/Device/ClassDriver/GenericHID/GenericHID.c index 7eea008c53..f44d7fc2e3 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); } diff --git a/Demos/Device/LowLevel/GenericHID/GenericHID.c b/Demos/Device/LowLevel/GenericHID/GenericHID.c index 70ca0a5cee..69c417655b 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) diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c index 35bfcdd026..ed4a24872f 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c @@ -44,7 +44,7 @@ #define INCLUDE_FROM_BLUETOOTHHCICOMMANDS_C #include "BluetoothHCICommands.h" -/** Temporary Bluetooth Device Address, for HCI responses which much include the destination address */ +/** Temporary Bluetooth Device Address, for HCI responses which must include the destination address */ static uint8_t Bluetooth_TempDeviceAddress[6]; /** Bluetooth HCI processing task. This task should be called repeatedly the main Bluetooth |