WXK
2023-11-07 8fba17d0f4bd55471333a5d95d394efb118ede35
Src/application/dw_app.c
@@ -78,7 +78,7 @@
   DISCPOLL,
   GETNEARMSG,
   NEARPOLL,
    SINGLEPOLL,
  SINGLEPOLL,
}tag_state=STARTPOLL;
static dwt_config_t config = {
   2,               /* Channel number. */
@@ -89,7 +89,7 @@
   9,               /* RX preamble code. Used in RX only. */
   1,               /* Use non-standard SFD (Boolean) */
   DWT_BR_6M8,      /* Data rate. */
   DWT_PHRMODE_STD, /* PHY header mode. */
   DWT_PHRMODE_EXT, /* PHY header mode. */
   (129 + 8 - 8)    /* SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only. */
};
static uint8_t tx_poll_msg[20] = {0};
@@ -118,7 +118,7 @@
LPFilter_Frac* p_Dis_Filter;      //测距用的低通滤波器
void GetNearMsg(void);
static uint64_t get_tx_timestamp_u64(void)
{
    uint8_t ts_tab[5];
@@ -610,8 +610,9 @@
    if(minddist!=0x1ffff&&minddist!=0)
    {
         trygetnearmsg_times = 0;
            tag_state = GETNEARMSG;
            tag_state = GETNEARMSG;
            mainbase_id = mindist_ancid;   
            GetNearMsg();
    }
   
   if(getsync_flag==0)
@@ -846,6 +847,7 @@
    
    }
}
u32 last_mindist_slavebaseid;
void NearPoll(void)
{
   
@@ -946,7 +948,7 @@
               if (status_reg & SYS_STATUS_RXFCG)//如果成功接收
                  {
                     dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS);//清楚寄存器标志位
                     frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;   //获得接收到的数据长度
                     frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023;   //获得接收到的数据长度
                     dwt_readrxdata(rx_buffer, frame_len, 0);   //读取接收数据
                            test2 = dwt_readcarrierintegrator();
                     dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
@@ -997,8 +999,8 @@
                           mainbase_dist=temp_dist;
                                    nearbase_distlist[0] = temp_dist;
                                    base_mindist = temp_dist;
                           if((rx_buffer[MOTORSTATE_INDEX]&0xf)!=3)
                              motor_state=rx_buffer[MOTORSTATE_INDEX]&0xf;
//                           if((rx_buffer[MOTORSTATE_INDEX]&0xf)!=3)
//                              motor_state=rx_buffer[MOTORSTATE_INDEX]&0xf;
                                    if(frame_len==38)
                                     {
                                         memcpy(&rec_maxrangelen,&rx_buffer[MAXRANGE_DISTANCE],2);
@@ -1055,18 +1057,18 @@
                                    }
                           nearbase_distlist[rec_nearbasepos+1]=temp_dist;   //   nearbase_distlist[1]对应   rec_nearbaseid[0]的距离               
                           final_msg_set_ts(&tx_near_msg[FINAL_MSG_RESP_RX_NEARBASE_IDX+(rec_nearbasepos)*4], resp_rx_ts);
                           if(temp_dist<salvebase_mindist&&nearbase_switchdistlist[rec_nearbasepos]==1)
                              if(temp_dist<salvebase_mindist&&nearbase_switchdistlist[rec_nearbasepos]!=0&&(nearbase_switchdistlist[rec_nearbasepos]==1||temp_dist<nearbase_switchdistlist[rec_nearbasepos]))
                           {
                              salvebase_mindist = temp_dist;
                              mindist_slavebaseid = rec_nearbaseid;
                           }
                           #ifdef SWITCHBASE_ZHUANDIAN
                                       if(temp_dist<nearbase_switchdistlist[rec_nearbasepos]&&nearbase_switchdistlist[rec_nearbasepos]>1&&temp_dist>0)
                             {
                                            mainbase_id = rec_nearbaseid;
                                            tag_state = GETNEARMSG;
                                 trygetnearmsg_times = 0;
                                        }
//                                       if(temp_dist<nearbase_switchdistlist[rec_nearbasepos]&&nearbase_switchdistlist[rec_nearbasepos]>1&&temp_dist>0)
//                             {
//                                            mainbase_id = rec_nearbaseid;
//                                            tag_state = GETNEARMSG;
//                                 trygetnearmsg_times = 0;
//                                        }
                                    #endif
                  }                        
@@ -1093,12 +1095,20 @@
            #ifdef SWITCHBASE_DIST
            if(salvebase_mindist<mainbase_dist- THRESHOLD_CHANGE_MAINBASE_DIST )
            {
               changemainbase_count++;
               if(changemainbase_count>5)
               if(mindist_slavebaseid==last_mindist_slavebaseid)
               {
                              mainbase_id = mindist_slavebaseid;
                              tag_state = GETNEARMSG;
                              trygetnearmsg_times = 0;
                  changemainbase_count++;
               if(changemainbase_count>2)
               {
                        changemainbase_count = 0;
                        mainbase_id = mindist_slavebaseid;
                        tag_state = GETNEARMSG;
                        trygetnearmsg_times = 0;
                        GetNearMsg();
               }}
               else{
                  changemainbase_count = 1;
                  last_mindist_slavebaseid = mindist_slavebaseid;
               }
            }else{
               changemainbase_count = 0;
@@ -1106,7 +1116,9 @@
         #endif
         }else if(mainbase_lost_count>10)
         {
                mainbase_lost_count = 0;
            tag_state = DISCPOLL;
                DiscPoll();
         }   
         if(mainbase_lost_count!=0)
         {
@@ -1167,6 +1179,7 @@
                if(nearbaseid_list[i]!=nearbaseid_list2[i])
                {
                    tag_state = GETNEARMSG;
                    GetNearMsg();
                           trygetnearmsg_times = 0;
                           nearbaseid_list0[i]=1;
                }
@@ -1316,6 +1329,8 @@
          //  Poll();
            break;
   }
    delay_ms(100);
//    dwt_forcetrxoff();
    FZNearPoll();
    dwt_forcetrxoff();
     userkey_state = !GET_USERKEY;