diff options
| author | Travis La Marr <exiva@exiva.net> | 2017-03-29 23:03:04 -0400 | 
|---|---|---|
| committer | nielsenz <nielsen.zac@gmail.com> | 2017-03-30 19:08:15 -0700 | 
| commit | eedb767279df6c43763cbf37b8fe75cfc224c80c (patch) | |
| tree | 46b9e67e9c2d9deea01491cb556741ed0d5cfd1e /tmk_core/protocol/lufa | |
| parent | ccbdf90f02067bc37975130ca8c4b26d2497dcf7 (diff) | |
| download | firmware-eedb767279df6c43763cbf37b8fe75cfc224c80c.tar.gz firmware-eedb767279df6c43763cbf37b8fe75cfc224c80c.tar.bz2 firmware-eedb767279df6c43763cbf37b8fe75cfc224c80c.zip  | |
Add RN42 Bluetooth module support
Added support for sending HID keycodes over the RN42/reflashed HC05 module. Tested on OS X and iOS.
Diffstat (limited to 'tmk_core/protocol/lufa')
| -rw-r--r-- | tmk_core/protocol/lufa/bluetooth.h | 16 | ||||
| -rw-r--r-- | tmk_core/protocol/lufa/lufa.c | 19 | 
2 files changed, 33 insertions, 2 deletions
diff --git a/tmk_core/protocol/lufa/bluetooth.h b/tmk_core/protocol/lufa/bluetooth.h index 78ece1cd0..f4b2f6f8b 100644 --- a/tmk_core/protocol/lufa/bluetooth.h +++ b/tmk_core/protocol/lufa/bluetooth.h @@ -62,4 +62,18 @@ void bluefruit_serial_send(uint8_t data);      (usage == AC_REFRESH           ? 0x0000  : \      (usage == AC_BOOKMARKS         ? 0x0000  : 0))))))))))))))))))) -#endif
\ No newline at end of file +#define CONSUMER2RN42(usage) \ +    (usage == AUDIO_MUTE           ? 0x0040 : \ +    (usage == AUDIO_VOL_UP         ? 0x0010 : \ +    (usage == AUDIO_VOL_DOWN       ? 0x0020 : \ +    (usage == TRANSPORT_NEXT_TRACK ? 0x0100 : \ +    (usage == TRANSPORT_PREV_TRACK ? 0x0200 : \ +    (usage == TRANSPORT_STOP       ? 0x0400 : \ +    (usage == TRANSPORT_STOP_EJECT ? 0x0800 : \ +    (usage == TRANSPORT_PLAY_PAUSE ? 0x0080 : \ +    (usage == AL_EMAIL             ? 0x0200 : \ +    (usage == AL_LOCAL_BROWSER     ? 0x8000 : \ +    (usage == AC_SEARCH            ? 0x0400 : \ +    (usage == AC_HOME              ? 0x0100 : 0)))))))))))) + + #endif diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 60cba8d2a..ae6129d1a 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -606,6 +606,13 @@ static void send_keyboard(report_keyboard_t *report)    if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {      #ifdef MODULE_ADAFRUIT_BLE        adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys)); +    #elif MODULE_RN42 +       bluefruit_serial_send(0xFD); +       bluefruit_serial_send(0x09); +       bluefruit_serial_send(0x01); +       for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) { +         bluefruit_serial_send(report->raw[i]); +       }      #else        bluefruit_serial_send(0xFD);        for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) { @@ -726,6 +733,16 @@ static void send_consumer(uint16_t data)      if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {        #ifdef MODULE_ADAFRUIT_BLE          adafruit_ble_send_consumer_key(data, 0); +      #elif MODULE_RN42 +        static uint16_t last_data = 0; +        if (data == last_data) return; +        last_data = data; +        uint16_t bitmap = CONSUMER2RN42(data); +        bluefruit_serial_send(0xFD); +        bluefruit_serial_send(0x03); +        bluefruit_serial_send(0x03); +        bluefruit_serial_send(bitmap&0xFF); +        bluefruit_serial_send((bitmap>>8)&0xFF);        #else          static uint16_t last_data = 0;          if (data == last_data) return; @@ -1132,7 +1149,7 @@ int main(void)      // midi_send_noteoff(&midi_device, 0, 64, 127);  #endif -#ifdef MODULE_ADAFRUIT_EZKEY +#if defined(MODULE_ADAFRUIT_EZKEY) || defined(MODULE_RN42)      serial_init();  #endif  | 
