client version of coap

Dependencies:   nRF24L01P cantcoap3

Dependents:   client3

Committer:
Ka_myk
Date:
Thu Jan 24 16:33:30 2019 +0000
Revision:
2:e8823d9fa162
Parent:
1:1d936c763440
aaaa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ka_myk 0:6a6f97ca5572 1 #include "radioWrapper.h"
Ka_myk 0:6a6f97ca5572 2 #include "mbed.h"
Ka_myk 2:e8823d9fa162 3 #include "dbg.h"
Ka_myk 0:6a6f97ca5572 4
Ka_myk 1:1d936c763440 5 int RadioWrapper::read(uint8_t* buffer, int len, int timeout) {
Ka_myk 0:6a6f97ca5572 6 Timer t;
Ka_myk 1:1d936c763440 7 t.start();
Ka_myk 0:6a6f97ca5572 8 // check if buffor is large enough to conaint packet.
Ka_myk 1:1d936c763440 9 if (len < packetSize()) {
Ka_myk 0:6a6f97ca5572 10 return -1;
Ka_myk 0:6a6f97ca5572 11 }
Ka_myk 2:e8823d9fa162 12 while(t.read_ms() < timeout) {
Ka_myk 2:e8823d9fa162 13 if(radio.readable(NRF24L01P_PIPE_P1)) {
Ka_myk 2:e8823d9fa162 14 DBG("%d", t.read_ms());
Ka_myk 2:e8823d9fa162 15 uint8_t message[packetSize()];
Ka_myk 2:e8823d9fa162 16 int ret = radio.read(NRF24L01P_PIPE_P1, (char*) message, packetSize());
Ka_myk 2:e8823d9fa162 17 DBG("RECIEVED %d, %s \r\n", ret, buffer);
Ka_myk 2:e8823d9fa162 18 t.stop();
Ka_myk 2:e8823d9fa162 19 if(ret>0) {
Ka_myk 2:e8823d9fa162 20 uint8_t encodedLen = message[0];
Ka_myk 2:e8823d9fa162 21 std::memcpy(buffer, message+1, encodedLen);
Ka_myk 2:e8823d9fa162 22 return encodedLen;
Ka_myk 2:e8823d9fa162 23 } else {
Ka_myk 2:e8823d9fa162 24 return ret;
Ka_myk 2:e8823d9fa162 25 }
Ka_myk 2:e8823d9fa162 26 }
Ka_myk 0:6a6f97ca5572 27 }
Ka_myk 1:1d936c763440 28 t.stop();
Ka_myk 2:e8823d9fa162 29 return 0;
Ka_myk 0:6a6f97ca5572 30 }
Ka_myk 0:6a6f97ca5572 31
Ka_myk 2:e8823d9fa162 32 int RadioWrapper::write(uint8_t* buffer, uint8_t len) {
Ka_myk 2:e8823d9fa162 33 // check if buffor is small enough to send in one package + len
Ka_myk 1:1d936c763440 34 if (len > packetSize()) {
Ka_myk 0:6a6f97ca5572 35 return -1;
Ka_myk 0:6a6f97ca5572 36 }
Ka_myk 2:e8823d9fa162 37
Ka_myk 2:e8823d9fa162 38 uint8_t message[packetSize()];
Ka_myk 2:e8823d9fa162 39 message[0] = len;
Ka_myk 2:e8823d9fa162 40 std::memcpy(message+1, buffer, len);
Ka_myk 2:e8823d9fa162 41 int ret = radio.write(NRF24L01P_PIPE_P0, (char*) message, packetSize());
Ka_myk 0:6a6f97ca5572 42 return ret;
Ka_myk 0:6a6f97ca5572 43 }
Ka_myk 0:6a6f97ca5572 44
Ka_myk 1:1d936c763440 45 RadioWrapper::RadioWrapper(int channel, unsigned long long rx_address, unsigned long long tx_address) :
Ka_myk 2:e8823d9fa162 46 radio(PB_15, PB_14, PB_13, PB_12, PB_1, PB_2) {
Ka_myk 0:6a6f97ca5572 47 radio.powerDown();
Ka_myk 0:6a6f97ca5572 48 radio.powerUp();
Ka_myk 0:6a6f97ca5572 49
Ka_myk 0:6a6f97ca5572 50 radio.setAirDataRate(DATA_RATE);
Ka_myk 0:6a6f97ca5572 51 radio.setRfOutputPower(POWER);
Ka_myk 0:6a6f97ca5572 52 radio.setRfFrequency(NRF24L01P_MIN_RF_FREQUENCY + 4 * channel);
Ka_myk 0:6a6f97ca5572 53
Ka_myk 0:6a6f97ca5572 54 radio.setCrcWidth(NRF24L01P_CRC_8_BIT);
Ka_myk 0:6a6f97ca5572 55
Ka_myk 0:6a6f97ca5572 56 radio.setTxAddress(tx_address, 4);
Ka_myk 2:e8823d9fa162 57 radio.setRxAddress(tx_address, 4, NRF24L01P_PIPE_P0);
Ka_myk 2:e8823d9fa162 58 radio.setRxAddress(rx_address, 4, NRF24L01P_PIPE_P1);
Ka_myk 0:6a6f97ca5572 59 radio.setTransferSize(packetSize(), NRF24L01P_PIPE_P0);
Ka_myk 2:e8823d9fa162 60 radio.setTransferSize(packetSize(), NRF24L01P_PIPE_P1);
Ka_myk 2:e8823d9fa162 61
Ka_myk 2:e8823d9fa162 62 radio.setReceiveMode();
Ka_myk 2:e8823d9fa162 63 radio.enable();
Ka_myk 2:e8823d9fa162 64
Ka_myk 2:e8823d9fa162 65 // Display the (default) setup of the nRF24L01+ chip
Ka_myk 2:e8823d9fa162 66 DBG( "nRF24L01+ Frequency : %d MHz\r\n", radio.getRfFrequency() );
Ka_myk 2:e8823d9fa162 67 DBG( "nRF24L01+ Output power : %d dBm\r\n", radio.getRfOutputPower() );
Ka_myk 2:e8823d9fa162 68 DBG( "nRF24L01+ Data Rate : %d kbps\r\n", radio.getAirDataRate() );
Ka_myk 2:e8823d9fa162 69 DBG( "nRF24L01+ TX Address : 0x%010llX\r\n", radio.getTxAddress() );
Ka_myk 2:e8823d9fa162 70 DBG( "nRF24L01+ RX0 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P0) );
Ka_myk 2:e8823d9fa162 71 DBG( "nRF24L01+ RX1 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P1) );
Ka_myk 0:6a6f97ca5572 72 }