nimble basically works now. Started long bake for bug #266

This commit is contained in:
geeksville 2020-07-22 18:00:56 -07:00
parent 78ff9a8116
commit 9b4ca95660
2 changed files with 19 additions and 13 deletions

View File

@ -4,13 +4,10 @@ You probably don't care about this section - skip to the next one.
Nimble tasks: Nimble tasks:
- ble bonding is not being kept?
- restart advertising after client disconnects (confirm this works if client goes out of range) - restart advertising after client disconnects (confirm this works if client goes out of range)
- make sleep work - make sleep work
- check BLE handle stability - check BLE handle stability
- apply nimble RPA patches - started RPA long test, jul 22 6pm
- start RPA long test
- use a random pairing key rather than 123456
- implement nimble software update api - implement nimble software update api
* update protocol description per cyclomies email thread * update protocol description per cyclomies email thread

View File

@ -448,13 +448,13 @@ void loopBLE()
extern "C" void ble_store_config_init(void); extern "C" void ble_store_config_init(void);
/// Print a macaddr - bytes are stored in reverse order /// Print a macaddr - bytes are sometimes stored in reverse order
static void print_addr(const uint8_t v[]) static void print_addr(const uint8_t v[], bool isReversed = true)
{ {
const int macaddrlen = 6; const int macaddrlen = 6;
for (int i = 0; i < macaddrlen; i++) { for (int i = 0; i < macaddrlen; i++) {
DEBUG_MSG("%02x%c", v[macaddrlen - i], (i == macaddrlen - 1) ? '\n' : ':'); DEBUG_MSG("%02x%c", v[isReversed ? macaddrlen - i : i], (i == macaddrlen - 1) ? '\n' : ':');
} }
} }
@ -568,6 +568,13 @@ static int bleprph_gap_event(struct ble_gap_event *event, void *arg)
return 0; return 0;
case BLE_GAP_EVENT_REPEAT_PAIRING: case BLE_GAP_EVENT_REPEAT_PAIRING:
DEBUG_MSG("repeat pairing event; conn_handle=%d "
"cur_key_sz=%d cur_auth=%d cur_sc=%d "
"new_key_sz=%d new_auth=%d new_sc=%d "
"new_bonding=%d\n",
event->repeat_pairing.conn_handle, event->repeat_pairing.cur_key_size, event->repeat_pairing.cur_authenticated,
event->repeat_pairing.cur_sc, event->repeat_pairing.new_key_size, event->repeat_pairing.new_authenticated,
event->repeat_pairing.new_sc, event->repeat_pairing.new_bonding);
/* We already have a bond with the peer, but it is attempting to /* We already have a bond with the peer, but it is attempting to
* establish a new secure link. This app sacrifices security for * establish a new secure link. This app sacrifices security for
* convenience: just throw away the old bond and accept the new link. * convenience: just throw away the old bond and accept the new link.
@ -695,9 +702,10 @@ static void on_sync(void)
/* Printing ADDR */ /* Printing ADDR */
uint8_t addr_val[6] = {0}; uint8_t addr_val[6] = {0};
rc = ble_hs_id_copy_addr(own_addr_type, addr_val, NULL); int isPrivate = 0;
rc = ble_hs_id_copy_addr(own_addr_type, addr_val, &isPrivate);
DEBUG_MSG("Device Address: "); assert(rc == 0);
DEBUG_MSG("Addr type %d, Private=%d, Device Address: ", own_addr_type, isPrivate);
print_addr(addr_val); print_addr(addr_val);
DEBUG_MSG("\n"); DEBUG_MSG("\n");
/* Begin advertising. */ /* Begin advertising. */
@ -776,8 +784,9 @@ void reinitBluetooth()
ble_hs_cfg.sm_bonding = 1; ble_hs_cfg.sm_bonding = 1;
ble_hs_cfg.sm_mitm = 1; ble_hs_cfg.sm_mitm = 1;
ble_hs_cfg.sm_sc = 1; ble_hs_cfg.sm_sc = 1;
ble_hs_cfg.sm_our_key_dist = 1; // per https://github.com/espressif/esp-idf/issues/5530#issuecomment-652933685
ble_hs_cfg.sm_their_key_dist = 1; ble_hs_cfg.sm_our_key_dist = BLE_SM_PAIR_KEY_DIST_ID | BLE_SM_PAIR_KEY_DIST_ENC;
ble_hs_cfg.sm_their_key_dist = BLE_SM_PAIR_KEY_DIST_ID | BLE_SM_PAIR_KEY_DIST_ENC;
// add standard GAP services // add standard GAP services
ble_svc_gap_init(); ble_svc_gap_init();