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.
master.cpp
- Committer:
- Bartosz Stebel
- Date:
- 2017-01-17
- Revision:
- 52:917b3f31cad3
- Parent:
- 39:381993764b40
- Child:
- 53:b2c949470f4e
File content as of revision 52:917b3f31cad3:
#include "common.h"
#include "master.h"
#include "cantcoap.h"
#include <sstream>
int master_loop() {
Serial pc(USBTX, USBRX); // tx, rx
Serial wifi(PA_9, PA_10);
nRF24L01P radio(PB_15, PB_14, PB_13, PB_12, PB_1, PB_2); // mosi, miso, sck, csn, ce, irq
const unsigned long long RX_ADDRESS = MASTER_ADDRESS;
const unsigned long long TX_ADDRESS = BOARD1_ADDRESS;
char rxData[TRANSFER_SIZE];
pc.baud(115200);
wifi.baud(115200);
radio_init(&radio, RX_ADDRESS, TX_ADDRESS);
// Display the (default) setup of the nRF24L01+ chip
pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", radio.getRfFrequency() );
pc.printf( "nRF24L01+ Output power : %d dBm\r\n", radio.getRfOutputPower() );
pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", radio.getAirDataRate() );
pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", radio.getTxAddress() );
pc.printf( "nRF24L01+ RX0 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P0) );
pc.printf( "nRF24L01+ RX1 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P1) );
while (1) {
if(radio.readable(NRF24L01P_PIPE_P1)){
int rx_bytes = radio.read(NRF24L01P_PIPE_P1, rxData, sizeof(rxData));
CoapPDU pdu;
pdu.setType(CoapPDU::COAP_NON_CONFIRMABLE);
pdu.setCode(CoapPDU::COAP_POST);
std::string output = str_hex(rxData, rx_bytes);
wifi.printf("received: %s\r\n", output.c_str());
pc.printf("received: %s\r\n", output.c_str());
Data d;
d.deserialize(std::string(rxData, 32));
std::stringstream ss;
for (int i = 0; i < rx_bytes; ++i) {
ss << std::hex << rxData[i] / 16 << rxData[i] % 16; // ugly!
}
pc.printf("received: %s|id %d \r\n", ss.str().c_str(), d.type);
//wifi.printf("received: %s, pkt:", ss.str().c_str());
char uribuf[64];
switch(d.type) {
case PIR1:
strcpy(uribuf, "pir1");
break;
case PIR2:
strcpy(uribuf, "pir2");
break;
case DISTANCE:
strcpy(uribuf, "distance");
break;
case SOUND:
strcpy(uribuf, "sound");
break;
}
pdu.setURI(uribuf,strlen(uribuf));
char pbuf[32];
int psize = sprintf(pbuf, "%ld", d.value.i);
pdu.setPayload((uint8_t*)pbuf, psize);
wifi.write(pdu.getPDUPointer(), pdu.getPDULength(), 0, 0);
//wifi.printf("\n");
}
}
}