keil/uwb_app.c
@@ -467,6 +467,7 @@
uint8_t find_flag;
uint16_t bind_distance,button_determinate_distance,change_by_frequency_distance;
uint8_t tag_near_frequency;
uint8_t tag_authorized_List[TAG_NUM_IN_SYS];
extern uint32_t tag_id_authorization_list_num;
void sort_tag_lists(void)
{
@@ -486,11 +487,26 @@
                uint32_t temp_id = tagid_list[j];
                tagid_list[j] = tagid_list[j + 1];
                tagid_list[j + 1] = temp_id;
                     //同步交换电量是否授权表和在线时间
                      uint32_t temp_bat = anchordata_bat[j];
                     anchordata_bat[j]=anchordata_bat[j+1];//电量随之更新
            anchordata_bat[j+1]=temp_bat;
                     //同步交换在线时间
                        uint32_t temp_tag_offlinetime = tagofflinetime[j];
                     tagofflinetime[j]=tagofflinetime[j+1];//电量随之更新
            tagofflinetime[j+1]=temp_tag_offlinetime;
                     //同步交换授权表
                        uint8_t temp_tag_authorized = tag_authorized_List[j];
                     tag_authorized_List[j]=tag_authorized_List[j+1];//电量随之更新
            tag_authorized_List[j+1]=temp_tag_authorized;
            }
        }
    }
}
uint8_t tag_authorized_List[TAG_NUM_IN_SYS];
void change_button_state(void)
{
   if(tag_authorized_List[0]==1&&taglist_num>=1)//只有在有效判定范围内有授权的标签才会开启,否则都是关闭
@@ -785,6 +801,7 @@
    // 如果授权列表为空,直接全部标记为0
    if (authorization_list_num == 0) {
        for (int i = 0; i < taglist_num; i++) {
            tag_authorized_List[i] = 0;
        }
        return;
@@ -792,6 +809,9 @@
    // 遍历需要查找的每个ID
    for (int i = 0; i < taglist_num; i++) {
         if (tag_authorized_List[i] != 2) {
            continue; // 跳过不需要查找的项
        }
        int key = tagid_list[i];
        int low = 0;
        int high = authorization_list_num - 1;
@@ -868,7 +888,7 @@
                              memcpy(&tempid,&rx_buf[FZ_NEARBASEID_INDEX+i*2],2);
                              if(tempid==dev_id)
                              {
                                    if(tag_authorized_List[taglist_pos]==1||bind_flag==1)//授权后才会通信
                                    Anchor_RecNearPoll(i);
                                    tagdist_list[taglist_pos]=rec_ancdistlist[i];
                                    anchordata_bat[taglist_pos] = battary;//保存该基站电量
@@ -885,6 +905,7 @@
                                    {   //tempid==dev_id 说明基站下发测距报文有这个标签的信息
                                          taglist_num++;          //满足上述两种情况才会添加基站ID进入列表中,否则会出现标签不在基站列表中,标签也不响应的情况
                                          tagid_list[taglist_pos] = tag_id_recv;//新增基站
                                          tag_authorized_List[taglist_pos]=2;
                                          find_flag=1;
                                    }
                                    break;