|
#ifndef __DW_APP_H__
|
#define __DW_APP_H__
|
|
#include <string.h>
|
#include "stm32f10x.h"
|
#include "filters.h"
|
#include "ADC.h"
|
#include "deca_device_api.h"
|
#include "deca_regs.h"
|
#include "dw_driver.h"
|
#include "Spi.h"
|
#include "led.h"
|
#include "serial_at_cmd_app.h"
|
#include "Usart.h"
|
#include "global_param.h"
|
#include "filters.h"
|
#include <stdio.h>
|
#include "beep.h"
|
#include <math.h>
|
|
//#define USART_INTEGRATE_OUTPUT
|
|
|
//#define NEWBOARD
|
//#define TAG_OUTPUT
|
#define HEX_OUTPUT
|
|
#define MAX_NEARBASE_NUM 12
|
|
#define REPOET_ANC_NUM 1
|
#define REPOET_ANC_NUM_MIN 1
|
#define TAG_ID_START 0// 0x00980000
|
#define GROUP_TAG_NUM 2
|
#define TAG_NUM_IN_SYS 256
|
#define DFT_RAND_DLY_TIM_MS 1
|
#define QUIT_SLOT_TIME 5
|
#define KEEP_TIMES 3
|
#define SLOT_SCALE 0.7
|
#define RNG_DELAY_MS 100
|
|
/* Default antenna delay values for 64 MHz PRF. See NOTE 1 below. */
|
#define TX_ANT_DLY 0
|
#define RX_ANT_DLY 32899
|
|
/* UWB microsecond (uus) to device time unit (dtu, around 15.65 ps) conversion factor.
|
* 1 uus = 512 / 499.2 µs and 1 µs = 499.2 * 128 dtu. */
|
#define UUS_TO_DWT_TIME 65536
|
|
/* Delay between frames, in UWB microseconds. See NOTE 4 below. */
|
/* This is the delay from the end of the frame transmission to the enable of the receiver, as programmed for the DW1000's wait for response feature. */
|
#define POLL_TX_TO_RESP_RX_DLY_UUS 150
|
/* This is the delay from Frame RX timestamp to TX reply timestamp used for calculating/setting the DW1000's delayed TX function. This includes the
|
* frame length of approximately 2.66 ms with above configuration. */
|
#define RESP_RX_TO_FINAL_TX_DLY_UUS 410
|
/* Receive response timeout. See NOTE 5 below. */
|
#define RESP_RX_TIMEOUT_UUS 2000
|
|
#define DELAY_BETWEEN_TWO_FRAME_UUS 400
|
|
#define POLL_RX_TO_RESP_TX_DLY_UUS 470
|
/* This is the delay from the end of the frame transmission to the enable of the receiver, as programmed for the DW1000's wait for response feature. */
|
#define RESP_TX_TO_FINAL_RX_DLY_UUS 200
|
/* Receive final timeout. See NOTE 5 below. */
|
#define FINAL_RX_TIMEOUT_UUS 4300
|
|
#define SPEED_OF_LIGHT 299702547
|
|
//MESSAGE_TYPE
|
#define POLL 0x01
|
#define RESPONSE 0x02
|
#define FINAL 0x03
|
#define SYNC 0x04
|
#define NEAR_MSG 0x05
|
#define NEAR_POLL 0x06
|
#define NEAR_RESPONSE 0x07
|
#define NEAR_FINAL 0x08
|
//General
|
#define GROUP_ID_IDX 0
|
#define ANCHOR_ID_IDX 1
|
#define TAG_ID_IDX 5
|
#define MESSAGE_TYPE_IDX 9
|
//Poll
|
#define ANC_TYPE_IDX 14
|
//respose
|
#define DIST_IDX 10
|
#define ANCTIMEMS 14
|
#define ANCTIMEUS 16
|
#define MAINBASE_INDEX 18
|
#define MOTORSTATE_INDEX 19
|
#define REMOTEPARA_INDEX 20
|
|
#define TAGSLOTPOS 7
|
//Final
|
#define FINAL_MSG_POLL_TX_TS_IDX 10
|
#define FINAL_MSG_RESP_RX_TS_IDX 14
|
#define FINAL_MSG_FINAL_TX_TS_IDX 18
|
#define FINAL_MSG_RESP_RX_NEARBASE_IDX 22
|
#define FINAL_MSG_TS_LEN 4
|
//SYNC
|
#define ANCHOR_ID_IDX 1
|
#define SYNC_SEQ_IDX 5
|
//NEAR MSG
|
#define NEARMSG_EMPTYSLOTPOS_INDEX 1 //RESPONSE
|
#define NEARBASENUM_INDEX 10
|
#define NEARBASEID_INDEX 11
|
//NEAR POLL
|
#define SEQUENCE_IDX 3
|
#define BATTARY_IDX 4
|
#define BUTTON_IDX 7
|
|
#define REMOTEPARA_LEN 18
|
#define THRESHOLD_CHANGE_MAINBASE_DIST 5
|
extern u8 neartimout_timer;
|
extern u16 slottime,tyncpoll_time,max_slotpos;
|
extern u16 poll_timer,tag_timer;
|
extern int8_t tag_delaytime;
|
extern u32 dev_id;
|
extern u8 anchor_type;
|
extern volatile uint32_t time32_incr;
|
extern u16 tag_recv_timer;
|
extern double dist_cm;
|
extern uint32_t g_UWB_com_interval;
|
extern float dis_after_filter;
|
extern LPFilter_Frac* p_Dis_Filter; //²â¾àÓõĵÍͨÂ˲¨Æ÷
|
extern u8 usart_send[100],usart_send_anc[100],flag_syncbase,remotesend_state, remotetag_para[30];;
|
|
void IdleTask(void);
|
uint16_t Checksum_u16(uint8_t* pdata, uint32_t len);
|
void Dw1000_Init(void);
|
void Tag_App(void);
|
void Anchor_App(void);
|
void tag_sleep_configuraion(void);
|
extern uint16_t g_Tagdist[TAG_NUM_IN_SYS];
|
extern uint8_t g_flag_Taggetdist[256];
|
extern void TagDistClear(void);
|
void Dw1000_App_Init(void);
|
void TagListUpdate(void);
|
void SyncPoll(u8 sync_seq,uint32_t sync_baseid);
|
u8 GetRandomSlotPos(uint32_t emptyslot);
|
#endif
|