Hi,my board is nRF52840,and the demo is periodic_sync_conn within ncs2.7.0,
I want to establish periodic sync with the AP whose rssi is better,but i am failed。The ESL will sync with another AP automatically
Thanks.
struct _AP_info { int8_t sid; int8_t rssi; bt_addr_le_t addr; } __packed; static struct _AP_info AP_info={.rssi=-80}; static void scan_AP(const struct bt_le_scan_recv_info *info) { if (info->rssi > AP_info.rssi) { AP_info.sid = info->sid; AP_info.rssi = info->rssi; bt_addr_le_copy(&(AP_info.addr), info->addr); printk("Get better rssi AP:sid=%d,rssi=%i,addr=0x%X\n", AP_info.sid, AP_info.rssi, AP_info.addr.a.val[0]); } } static void scan_recv(const struct bt_le_scan_recv_info *info, struct net_buf_simple *buf) { char name[NAME_LEN] = {0}; char le_addr[BT_ADDR_LE_STR_LEN]; struct _AP_info *p_AP_info = NULL; (void)memset(name, 0, sizeof(name)); bt_data_parse(buf, data_cb, name); bt_addr_le_to_str(info->addr, le_addr, sizeof(le_addr)); if (0 == strstr(name, "PAwR conn sample") || 0 == info->interval){ return; } printk("scan_recv:%s,sid:%d,rssi:%i,type:%d,addr:%s\n", name, info->sid, info->rssi, info->addr->type, le_addr); scan_AP(info); if (!per_adv_found){ // per_sid = info->sid; // bt_addr_le_copy(&per_addr, info->addr); per_sid = AP_info.sid; bt_addr_le_copy(&per_addr, &(AP_info.addr)); per_adv_found = true; k_sem_give(&sem_per_adv); } } static struct bt_le_scan_cb scan_callbacks = { .recv = scan_recv, };