forked from mfulz_github/qmk_firmware
Split out LED report processing from the host into a seperate routine in the LowLevel KeyboardMouse device demo, to avoid duplicate code.
This commit is contained in:
parent
0c5d6f5f97
commit
6a48efd3bd
|
@ -180,8 +180,26 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read in the LED report from the host */
|
/* Read in and process the LED report from the host */
|
||||||
uint8_t LEDStatus = Endpoint_Read_Byte();
|
Keyboard_ProcessLEDReport(Endpoint_Read_Byte());
|
||||||
|
|
||||||
|
/* Clear the endpoint data */
|
||||||
|
Endpoint_ClearOUT();
|
||||||
|
|
||||||
|
Endpoint_ClearStatusStage();
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Processes a given Keyboard LED report from the host, and sets the board LEDs to match. Since the Keyboard
|
||||||
|
* LED report can be sent through either the control endpoint (via a HID SetReport request) or the HID OUT
|
||||||
|
* endpoint, the processing code is placed here to avoid duplicating it and potentially having different
|
||||||
|
* behaviour depending on the method used to sent it.
|
||||||
|
*/
|
||||||
|
void Keyboard_ProcessLEDReport(const uint8_t LEDStatus)
|
||||||
|
{
|
||||||
uint8_t LEDMask = LEDS_LED2;
|
uint8_t LEDMask = LEDS_LED2;
|
||||||
|
|
||||||
if (LEDStatus & KEYBOARD_LED_NUMLOCK)
|
if (LEDStatus & KEYBOARD_LED_NUMLOCK)
|
||||||
|
@ -193,17 +211,8 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
|
||||||
if (LEDStatus & KEYBOARD_LED_SCROLLLOCK)
|
if (LEDStatus & KEYBOARD_LED_SCROLLLOCK)
|
||||||
LEDMask |= LEDS_LED4;
|
LEDMask |= LEDS_LED4;
|
||||||
|
|
||||||
/* Set the status LEDs to the current HID LED status */
|
/* Set the status LEDs to the current Keyboard LED status */
|
||||||
LEDs_SetAllLEDs(LEDMask);
|
LEDs_SetAllLEDs(LEDMask);
|
||||||
|
|
||||||
/* Clear the endpoint data */
|
|
||||||
Endpoint_ClearOUT();
|
|
||||||
|
|
||||||
Endpoint_ClearStatusStage();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Keyboard task. This generates the next keyboard HID report for the host, and transmits it via the
|
/** Keyboard task. This generates the next keyboard HID report for the host, and transmits it via the
|
||||||
|
@ -260,21 +269,8 @@ void Keyboard_HID_Task(void)
|
||||||
/* Check if Keyboard LED Endpoint Ready for Read/Write */
|
/* Check if Keyboard LED Endpoint Ready for Read/Write */
|
||||||
if (Endpoint_IsReadWriteAllowed())
|
if (Endpoint_IsReadWriteAllowed())
|
||||||
{
|
{
|
||||||
/* Read in the LED report from the host */
|
/* Read in and process the LED report from the host */
|
||||||
uint8_t LEDStatus = Endpoint_Read_Byte();
|
Keyboard_ProcessLEDReport(Endpoint_Read_Byte());
|
||||||
uint8_t LEDMask = LEDS_LED2;
|
|
||||||
|
|
||||||
if (LEDStatus & KEYBOARD_LED_NUMLOCK)
|
|
||||||
LEDMask |= LEDS_LED1;
|
|
||||||
|
|
||||||
if (LEDStatus & KEYBOARD_LED_CAPSLOCK)
|
|
||||||
LEDMask |= LEDS_LED3;
|
|
||||||
|
|
||||||
if (LEDStatus & KEYBOARD_LED_SCROLLLOCK)
|
|
||||||
LEDMask |= LEDS_LED4;
|
|
||||||
|
|
||||||
/* Set the status LEDs to the current Keyboard LED status */
|
|
||||||
LEDs_SetAllLEDs(LEDMask);
|
|
||||||
|
|
||||||
/* Handshake the OUT Endpoint - clear endpoint and ready for next report */
|
/* Handshake the OUT Endpoint - clear endpoint and ready for next report */
|
||||||
Endpoint_ClearOUT();
|
Endpoint_ClearOUT();
|
||||||
|
|
|
@ -131,6 +131,7 @@
|
||||||
|
|
||||||
/* Function Prototypes: */
|
/* Function Prototypes: */
|
||||||
void SetupHardware(void);
|
void SetupHardware(void);
|
||||||
|
void Keyboard_ProcessLEDReport(const uint8_t LEDStatus);
|
||||||
void Keyboard_HID_Task(void);
|
void Keyboard_HID_Task(void);
|
||||||
void Mouse_HID_Task(void);
|
void Mouse_HID_Task(void);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue