summaryrefslogtreecommitdiff
path: root/src/ble.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ble.c')
-rw-r--r--src/ble.c193
1 files changed, 0 insertions, 193 deletions
diff --git a/src/ble.c b/src/ble.c
deleted file mode 100644
index 51607c6..0000000
--- a/src/ble.c
+++ /dev/null
@@ -1,193 +0,0 @@
-
-#include <math.h>
-
-#include <settings/settings.h>
-#include <bluetooth/bluetooth.h>
-#include <bluetooth/conn.h>
-#include <bluetooth/hci.h>
-#include <bluetooth/uuid.h>
-#include <bluetooth/gatt.h>
-
-#include <zmk/keys.h>
-
-static struct bt_conn *auth_passkey_entry_conn;
-static u8_t passkey_entries[6] = {0, 0, 0, 0, 0, 0};
-static u8_t passkey_digit = 0;
-
-static void connected(struct bt_conn *conn, u8_t err)
-{
- char addr[BT_ADDR_LE_STR_LEN];
-
- bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));
-
- if (err)
- {
- printk("Failed to connect to %s (%u)\n", addr, err);
- return;
- }
-
- printk("Connected %s\n", addr);
-
- if (bt_conn_set_security(conn, BT_SECURITY_L2))
- {
- printk("Failed to set security\n");
- }
-}
-
-static void disconnected(struct bt_conn *conn, u8_t reason)
-{
- char addr[BT_ADDR_LE_STR_LEN];
-
- bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));
-
- printk("Disconnected from %s (reason 0x%02x)\n", addr, reason);
-}
-
-static void security_changed(struct bt_conn *conn, bt_security_t level,
- enum bt_security_err err)
-{
- char addr[BT_ADDR_LE_STR_LEN];
-
- bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));
-
- if (!err)
- {
- printk("Security changed: %s level %u\n", addr, level);
- }
- else
- {
- printk("Security failed: %s level %u err %d\n", addr, level,
- err);
- }
-}
-
-static struct bt_conn_cb conn_callbacks = {
- .connected = connected,
- .disconnected = disconnected,
- .security_changed = security_changed,
-};
-
-static void auth_passkey_display(struct bt_conn *conn, unsigned int passkey)
-{
- char addr[BT_ADDR_LE_STR_LEN];
-
- bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));
-
- printk("Passkey for %s: %06u\n", addr, passkey);
-}
-
-#ifdef CONFIG_ZMK_BLE_PASSKEY_ENTRY
-
-static void auth_passkey_entry(struct bt_conn *conn)
-{
- char addr[BT_ADDR_LE_STR_LEN];
-
- bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));
-
- printk("Passkey entry requested for %s\n", addr);
- auth_passkey_entry_conn = bt_conn_ref(conn);
-}
-
-#endif
-
-static void auth_cancel(struct bt_conn *conn)
-{
- char addr[BT_ADDR_LE_STR_LEN];
-
- bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));
-
- if (auth_passkey_entry_conn)
- {
- bt_conn_unref(auth_passkey_entry_conn);
- auth_passkey_entry_conn = NULL;
- }
-
- passkey_digit = 0;
-
- printk("Pairing cancelled: %s\n", addr);
-}
-
-static struct bt_conn_auth_cb zmk_ble_auth_cb_display = {
-// .passkey_display = auth_passkey_display,
-
-#ifdef CONFIG_ZMK_BLE_PASSKEY_ENTRY
- .passkey_entry = auth_passkey_entry,
-#endif
- .cancel = auth_cancel,
-};
-
-static const struct bt_data zmk_ble_ad[] = {
- BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),
- BT_DATA_BYTES(BT_DATA_UUID16_ALL,
- 0x12, 0x18, /* HID Service */
- 0x0f, 0x18), /* Battery Service */
-};
-
-static void zmk_ble_ready(int err)
-{
- if (err)
- {
- printk("Bluetooth init failed (err %d)\n", err);
- return;
- }
-
- err = bt_le_adv_start(BT_LE_ADV_CONN_NAME, zmk_ble_ad, ARRAY_SIZE(zmk_ble_ad), NULL, 0);
- if (err)
- {
- printk("Advertising failed to start (err %d)\n", err);
- return;
- }
-}
-
-int zmk_ble_init()
-{
- if (IS_ENABLED(CONFIG_SETTINGS))
- {
- settings_load();
- }
- int err = bt_enable(zmk_ble_ready);
-
- if (err)
- {
- printk("BLUETOOTH FAILED");
- return err;
- }
-
- bt_conn_cb_register(&conn_callbacks);
- bt_conn_auth_cb_register(&zmk_ble_auth_cb_display);
-
- return 0;
-}
-
-bool zmk_ble_handle_key_user(struct zmk_key_event *key_event)
-{
- zmk_key key = key_event->key;
-
- if (!auth_passkey_entry_conn)
- {
- return true;
- }
-
- if (key < KC_1 || key > KC_0)
- {
- return true;
- }
-
- u32_t val = (key == KC_0) ? 0 : (key - KC_1 + 1);
-
- passkey_entries[passkey_digit++] = val;
-
- if (passkey_digit == 6)
- {
- u32_t passkey = 0;
- for (int i = 5; i >= 0; i--)
- {
- passkey = (passkey * 10) + val;
- }
- bt_conn_auth_passkey_entry(auth_passkey_entry_conn, passkey);
- bt_conn_unref(auth_passkey_entry_conn);
- auth_passkey_entry_conn = NULL;
- }
-
- return false;
-}