keil/uwb_app.c
@@ -15,6 +15,7 @@
extern int temp_main(void);
void Calibration_Time(void);
void TagListUpdate(void);
void TagListUpdate_person_num(void);
void Uwb_init(void);
extern void IO_LED_control_change(uint8_t data);
extern void IO_control_init(void);
@@ -312,7 +313,7 @@
    }
}
uint32_t start_receive_count,end_receive_count,poll_timeout,current_count,temp_resp;
static uint16_t anchordata_id[TAG_NUM_IN_SYS],anchordata_dist[TAG_NUM_IN_SYS];
 uint16_t anchordata_id[TAG_NUM_IN_SYS],anchordata_dist[TAG_NUM_IN_SYS];
static uint8_t anchordata_bat[TAG_NUM_IN_SYS];
uint8_t anchordata_num = 0;
static int32_t tagdist_list[TAG_NUM_IN_SYS];
@@ -338,17 +339,20 @@
            anchordata_num++;
    }
    anchordata_id[i] = ancid;//与之通信的标签id存入当前表中
      distance=dist*0.5+anchordata_dist[i]*0.5;
    anchordata_dist[i] = dist;
    anchordata_bat[i] = battary;
    tagofflinetime[i]=0;//不断更新当前TAG对应离线时间
      dist_temp=dist;
//    if(dist>0)
      if(temp_recdist_before_offset!=0&&distance!=0x1ffff)
      {
    distance=dist*0.5+distance*0.5;
      }else{
         distance=dist;
      }
//      if(temp_recdist_before_offset!=0&&distance!=0x1ffff)
//      {
//    distance=dist*0.5+distance*0.5;
//      }else{
//         distance=dist;
//      }
}
uint16_t CmpTagInList(uint16_t tagid)
{   uint16_t i;
@@ -387,6 +391,8 @@
    }
    anchordata_num=j;
}
uint8_t flag_temp2,flag_temp1;
uint8_t Anchor_RecNearPoll(uint8_t ancrec_nearbasepos)//根据自己是否为新基站定制消息去发送,根据是否抢占判断
{
@@ -432,6 +438,44 @@
uint16_t anchor_id_in[TAG_NUM_IN_SYS],anchor_id_out[TAG_NUM_IN_SYS];
uint8_t secondtask_search_count,secondtask_search_flag;
extern uint8_t g_start_send_flag,search_open_flag = 1,link_success_flag,flag_secondtask;
void TagListUpdate_person_num(void)
{
   uint8_t i,j=0;
    for(i=0; i<anchordata_num; i++)
    {
        if(tagofflinetime[i]++<QUIT_SLOT_TIME)
        {
            anchordata_id[j]=anchordata_id[i];
            tagofflinetime[j++]=tagofflinetime[i];
        }else{
//            for(int h=0;h<get_in_num;h++)//消除车内离线id
//            {
//               if(anchordata_id[i]==anchor_id_in[h])
//               {
//                     for(int k=h+1;k<get_in_num;k++)
//                     {
//                        anchor_id_in[k-1]=anchor_id_in[k];//缺个数量--
//                     }
//                     get_in_num--;//车内不删除
//               }
//            }
            for(int h=0;h<get_out_num;h++)//消除车外离线id
            {
               if(anchordata_id[i]==anchor_id_out[h])
               {
                     for(int k1=h+1;k1<get_out_num;k1++)
                     {
                        anchor_id_out[k1-1]=anchor_id_out[k1];//缺个数量--
                     }
                     get_out_num--;
               }
            }
         }
    }
    anchordata_num=j;
}
void Calibration_Time(void)
{   
   current_count_calibration=phy_timer_count_get();
@@ -628,12 +672,14 @@
              //range_timeout_us=5000;//恢复为5000进入range后
           LOG_INFO(TRACE_MODULE_APP,"标签ID:%X,距离: %d 信号强度ANT0: %f,信号强度ANT2: %f\r\n",g_com_receive_id,distance,sts_rssi[0],sts_rssi[2]);
                check_if_in_or_out(g_com_receive_id,distance,sts_rssi[0],sts_rssi[2]);
               LOG_INFO(TRACE_MODULE_APP,"车内:%d 人,车外: %d 人\r\n",get_in_num,get_out_num);
                  gpio_pin_clr(SCL_PIN);
        //break;去掉break变为一对多
            }
    } 
         sts_lsp_store();
         break;
      //失败或者接受被高发射机打断都会再次开启接收
         //flag_temp1=uwb_rx(0, 0, range_timeout_us);
@@ -641,6 +687,7 @@
      delay_us(1);
      sts_lsp_store_stop();
      uwb_rx_force_off(1);
//      if(!flag_recsuccess)
//      {
//         //sleep_timer_start(__MS_TO_32K_CNT(UWB_DELAY_TIME_US-3));//测试