IoT - Kubus / Mbed 2 deprecated Kubus

Dependencies:   mbed nRF24L01P

Committer:
Bartosz Stebel
Date:
Thu Jan 05 13:23:49 2017 +0100
Revision:
8:1861d0eef60a
Parent:
2:6541a391bdbd
Child:
37:1251e35fe43e
Child:
40:40d4161fe1ad
Fix (de)serializer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pannaanna 2:6541a391bdbd 1 #include "common.h"
Bartosz Stebel 8:1861d0eef60a 2 #include <cstring>
pannaanna 2:6541a391bdbd 3
pannaanna 2:6541a391bdbd 4 std::string Data::serialize() {
pannaanna 2:6541a391bdbd 5 std::string serialized;
pannaanna 2:6541a391bdbd 6 serialized.push_back(type);
Bartosz Stebel 8:1861d0eef60a 7 serialized.append((char*)&value, sizeof(value));
pannaanna 2:6541a391bdbd 8 return serialized;
pannaanna 2:6541a391bdbd 9 };
Bartosz Stebel 8:1861d0eef60a 10 bool Data::deserialize(std::string str) {
Bartosz Stebel 8:1861d0eef60a 11 if(str.length() < 1 + sizeof(value)) {
Bartosz Stebel 8:1861d0eef60a 12 return false;
Bartosz Stebel 8:1861d0eef60a 13 }
Bartosz Stebel 8:1861d0eef60a 14 type = str[0];
Bartosz Stebel 8:1861d0eef60a 15 memcpy(&value, str.data() + 1, sizeof(value));
Bartosz Stebel 8:1861d0eef60a 16 return true;
Bartosz Stebel 8:1861d0eef60a 17 }
pannaanna 2:6541a391bdbd 18
pannaanna 2:6541a391bdbd 19 void radio_init(nRF24L01P* radio, unsigned long long rx_address,
pannaanna 2:6541a391bdbd 20 unsigned long long tx_address) {
pannaanna 2:6541a391bdbd 21 radio->powerDown();
pannaanna 2:6541a391bdbd 22 radio->powerUp();
pannaanna 2:6541a391bdbd 23
pannaanna 2:6541a391bdbd 24 radio->setAirDataRate(DATA_RATE);
pannaanna 2:6541a391bdbd 25 radio->setRfOutputPower(POWER);
pannaanna 2:6541a391bdbd 26 radio->setRfFrequency(NRF24L01P_MIN_RF_FREQUENCY + 4 * CHANNEL);
pannaanna 2:6541a391bdbd 27
pannaanna 2:6541a391bdbd 28 radio->setCrcWidth(NRF24L01P_CRC_8_BIT);
pannaanna 2:6541a391bdbd 29 radio->enableAutoAcknowledge(NRF24L01P_PIPE_P0);
pannaanna 2:6541a391bdbd 30 radio->enableAutoAcknowledge(NRF24L01P_PIPE_P1);
pannaanna 2:6541a391bdbd 31 radio->enableAutoRetransmit(0x0F, 0x0F);
pannaanna 2:6541a391bdbd 32
pannaanna 2:6541a391bdbd 33 radio->setTxAddress(tx_address, 4);
pannaanna 2:6541a391bdbd 34 radio->setRxAddress(tx_address, 4, NRF24L01P_PIPE_P0);
pannaanna 2:6541a391bdbd 35 radio->setRxAddress(rx_address, 4, NRF24L01P_PIPE_P1);
pannaanna 2:6541a391bdbd 36
pannaanna 2:6541a391bdbd 37 radio->setTransferSize(TRANSFER_SIZE, NRF24L01P_PIPE_P0);
pannaanna 2:6541a391bdbd 38 radio->setTransferSize(TRANSFER_SIZE, NRF24L01P_PIPE_P1);
pannaanna 2:6541a391bdbd 39
pannaanna 2:6541a391bdbd 40 radio->setReceiveMode();
pannaanna 2:6541a391bdbd 41 radio->enable();
pannaanna 2:6541a391bdbd 42 }