Arduino driver library for Decawave DW1000  Dec 20 2016
DW1000.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015 by Thomas Trojer <thomas@trojer.net>
3  * Decawave DW1000 library for arduino.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * @file DW1000.h
18  * Arduino driver library (header file) for the Decawave DW1000 UWB transceiver IC.
19  *
20  * @todo
21  * - impl: later:
22  * - TXBOFFS in TX_FCTRL for offset buffer transmit
23  * - TR in TX_FCTRL for flagging for ranging messages
24  * - CANSFCS in SYS_CTRL to cancel frame check suppression
25  * - HSRBP in SYS_CTRL to determine in double buffered mode from which buffer to read
26  */
27 
28 #ifndef _DW1000_H_INCLUDED
29 #define _DW1000_H_INCLUDED
30 
31 #include <stdio.h>
32 #include <stdlib.h>
33 #include <string.h>
34 #include <Arduino.h>
35 #include <SPI.h>
36 #include "DW1000Constants.h"
37 #include "DW1000Time.h"
38 
39 class DW1000Class {
40 public:
41  /* ##### Init ################################################################ */
49  static void begin(uint8_t irq, uint8_t rst = 0xff);
50 
59  static void select(uint8_t ss);
60 
70  static void reselect(uint8_t ss);
71 
76  static void end();
77 
83  static void reset();
84 
88  static void softReset();
89 
90  /* ##### Print device id, address, etc. ###################################### */
98  static void getPrintableDeviceIdentifier(char msgBuffer[]);
99 
106  static void getPrintableExtendedUniqueIdentifier(char msgBuffer[]);
107 
115  static void getPrintableNetworkIdAndShortAddress(char msgBuffer[]);
116 
124  static void getPrintableDeviceMode(char msgBuffer[]);
125 
126  /* ##### Device address management, filters ################################## */
135  static void setNetworkId(uint16_t val);
136 
143  static void setDeviceAddress(uint16_t val);
144  // TODO MAC and filters
145 
146  static void setEUI(char eui[]);
147  static void setEUI(byte eui[]);
148 
149  /* ##### General device configuration ######################################## */
159  static void setReceiverAutoReenable(boolean val);
160 
169  static void setInterruptPolarity(boolean val);
170 
182  static void suppressFrameCheck(boolean val);
183 
195  static void setDataRate(byte rate);
196 
211  static void setPulseFrequency(byte freq);
212  static byte getPulseFrequency();
213  static void setPreambleLength(byte prealen);
214  static void setChannel(byte channel);
215  static void setPreambleCode(byte preacode);
216  static void useSmartPower(boolean smartPower);
217 
218  /* transmit and receive configuration. */
219  static DW1000Time setDelay(const DW1000Time& delay);
220  static void receivePermanently(boolean val);
221  static void setData(byte data[], uint16_t n);
222  static void setData(const String& data);
223  static void getData(byte data[], uint16_t n);
224  static void getData(String& data);
225  static uint16_t getDataLength();
226  static void getTransmitTimestamp(DW1000Time& time);
227  static void getReceiveTimestamp(DW1000Time& time);
228  static void getSystemTimestamp(DW1000Time& time);
229  static void getTransmitTimestamp(byte data[]);
230  static void getReceiveTimestamp(byte data[]);
231  static void getSystemTimestamp(byte data[]);
232 
233  /* receive quality information. */
234  static float getReceivePower();
235  static float getFirstPathPower();
236  static float getReceiveQuality();
237 
238  /* interrupt management. */
239  static void interruptOnSent(boolean val);
240  static void interruptOnReceived(boolean val);
241  static void interruptOnReceiveFailed(boolean val);
242  static void interruptOnReceiveTimeout(boolean val);
243  static void interruptOnReceiveTimestampAvailable(boolean val);
244  static void interruptOnAutomaticAcknowledgeTrigger(boolean val);
245 
246  /* callback handler management. */
247  static void attachErrorHandler(void (* handleError)(void)) {
248  _handleError = handleError;
249  }
250 
251  static void attachSentHandler(void (* handleSent)(void)) {
252  _handleSent = handleSent;
253  }
254 
255  static void attachReceivedHandler(void (* handleReceived)(void)) {
256  _handleReceived = handleReceived;
257  }
258 
259  static void attachReceiveFailedHandler(void (* handleReceiveFailed)(void)) {
260  _handleReceiveFailed = handleReceiveFailed;
261  }
262 
263  static void attachReceiveTimeoutHandler(void (* handleReceiveTimeout)(void)) {
264  _handleReceiveTimeout = handleReceiveTimeout;
265  }
266 
267  static void attachReceiveTimestampAvailableHandler(void (* handleReceiveTimestampAvailable)(void)) {
268  _handleReceiveTimestampAvailable = handleReceiveTimestampAvailable;
269  }
270 
271  /* device state management. */
272  // idle state
273  static void idle();
274 
275  // general configuration state
276  static void newConfiguration();
277  static void commitConfiguration();
278 
279  // reception state
280  static void newReceive();
281  static void startReceive();
282 
283  // transmission state
284  static void newTransmit();
285  static void startTransmit();
286 
287  /* ##### Operation mode selection ############################################ */
309  static void enableMode(const byte mode[]);
310 
311  // use RX/TX specific and general default settings
312  static void setDefaults();
313 
314  /* debug pretty print registers. */
315  static void getPrettyBytes(byte cmd, uint16_t offset, char msgBuffer[], uint16_t n);
316  static void getPrettyBytes(byte data[], char msgBuffer[], uint16_t n);
317 
318  //convert from char to 4 bits (hexadecimal)
319  static uint8_t nibbleFromChar(char c);
320  static void convertToByte(char string[], byte* eui_byte);
321 
322  // host-initiated reading of temperature and battery voltage
323  static void getTempAndVbat(float& temp, float& vbat);
324 
325  // transmission/reception bit rate
326  static constexpr byte TRX_RATE_110KBPS = 0x00;
327  static constexpr byte TRX_RATE_850KBPS = 0x01;
328  static constexpr byte TRX_RATE_6800KBPS = 0x02;
329 
330  // transmission pulse frequency
331  // 0x00 is 4MHZ, but receiver in DW1000 does not support it (!??)
332  static constexpr byte TX_PULSE_FREQ_16MHZ = 0x01;
333  static constexpr byte TX_PULSE_FREQ_64MHZ = 0x02;
334 
335  // preamble length (PE + TXPSR bits)
336  static constexpr byte TX_PREAMBLE_LEN_64 = 0x01;
337  static constexpr byte TX_PREAMBLE_LEN_128 = 0x05;
338  static constexpr byte TX_PREAMBLE_LEN_256 = 0x09;
339  static constexpr byte TX_PREAMBLE_LEN_512 = 0x0D;
340  static constexpr byte TX_PREAMBLE_LEN_1024 = 0x02;
341  static constexpr byte TX_PREAMBLE_LEN_1536 = 0x06;
342  static constexpr byte TX_PREAMBLE_LEN_2048 = 0x0A;
343  static constexpr byte TX_PREAMBLE_LEN_4096 = 0x03;
344 
345  // PAC size. */
346  static constexpr byte PAC_SIZE_8 = 8;
347  static constexpr byte PAC_SIZE_16 = 16;
348  static constexpr byte PAC_SIZE_32 = 32;
349  static constexpr byte PAC_SIZE_64 = 64;
350 
351  /* channel of operation. */
352  static constexpr byte CHANNEL_1 = 1;
353  static constexpr byte CHANNEL_2 = 2;
354  static constexpr byte CHANNEL_3 = 3;
355  static constexpr byte CHANNEL_4 = 4;
356  static constexpr byte CHANNEL_5 = 5;
357  static constexpr byte CHANNEL_7 = 7;
358 
359  /* preamble codes. */
360  static constexpr byte PREAMBLE_CODE_16MHZ_1 = 1;
361  static constexpr byte PREAMBLE_CODE_16MHZ_2 = 2;
362  static constexpr byte PREAMBLE_CODE_16MHZ_3 = 3;
363  static constexpr byte PREAMBLE_CODE_16MHZ_4 = 4;
364  static constexpr byte PREAMBLE_CODE_16MHZ_5 = 5;
365  static constexpr byte PREAMBLE_CODE_16MHZ_6 = 6;
366  static constexpr byte PREAMBLE_CODE_16MHZ_7 = 7;
367  static constexpr byte PREAMBLE_CODE_16MHZ_8 = 8;
368  static constexpr byte PREAMBLE_CODE_64MHZ_9 = 9;
369  static constexpr byte PREAMBLE_CODE_64MHZ_10 = 10;
370  static constexpr byte PREAMBLE_CODE_64MHZ_11 = 11;
371  static constexpr byte PREAMBLE_CODE_64MHZ_12 = 12;
372  static constexpr byte PREAMBLE_CODE_64MHZ_17 = 17;
373  static constexpr byte PREAMBLE_CODE_64MHZ_18 = 18;
374  static constexpr byte PREAMBLE_CODE_64MHZ_19 = 19;
375  static constexpr byte PREAMBLE_CODE_64MHZ_20 = 20;
376 
377  /* frame length settings. */
378  static constexpr byte FRAME_LENGTH_NORMAL = 0x00;
379  static constexpr byte FRAME_LENGTH_EXTENDED = 0x03;
380 
381  /* pre-defined modes of operation (3 bytes for data rate, pulse frequency and
382  preamble length). */
383  static constexpr byte MODE_LONGDATA_RANGE_LOWPOWER[] = {TRX_RATE_110KBPS, TX_PULSE_FREQ_16MHZ, TX_PREAMBLE_LEN_2048};
384  static constexpr byte MODE_SHORTDATA_FAST_LOWPOWER[] = {TRX_RATE_6800KBPS, TX_PULSE_FREQ_16MHZ, TX_PREAMBLE_LEN_128};
385  static constexpr byte MODE_LONGDATA_FAST_LOWPOWER[] = {TRX_RATE_6800KBPS, TX_PULSE_FREQ_16MHZ, TX_PREAMBLE_LEN_1024};
386  static constexpr byte MODE_SHORTDATA_FAST_ACCURACY[] = {TRX_RATE_6800KBPS, TX_PULSE_FREQ_64MHZ, TX_PREAMBLE_LEN_128};
387  static constexpr byte MODE_LONGDATA_FAST_ACCURACY[] = {TRX_RATE_6800KBPS, TX_PULSE_FREQ_64MHZ, TX_PREAMBLE_LEN_1024};
388  static constexpr byte MODE_LONGDATA_RANGE_ACCURACY[] = {TRX_RATE_110KBPS, TX_PULSE_FREQ_64MHZ, TX_PREAMBLE_LEN_2048};
389 
390 //private:
391  /* chip select, reset and interrupt pins. */
392  static uint8_t _ss;
393  static uint8_t _rst;
394  static uint8_t _irq;
395 
396  /* callbacks. */
397  static void (* _handleError)(void);
398  static void (* _handleSent)(void);
399  static void (* _handleReceived)(void);
400  static void (* _handleReceiveFailed)(void);
401  static void (* _handleReceiveTimeout)(void);
402  static void (* _handleReceiveTimestampAvailable)(void);
403 
404  /* register caches. */
405  static byte _syscfg[LEN_SYS_CFG];
406  static byte _sysctrl[LEN_SYS_CTRL];
408  static byte _txfctrl[LEN_TX_FCTRL];
409  static byte _sysmask[LEN_SYS_MASK];
410  static byte _chanctrl[LEN_CHAN_CTRL];
411 
412  /* device status monitoring */
413  static byte _vmeas3v3;
414  static byte _tmeas23C;
415 
416  /* PAN and short address. */
418 
419  /* internal helper that guide tuning the chip. */
420  static boolean _smartPower;
421  static byte _extendedFrameLength;
422  static byte _preambleCode;
423  static byte _channel;
424  static byte _preambleLength;
425  static byte _pulseFrequency;
426  static byte _dataRate;
427  static byte _pacSize;
429 
430  /* internal helper to remember how to properly act. */
431  static boolean _permanentReceive;
432  static boolean _frameCheck;
433 
434  // whether RX or TX is active
435  static uint8_t _deviceMode;
436 
437  /* Arduino interrupt handler */
438  static void handleInterrupt();
439 
440  /* Allow MAC frame filtering . */
441  // TODO auto-acknowledge
442  static void setFrameFilter(boolean val);
443  static void setFrameFilterBehaveCoordinator(boolean val);
444  static void setFrameFilterAllowBeacon(boolean val);
445  //data type is used in the FC_1 0x41
446  static void setFrameFilterAllowData(boolean val);
447  static void setFrameFilterAllowAcknowledgement(boolean val);
448  static void setFrameFilterAllowMAC(boolean val);
449  //Reserved is used for the Blink message
450  static void setFrameFilterAllowReserved(boolean val);
451 
452  // note: not sure if going to be implemented for now
453  static void setDoubleBuffering(boolean val);
454  // TODO is implemented, but needs testing
455  static void useExtendedFrameLength(boolean val);
456  // TODO is implemented, but needs testing
457  static void waitForResponse(boolean val);
458 
459  /* tuning according to mode. */
460  static void tune();
461 
462  /* device status flags */
463  static boolean isReceiveTimestampAvailable();
464  static boolean isTransmitDone();
465  static boolean isReceiveDone();
466  static boolean isReceiveFailed();
467  static boolean isReceiveTimeout();
468  static boolean isClockProblem();
469 
470  /* interrupt state handling */
471  static void clearInterrupts();
472  static void clearAllStatus();
473  static void clearReceiveStatus();
475  static void clearTransmitStatus();
476 
477  /* internal helper to read/write system registers. */
478  static void readSystemEventStatusRegister();
479  static void readSystemConfigurationRegister();
480  static void writeSystemConfigurationRegister();
481  static void readNetworkIdAndDeviceAddress();
482  static void writeNetworkIdAndDeviceAddress();
483  static void readSystemEventMaskRegister();
484  static void writeSystemEventMaskRegister();
485  static void readChannelControlRegister();
486  static void writeChannelControlRegister();
487  static void readTransmitFrameControlRegister();
488  static void writeTransmitFrameControlRegister();
489 
490  /* clock management. */
491  static void enableClock(byte clock);
492 
493  /* LDE micro-code management. */
494  static void manageLDE();
495 
496  /* timestamp correction. */
497  static void correctTimestamp(DW1000Time& timestamp);
498 
499  /* reading and writing bytes from and to DW1000 module. */
500  static void readBytes(byte cmd, uint16_t offset, byte data[], uint16_t n);
501  static void readBytesOTP(uint16_t address, byte data[]);
502  static void writeByte(byte cmd, uint16_t offset, byte data);
503  static void writeBytes(byte cmd, uint16_t offset, byte data[], uint16_t n);
504 
505  /* writing numeric values to bytes. */
506  static void writeValueToBytes(byte data[], int32_t val, uint16_t n);
507 
508  /* internal helper for bit operations on multi-bytes. */
509  static boolean getBit(byte data[], uint16_t n, uint16_t bit);
510  static void setBit(byte data[], uint16_t n, uint16_t bit, boolean val);
511 
512  /* Register is 6 bit, 7 = write, 6 = sub-adressing, 5-0 = register value
513  * Total header with sub-adressing can be 15 bit. */
514  static const byte WRITE = 0x80; // regular write
515  static const byte WRITE_SUB = 0xC0; // write with sub address
516  static const byte READ = 0x00; // regular read
517  static const byte READ_SUB = 0x40; // read with sub address
518  static const byte RW_SUB_EXT = 0x80; // R/W with sub address extension
519 
520  /* clocks available. */
521  static const byte AUTO_CLOCK = 0x00;
522  static const byte XTI_CLOCK = 0x01;
523  static const byte PLL_CLOCK = 0x02;
524 
525  /* SPI configs. */
526  static const SPISettings _fastSPI;
527  static const SPISettings _slowSPI;
528  static const SPISettings* _currentSPI;
529 
530  /* range bias tables (500/900 MHz band, 16/64 MHz PRF), -61 to -95 dBm. */
531  static const byte BIAS_500_16_ZERO = 10;
532  static const byte BIAS_500_64_ZERO = 8;
533  static const byte BIAS_900_16_ZERO = 7;
534  static const byte BIAS_900_64_ZERO = 7;
535 
536  // range bias tables (500 MHz in [mm] and 900 MHz in [2mm] - to fit into bytes)
537  static constexpr byte BIAS_500_16[] = {198, 187, 179, 163, 143, 127, 109, 84, 59, 31, 0, 36, 65, 84, 97, 106, 110, 112};
538  static constexpr byte BIAS_500_64[] = {110, 105, 100, 93, 82, 69, 51, 27, 0, 21, 35, 42, 49, 62, 71, 76, 81, 86};
539  static constexpr byte BIAS_900_16[] = {137, 122, 105, 88, 69, 47, 25, 0, 21, 48, 79, 105, 127, 147, 160, 169, 178, 197};
540  static constexpr byte BIAS_900_64[] = {147, 133, 117, 99, 75, 50, 29, 0, 24, 45, 63, 76, 87, 98, 116, 122, 132, 142};
541 
542 };
543 
544 extern DW1000Class DW1000;
545 
546 #endif
static void(* _handleReceived)(void)
Definition: DW1000.h:399
static constexpr byte MODE_LONGDATA_RANGE_ACCURACY[]
Definition: DW1000.h:388
static void setDataRate(byte rate)
Definition: DW1000.cpp:1041
static void getPrintableNetworkIdAndShortAddress(char msgBuffer[])
Definition: DW1000.cpp:691
static constexpr byte TX_PREAMBLE_LEN_2048
Definition: DW1000.h:342
static void suppressFrameCheck(boolean val)
Definition: DW1000.cpp:1008
static byte _tmeas23C
Definition: DW1000.h:414
static constexpr byte TRX_RATE_6800KBPS
Definition: DW1000.h:328
static void interruptOnReceiveFailed(boolean val)
Definition: DW1000.cpp:913
static void getSystemTimestamp(DW1000Time &time)
Definition: DW1000.cpp:1301
static const SPISettings * _currentSPI
Definition: DW1000.h:528
static constexpr byte TX_PREAMBLE_LEN_128
Definition: DW1000.h:337
static const byte AUTO_CLOCK
Definition: DW1000.h:521
static void newReceive()
Definition: DW1000.cpp:943
static void writeSystemEventMaskRegister()
Definition: DW1000.cpp:774
static void convertToByte(char string[], byte *eui_byte)
Definition: DW1000.cpp:821
static void select(uint8_t ss)
Definition: DW1000.cpp:111
static const byte PLL_CLOCK
Definition: DW1000.h:523
static constexpr byte BIAS_500_64[]
Definition: DW1000.h:538
static constexpr byte PREAMBLE_CODE_64MHZ_12
Definition: DW1000.h:371
static boolean isClockProblem()
Definition: DW1000.cpp:1350
static void setFrameFilter(boolean val)
Definition: DW1000.cpp:863
static void attachErrorHandler(void(*handleError)(void))
Definition: DW1000.h:247
static void getPrettyBytes(byte cmd, uint16_t offset, char msgBuffer[], uint16_t n)
Definition: DW1000.cpp:1663
#define LEN_SYS_CTRL
Definition: DW1000Constants.h:70
static void setData(byte data[], uint16_t n)
Definition: DW1000.cpp:1165
static byte _pulseFrequency
Definition: DW1000.h:425
static void startReceive()
Definition: DW1000.cpp:950
static void getReceiveTimestamp(DW1000Time &time)
Definition: DW1000.cpp:1239
static void setPulseFrequency(byte freq)
Definition: DW1000.cpp:1073
static void getPrintableDeviceIdentifier(char msgBuffer[])
Definition: DW1000.cpp:677
static byte _sysmask[LEN_SYS_MASK]
Definition: DW1000.h:409
static uint8_t nibbleFromChar(char c)
Definition: DW1000.cpp:808
static void enableClock(byte clock)
Definition: DW1000.cpp:202
static void(* _handleReceiveTimeout)(void)
Definition: DW1000.h:401
static constexpr byte CHANNEL_7
Definition: DW1000.h:357
static uint16_t getDataLength()
Definition: DW1000.cpp:1191
static void manageLDE()
Definition: DW1000.cpp:175
static void newConfiguration()
Definition: DW1000.cpp:977
static constexpr byte CHANNEL_4
Definition: DW1000.h:355
static void setDeviceAddress(uint16_t val)
Definition: DW1000.cpp:803
static constexpr byte TX_PREAMBLE_LEN_1024
Definition: DW1000.h:340
static void begin(uint8_t irq, uint8_t rst=0xff)
Definition: DW1000.cpp:157
static void getPrintableDeviceMode(char msgBuffer[])
Definition: DW1000.cpp:698
static void interruptOnSent(boolean val)
Definition: DW1000.cpp:904
static const byte WRITE_SUB
Definition: DW1000.h:515
static byte _vmeas3v3
Definition: DW1000.h:413
static void setFrameFilterAllowMAC(boolean val)
Definition: DW1000.cpp:883
static uint8_t _rst
Definition: DW1000.h:393
static const byte BIAS_500_16_ZERO
Definition: DW1000.h:531
static void writeNetworkIdAndDeviceAddress()
Definition: DW1000.cpp:766
static void receivePermanently(boolean val)
Definition: DW1000.cpp:1108
static DW1000Time setDelay(const DW1000Time &delay)
Definition: DW1000.cpp:1017
static void handleInterrupt()
Definition: DW1000.cpp:632
static void(* _handleReceiveTimestampAvailable)(void)
Definition: DW1000.h:402
static void clearInterrupts()
Definition: DW1000.cpp:932
static void waitForResponse(boolean val)
Definition: DW1000.cpp:1004
static boolean getBit(byte data[], uint16_t n, uint16_t bit)
Definition: DW1000.cpp:1504
static void softReset()
Definition: DW1000.cpp:239
static void(* _handleError)(void)
Definition: DW1000.h:397
static constexpr byte PAC_SIZE_8
Definition: DW1000.h:346
static constexpr byte PREAMBLE_CODE_16MHZ_5
Definition: DW1000.h:364
static constexpr byte TX_PULSE_FREQ_16MHZ
Definition: DW1000.h:332
static constexpr byte TX_PREAMBLE_LEN_4096
Definition: DW1000.h:343
static void interruptOnReceiveTimestampAvailable(boolean val)
Definition: DW1000.cpp:924
static void reset()
Definition: DW1000.cpp:224
static void writeSystemConfigurationRegister()
Definition: DW1000.cpp:754
static void clearReceiveStatus()
Definition: DW1000.cpp:1370
static void readNetworkIdAndDeviceAddress()
Definition: DW1000.cpp:762
static constexpr byte BIAS_900_16[]
Definition: DW1000.h:539
static void attachReceivedHandler(void(*handleReceived)(void))
Definition: DW1000.h:255
static void writeTransmitFrameControlRegister()
Definition: DW1000.cpp:790
static byte _txfctrl[LEN_TX_FCTRL]
Definition: DW1000.h:408
static const SPISettings _fastSPI
Definition: DW1000.h:526
static constexpr byte TRX_RATE_850KBPS
Definition: DW1000.h:327
static void attachReceiveFailedHandler(void(*handleReceiveFailed)(void))
Definition: DW1000.h:259
#define LEN_TX_FCTRL
Definition: DW1000Constants.h:154
static boolean _frameCheck
Definition: DW1000.h:432
static constexpr byte CHANNEL_3
Definition: DW1000.h:354
static byte _preambleLength
Definition: DW1000.h:424
static void attachReceiveTimestampAvailableHandler(void(*handleReceiveTimestampAvailable)(void))
Definition: DW1000.h:267
static byte _pacSize
Definition: DW1000.h:427
#define LEN_SYS_CFG
Definition: DW1000Constants.h:52
static void readSystemEventStatusRegister()
Definition: DW1000.cpp:758
static constexpr byte TX_PULSE_FREQ_64MHZ
Definition: DW1000.h:333
static void interruptOnReceived(boolean val)
Definition: DW1000.cpp:908
static constexpr byte TRX_RATE_110KBPS
Definition: DW1000.h:326
static const byte WRITE
Definition: DW1000.h:514
static const byte BIAS_900_64_ZERO
Definition: DW1000.h:534
static uint8_t _irq
Definition: DW1000.h:394
static void attachSentHandler(void(*handleSent)(void))
Definition: DW1000.h:251
static constexpr byte MODE_LONGDATA_FAST_ACCURACY[]
Definition: DW1000.h:387
static void readTransmitFrameControlRegister()
Definition: DW1000.cpp:786
static byte _extendedFrameLength
Definition: DW1000.h:421
static constexpr byte TX_PREAMBLE_LEN_1536
Definition: DW1000.h:341
static void reselect(uint8_t ss)
Definition: DW1000.cpp:151
static constexpr byte MODE_SHORTDATA_FAST_ACCURACY[]
Definition: DW1000.h:386
static void readSystemEventMaskRegister()
Definition: DW1000.cpp:770
static constexpr byte PREAMBLE_CODE_64MHZ_9
Definition: DW1000.h:368
static float getFirstPathPower()
Definition: DW1000.cpp:1402
static constexpr byte PAC_SIZE_16
Definition: DW1000.h:347
static constexpr byte PREAMBLE_CODE_64MHZ_18
Definition: DW1000.h:373
DW1000Class DW1000
Definition: DW1000.cpp:23
static constexpr byte PREAMBLE_CODE_64MHZ_20
Definition: DW1000.h:375
static constexpr byte BIAS_500_16[]
Definition: DW1000.h:537
static byte _preambleCode
Definition: DW1000.h:422
static const byte READ_SUB
Definition: DW1000.h:517
static constexpr byte PREAMBLE_CODE_64MHZ_19
Definition: DW1000.h:374
static const byte RW_SUB_EXT
Definition: DW1000.h:518
static constexpr byte CHANNEL_1
Definition: DW1000.h:352
static void commitConfiguration()
Definition: DW1000.cpp:986
static constexpr byte PREAMBLE_CODE_64MHZ_10
Definition: DW1000.h:369
#define LEN_CHAN_CTRL
Definition: DW1000Constants.h:158
static constexpr byte FRAME_LENGTH_EXTENDED
Definition: DW1000.h:379
static constexpr byte PREAMBLE_CODE_16MHZ_4
Definition: DW1000.h:363
static byte _sysstatus[LEN_SYS_STATUS]
Definition: DW1000.h:407
static void getPrintableExtendedUniqueIdentifier(char msgBuffer[])
Definition: DW1000.cpp:684
static constexpr byte FRAME_LENGTH_NORMAL
Definition: DW1000.h:378
static void setChannel(byte channel)
Definition: DW1000.cpp:1117
Definition: DW1000Time.h:43
static constexpr byte PREAMBLE_CODE_16MHZ_3
Definition: DW1000.h:362
static boolean isReceiveTimestampAvailable()
Definition: DW1000.cpp:1323
static void newTransmit()
Definition: DW1000.cpp:956
static boolean isTransmitDone()
Definition: DW1000.cpp:1319
static float getReceivePower()
Definition: DW1000.cpp:1434
static constexpr byte MODE_LONGDATA_FAST_LOWPOWER[]
Definition: DW1000.h:385
static void writeBytes(byte cmd, uint16_t offset, byte data[], uint16_t n)
Definition: DW1000.cpp:1606
static uint8_t _ss
Definition: DW1000.h:392
static void attachReceiveTimeoutHandler(void(*handleReceiveTimeout)(void))
Definition: DW1000.h:263
static constexpr byte PREAMBLE_CODE_16MHZ_8
Definition: DW1000.h:367
static void interruptOnAutomaticAcknowledgeTrigger(boolean val)
Definition: DW1000.cpp:928
static float getReceiveQuality()
Definition: DW1000.cpp:1391
static constexpr byte PREAMBLE_CODE_64MHZ_11
Definition: DW1000.h:370
static constexpr byte CHANNEL_2
Definition: DW1000.h:353
static void interruptOnReceiveTimeout(boolean val)
Definition: DW1000.cpp:920
static byte _sysctrl[LEN_SYS_CTRL]
Definition: DW1000.h:406
static const byte BIAS_500_64_ZERO
Definition: DW1000.h:532
static void(* _handleReceiveFailed)(void)
Definition: DW1000.h:400
static void correctTimestamp(DW1000Time &timestamp)
Definition: DW1000.cpp:1248
static uint8_t _deviceMode
Definition: DW1000.h:435
static void getTempAndVbat(float &temp, float &vbat)
Definition: DW1000.cpp:830
static constexpr byte PREAMBLE_CODE_16MHZ_2
Definition: DW1000.h:361
static void setBit(byte data[], uint16_t n, uint16_t bit, boolean val)
Definition: DW1000.cpp:1477
static void setFrameFilterAllowReserved(boolean val)
Definition: DW1000.cpp:887
static void writeByte(byte cmd, uint16_t offset, byte data)
Definition: DW1000.cpp:1588
static void setFrameFilterBehaveCoordinator(boolean val)
Definition: DW1000.cpp:867
static void setEUI(char eui[])
Definition: DW1000.cpp:845
static void clearAllStatus()
Definition: DW1000.cpp:1360
static void clearReceiveTimestampAvailableStatus()
Definition: DW1000.cpp:1365
static void readBytes(byte cmd, uint16_t offset, byte data[], uint16_t n)
Definition: DW1000.cpp:1535
static const SPISettings _slowSPI
Definition: DW1000.h:527
static boolean _permanentReceive
Definition: DW1000.h:431
static byte _channel
Definition: DW1000.h:423
static constexpr byte MODE_LONGDATA_RANGE_LOWPOWER[]
Definition: DW1000.h:383
static constexpr byte TX_PREAMBLE_LEN_512
Definition: DW1000.h:339
static void idle()
Definition: DW1000.cpp:936
static void writeValueToBytes(byte data[], int32_t val, uint16_t n)
Definition: DW1000.cpp:1518
static void(* _handleSent)(void)
Definition: DW1000.h:398
static byte _dataRate
Definition: DW1000.h:426
static void getTransmitTimestamp(DW1000Time &time)
Definition: DW1000.cpp:1233
static boolean _smartPower
Definition: DW1000.h:420
static void setInterruptPolarity(boolean val)
Definition: DW1000.cpp:896
static void readChannelControlRegister()
Definition: DW1000.cpp:778
static void setDefaults()
Definition: DW1000.cpp:1132
static constexpr byte PREAMBLE_CODE_16MHZ_1
Definition: DW1000.h:360
static constexpr byte PAC_SIZE_64
Definition: DW1000.h:349
static constexpr byte PREAMBLE_CODE_64MHZ_17
Definition: DW1000.h:372
static void setNetworkId(uint16_t val)
Definition: DW1000.cpp:798
static boolean isReceiveDone()
Definition: DW1000.cpp:1327
static constexpr byte CHANNEL_5
Definition: DW1000.h:356
static void setFrameFilterAllowData(boolean val)
Definition: DW1000.cpp:875
static void getData(byte data[], uint16_t n)
Definition: DW1000.cpp:1208
#define LEN_SYS_STATUS
Definition: DW1000Constants.h:81
static boolean isReceiveTimeout()
Definition: DW1000.cpp:1346
static void setPreambleLength(byte prealen)
Definition: DW1000.cpp:1086
static void setReceiverAutoReenable(boolean val)
Definition: DW1000.cpp:900
static byte _syscfg[LEN_SYS_CFG]
Definition: DW1000.h:405
static constexpr byte TX_PREAMBLE_LEN_256
Definition: DW1000.h:338
static void useSmartPower(boolean smartPower)
Definition: DW1000.cpp:1012
static const byte READ
Definition: DW1000.h:516
static void end()
Definition: DW1000.cpp:107
static boolean isReceiveFailed()
Definition: DW1000.cpp:1334
static const byte XTI_CLOCK
Definition: DW1000.h:522
static void enableMode(const byte mode[])
Definition: DW1000.cpp:254
static DW1000Time _antennaDelay
Definition: DW1000.h:428
static void setDoubleBuffering(boolean val)
Definition: DW1000.cpp:892
static void clearTransmitStatus()
Definition: DW1000.cpp:1382
static constexpr byte PREAMBLE_CODE_16MHZ_6
Definition: DW1000.h:365
static constexpr byte TX_PREAMBLE_LEN_64
Definition: DW1000.h:336
static byte _chanctrl[LEN_CHAN_CTRL]
Definition: DW1000.h:410
#define LEN_SYS_MASK
Definition: DW1000Constants.h:102
static void tune()
Definition: DW1000.cpp:268
static void startTransmit()
Definition: DW1000.cpp:963
#define LEN_PANADR
Definition: DW1000Constants.h:48
static void readBytesOTP(uint16_t address, byte data[])
Definition: DW1000.cpp:1569
static byte getPulseFrequency()
Definition: DW1000.cpp:1082
static void readSystemConfigurationRegister()
Definition: DW1000.cpp:750
static void writeChannelControlRegister()
Definition: DW1000.cpp:782
Definition: DW1000.h:39
static void setFrameFilterAllowAcknowledgement(boolean val)
Definition: DW1000.cpp:879
static void setFrameFilterAllowBeacon(boolean val)
Definition: DW1000.cpp:871
static constexpr byte PREAMBLE_CODE_16MHZ_7
Definition: DW1000.h:366
static constexpr byte MODE_SHORTDATA_FAST_LOWPOWER[]
Definition: DW1000.h:384
static byte _networkAndAddress[LEN_PANADR]
Definition: DW1000.h:417
static const byte BIAS_900_16_ZERO
Definition: DW1000.h:533
static void setPreambleCode(byte preacode)
Definition: DW1000.cpp:1123
static constexpr byte BIAS_900_64[]
Definition: DW1000.h:540
static void useExtendedFrameLength(boolean val)
Definition: DW1000.cpp:1102
static constexpr byte PAC_SIZE_32
Definition: DW1000.h:348