diff options
Diffstat (limited to 'tmk_core')
| -rw-r--r-- | tmk_core/protocol/arm_atsam/main_arm_atsam.c | 19 | ||||
| -rw-r--r-- | tmk_core/protocol/arm_atsam/md_rgb_matrix_programs.c | 2 | ||||
| -rw-r--r-- | tmk_core/protocol/chibios/chibios.c | 5 | ||||
| -rw-r--r-- | tmk_core/protocol/chibios/usb_main.c | 14 | ||||
| -rw-r--r-- | tmk_core/protocol/host.c | 47 | ||||
| -rw-r--r-- | tmk_core/protocol/host_driver.h | 5 | ||||
| -rw-r--r-- | tmk_core/protocol/lufa/lufa.c | 78 | ||||
| -rw-r--r-- | tmk_core/protocol/usb_descriptor.c | 12 | ||||
| -rw-r--r-- | tmk_core/protocol/vusb/vusb.c | 31 | ||||
| -rw-r--r-- | tmk_core/protocol/vusb/vusb.h | 2 | 
10 files changed, 72 insertions, 143 deletions
| diff --git a/tmk_core/protocol/arm_atsam/main_arm_atsam.c b/tmk_core/protocol/arm_atsam/main_arm_atsam.c index 8ee9e042e7..0537e3937d 100644 --- a/tmk_core/protocol/arm_atsam/main_arm_atsam.c +++ b/tmk_core/protocol/arm_atsam/main_arm_atsam.c @@ -37,14 +37,13 @@ void    main_subtasks(void);  uint8_t keyboard_leds(void);  void    send_keyboard(report_keyboard_t *report);  void    send_mouse(report_mouse_t *report); -void    send_system(uint16_t data); -void    send_consumer(uint16_t data); +void    send_extra(uint8_t report_id, uint16_t data);  #ifdef DEFERRED_EXEC_ENABLE  void deferred_exec_task(void);  #endif // DEFERRED_EXEC_ENABLE -host_driver_t arm_atsam_driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer}; +host_driver_t arm_atsam_driver = {keyboard_leds, send_keyboard, send_mouse, send_extra};  uint8_t led_states; @@ -114,8 +113,8 @@ void send_mouse(report_mouse_t *report) {  #endif // MOUSEKEY_ENABLE  } -#ifdef EXTRAKEY_ENABLE  void send_extra(uint8_t report_id, uint16_t data) { +#ifdef EXTRAKEY_ENABLE      uint32_t irqflags;      irqflags = __get_PRIMASK(); @@ -129,18 +128,6 @@ void send_extra(uint8_t report_id, uint16_t data) {      __DMB();      __set_PRIMASK(irqflags); -} -#endif // EXTRAKEY_ENABLE - -void send_system(uint16_t data) { -#ifdef EXTRAKEY_ENABLE -    send_extra(REPORT_ID_SYSTEM, data); -#endif // EXTRAKEY_ENABLE -} - -void send_consumer(uint16_t data) { -#ifdef EXTRAKEY_ENABLE -    send_extra(REPORT_ID_CONSUMER, data);  #endif // EXTRAKEY_ENABLE  } diff --git a/tmk_core/protocol/arm_atsam/md_rgb_matrix_programs.c b/tmk_core/protocol/arm_atsam/md_rgb_matrix_programs.c index 69b3ad574c..58fc4efd9c 100644 --- a/tmk_core/protocol/arm_atsam/md_rgb_matrix_programs.c +++ b/tmk_core/protocol/arm_atsam/md_rgb_matrix_programs.c @@ -95,7 +95,7 @@ led_setup_t leds_rainbow_s[] = {  void *led_setups[] = {leds_rainbow_s, leds_rainbow_ns, leds_teal_salmon, leds_yellow, leds_red, leds_green, leds_blue, leds_white, leds_white_with_red_stripe, leds_black_with_red_stripe, leds_off}; -const uint8_t led_setups_count = sizeof(led_setups) / sizeof(led_setups[0]); +const uint8_t led_setups_count = ARRAY_SIZE(led_setups);  #    endif // USE_MASSDROP_CONFIGURATOR  #endif     // RGB_MATRIX_ENABLE
\ No newline at end of file diff --git a/tmk_core/protocol/chibios/chibios.c b/tmk_core/protocol/chibios/chibios.c index c9a480c325..024160a925 100644 --- a/tmk_core/protocol/chibios/chibios.c +++ b/tmk_core/protocol/chibios/chibios.c @@ -58,13 +58,12 @@  uint8_t keyboard_leds(void);  void    send_keyboard(report_keyboard_t *report);  void    send_mouse(report_mouse_t *report); -void    send_system(uint16_t data); -void    send_consumer(uint16_t data); +void    send_extra(uint8_t report_id, uint16_t data);  void    send_programmable_button(uint32_t data);  void    send_digitizer(report_digitizer_t *report);  /* host struct */ -host_driver_t chibios_driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer, send_programmable_button}; +host_driver_t chibios_driver = {keyboard_leds, send_keyboard, send_mouse, send_extra, send_programmable_button};  #ifdef VIRTSER_ENABLE  void virtser_task(void); diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c index eb9ef82554..222a867e3c 100644 --- a/tmk_core/protocol/chibios/usb_main.c +++ b/tmk_core/protocol/chibios/usb_main.c @@ -946,8 +946,8 @@ void shared_in_cb(USBDriver *usbp, usbep_t ep) {   * ---------------------------------------------------------   */ +void send_extra(uint8_t report_id, uint16_t data) {  #ifdef EXTRAKEY_ENABLE -static void send_extra(uint8_t report_id, uint16_t data) {      osalSysLock();      if (usbGetDriverStateI(&USB_DRIVER) != USB_ACTIVE) {          osalSysUnlock(); @@ -970,18 +970,6 @@ static void send_extra(uint8_t report_id, uint16_t data) {      usbStartTransmitI(&USB_DRIVER, SHARED_IN_EPNUM, (uint8_t *)&report, sizeof(report_extra_t));      osalSysUnlock(); -} -#endif - -void send_system(uint16_t data) { -#ifdef EXTRAKEY_ENABLE -    send_extra(REPORT_ID_SYSTEM, data); -#endif -} - -void send_consumer(uint16_t data) { -#ifdef EXTRAKEY_ENABLE -    send_extra(REPORT_ID_CONSUMER, data);  #endif  } diff --git a/tmk_core/protocol/host.c b/tmk_core/protocol/host.c index 3d8604d541..53854b94fb 100644 --- a/tmk_core/protocol/host.c +++ b/tmk_core/protocol/host.c @@ -24,6 +24,15 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #include "debug.h"  #include "digitizer.h" +#ifdef BLUETOOTH_ENABLE +#    include "outputselect.h" +#    ifdef BLUETOOTH_BLUEFRUIT_LE +#        include "bluefruit_le.h" +#    elif BLUETOOTH_RN42 +#        include "rn42.h" +#    endif +#endif +  #ifdef NKRO_ENABLE  #    include "keycode_config.h"  extern keymap_config_t keymap_config; @@ -63,6 +72,17 @@ led_t host_keyboard_led_state(void) {  /* send report */  void host_keyboard_send(report_keyboard_t *report) { +#ifdef BLUETOOTH_ENABLE +    if (where_to_send() == OUTPUT_BLUETOOTH) { +#    ifdef BLUETOOTH_BLUEFRUIT_LE +        bluefruit_le_send_keys(report->mods, report->keys, sizeof(report->keys)); +#    elif BLUETOOTH_RN42 +        rn42_send_keyboard(report); +#    endif +        return; +    } +#endif +      if (!driver) return;  #if defined(NKRO_ENABLE) && defined(NKRO_SHARED_EP)      if (keyboard_protocol && keymap_config.nkro) { @@ -90,6 +110,18 @@ void host_keyboard_send(report_keyboard_t *report) {  }  void host_mouse_send(report_mouse_t *report) { +#ifdef BLUETOOTH_ENABLE +    if (where_to_send() == OUTPUT_BLUETOOTH) { +#    ifdef BLUETOOTH_BLUEFRUIT_LE +        // FIXME: mouse buttons +        bluefruit_le_send_mouse_move(report->x, report->y, report->v, report->h, report->buttons); +#    elif BLUETOOTH_RN42 +        rn42_send_mouse(report); +#    endif +        return; +    } +#endif +      if (!driver) return;  #ifdef MOUSE_SHARED_EP      report->report_id = REPORT_ID_MOUSE; @@ -107,15 +139,26 @@ void host_system_send(uint16_t report) {      last_system_report = report;      if (!driver) return; -    (*driver->send_system)(report); +    (*driver->send_extra)(REPORT_ID_SYSTEM, report);  }  void host_consumer_send(uint16_t report) {      if (report == last_consumer_report) return;      last_consumer_report = report; +#ifdef BLUETOOTH_ENABLE +    if (where_to_send() == OUTPUT_BLUETOOTH) { +#    ifdef BLUETOOTH_BLUEFRUIT_LE +        bluefruit_le_send_consumer_key(report); +#    elif BLUETOOTH_RN42 +        rn42_send_consumer(report); +#    endif +        return; +    } +#endif +      if (!driver) return; -    (*driver->send_consumer)(report); +    (*driver->send_extra)(REPORT_ID_CONSUMER, report);  }  void host_digitizer_send(digitizer_t *digitizer) { diff --git a/tmk_core/protocol/host_driver.h b/tmk_core/protocol/host_driver.h index affd0dcb34..680d9727d3 100644 --- a/tmk_core/protocol/host_driver.h +++ b/tmk_core/protocol/host_driver.h @@ -27,9 +27,8 @@ typedef struct {      uint8_t (*keyboard_leds)(void);      void (*send_keyboard)(report_keyboard_t *);      void (*send_mouse)(report_mouse_t *); -    void (*send_system)(uint16_t); -    void (*send_consumer)(uint16_t); +    void (*send_extra)(uint8_t, uint16_t);      void (*send_programmable_button)(uint32_t);  } host_driver_t; -void send_digitizer(report_digitizer_t *report);
\ No newline at end of file +void send_digitizer(report_digitizer_t *report); diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index b4b03357a3..2a3f5fd883 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -65,15 +65,6 @@ extern keymap_config_t keymap_config;  #    include "audio.h"  #endif -#ifdef BLUETOOTH_ENABLE -#    include "outputselect.h" -#    ifdef BLUETOOTH_BLUEFRUIT_LE -#        include "bluefruit_le.h" -#    elif BLUETOOTH_RN42 -#        include "rn42.h" -#    endif -#endif -  #ifdef VIRTSER_ENABLE  #    include "virtser.h"  #endif @@ -101,10 +92,9 @@ static report_keyboard_t keyboard_report_sent;  static uint8_t keyboard_leds(void);  static void    send_keyboard(report_keyboard_t *report);  static void    send_mouse(report_mouse_t *report); -static void    send_system(uint16_t data); -static void    send_consumer(uint16_t data); +static void    send_extra(uint8_t report_id, uint16_t data);  static void    send_programmable_button(uint32_t data); -host_driver_t  lufa_driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer, send_programmable_button}; +host_driver_t  lufa_driver = {keyboard_leds, send_keyboard, send_mouse, send_extra, send_programmable_button};  #ifdef VIRTSER_ENABLE  // clang-format off @@ -649,17 +639,6 @@ static uint8_t keyboard_leds(void) {  static void send_keyboard(report_keyboard_t *report) {      uint8_t timeout = 255; -#ifdef BLUETOOTH_ENABLE -    if (where_to_send() == OUTPUT_BLUETOOTH) { -#    ifdef BLUETOOTH_BLUEFRUIT_LE -        bluefruit_le_send_keys(report->mods, report->keys, sizeof(report->keys)); -#    elif BLUETOOTH_RN42 -        rn42_send_keyboard(report); -#    endif -        return; -    } -#endif -      /* Select the Keyboard Report Endpoint */      uint8_t ep   = KEYBOARD_IN_EPNUM;      uint8_t size = KEYBOARD_REPORT_SIZE; @@ -696,18 +675,6 @@ static void send_mouse(report_mouse_t *report) {  #ifdef MOUSE_ENABLE      uint8_t timeout = 255; -#    ifdef BLUETOOTH_ENABLE -    if (where_to_send() == OUTPUT_BLUETOOTH) { -#        ifdef BLUETOOTH_BLUEFRUIT_LE -        // FIXME: mouse buttons -        bluefruit_le_send_mouse_move(report->x, report->y, report->v, report->h, report->buttons); -#        elif BLUETOOTH_RN42 -        rn42_send_mouse(report); -#        endif -        return; -    } -#    endif -      /* Select the Mouse Report Endpoint */      Endpoint_SelectEndpoint(MOUSE_IN_EPNUM); @@ -746,42 +713,11 @@ static void send_report(void *report, size_t size) {   *   * FIXME: Needs doc   */ -#ifdef EXTRAKEY_ENABLE  static void send_extra(uint8_t report_id, uint16_t data) { +#ifdef EXTRAKEY_ENABLE      static report_extra_t r;      r = (report_extra_t){.report_id = report_id, .usage = data};      send_report(&r, sizeof(r)); -} -#endif - -/** \brief Send System - * - * FIXME: Needs doc - */ -static void send_system(uint16_t data) { -#ifdef EXTRAKEY_ENABLE -    send_extra(REPORT_ID_SYSTEM, data); -#endif -} - -/** \brief Send Consumer - * - * FIXME: Needs doc - */ -static void send_consumer(uint16_t data) { -#ifdef EXTRAKEY_ENABLE -#    ifdef BLUETOOTH_ENABLE -    if (where_to_send() == OUTPUT_BLUETOOTH) { -#        ifdef BLUETOOTH_BLUEFRUIT_LE -        bluefruit_le_send_consumer_key(data); -#        elif BLUETOOTH_RN42 -        rn42_send_consumer(data); -#        endif -        return; -    } -#    endif - -    send_extra(REPORT_ID_CONSUMER, data);  #endif  } @@ -1028,10 +964,6 @@ void protocol_pre_init(void) {      setup_usb();      sei(); -#if defined(BLUETOOTH_RN42) -    rn42_init(); -#endif -      /* wait for USB startup & debug output */  #ifdef WAIT_FOR_USB @@ -1083,10 +1015,6 @@ void protocol_post_task(void) {      MIDI_Device_USBTask(&USB_MIDI_Interface);  #endif -#ifdef BLUETOOTH_BLUEFRUIT_LE -    bluefruit_le_task(); -#endif -  #ifdef VIRTSER_ENABLE      virtser_task();      CDC_Device_USBTask(&cdc_device); diff --git a/tmk_core/protocol/usb_descriptor.c b/tmk_core/protocol/usb_descriptor.c index 21795cef60..7117d2fc11 100644 --- a/tmk_core/protocol/usb_descriptor.c +++ b/tmk_core/protocol/usb_descriptor.c @@ -1046,7 +1046,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = {   */  const USB_Descriptor_String_t PROGMEM LanguageString = {      .Header = { -        .Size                   = USB_STRING_LEN(1), +        .Size                   = 4,          .Type                   = DTYPE_String      },      .UnicodeString              = {LANGUAGE_ID_ENG} @@ -1054,24 +1054,24 @@ const USB_Descriptor_String_t PROGMEM LanguageString = {  const USB_Descriptor_String_t PROGMEM ManufacturerString = {      .Header = { -        .Size                   = USB_STRING_LEN(sizeof(STR(MANUFACTURER)) - 1), // Subtract 1 for null terminator +        .Size                   = sizeof(USBSTR(MANUFACTURER)),          .Type                   = DTYPE_String      }, -    .UnicodeString              = LSTR(MANUFACTURER) +    .UnicodeString              = USBSTR(MANUFACTURER)  };  const USB_Descriptor_String_t PROGMEM ProductString = {      .Header = { -        .Size                   = USB_STRING_LEN(sizeof(STR(PRODUCT)) - 1), // Subtract 1 for null terminator +        .Size                   = sizeof(USBSTR(PRODUCT)),          .Type                   = DTYPE_String      }, -    .UnicodeString              = LSTR(PRODUCT) +    .UnicodeString              = USBSTR(PRODUCT)  };  #if defined(SERIAL_NUMBER)  const USB_Descriptor_String_t PROGMEM SerialNumberString = {      .Header = { -        .Size                   = USB_STRING_LEN(sizeof(SERIAL_NUMBER) - 1), // Subtract 1 for null terminator +        .Size                   = sizeof(USBSTR(SERIAL_NUMBER)),          .Type                   = DTYPE_String      },      .UnicodeString              = USBSTR(SERIAL_NUMBER) diff --git a/tmk_core/protocol/vusb/vusb.c b/tmk_core/protocol/vusb/vusb.c index d07cc0d27e..013d637b6f 100644 --- a/tmk_core/protocol/vusb/vusb.c +++ b/tmk_core/protocol/vusb/vusb.c @@ -224,11 +224,10 @@ void console_task(void) {  static uint8_t keyboard_leds(void);  static void    send_keyboard(report_keyboard_t *report);  static void    send_mouse(report_mouse_t *report); -static void    send_system(uint16_t data); -static void    send_consumer(uint16_t data); +static void    send_extra(uint8_t report_id, uint16_t data);  static void    send_programmable_button(uint32_t data); -static host_driver_t driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer, send_programmable_button}; +static host_driver_t driver = {keyboard_leds, send_keyboard, send_mouse, send_extra, send_programmable_button};  host_driver_t *vusb_driver(void) {      return &driver; @@ -269,8 +268,8 @@ static void send_mouse(report_mouse_t *report) {  #endif  } -#ifdef EXTRAKEY_ENABLE  static void send_extra(uint8_t report_id, uint16_t data) { +#ifdef EXTRAKEY_ENABLE      static uint8_t  last_id   = 0;      static uint16_t last_data = 0;      if ((report_id == last_id) && (data == last_data)) return; @@ -282,18 +281,6 @@ static void send_extra(uint8_t report_id, uint16_t data) {      if (usbInterruptIsReadyShared()) {          usbSetInterruptShared((void *)&report, sizeof(report_extra_t));      } -} -#endif - -static void send_system(uint16_t data) { -#ifdef EXTRAKEY_ENABLE -    send_extra(REPORT_ID_SYSTEM, data); -#endif -} - -static void send_consumer(uint16_t data) { -#ifdef EXTRAKEY_ENABLE -    send_extra(REPORT_ID_CONSUMER, data);  #endif  } @@ -672,7 +659,7 @@ const PROGMEM uchar console_hid_report[] = {  // clang-format off  const PROGMEM usbStringDescriptor_t usbStringDescriptorZero = {      .header = { -        .bLength         = USB_STRING_LEN(1), +        .bLength         = 4,          .bDescriptorType = USBDESCR_STRING      },      .bString             = {0x0409} // US English @@ -680,24 +667,24 @@ const PROGMEM usbStringDescriptor_t usbStringDescriptorZero = {  const PROGMEM usbStringDescriptor_t usbStringDescriptorManufacturer = {      .header = { -        .bLength         = USB_STRING_LEN(sizeof(STR(MANUFACTURER)) - 1), +        .bLength         = sizeof(USBSTR(MANUFACTURER)),          .bDescriptorType = USBDESCR_STRING      }, -    .bString             = LSTR(MANUFACTURER) +    .bString             = USBSTR(MANUFACTURER)  };  const PROGMEM usbStringDescriptor_t usbStringDescriptorProduct = {      .header = { -        .bLength         = USB_STRING_LEN(sizeof(STR(PRODUCT)) - 1), +        .bLength         = sizeof(USBSTR(PRODUCT)),          .bDescriptorType = USBDESCR_STRING      }, -    .bString             = LSTR(PRODUCT) +    .bString             = USBSTR(PRODUCT)  };  #if defined(SERIAL_NUMBER)  const PROGMEM usbStringDescriptor_t usbStringDescriptorSerial = {      .header = { -        .bLength         = USB_STRING_LEN(sizeof(SERIAL_NUMBER) - 1), +        .bLength         = sizeof(USBSTR(SERIAL_NUMBER)),          .bDescriptorType = USBDESCR_STRING      },      .bString             = USBSTR(SERIAL_NUMBER) diff --git a/tmk_core/protocol/vusb/vusb.h b/tmk_core/protocol/vusb/vusb.h index b1ecc98f37..c5cb27ded6 100644 --- a/tmk_core/protocol/vusb/vusb.h +++ b/tmk_core/protocol/vusb/vusb.h @@ -118,8 +118,6 @@ typedef struct usbConfigurationDescriptor {  #endif  } __attribute__((packed)) usbConfigurationDescriptor_t; -#define USB_STRING_LEN(s) (sizeof(usbDescriptorHeader_t) + ((s) << 1)) -  extern bool vusb_suspended;  host_driver_t *vusb_driver(void); | 
