Skip to content
This repository has been archived by the owner on Dec 18, 2024. It is now read-only.

Commit

Permalink
Merge pull request #352 from UltimateHackingKeyboard/new_bt_commands
Browse files Browse the repository at this point in the history
Clear bonds, fix scanning
  • Loading branch information
mondalaci authored Nov 8, 2024
2 parents 6dcaafa + 66f01c2 commit 5bb746d
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 20 deletions.
38 changes: 27 additions & 11 deletions device/src/bt_pair.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "zephyr/kernel.h"
#include "bt_manager.h"
#include "bt_advertise.h"
#include "legacy/host_connection.h"

bool BtPair_LastPairingSucceeded = true;
bool BtPair_OobPairingInProgress = false;
Expand Down Expand Up @@ -94,21 +95,11 @@ struct delete_args_t {
const bt_addr_le_t* addr;
};

static void bt_foreach_bond_cb_delete(const struct bt_bond_info *info, void *user_data)
{
static void deleteBond(const struct bt_bond_info *info) {
int err;

struct bt_conn* conn;

struct delete_args_t* args = (struct delete_args_t*)user_data;

if (!args->all && bt_addr_le_cmp(args->addr, &info->addr) != 0) {
char addr[32];
bt_addr_le_to_str(&info->addr, addr, sizeof(addr));
printk("Not deleting bond for %s\n", addr);
return;
}

if (bt_addr_le_cmp(&Peers[PeerIdLeft].addr, &info->addr) == 0) {
settings_delete("uhk/addr/left");
}
Expand Down Expand Up @@ -139,6 +130,20 @@ static void bt_foreach_bond_cb_delete(const struct bt_bond_info *info, void *use
}
}

static void bt_foreach_bond_cb_delete(const struct bt_bond_info *info, void *user_data)
{
struct delete_args_t* args = (struct delete_args_t*)user_data;

if (!args->all && bt_addr_le_cmp(args->addr, &info->addr) != 0) {
char addr[32];
bt_addr_le_to_str(&info->addr, addr, sizeof(addr));
printk("Not deleting bond for %s\n", addr);
return;
}

deleteBond(info);
}

void BtPair_Unpair(const bt_addr_le_t addr) {
bool deleteAll = true;

Expand Down Expand Up @@ -196,3 +201,14 @@ bool BtPair_IsDeviceBonded(const bt_addr_le_t *addr)

return bonded;
}

void deleteBondIfUnknown(const struct bt_bond_info *info, void *user_data) {
if (!HostConnections_IsKnownBleAddress(&info->addr)) {
deleteBond(info);
}
};


void BtPair_ClearUnknownBonds() {
bt_foreach_bond(BT_ID_DEFAULT, deleteBondIfUnknown, NULL);
}
1 change: 1 addition & 0 deletions device/src/bt_pair.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
void BtPair_Unpair(const bt_addr_le_t addr);
bool BtPair_IsDeviceBonded(const bt_addr_le_t *addr);
void BtManager_EnterPairingMode();
void BtPair_ClearUnknownBonds();

// Variables

Expand Down
9 changes: 0 additions & 9 deletions device/src/bt_scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,6 @@ static int scan_fill() {
int err = 0;

if (DEVICE_IS_UHK80_RIGHT) {
if (!BtPair_OobPairingInProgress) {
// iterate host connections and add all that are of type dongle
for (uint8_t i = 0; i < HOST_CONNECTION_COUNT_MAX; i++) {
if (HostConnections[i].type == HostConnectionType_Dongle) {
addAddress(&err, &HostConnections[i].bleAddress);
}
}
}

addAddress(&err, &Peers[PeerIdLeft].addr);
}
if (DEVICE_IS_UHK_DONGLE) {
Expand Down
2 changes: 2 additions & 0 deletions right/src/config_parser/parse_config.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include "parse_host_connection.h"
#include "error_reporting.h"
#include "versioning.h"
#include "stubs.h"

version_t DataModelVersion = {0, 0, 0};

Expand Down Expand Up @@ -328,6 +329,7 @@ parser_error_t parseConfig(config_buffer_t *buffer)

LedManager_RecalculateLedBrightness();
LedManager_UpdateSleepModes();
BtPair_ClearUnknownBonds();

// Update counts

Expand Down
1 change: 1 addition & 0 deletions right/src/stubs.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
ATTRS void BtPair_EndPairing(bool success, const char* msg) {};
ATTRS void BtManager_RestartBt() {};
ATTRS void DongleLeds_Update() {};
ATTRS void BtPair_ClearUnknownBonds() {};

#if DEVICE_HAS_OLED
#define WIDGET_REFRESH(W) Widget_Refresh(W)
Expand Down

0 comments on commit 5bb746d

Please sign in to comment.