| | |
| | | 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) |
| | | { |
| | |
| | | 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)//只有在有效判定范围内有授权的标签才会开启,否则都是关闭 |
| | |
| | | // 如果授权列表为空,直接全部标记为0 |
| | | if (authorization_list_num == 0) { |
| | | for (int i = 0; i < taglist_num; i++) { |
| | | |
| | | tag_authorized_List[i] = 0; |
| | | } |
| | | return; |
| | |
| | | |
| | | // 遍历需要查找的每个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; |
| | |
| | | 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;//保存该基站电量 |
| | |
| | | { //tempid==dev_id 说明基站下发测距报文有这个标签的信息 |
| | | taglist_num++; //满足上述两种情况才会添加基站ID进入列表中,否则会出现标签不在基站列表中,标签也不响应的情况 |
| | | tagid_list[taglist_pos] = tag_id_recv;//新增基站 |
| | | tag_authorized_List[taglist_pos]=2; |
| | | find_flag=1; |
| | | } |
| | | break; |