1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
 
#ifndef __DW_APP_H__
#define __DW_APP_H__
 
#include <string.h>
#include "mainex.h"
 
#include "ADC.h"
#include "TrackingDiff.h"
 
typedef enum 
{
    SEARCH,
    CLOSE,
    RANGE,
}enumwltagstate;
extern enumwltagstate wltag_state;
 
#define USART_SINGLE_OUTPUT
/////////////////RTK RELATED
#define RTK_SWCLOSETIME    10
#define RTK_SWOPENTIME     10
 
 
#define ANCHORTYPE_NUM   20
#define MAX_NEARBASE_ANCNUM 11
 
 
//BITSTATE
#define GOINGSLEEPBIT 1
 
//#define NEWBOARD
//#define TAG_OUTPUT
#define MAX_RFPOWER   67
#define DEFAULT_RFPOWER   67
#define REGISTER_FREQUENCY 1
#define HEX_OUTPUT
#define TOTAL_SLOTNUM 200
#define SLOTTIME_MS 48
#define SLOT_SCALE 0.24
#define MAX_NEARBASE_NUM 12
#define QUIT_SLOT_TIME    20
#define KEEP_TIMES 3
#define OUTRANGE_RESTARTTIMES 5
 
#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                300
#define DFT_RAND_DLY_TIM_MS            1
#define THRESHOLD_CHANGE_MAINBASE_DIST   50
#define MIN_ANCHOR_NUM 2
#define SYNC_SEQ_IDX                5
#define REMOTEPARA_LEN 18
 
#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
#define NEAR_PRAAREPLY                       0x20
 
//#define MBX_POLL                               0x6
//#define MBX_RESPONSE                           0x7
//#define MBX_FINAL                           0x8
//#define MBX_PRAAREPLY                       0x23
 
#define MBX_POLL                               0x20
#define MBX_RESPONSE                           0x21
#define MBX_FINAL                           0x22
#define MBX_PRAAREPLY                       0x23
#define MBX_REG                               0x24
 
#define SPOLL                                 0x09
#define DISCOVERPOLL                                 0x0a
#define DISCOVERFINAL                                 0x0c
#define REG_POLL                           0x10   //
#define REG_RESPONSE                   0x11   //
//General
#define GROUP_ID_IDX                   0
#define ANCHOR_ID_IDX                1
#define TAG_ID_IDX                    5
#define MESSAGE_TYPE_IDX             9    
#define MESSAGE_PARAREPLY_IDX         10
 
#define NEARBASENUM_INDEX    18
#define NEARBASEID_INDEX         19
//Poll
#define TAGSTATE              7
#define ANC_TYPE_IDX                     14
//respose
 
#define DIST_IDX                             10
#define ANCTIMEMS             14
#define ANCTIMEUS             16
#define TAGFREQ_IDX                        7
#define MAINBASE_INDEX          18
#define MOTORSTATE_INDEX        19
#define NR_NEARSWITCH_DISTANCE  20
#define REMOTEPARA_INDEX        22
#define MAXRANGE_DISTANCE       22
#define ANC_SIGNALPOWER         24
#define TAGPOS_INDEX      26
#define TAGPOS_LEN_INDEX      28
//Final
#define TAGCONFIGSUCCESS_INDEX 7
#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 SYNC_SEQ_IDX                5
//NEAR MSG
#define NEARMSG_EMPTYSLOTPOS_INDEX         1 //RESPONSE
//NEAR POLL
#define NEARP_TAGFREQ_INDEX  10
#define NEARP_TAGSLOTPOS_INDEX  12
 
 
//REG POLL
#define REGP_TAGSTATE_INDEX  10
#define REGP_VERSION_INDEX  11
#define REGP_FREQUENCY_INDEX  13
#define REGP_POWER_INDEX  14
#define REGP_IMUTHRES_INDEX  15
#define REGP_NOMOVESLEEPTIME_INDEX  17
//REG RESPONSE
#define REGR_TAGFREQ_INDEX  10
#define REGR_TAGSLOTPOS_INDEX  12
#define REGR_BASENUM_INDEX    18
#define REGR_BASEID_INDEX         19
 
 
#define SEQUENCE_IDX                    3
#define BATTARY_IDX                        4
#define BUTTON_IDX                        7
#define SEQUENCEH_IDX                    8
 
#define DW_CTRL_GPIO                    GPIOA
#define DW_ENABLE   HAL_GPIO_WritePin(DW_CTRL_GPIO, DW_CTRL_Pin, GPIO_PIN_RESET)
#define DW_DISABLE  HAL_GPIO_WritePin(DW_CTRL_GPIO, DW_CTRL_Pin, GPIO_PIN_SET)
extern TrackingDiffClass *pUWBDistanceTrackingDiff;
extern uint16_t poll_timer,tag_timer;
extern int8_t tag_delaytime;
extern uint32_t dev_id;
extern uint8_t anchor_type;
extern  uint32_t time32_incr;
extern uint16_t tag_recv_timer;
extern double dist_cm;
extern uint32_t g_UWB_com_interval;
extern float dis_after_filter;
extern uint8_t rtk_state;
 
extern uint8_t usart_send[400];
 
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 void TagDistClear(void);
void Dw1000_App_Init(void);
#endif