zhyinch
2020-06-21 dbe67cd6a483817bfc234718c301ff419de6b4e7
Ô´Âë/ºËÐİå/Src/application/dw_app.c
@@ -208,7 +208,24 @@
u16 nearbaseid_list[MAX_NEARBASE_NUM],mainbase_id,true_nearbase_idlist[MAX_NEARBASE_NUM];
int32_t mainbase_dist,nearbase_distlist[MAX_NEARBASE_NUM],true_nearbase_distlist[MAX_NEARBASE_NUM],true_exsistbase_list[MAX_NEARBASE_NUM];
uint8_t trygetnearmsg_times;
u16 current_slotnum,total_slotnum,target_time;
void SetNextPollTime(u16 time)
{
   if(current_slotnum>=total_slotnum)
      current_slotnum-=total_slotnum;
   //time=5;
   target_time=((current_slotnum*g_com_map[COM_INTERVAL])+time);
   if(target_time>=990&&target_time<1000)
   {
      current_slotnum++;
   target_time+=g_com_map[COM_INTERVAL];
   }
   if(target_time>=1000)
   {target_time-=1000;}
   if(target_time<0)
   {target_time+=1000;}
}
u8 FindNearBasePos(u16 baseid)
{
   u8 i;
@@ -265,7 +282,7 @@
{
   u8 i,temp_value;
   temp_value = GetRandomValue();
   for(i=temp_value%32;i<max_slotpos;i++)
   for(i=temp_value%max_slotpos;i<max_slotpos;i++)
   {
      if(((emptyslot>>i)&0x1)==0)
      {
@@ -287,6 +304,7 @@
u8 exsistbase_list[MAX_NEARBASE_NUM],report_num,get_newbase=0;
u16 temp_sync_timer1,temp_sync_timer2;
u32 rec_tagpos_binary;
extern uint32_t tagpos_binary;
 void NearPoll(void)
{
   static u8 mainbase_lost_count=0,flag_finalsend,flag_rxon;
@@ -491,7 +509,7 @@
//               temp_adc=Get_ADC_Value();
//               random_value=random_value|((temp_adc&0x01)<<i);
//            }
            tagslotpos=GetRandomSlotPos(rec_tagpos_binary);
            tagslotpos=GetRandomSlotPos(rec_tagpos_binary|tagpos_binary);
            tyncpoll_time = (tagslotpos--%max_slotpos)*slottime;   
         }
      //   tyncpoll_time=0;
@@ -572,7 +590,7 @@
//         }else{
//            anclost_times=0;
//         }
dwt_forcetrxoff();
   dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG);
}
u8 nearmsg_mainbase=0,rec_tagpos_emptylist[32];
@@ -622,6 +640,7 @@
   }else{
         tyncpoll_time = (tagslotpos--%max_slotpos)*slottime;
   }
}
void Tag_App(void)//发送模式(TAG标签)
@@ -629,6 +648,7 @@
   //LED0_ON;
   dwt_forcetrxoff();
   g_Resttimer=0;
      GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_SET);
   switch(tag_state)
   {
      case DISCPOLL:
@@ -641,7 +661,9 @@
            NearPoll();
         break;
   }
   current_slotnum++;
   SetNextPollTime(tyncpoll_time);
   GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_RESET);
}
int8_t correction_time,new_tagid=0;
@@ -867,7 +889,6 @@
}
uint32_t current_syncid=0xffffffff,synclost_timer;
extern u8 flag_syncbase;
extern uint32_t tagpos_binary;
u8 tagpos_rec[50],tagpos_send[50],ancidlist_num;
u16 ancidlist_rec[20],ancidlist_send[20];
void Anchor_App(void)
@@ -877,15 +898,17 @@
   u16 tempid;
   uint32_t rec_syncid;
   
   dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG);
   g_start_sync_flag=0;
   dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
   dwt_rxenable(0);//打开接收
//   GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_SET);
   while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR))&&!g_start_send_flag&&!g_start_sync_flag)//不断查询芯片状态直到接收成功或者出现错误
   { 
      IdleTask();
   };
//GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_RESET);
   if (status_reg & SYS_STATUS_RXFCG)//成功接收
   { u16 tag_recv_interval;
      float temp_tagpos;