#include "dw_app_anchor.h" #include "stdint.h" #include #if defined (MK_SS_TWR_DW_INIT) static float clockOffsetRatio; static double rtd_init, rtd_resp; static double tof,distance; #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; extern uint8_t exsistbase_list[MAX_NEARBASE_NUM]; extern int32_t nearbase_distlist[MAX_NEARBASE_NUM]; void SetANCTimestap(uint8_t i,uint8_t* pollrx,uint8_t* resptx,uint32_t resprx,uint8_t* distoffset,int32_t anc_clockoffset_from_MK) //дÈëʱ¼ä´ÁÐÅÏ¢ { memcpy(&anc_pollrx[i],pollrx,4); memcpy(&anc_resptx[i],resptx,4); memcpy(&tag_resprx[i],&resprx,4); memcpy(&anc_distoffset[i],distoffset,2); anc_clockoffset[i] = anc_clockoffset_from_MK;//MK8000ÐÞ¸Ä } void CalculateDists(int64_t poll_tx_ts) { for(int i=0;i-10&&distance<1000) { nearbase_distlist[i] = distance*100+anc_distoffset[i]; } }else{ // nearbase_distlist[i] = 0x1ffff; } } } #endif