38 #define RANGE_REPORT 3 39 #define RANGE_FAILED 255 41 #define RANGING_INIT 5 49 #define DEFAULT_RST_PIN 9 50 #define DEFAULT_SPI_SS_PIN 10 54 #define DEFAULT_RESET_PERIOD 200 56 #define DEFAULT_REPLY_DELAY_TIME 7000 63 #define DEFAULT_TIMER_DELAY 80 79 static void configureNetwork(uint16_t deviceAddress, uint16_t networkId,
const byte mode[]);
82 static void startAsTag(
char address[],
const byte mode[]);
106 static void attachNewRange(
void (* handleNewRange)(
void)) { _handleNewRange = handleNewRange; };
126 static uint8_t _networkDevicesNumber;
127 static int16_t _lastDistantDevice;
128 static byte _currentAddress[8];
129 static byte _currentShortAddress[2];
130 static byte _lastSentToShortAddress[2];
132 static int32_t timer;
133 static int16_t counterForBlink;
136 static void (* _handleNewRange)(void);
142 static int16_t _type;
145 static volatile byte _expectedMsgId;
147 static volatile boolean _sentAck;
148 static volatile boolean _receivedAck;
150 static boolean _protocolFailed;
155 static uint32_t _lastActivity;
156 static uint32_t _resetPeriod;
158 static uint16_t _replyDelayTimeUS;
160 static uint16_t _timerDelay;
162 static uint16_t _successRangingCount;
163 static uint32_t _rangingCountPeriod;
165 static volatile boolean _useRangeFilter;
166 static uint16_t _rangeFilterValue;
168 static char _bias_RSL[17];
170 static int16_t _bias_PRF_16[17];
172 static char _bias_PRF_64[17];
176 static void handleSent();
177 static void handleReceived();
178 static void noteActivity();
179 static void resetInactive();
182 static void checkForReset();
183 static void checkForInactiveDevices();
184 static void copyShortAddress(byte address1[], byte address2[]);
187 static void transmitInit();
188 static void transmit(byte datas[]);
189 static void transmit(byte datas[],
DW1000Time time);
190 static void transmitBlink();
191 static void transmitRangingInit(
DW1000Device* myDistantDevice);
192 static void transmitPollAck(
DW1000Device* myDistantDevice);
193 static void transmitRangeReport(
DW1000Device* myDistantDevice);
194 static void transmitRangeFailed(
DW1000Device* myDistantDevice);
195 static void receiver();
198 static void transmitPoll(
DW1000Device* myDistantDevice);
199 static void transmitRange(
DW1000Device* myDistantDevice);
204 static void timerTick();
207 static float filterValue(
float value,
float previousValue, uint16_t numberOfElements);
Definition: DW1000Device.h:37
static DW1000Device * getDistantDevice()
Definition: DW1000Ranging.cpp:308
static boolean addNetworkDevices(DW1000Device *device, boolean shortAddress)
Definition: DW1000Ranging.cpp:211
static void startAsAnchor(char address[], const byte mode[])
Definition: DW1000Ranging.cpp:162
Definition: DW1000Mac.h:45
#define MAX_DEVICES
Definition: DW1000Ranging.h:46
DW1000RangingClass DW1000Ranging
Definition: DW1000Ranging.cpp:33
static byte * getCurrentAddress()
Definition: DW1000Ranging.h:92
static void attachNewRange(void(*handleNewRange)(void))
Definition: DW1000Ranging.h:106
static void removeNetworkDevices(int16_t index)
Definition: DW1000Ranging.cpp:267
static void generalStart()
Definition: DW1000Ranging.cpp:119
static void setReplyTime(uint16_t replyDelayTimeUs)
Definition: DW1000Ranging.cpp:291
static void setResetPeriod(uint32_t resetPeriod)
Definition: DW1000Ranging.cpp:293
static byte data[LEN_DATA]
Definition: DW1000Ranging.h:75
static uint8_t getNetworkDevicesNumber()
Definition: DW1000Ranging.h:96
static void visualizeDatas(byte datas[])
Definition: DW1000Ranging.cpp:948
Definition: DW1000Ranging.h:71
static void attachBlinkDevice(void(*handleBlinkDevice)(DW1000Device *))
Definition: DW1000Ranging.h:108
static DW1000Device * searchDistantDevice(byte shortAddress[])
Definition: DW1000Ranging.cpp:296
#define LEN_DATA
Definition: DW1000Ranging.h:43
Definition: DW1000Time.h:43
static void configureNetwork(uint16_t deviceAddress, uint16_t networkId, const byte mode[])
Definition: DW1000Ranging.cpp:108
static void useRangeFilter(boolean enabled)
Definition: DW1000Ranging.cpp:662
static void initCommunication(uint8_t myRST=DEFAULT_RST_PIN, uint8_t mySS=DEFAULT_SPI_SS_PIN, uint8_t myIRQ=2)
Definition: DW1000Ranging.cpp:92
#define DEFAULT_SPI_SS_PIN
Definition: DW1000Ranging.h:50
static int16_t detectMessageType(byte datas[])
Definition: DW1000Ranging.cpp:345
static void attachInactiveDevice(void(*handleInactiveDevice)(DW1000Device *))
Definition: DW1000Ranging.h:112
static byte * getCurrentShortAddress()
Definition: DW1000Ranging.h:94
static void setRangeFilterValue(uint16_t newValue)
Definition: DW1000Ranging.cpp:666
static void attachNewDevice(void(*handleNewDevice)(DW1000Device *))
Definition: DW1000Ranging.h:110
static void startAsTag(char address[], const byte mode[])
Definition: DW1000Ranging.cpp:188
#define DEFAULT_RST_PIN
Definition: DW1000Ranging.h:49
static void loop()
Definition: DW1000Ranging.cpp:359