diff options
author | tmk <nobody@nowhere> | 2012-06-30 14:56:24 +0900 |
---|---|---|
committer | tmk <nobody@nowhere> | 2012-06-30 14:56:24 +0900 |
commit | fca518f90dfc7f72132ff7950b000cfbd5709807 (patch) | |
tree | 1c61e7b91f1f4986232a1fdca421b3346f8a9431 /protocol/vusb/vusb.c | |
parent | 76033dcd892a115240c5a990e5643cd53acbca87 (diff) | |
parent | 2769f09d11a4c45362f2e6137f2469d057d8757e (diff) | |
download | qmk_firmware-fca518f90dfc7f72132ff7950b000cfbd5709807.tar.gz qmk_firmware-fca518f90dfc7f72132ff7950b000cfbd5709807.zip |
Merge branch 'lufa'
Diffstat (limited to 'protocol/vusb/vusb.c')
-rw-r--r-- | protocol/vusb/vusb.c | 38 |
1 files changed, 28 insertions, 10 deletions
diff --git a/protocol/vusb/vusb.c b/protocol/vusb/vusb.c index 0bfe21e92e..4e11836e16 100644 --- a/protocol/vusb/vusb.c +++ b/protocol/vusb/vusb.c @@ -91,20 +91,38 @@ static void send_keyboard(report_keyboard_t *report) } +typedef struct { + uint8_t report_id; + report_mouse_t report; +} __attribute__ ((packed)) vusb_mouse_report_t; + static void send_mouse(report_mouse_t *report) { - report->report_id = REPORT_ID_MOUSE; + vusb_mouse_report_t r = { + .report_id = REPORT_ID_MOUSE, + .report = *report + }; if (usbInterruptIsReady3()) { - usbSetInterrupt3((void *)report, sizeof(*report)); + usbSetInterrupt3((void *)&r, sizeof(vusb_mouse_report_t)); } } + +typedef struct { + uint8_t report_id; + uint16_t usage; +} __attribute__ ((packed)) report_extra_t; + static void send_system(uint16_t data) { - // Not need static? - static uint8_t report[] = { REPORT_ID_SYSTEM, 0, 0 }; - report[1] = data&0xFF; - report[2] = (data>>8)&0xFF; + static uint16_t last_data = 0; + if (data == last_data) return; + last_data = data; + + report_extra_t report = { + .report_id = REPORT_ID_SYSTEM, + .usage = data + }; if (usbInterruptIsReady3()) { usbSetInterrupt3((void *)&report, sizeof(report)); } @@ -116,10 +134,10 @@ static void send_consumer(uint16_t data) if (data == last_data) return; last_data = data; - // Not need static? - static uint8_t report[] = { REPORT_ID_CONSUMER, 0, 0 }; - report[1] = data&0xFF; - report[2] = (data>>8)&0xFF; + report_extra_t report = { + .report_id = REPORT_ID_CONSUMER, + .usage = data + }; if (usbInterruptIsReady3()) { usbSetInterrupt3((void *)&report, sizeof(report)); } |