Refactor Bluetooth Handling

Refactored Bluetooth support to make adding new Bluetooth modules
easier in the future.

* Remove `OUT_BLE` key from QMK's keymap. `OUT_BT` is all we need now
as there's no difference anymore.
* Made BLUETOOTH_ENABLE build option legacy as not to break existing
keymaps (Falls back to existing EZ Key support if on)
* Removed `ADAFRUIT_BLE_ENABLE` build option
* Created new build option `BLUETOOTH` with module option (Currently
`AdafruitEZKey` & `AdafruitBLE`)
* Moved all LUFA bluetooth key/mouse events under `BLUETOOTH_ENABLE`
ifdef with selected modules output.
This commit is contained in:
Travis La Marr 2017-03-24 12:53:55 -04:00
parent 7a9437a2e3
commit ddc036b69e
8 changed files with 57 additions and 66 deletions

View file

@ -67,10 +67,11 @@
#endif
#ifdef BLUETOOTH_ENABLE
#include "bluetooth.h"
#endif
#ifdef ADAFRUIT_BLE_ENABLE
#ifdef MODULE_ADAFRUIT_BLE
#include "adafruit_ble.h"
#else
#include "bluetooth.h"
#endif
#endif
#ifdef VIRTSER_ENABLE
@ -602,18 +603,14 @@ static void send_keyboard(report_keyboard_t *report)
uint8_t where = where_to_send();
#ifdef BLUETOOTH_ENABLE
if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
bluefruit_serial_send(0xFD);
for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) {
bluefruit_serial_send(report->raw[i]);
}
}
#endif
#ifdef ADAFRUIT_BLE_ENABLE
if (where == OUTPUT_ADAFRUIT_BLE) {
adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys));
#ifdef MODULE_ADAFRUIT_BLE
adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys));
#else
bluefruit_serial_send(0xFD);
for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) {
bluefruit_serial_send(report->raw[i]);
}
#endif
#endif
if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) {
@ -660,24 +657,22 @@ static void send_mouse(report_mouse_t *report)
uint8_t where = where_to_send();
#ifdef BLUETOOTH_ENABLE
if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
bluefruit_serial_send(0xFD);
bluefruit_serial_send(0x00);
bluefruit_serial_send(0x03);
bluefruit_serial_send(report->buttons);
bluefruit_serial_send(report->x);
bluefruit_serial_send(report->y);
bluefruit_serial_send(report->v); // should try sending the wheel v here
bluefruit_serial_send(report->h); // should try sending the wheel h here
bluefruit_serial_send(0x00);
}
#endif
#ifdef ADAFRUIT_BLE_ENABLE
if (where == OUTPUT_ADAFRUIT_BLE) {
if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
#ifdef MODULE_ADAFRUIT_BLE
// FIXME: mouse buttons
adafruit_ble_send_mouse_move(report->x, report->y, report->v, report->h);
}
#else
bluefruit_serial_send(0xFD);
bluefruit_serial_send(0x00);
bluefruit_serial_send(0x03);
bluefruit_serial_send(report->buttons);
bluefruit_serial_send(report->x);
bluefruit_serial_send(report->y);
bluefruit_serial_send(report->v); // should try sending the wheel v here
bluefruit_serial_send(report->h); // should try sending the wheel h here
bluefruit_serial_send(0x00);
#endif
}
#endif
if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) {
@ -727,6 +722,9 @@ static void send_consumer(uint16_t data)
#ifdef BLUETOOTH_ENABLE
if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
#ifdef MODULE_ADAFRUIT_BLE
adafruit_ble_send_consumer_key(data, 0);
#else
static uint16_t last_data = 0;
if (data == last_data) return;
last_data = data;
@ -740,12 +738,7 @@ static void send_consumer(uint16_t data)
bluefruit_serial_send(0x00);
bluefruit_serial_send(0x00);
bluefruit_serial_send(0x00);
}
#endif
#ifdef ADAFRUIT_BLE_ENABLE
if (where == OUTPUT_ADAFRUIT_BLE) {
adafruit_ble_send_consumer_key(data, 0);
#endif
}
#endif
@ -1130,10 +1123,6 @@ int main(void)
// midi_send_noteoff(&midi_device, 0, 64, 127);
#endif
#ifdef BLUETOOTH_ENABLE
serial_init();
#endif
/* wait for USB startup & debug output */
#ifdef WAIT_FOR_USB
@ -1161,7 +1150,7 @@ int main(void)
print("Keyboard start.\n");
while (1) {
#if !defined(BLUETOOTH_ENABLE) && !defined(ADAFRUIT_BLE_ENABLE)
#if !defined(BLUETOOTH_ENABLE)
while (USB_DeviceState == DEVICE_STATE_Suspended) {
print("[s]");
suspend_power_down();
@ -1182,7 +1171,11 @@ int main(void)
rgblight_task();
#endif
#ifdef ADAFRUIT_BLE_ENABLE
#ifdef MODULE_ADAFRUIT_EZKEY
serial_init();
#endif
#ifdef MODULE_ADAFRUIT_BLE
adafruit_ble_task();
#endif