diff --git a/apps/bttester/src/gap.c b/apps/bttester/src/gap.c index 030432c37..38cb99ffc 100644 --- a/apps/bttester/src/gap.c +++ b/apps/bttester/src/gap.c @@ -31,7 +31,7 @@ const uint8_t irk[16] = { struct hal_timer conn_param_update_timer; #endif static atomic_t current_settings; -static u8_t own_addr_type = BLE_OWN_ADDR_PUBLIC; +u8_t own_addr_type; static ble_addr_t peer_id_addr; static ble_addr_t peer_ota_addr; static bool encrypted = false; @@ -112,6 +112,18 @@ static void controller_index_list(u8_t *data, u16_t len) BTP_INDEX_NONE, (u8_t *) rp, sizeof(buf)); } +static int check_pub_addr_unassigned(void) +{ +#ifdef ARCH_sim + return 0; +#else + uint8_t zero_addr[BLE_DEV_ADDR_LEN] = { 0 }; + + return memcmp(MYNEWT_VAL(BLE_PUBLIC_DEV_ADDR), + zero_addr, BLE_DEV_ADDR_LEN) == 0; +#endif +} + static void controller_info(u8_t *data, u16_t len) { struct gap_read_controller_info_rp rp; @@ -137,8 +149,17 @@ static void controller_info(u8_t *data, u16_t len) supported_settings |= BIT(GAP_SETTINGS_PRIVACY); memcpy(rp.address, addr.val, sizeof(rp.address)); } else { - memcpy(rp.address, MYNEWT_VAL(BLE_PUBLIC_DEV_ADDR), - sizeof(rp.address)); + if (check_pub_addr_unassigned()) { + own_addr_type = BLE_OWN_ADDR_RANDOM; + memcpy(rp.address, addr.val, sizeof(rp.address)); + supported_settings |= BIT(GAP_SETTINGS_STATIC_ADDRESS); + atomic_set_bit(¤t_settings, + GAP_SETTINGS_STATIC_ADDRESS); + } else { + own_addr_type = BLE_OWN_ADDR_PUBLIC; + memcpy(rp.address, MYNEWT_VAL(BLE_PUBLIC_DEV_ADDR), + sizeof(rp.address)); + } } ble_hs_cfg.sm_mitm = 0; diff --git a/apps/bttester/src/mesh.c b/apps/bttester/src/mesh.c index 8a8411cdb..ad428ade9 100644 --- a/apps/bttester/src/mesh.c +++ b/apps/bttester/src/mesh.c @@ -19,6 +19,8 @@ #include "bttester.h" +extern u8_t own_addr_type; + #define CONTROLLER_INDEX 0 #define CID_LOCAL 0xffff @@ -433,7 +435,7 @@ static void init(u8_t *data, u16_t len) SYS_LOG_DBG(""); - err = bt_mesh_init(0, &prov, &comp); + err = bt_mesh_init(own_addr_type, &prov, &comp); if (err) { status = BTP_STATUS_FAILED; diff --git a/apps/bttester/syscfg.yml b/apps/bttester/syscfg.yml index ceda26906..c420e0398 100644 --- a/apps/bttester/syscfg.yml +++ b/apps/bttester/syscfg.yml @@ -61,7 +61,6 @@ syscfg.vals: SHELL_NEWTMGR: 0 LOG_LEVEL: 1 MSYS_1_BLOCK_COUNT: 48 - BLE_PUBLIC_DEV_ADDR: "((uint8_t[6]){0x66, 0x55, 0x44, 0x33, 0x22, 0x11})" BLE_MONITOR_RTT: 1 CONSOLE_RTT: 0