feat(bluetooth): Add back profiles, split fixes.

* Add back in profiles, not using Zephyr
  BT identity infrastructure.
* Restore additional `&bt` commands for profile
  operations.
* Fix for split pairing and subscriptions, since
  Zephyr persists subscriptions across connects.
* Remove keymap from peripheral builds, reduces
  firmware size, and avoids unneeded attempts
  to send HID data.
This commit is contained in:
Pete Johanson
2020-09-08 23:26:00 -04:00
parent e88d0833c5
commit 39f980a06d
14 changed files with 376 additions and 128 deletions

View File

@@ -4,11 +4,18 @@
* SPDX-License-Identifier: MIT
*/
#define BT_CLEAR_BONDS_CMD 0
#define BT_CLEAR_BONDS_CMD 0
#define BT_PROF_NEXT_CMD 1
#define BT_PROF_PREV_CMD 2
#define BT_PROF_SEL_CMD 3
// #define BT_FULL_RESET_CMD 4
/*
Note: Some future commands will include additional parameters, so we
defines these aliases up front.
*/
#define BT_CLEAR_BONDS BT_CLEAR_BONDS_CMD 0
#define BT_CLEAR_BONDS BT_CLEAR_BONDS_CMD 0
#define BT_PROF_NEXT BT_PROF_NEXT_CMD 0
#define BT_PROF_PREV BT_PROF_PREV_CMD 0
#define BT_PROF_SEL BT_PROF_SEL_CMD

View File

@@ -6,11 +6,16 @@
#pragma once
#include <bluetooth/addr.h>
#include <zmk/keys.h>
#include <zmk/ble/profile.h>
int zmk_ble_clear_bonds();
int zmk_ble_prof_next();
int zmk_ble_prof_prev();
int zmk_ble_prof_select(u8_t index);
bt_addr_le_t *zmk_ble_active_profile_addr();
char *zmk_ble_active_profile_name();
int zmk_ble_unpair_all();
bool zmk_ble_handle_key_user(struct zmk_key_event *key_event);

View File

@@ -0,0 +1,16 @@
/*
* Copyright (c) 2020 Peter Johanson <peter@peterjohanson.com>
*
* SPDX-License-Identifier: MIT
*/
#pragma once
#include <bluetooth/addr.h>
#define ZMK_BLE_PROFILE_NAME_MAX 15
struct zmk_ble_profile {
char name[ZMK_BLE_PROFILE_NAME_MAX];
bt_addr_le_t peer;
};

View File

@@ -0,0 +1,22 @@
/*
* Copyright (c) 2020 Peter Johanson <peter@peterjohanson.com>
*
* SPDX-License-Identifier: MIT
*/
#pragma once
#include <zephyr.h>
#include <zmk/event-manager.h>
#include <device.h>
#include <zmk/ble/profile.h>
struct ble_active_profile_changed {
struct zmk_event_header header;
u8_t index;
struct zmk_ble_profile *profile;
};
ZMK_EVENT_DECLARE(ble_active_profile_changed);