Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of DecaWave by
Diff: DW1000/DW1000.cpp
- Revision:
- 25:d58b0595b300
- Parent:
- 24:6f25ba679490
- Child:
- 26:a65c6f26c458
--- a/DW1000/DW1000.cpp Thu Nov 27 16:26:42 2014 +0000 +++ b/DW1000/DW1000.cpp Thu Nov 27 17:51:54 2014 +0000 @@ -1,8 +1,6 @@ #include "DW1000.h" DW1000::DW1000(PinName MOSI, PinName MISO, PinName SCLK, PinName CS, PinName IRQ) : irq(IRQ), spi(MOSI, MISO, SCLK), cs(CS) { - receiving = false; // state in the beginning is not listening for frames - sending = false; // state in the beginning is not sending anything callbackRX = NULL; // TODO: setter callbackTX = NULL; @@ -70,21 +68,18 @@ length = ((backup & 0xFC) << 8) | (length & 0x03FF); writeRegister16(DW1000_TX_FCTRL, 0, length); - if (receiving) stopTRX(); // stop receiving if we are in this state - sending = true; + stopTRX(); // stop receiving writeRegister8(DW1000_SYS_CTRL, 0, 0x02); // trigger sending process by setting the TXSTRT bit - if (receiving) startRX(); + startRX(); // enable receiver again } void DW1000::startRX() { //while(sending); // block until sending finished TODO: the right way?? - receiving = true; writeRegister8(DW1000_SYS_CTRL, 0x01, 0x01); // start listening for preamble by setting the RXENAB bit } -void DW1000::stopRX() { - receiving = false; - stopTRX(); +void DW1000::stopTRX() { + writeRegister8(DW1000_SYS_CTRL, 0, 0x40); // disable tranceiver go back to idle mode } // PRIVATE Methods ------------------------------------------------------------------------------------ @@ -95,10 +90,6 @@ writeRegister16(DW1000_PMSC, 0, 0x0200); // recover to PLL clock } -void DW1000::stopTRX() { - writeRegister8(DW1000_SYS_CTRL, 0, 0x40); // disable tranceiver go back to idle mode -} - void DW1000::resetRX() { writeRegister8(DW1000_PMSC, 3, 0xE0); // set RX reset writeRegister8(DW1000_PMSC, 3, 0xF0); // clear RX reset @@ -119,8 +110,7 @@ writeRegister16(DW1000_SYS_STATUS, 0, 0x6F00); // clearing of receiving status bits } if (status & 0x80) { // sending complete - sending = false; - if (receiving) startRX(); // enable receiver again if we need to preserve state TODO: have to do it here?? + //startRX(); // enable receiver again if we need to preserve state TODO: have to do it here?? if (callbackTX != NULL) callbackTX(); writeRegister8(DW1000_SYS_STATUS, 0, 0xF8); // clearing of sending status bits