Library for handling subset of coap functionality by radio transmitter.
Dependencies: nRF24L01P cantcoap
Diff: radioWrapper.cpp
- Revision:
- 0:6a6f97ca5572
- Child:
- 1:1d936c763440
diff -r 000000000000 -r 6a6f97ca5572 radioWrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioWrapper.cpp Fri Jan 18 14:12:24 2019 +0000 @@ -0,0 +1,41 @@ +#include "radioWrapper.h" +#include "mbed.h" + +int RadioWrapper::read(uin8_t* buffer, int len, int timeout) { + Timer t; + t.start() + // check if buffor is large enough to conaint packet. + if (len < TRANSFER_SIZE) { + return -1; + } + int ret = radio.read(NRF24L01P_PIPE_P0, (char*) buffer, packetSize()); + while(ret == 0 && t.read_ms() < timeout) { + wait_ms(10); + ret = radio.read(NRF24L01P_PIPE_P0, (char*) buffer, packetSize()); + } + return ret; +} + +int RadioWrapper::write(uin8_t* buffer, int len) { + // check if buffor is small enough to send in one package + if (len > TRANSFER_SIZE) { + return -1; + } + int ret = radio.write(NRF24L01P_PIPE_P0, (char*) buffer, packetSize()); + return ret; +} + +RadioWrapper::RadioWrapper(int channel, unsigned long long rx_address, unsigned long long tx_address) { + radio.powerDown(); + radio.powerUp(); + + radio.setAirDataRate(DATA_RATE); + radio.setRfOutputPower(POWER); + radio.setRfFrequency(NRF24L01P_MIN_RF_FREQUENCY + 4 * channel); + + radio.setCrcWidth(NRF24L01P_CRC_8_BIT); + + radio.setTxAddress(tx_address, 4); + radio.setRxAddress(rx_address, 4, NRF24L01P_PIPE_P0); + radio.setTransferSize(packetSize(), NRF24L01P_PIPE_P0); +}