#include "dw_tag.h" #include "stdint.h" #include #include "mk_uwb.h" #include "mk_misc.h" #include "mk_uart.h" #include "mk_trace.h" #include "global_param.h" static float clockOffsetRatio; static double rtd_init, rtd_resp; double tof,distance_tag; #define SPEED_OF_LIGHT 299702547 #define DWT_TIME_UNITS (1.0/499.2e6/128.0) //!< = 15.65e-12 s static uint32_t anc_pollrx[MAX_NEARBASE_NUM],anc_resptx[MAX_NEARBASE_NUM],tag_resprx[MAX_NEARBASE_NUM],tag_polltx[MAX_NEARBASE_NUM]; static int32_t anc_clockoffset[MAX_NEARBASE_NUM]; static int16_t anc_distoffset[MAX_NEARBASE_NUM]; extern uint8_t taglist_keeptime[MAX_TAG_LIST_NUM]; //ÿ¸ö±êÇ©´æ»îʱ¼ä extern uint16_t taglist_id[MAX_TAG_LIST_NUM],taglist_dist[MAX_TAG_LIST_NUM]; //±êÇ©¾àÀëºÍ±êÇ©µÄID extern uint16_t taglist_total_num,taglist_current_index; //#if defined (MK_SS_TWR_DW_INIT) extern uint8_t exsistbase_list[MAX_NEARBASE_NUM]; extern int32_t nearbase_distlist[MAX_NEARBASE_NUM]; static int64_t tround,treply; static int64_t poll_tx_timestamp,resp_rx_timestamp,resp_tx_timestamp,poll_rx_timestamp; int32_t temp_freq_offset; int64_t tround_temp,treply_temp; int32_t tof_i; uint32_t tof_i_ui; double tof_f; extern int32_t freq_offset,freq_offset_filter; void SetANCTimestap(uint8_t i,uint8_t* pollrx,uint8_t* resptx,uint32_t resprx,uint8_t* distoffset,int32_t anc_clockoffset_from_MK,uint32_t polltx) //дÈëʱ¼ä´ÁÐÅÏ¢ { memcpy(&anc_pollrx[i],pollrx,4); memcpy(&anc_resptx[i],resptx,4); memcpy(&tag_resprx[i],&resprx,4); memcpy(&anc_distoffset[i],distoffset,2); memcpy(&tag_polltx[i],&polltx,4); //anc_clockoffset[i] = anc_clockoffset_from_MK;//MK8000ÐÞ¸Ä } //void CalculateDists1(int64_t poll_tx_ts) //{ //for(int i=0;i-10&&distance_tag<1000) // { // nearbase_distlist[i] = distance_tag+anc_distoffset[i]; // } // }else{ // nearbase_distlist[i] = 0x1ffff; // } // } //} // ts_a - ts_b int64_t ranging_timestamp_diff(int64_t ts_a, int64_t ts_b) { if (ts_a < ts_b) { return (0x20000000000 - ts_b + ts_a); } else { return (ts_a - ts_b); } }