|
@@ -1,4 +1,4 @@
|
|
|
-#include "adafruit_ble.h"
|
|
|
+#include "bluefruit_le.h"
|
|
|
|
|
|
#include <stdio.h>
|
|
|
#include <stdlib.h>
|
|
@@ -16,20 +16,20 @@
|
|
|
// These are the pin assignments for the 32u4 boards.
|
|
|
// You may define them to something else in your config.h
|
|
|
// if yours is wired up differently.
|
|
|
-#ifndef ADAFRUIT_BLE_RST_PIN
|
|
|
-# define ADAFRUIT_BLE_RST_PIN D4
|
|
|
+#ifndef BLUEFRUIT_LE_RST_PIN
|
|
|
+# define BLUEFRUIT_LE_RST_PIN D4
|
|
|
#endif
|
|
|
|
|
|
-#ifndef ADAFRUIT_BLE_CS_PIN
|
|
|
-# define ADAFRUIT_BLE_CS_PIN B4
|
|
|
+#ifndef BLUEFRUIT_LE_CS_PIN
|
|
|
+# define BLUEFRUIT_LE_CS_PIN B4
|
|
|
#endif
|
|
|
|
|
|
-#ifndef ADAFRUIT_BLE_IRQ_PIN
|
|
|
-# define ADAFRUIT_BLE_IRQ_PIN E6
|
|
|
+#ifndef BLUEFRUIT_LE_IRQ_PIN
|
|
|
+# define BLUEFRUIT_LE_IRQ_PIN E6
|
|
|
#endif
|
|
|
|
|
|
-#ifndef ADAFRUIT_BLE_SCK_DIVISOR
|
|
|
-# define ADAFRUIT_BLE_SCK_DIVISOR 2 // 4MHz SCK/8MHz CPU, calculated for Feather 32U4 BLE
|
|
|
+#ifndef BLUEFRUIT_LE_SCK_DIVISOR
|
|
|
+# define BLUEFRUIT_LE_SCK_DIVISOR 2 // 4MHz SCK/8MHz CPU, calculated for Feather 32U4 BLE
|
|
|
#endif
|
|
|
|
|
|
#define SAMPLE_BATTERY
|
|
@@ -143,7 +143,7 @@ static bool at_command_P(const char *cmd, char *resp, uint16_t resplen, bool ver
|
|
|
|
|
|
// Send a single SDEP packet
|
|
|
static bool sdep_send_pkt(const struct sdep_msg *msg, uint16_t timeout) {
|
|
|
- spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
|
|
|
+ spi_start(BLUEFRUIT_LE_CS_PIN, false, 0, BLUEFRUIT_LE_SCK_DIVISOR);
|
|
|
uint16_t timerStart = timer_read();
|
|
|
bool success = false;
|
|
|
bool ready = false;
|
|
@@ -157,7 +157,7 @@ static bool sdep_send_pkt(const struct sdep_msg *msg, uint16_t timeout) {
|
|
|
// Release it and let it initialize
|
|
|
spi_stop();
|
|
|
wait_us(SdepBackOff);
|
|
|
- spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
|
|
|
+ spi_start(BLUEFRUIT_LE_CS_PIN, false, 0, BLUEFRUIT_LE_SCK_DIVISOR);
|
|
|
} while (timer_elapsed(timerStart) < timeout);
|
|
|
|
|
|
if (ready) {
|
|
@@ -190,7 +190,7 @@ static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) {
|
|
|
bool ready = false;
|
|
|
|
|
|
do {
|
|
|
- ready = readPin(ADAFRUIT_BLE_IRQ_PIN);
|
|
|
+ ready = readPin(BLUEFRUIT_LE_IRQ_PIN);
|
|
|
if (ready) {
|
|
|
break;
|
|
|
}
|
|
@@ -198,7 +198,7 @@ static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) {
|
|
|
} while (timer_elapsed(timerStart) < timeout);
|
|
|
|
|
|
if (ready) {
|
|
|
- spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
|
|
|
+ spi_start(BLUEFRUIT_LE_CS_PIN, false, 0, BLUEFRUIT_LE_SCK_DIVISOR);
|
|
|
|
|
|
do {
|
|
|
// Read the command type, waiting for the data to be ready
|
|
@@ -207,7 +207,7 @@ static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) {
|
|
|
// Release it and let it initialize
|
|
|
spi_stop();
|
|
|
wait_us(SdepBackOff);
|
|
|
- spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
|
|
|
+ spi_start(BLUEFRUIT_LE_CS_PIN, false, 0, BLUEFRUIT_LE_SCK_DIVISOR);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
@@ -233,7 +233,7 @@ static void resp_buf_read_one(bool greedy) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if (readPin(ADAFRUIT_BLE_IRQ_PIN)) {
|
|
|
+ if (readPin(BLUEFRUIT_LE_IRQ_PIN)) {
|
|
|
struct sdep_msg msg;
|
|
|
|
|
|
again:
|
|
@@ -244,7 +244,7 @@ static void resp_buf_read_one(bool greedy) {
|
|
|
dprintf("recv latency %dms\n", TIMER_DIFF_16(timer_read(), last_send));
|
|
|
}
|
|
|
|
|
|
- if (greedy && resp_buf.peek(last_send) && readPin(ADAFRUIT_BLE_IRQ_PIN)) {
|
|
|
+ if (greedy && resp_buf.peek(last_send) && readPin(BLUEFRUIT_LE_IRQ_PIN)) {
|
|
|
goto again;
|
|
|
}
|
|
|
}
|
|
@@ -295,16 +295,16 @@ static bool ble_init(void) {
|
|
|
state.configured = false;
|
|
|
state.is_connected = false;
|
|
|
|
|
|
- setPinInput(ADAFRUIT_BLE_IRQ_PIN);
|
|
|
+ setPinInput(BLUEFRUIT_LE_IRQ_PIN);
|
|
|
|
|
|
spi_init();
|
|
|
|
|
|
// Perform a hardware reset
|
|
|
- setPinOutput(ADAFRUIT_BLE_RST_PIN);
|
|
|
- writePinHigh(ADAFRUIT_BLE_RST_PIN);
|
|
|
- writePinLow(ADAFRUIT_BLE_RST_PIN);
|
|
|
+ setPinOutput(BLUEFRUIT_LE_RST_PIN);
|
|
|
+ writePinHigh(BLUEFRUIT_LE_RST_PIN);
|
|
|
+ writePinLow(BLUEFRUIT_LE_RST_PIN);
|
|
|
wait_ms(10);
|
|
|
- writePinHigh(ADAFRUIT_BLE_RST_PIN);
|
|
|
+ writePinHigh(BLUEFRUIT_LE_RST_PIN);
|
|
|
|
|
|
wait_ms(1000); // Give it a second to initialize
|
|
|
|
|
@@ -424,9 +424,9 @@ bool at_command_P(const char *cmd, char *resp, uint16_t resplen, bool verbose) {
|
|
|
return at_command(cmdbuf, resp, resplen, verbose);
|
|
|
}
|
|
|
|
|
|
-bool adafruit_ble_is_connected(void) { return state.is_connected; }
|
|
|
+bool bluefruit_le_is_connected(void) { return state.is_connected; }
|
|
|
|
|
|
-bool adafruit_ble_enable_keyboard(void) {
|
|
|
+bool bluefruit_le_enable_keyboard(void) {
|
|
|
char resbuf[128];
|
|
|
|
|
|
if (!state.initialized && !ble_init()) {
|
|
@@ -498,16 +498,16 @@ static void set_connected(bool connected) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void adafruit_ble_task(void) {
|
|
|
+void bluefruit_le_task(void) {
|
|
|
char resbuf[48];
|
|
|
|
|
|
- if (!state.configured && !adafruit_ble_enable_keyboard()) {
|
|
|
+ if (!state.configured && !bluefruit_le_enable_keyboard()) {
|
|
|
return;
|
|
|
}
|
|
|
resp_buf_read_one(true);
|
|
|
send_buf_send_one(SdepShortTimeout);
|
|
|
|
|
|
- if (resp_buf.empty() && (state.event_flags & UsingEvents) && readPin(ADAFRUIT_BLE_IRQ_PIN)) {
|
|
|
+ if (resp_buf.empty() && (state.event_flags & UsingEvents) && readPin(BLUEFRUIT_LE_IRQ_PIN)) {
|
|
|
// Must be an event update
|
|
|
if (at_command_P(PSTR("AT+EVENTSTATUS"), resbuf, sizeof(resbuf))) {
|
|
|
uint32_t mask = strtoul(resbuf, NULL, 16);
|
|
@@ -609,7 +609,7 @@ static bool process_queue_item(struct queue_item *item, uint16_t timeout) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void adafruit_ble_send_keys(uint8_t hid_modifier_mask, uint8_t *keys, uint8_t nkeys) {
|
|
|
+void bluefruit_le_send_keys(uint8_t hid_modifier_mask, uint8_t *keys, uint8_t nkeys) {
|
|
|
struct queue_item item;
|
|
|
bool didWait = false;
|
|
|
|
|
@@ -643,7 +643,7 @@ void adafruit_ble_send_keys(uint8_t hid_modifier_mask, uint8_t *keys, uint8_t nk
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void adafruit_ble_send_consumer_key(uint16_t usage) {
|
|
|
+void bluefruit_le_send_consumer_key(uint16_t usage) {
|
|
|
struct queue_item item;
|
|
|
|
|
|
item.queue_type = QTConsumer;
|
|
@@ -655,7 +655,7 @@ void adafruit_ble_send_consumer_key(uint16_t usage) {
|
|
|
}
|
|
|
|
|
|
#ifdef MOUSE_ENABLE
|
|
|
-void adafruit_ble_send_mouse_move(int8_t x, int8_t y, int8_t scroll, int8_t pan, uint8_t buttons) {
|
|
|
+void bluefruit_le_send_mouse_move(int8_t x, int8_t y, int8_t scroll, int8_t pan, uint8_t buttons) {
|
|
|
struct queue_item item;
|
|
|
|
|
|
item.queue_type = QTMouseMove;
|
|
@@ -671,9 +671,9 @@ void adafruit_ble_send_mouse_move(int8_t x, int8_t y, int8_t scroll, int8_t pan,
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
-uint32_t adafruit_ble_read_battery_voltage(void) { return state.vbat; }
|
|
|
+uint32_t bluefruit_le_read_battery_voltage(void) { return state.vbat; }
|
|
|
|
|
|
-bool adafruit_ble_set_mode_leds(bool on) {
|
|
|
+bool bluefruit_le_set_mode_leds(bool on) {
|
|
|
if (!state.configured) {
|
|
|
return false;
|
|
|
}
|
|
@@ -689,7 +689,7 @@ bool adafruit_ble_set_mode_leds(bool on) {
|
|
|
}
|
|
|
|
|
|
// https://learn.adafruit.com/adafruit-feather-32u4-bluefruit-le/ble-generic#at-plus-blepowerlevel
|
|
|
-bool adafruit_ble_set_power_level(int8_t level) {
|
|
|
+bool bluefruit_le_set_power_level(int8_t level) {
|
|
|
char cmd[46];
|
|
|
if (!state.configured) {
|
|
|
return false;
|