keil/uwb_app.c
@@ -97,7 +97,7 @@
/* RX window open in advance */
#define RX_WIN_IN_ADVANCE_US (150)
#define DELAY_BETWEEN_TWO_FRAME_UUS 300 //yuan1400
#define DELAY_BETWEEN_TWO_FRAME_UUS 500 //yuan1400
/* Field index in frame */
#define MSG_SEQ_NUM_IDX 2
@@ -329,9 +329,9 @@
                 temp_count= phy_timer_count_get();
        memcpy(&rx_rpt, rx_report, sizeof(struct MAC_HW_REPORT_T));
        rx_length = 0;
            OpenUWB();//再次开启UWB接收
         //   OpenUWB();//再次开启UWB接收
    }
   //OpenUWB();//再次开启UWB接收
   OpenUWB();//再次开启UWB接收
}
/* TX done process handler. */
@@ -346,7 +346,7 @@
        temp_count= phy_timer_count_get();
        temp_internal=temp_count;
        resp_tx_num++;
            OpenUWB();//再次开启UWB接收
      //      OpenUWB();//再次开启UWB接收
        //LOG_INFO(TRACE_MODULE_APP, "poll_rx_num is %d,resp_tx_num is %d\r\n",poll_rx_num,resp_tx_num);
    }
}
@@ -444,7 +444,7 @@
}
uint8_t position;
uint8_t Anchor_RecNearPoll(uint8_t ancrec_nearbasepos)//根据自己是否为新基站定制消息去发送,根据是否抢占判断
{
    temp_count2=poll_rx_en_start_u32;
@@ -466,7 +466,8 @@
//       resp_tx_en_start_u32 = phy_timer_count_get()+US_TO_PHY_TIMER_COUNT(20*rec_nearbase_num+POLL_RX_TO_RESP_TX_DLY_US+ancrec_nearbasepos*DELAY_BETWEEN_TWO_FRAME_UUS);//后面的需要根据已有基站数量进行更改,如果是抢占自己最后一个回复,要有底数
//            //这里应该有问题问一下钟工
//      }//此处设置绝对时间将poll u32改为phy_timer_count_get()
      resp_tx_en_start_u32 = poll_rx_en_start_u32+US_TO_PHY_TIMER_COUNT(POLL_RX_TO_RESP_TX_DLY_US);
      position=ancrec_nearbasepos;
      resp_tx_en_start_u32 = poll_rx_en_start_u32+US_TO_PHY_TIMER_COUNT(POLL_RX_TO_RESP_TX_DLY_US)+ancrec_nearbasepos*US_TO_PHY_TIMER_COUNT(DELAY_BETWEEN_TWO_FRAME_UUS);//加入帧间隔
    resp_tx_ts_i64 = ranging_tx_time_correct(resp_tx_en_start_u32 + phy_shr_duration());//修正时间戳
    /* Write all timestamps in the final message. See NOTE 8 below. */
    resp_msg_set_ts(&send_buffer[RESP_MSG_POLL_RX_TS_IDX], poll_rx_ts_i64);
@@ -477,7 +478,7 @@
    flag_temp2=uwb_tx(send_buffer, 40,1 ,resp_tx_en_start_u32);//立即发送测试size大小
//    temp_count1=phy_timer_count_get();
    //while(mac_is_busy());
    gpio_pin_clr(SCL_PIN);
    //gpio_pin_clr(SCL_PIN);
}
uint16_t uwb_searchcount;
@@ -551,9 +552,10 @@
}   
void UWBOneSecondTask(void)
{
 TagListUpdate();//更新标签数
 uwb_losttimer++;
   if(uwb_losttimer>g_com_map[UWB_RNAGE_TIME])
      uwb_losttimer=g_com_map[UWB_RNAGE_TIME]+1;//防止溢出
 if(uwb_losttimer>g_com_map[UWB_RNAGE_TIME])
 uwb_losttimer=g_com_map[UWB_RNAGE_TIME]+1;//防止溢出
}
void UWBIdleTask(void)
{
@@ -566,46 +568,46 @@
}
int uwb_app_poll(void)
{
   switch(wltag_state)
   {
   case RANGE:
   if(HIDO_TimerGetTick()-wltag_uwbtimer>2&&uwb_rx_flag==0)
      {
            wltag_uwbtimer = HIDO_TimerGetTick();
            OpenUWB();
      }
   else if(HIDO_TimerGetTick()-wltag_uwbtimer>1&&uwb_rx_flag==1)
      {
            wltag_uwbtimer = HIDO_TimerGetTick();
            CloseUWB();
      }
      if(uwb_losttimer>g_com_map[UWB_RNAGE_TIME])
      {
       wltag_statetimer = HIDO_TimerGetTick();
         if(uwb_rx_flag==0)//若要切换到搜索模式时没有开启则开启UWB
         {
            OpenUWB();
         }
     wltag_state = SEARCH;
      }
      break;
   case SEARCH:
      if(HIDO_TimerGetTick()-wltag_statetimer>1)
      {
      wltag_statetimer = HIDO_TimerGetTick();
    wltag_state = CLOSE;
    CloseUWB();
      }
      break;
   case CLOSE:
      if(HIDO_TimerGetTick()-wltag_statetimer>g_com_map[UWB_WAIT_TIME])
      {
      wltag_statetimer = HIDO_TimerGetTick();
    wltag_state = SEARCH;
    OpenUWB();
      }
      break;
   }
//   switch(wltag_state)
//   {
//   case RANGE:
//   if(HIDO_TimerGetTick()-wltag_uwbtimer>0&&uwb_rx_flag==0)
//      {
//            wltag_uwbtimer = HIDO_TimerGetTick();
//            OpenUWB();
//      }
//   else if(HIDO_TimerGetTick()-wltag_uwbtimer>2&&uwb_rx_flag==1)
//      {
//            wltag_uwbtimer = HIDO_TimerGetTick();
//            CloseUWB();
//      }
////      if(uwb_losttimer>g_com_map[UWB_RNAGE_TIME])
////      {
////       wltag_statetimer = HIDO_TimerGetTick();
////         if(uwb_rx_flag==0)//若要切换到搜索模式时没有开启则开启UWB
////         {
////            OpenUWB();
////         }
////     wltag_state = SEARCH;
////      }
//      break;
////   case SEARCH:
////      if(HIDO_TimerGetTick()-wltag_statetimer>1)
////      {
////      wltag_statetimer = HIDO_TimerGetTick();
////    wltag_state = CLOSE;
////    CloseUWB();
////      }
////      break;
////   case CLOSE:
////      if(HIDO_TimerGetTick()-wltag_statetimer>g_com_map[UWB_WAIT_TIME])
////      {
////      wltag_statetimer = HIDO_TimerGetTick();
////    wltag_state = SEARCH;
////    OpenUWB();
////      }
////      break;
//   }
    UWBIdleTask();
}
int Anchor_App(void)
@@ -650,7 +652,7 @@
                Anchor_RecNearPoll(i);
            }
            }else{
            OpenUWB();//接收到不是自己的包再次开启UWB接收
         //   OpenUWB();//接收到不是自己的包再次开启UWB接收
            }
            
}