zhyinch
2021-07-13 72ea5f62a238bc7696ca3dc5885605aed4c024ed
Src/application/dw_app.c
@@ -69,8 +69,9 @@
#define FINAL_MSG_FINAL_TX_TS_IDX 18
#define FINAL_MSG_TS_LEN 4
#define STARTPOLL  REGPOLL//#define SWITCHBASE_DIST
#define SWITCHBASE_ZHUANDIAN
#define STARTPOLL  SINGLEPOLL//#define SWITCHBASE_DIST
//#define SWITCHBASE_ZHUANDIAN
#define SWITCHBASE_DIST
enum enumtagstate
{
   REGPOLL,
@@ -78,7 +79,7 @@
   GETNEARMSG,
   NEARPOLL,
    SINGLEPOLL,
}tag_state=SINGLEPOLL;
}tag_state=STARTPOLL;
static dwt_config_t config = {
   2,               /* Channel number. */
   DWT_PRF_64M,     /* Pulse repetition frequency. */
@@ -246,7 +247,7 @@
u16 ancid_list[TAG_NUM_IN_SYS];
u8 nearbase_num;
u16 mainbase_id;
int32_t mainbase_dist;
int32_t mainbase_dist,base_mindist;
uint8_t trygetnearmsg_times;
u16 mainbase_id,true_nearbase_idlist[MAX_NEARBASE_NUM],nearbaseid_list[MAX_NEARBASE_NUM],nearbaseid_list2[MAX_NEARBASE_NUM];
u8 FindNearBasePos(u16 baseid)
@@ -493,6 +494,7 @@
    dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS);      
   tag_succ_times = 0;
   frame_seq_nb++;
    intheight+=g_com_map[HEIGHTOFFEST_INDEX];
   for(singlepoll_i=0;singlepoll_i<SINGLEPOLL_BASENUM;singlepoll_i++)
   {
   /* Write frame data to DW1000 and prepare transmission. See NOTE 7 below. */
@@ -505,7 +507,7 @@
   tx_near_msg[NEARBASENUM_INDEX] = nearbase_num;
   memcpy(&tx_near_msg[NEARBASEID_INDEX],&singlepoll_baseid,nearbase_num*2);
    memcpy(&tx_near_msg[NEARBASEID_INDEX+nearbase_num*2],&singlepoll_basedist,nearbase_num*4+4);
    intheight+=g_com_map[HEIGHTOFFEST_INDEX];
    memcpy(&tx_near_msg[NEARBASEID_INDEX+nearbase_num*6],&intheight,2);
   tx_near_msg[MESSAGE_TYPE_IDX] = SPOLL;   
   
@@ -627,7 +629,7 @@
{
   u32 start_poll,frame_len;
mainbase_id = 0x9724;
//mainbase_id = 0x9724;
   memcpy(&tx_near_msg[ANCHOR_ID_IDX],&mainbase_id,2);
   memcpy(&tx_near_msg[TAG_ID_IDX],&dev_id,2);
   tx_near_msg[MESSAGE_TYPE_IDX] = NEAR_MSG;
@@ -789,6 +791,7 @@
                           memcpy(&temp_dist,&rx_buffer[DIST_IDX],4);
                           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;
                           rec_remotepara_state=rx_buffer[MOTORSTATE_INDEX]>>4;
@@ -834,12 +837,13 @@
                              mindist_slavebaseid = rec_nearbaseid;
                           }
                           #ifdef SWITCHBASE_ZHUANDIAN
                           if(temp_dist<nearbase_switchdistlist[rec_nearbasepos]&&nearbase_switchdistlist[rec_nearbasepos]!=0&&temp_dist>0)
                           {
                              mainbase_id = rec_nearbaseid;
                              tag_state = GETNEARMSG;
                           }
                        #endif
                                        if(temp_dist<nearbase_switchdistlist[rec_nearbasepos]&&nearbase_switchdistlist[rec_nearbasepos]!=0&&temp_dist>0)
                                        {
                                            mainbase_id = rec_nearbaseid;
                                            tag_state = GETNEARMSG;
                                        }
                                    #endif
                  }                        
                     }
                  }else{
@@ -905,10 +909,10 @@
         }
         for(i=0;i<nearbase_num;i++)
         {
         if(nearbaseid_list[i]!=nearbaseid_list2[i])
         {
            tag_state = GETNEARMSG;
         }
                if(nearbaseid_list[i]!=nearbaseid_list2[i])
                {
                    tag_state = GETNEARMSG;
                }
         }
   dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG);
//HAL_GPIO_WritePin(LED0_GPIO, GPIO_PIN_9, GPIO_PIN_RESET);