]> git.donarmstrong.com Git - tmk_firmware.git/blobdiff - protocol/vusb/vusb.c
Add consumer/system control feature to LUFA.
[tmk_firmware.git] / protocol / vusb / vusb.c
index 1dff5dea2682219a1c745685fc89cc65f72136ba..4e11836e16f11b19ad0c32769968f048ac0afa10 100644 (file)
@@ -107,32 +107,25 @@ static void send_mouse(report_mouse_t *report)
     }
 }
 
-/*
+
 typedef struct {
-    uint8_t report_id;
-    uint8_t data0;
-    uint8_t data1;
-} __attribute__ ((packed)) vusb_system_report_t;
-*/
+    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;
-*/
-/*
-    vusb_system_report_t r = {
+    static uint16_t last_data = 0;
+    if (data == last_data) return;
+    last_data = data;
+
+    report_extra_t report = {
         .report_id = REPORT_ID_SYSTEM,
-        .data0 = data&0xFF,
-        .data1 = (data>>8)&0xFF
+        .usage = data
     };
     if (usbInterruptIsReady3()) {
-        usbSetInterrupt3((void *)&r, sizeof(vusb_system_report_t));
+        usbSetInterrupt3((void *)&report, sizeof(report));
     }
-*/
 }
 
 static void send_consumer(uint16_t data)
@@ -141,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));
     }