summaryrefslogtreecommitdiff
path: root/tmk_core/protocol/vusb
diff options
context:
space:
mode:
authorfauxpark <fauxpark@gmail.com>2020-02-03 07:17:05 +1100
committerFlorian Didron <fdidron@users.noreply.github.com>2020-02-26 10:15:12 +0900
commitdf6e5f16b6c334f464ac444f6c0e350daf7ec873 (patch)
tree601dbb44b560888cb6679ec56234da7124a6c814 /tmk_core/protocol/vusb
parent4c88e39d157e59d42e83100d2c1c54417b804c23 (diff)
Dedupe extrakey report struct, and send functions in V-USB & LUFA (#7993)
* Dedupe extrakey report struct, and send functions in V-USB & LUFA * Doc comment for consistency * Wrap it in ifdef to prevent unused function error * Do the same for ATSAM
Diffstat (limited to 'tmk_core/protocol/vusb')
-rw-r--r--tmk_core/protocol/vusb/vusb.c26
1 files changed, 10 insertions, 16 deletions
diff --git a/tmk_core/protocol/vusb/vusb.c b/tmk_core/protocol/vusb/vusb.c
index 72445e00bb..1a2acc11b7 100644
--- a/tmk_core/protocol/vusb/vusb.c
+++ b/tmk_core/protocol/vusb/vusb.c
@@ -113,31 +113,25 @@ static void send_mouse(report_mouse_t *report) {
}
}
-typedef struct {
- uint8_t report_id;
- uint16_t usage;
-} __attribute__((packed)) report_extra_t;
-
-static void send_system(uint16_t data) {
+static void send_extra(uint8_t report_id, uint16_t data) {
+ static uint8_t last_id = 0;
static uint16_t last_data = 0;
- if (data == last_data) return;
+ if ((report_id == last_id) && (data == last_data)) return;
+ last_id = report_id;
last_data = data;
- report_extra_t report = {.report_id = REPORT_ID_SYSTEM, .usage = data};
+ report_extra_t report = {.report_id = report_id, .usage = data};
if (usbInterruptIsReady3()) {
usbSetInterrupt3((void *)&report, sizeof(report));
}
}
-static void send_consumer(uint16_t data) {
- static uint16_t last_data = 0;
- if (data == last_data) return;
- last_data = data;
+static void send_system(uint16_t data) {
+ send_extra(REPORT_ID_SYSTEM, data);
+}
- report_extra_t report = {.report_id = REPORT_ID_CONSUMER, .usage = data};
- if (usbInterruptIsReady3()) {
- usbSetInterrupt3((void *)&report, sizeof(report));
- }
+static void send_consumer(uint16_t data) {
+ send_extra(REPORT_ID_CONSUMER, data);
}
/*------------------------------------------------------------------*