WXK
2023-03-27 a1044ab25a77b6bf79aacba56032e1707ac5e5a9
Src/application/dw_app.c
@@ -29,7 +29,7 @@
#include <stdio.h>
#include "beep.h"
#include "modbus.h"
#include "CRC.h"
/*------------------------------------ Marcos ------------------------------------------*/
/* Inter-ranging delay period, in milliseconds. */
#define RNG_DELAY_MS 100
@@ -471,7 +471,7 @@
u8 nearbase_num=0,last_nearbase_num,next_nearbase_num,last_slotnum, para_update,para_len,stationary_flag=0;
u32 rec_tagpos_binary;
int16_t offset=4700,temptimer;
u8 motor_state,rec_remotepara_state,rec_remotepara[80];
static u8 motor_state,rec_remotepara_state,rec_remotepara[80];
#define SINGLEPOLL_BASENUM 5
@@ -763,6 +763,7 @@
            tagpoll_sync_sec = current_slotpos/200;
            tagslotpos = current_slotpos%200;
            max_slotpos = rec_tagperiod*20;
            tag_frequency = 10/rec_tagperiod;
         tag_state=NEARPOLL;
      }
   }else{
@@ -800,7 +801,7 @@
uint16_t rec_ancpos;
uint8_t dist_noutenough_count;
uint8_t ancdist_hist[11];
uint16_t calCRC;
void NearPoll(void)
{
   
@@ -825,12 +826,7 @@
   recbase_num=0;
//   motor_state=0;
    if(motor_state!=0&&motor_state!=3)
    {
        motor_flag = 1;
    }else{
        motor_flag = 0;
    }
   
   tx_near_msg[BATTARY_IDX] = bat_percent;
   tx_near_msg[BUTTON_IDX] = userkey_state|stationary_flag<<1|gotosleep_flag<<2|motor_flag<<5;
@@ -968,8 +964,7 @@
                           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(frame_len==28)
                                     {
                                         memcpy(&rec_maxrangelen,&rx_buffer[MAXRANGE_DISTANCE],2);
@@ -1098,29 +1093,33 @@
         }   
         if(para_update)
         {
            pack_msgtype = rec_remotepara[0];
            pack_index = rec_remotepara[1];
            pack_length = rec_remotepara[2];
            if(pack_msgtype==2)
            {
               if( pack_index == MOTOR_ONTIME_INDEX)
               {
                       // if(motor_keeptime==0)
                            motor_keeptime = rec_remotepara[3];
               }else{
                        if(pack_index<200)
         {
                calCRC = CRC_Compute(rec_remotepara,5);
                if(memcmp(&calCRC,&rec_remotepara[5],2)==0)
                {
                    pack_msgtype = rec_remotepara[0];
                    pack_index = rec_remotepara[1];
                    pack_length = rec_remotepara[2];
                    if(pack_msgtype==2)
                    {
                        if( pack_index == MOTOR_ONTIME_INDEX)
                        {
                            memcpy((uint8_t*)&g_com_map + pack_index, &rec_remotepara[3], pack_length);
                            //返回一个error状态
                            //SendComMap(pack_datalen,pack_index);
                            save_com_map_to_flash();
                            delay_ms(100);
                            NVIC_SystemReset();
                           // if(motor_keeptime==0)
                                motor_keeptime = rec_remotepara[3];
                        }else{
                            if(pack_index<200)
                            {
                                memcpy((uint8_t*)&g_com_map + pack_index, &rec_remotepara[3], pack_length);
                                //返回一个error状态
                                //SendComMap(pack_datalen,pack_index);
                                save_com_map_to_flash();
                                delay_ms(100);
                                NVIC_SystemReset();
                            }
                        }
               }
            }
                    }
                }
         }
            if(get_newdist>=2)
            {
@@ -1161,7 +1160,7 @@
{
   static u8 regpoll_count=0;
   mainbase_lost_count = 0;
      tag_frequency = REGISTER_FREQUENCY;
      //tag_frequency = REGISTER_FREQUENCY;
      bigslot_num = TOTAL_SLOTNUM/tag_frequency;
      regpoll_count++;
      if(regpoll_count%2)
@@ -1229,17 +1228,17 @@
                        }
                     }
}
extern void FZNearPoll(void);
u32 id,error_times=0;
u8 ttt = 1;
extern float Height;
void Tag_App(void)//发送模式(TAG标签)
void UWBWkWp(void)
{
   static uint8_t diccount = 0;
   //LED0_ON;
   SPIx_CS_GPIO->BRR = SPIx_CS;
   delay_us(700);
   SPIx_CS_GPIO->BSRR = SPIx_CS;
   id =  dwt_readdevid() ;
       while (DWT_DEVICE_ID != id) 
    {
      //   Dw1000_Init();
@@ -1252,6 +1251,13 @@
        }
    }
    error_times = 0;
}
void Tag_App(void)//发送模式(TAG标签)
{
   static uint8_t diccount = 0,diccount2;
   //LED0_ON;
    UWBWkWp();
   switch(tag_state)
   {
      case REGPOLL:
@@ -1295,7 +1301,9 @@
        case SINGLEPOLL:
          //  Poll();
            break;
   }
     userkey_state = !GET_USERKEY;
   }
    FZNearPoll();
    dwt_forcetrxoff();
    userkey_state = !GET_USERKEY;
   dwt_entersleep();
}