mesh: shell: Use random addr when public is unassigned

X-Original-Commit: 8d0155cfbc024386a09106cba8f584a0a897144f
This commit is contained in:
Michał Narajowski
2018-02-15 16:47:33 +01:00
parent 1b202fa925
commit 554fd64645
+18 -6
View File
@@ -564,18 +564,30 @@ struct shell_cmd_help cmd_lpn_help = {
#endif /* MESH_LOW_POWER */
static int check_addr_unassigned(uint8_t addr[BLE_DEV_ADDR_LEN])
{
return memcmp(addr, (uint8_t[BLE_DEV_ADDR_LEN]){0, 0, 0, 0, 0, 0},
BLE_DEV_ADDR_LEN) == 0;
}
static int cmd_init(int argc, char *argv[])
{
int err;
ble_addr_t addr;
/* Use NRPA */
err = ble_hs_id_gen_rnd(1, &addr);
assert(err == 0);
err = ble_hs_id_set_rnd(addr.val);
assert(err == 0);
if (check_addr_unassigned(MYNEWT_VAL(BLE_PUBLIC_DEV_ADDR))) {
/* Use NRPA */
err = ble_hs_id_gen_rnd(1, &addr);
assert(err == 0);
err = ble_hs_id_set_rnd(addr.val);
assert(err == 0);
err = bt_mesh_init(addr.type, &prov, &comp);
}
else {
err = bt_mesh_init(0, &prov, &comp);
}
err = bt_mesh_init(addr.type, &prov, &comp);
if (err) {
printk("Mesh initialization failed (err %d)\n", err);
}