IoT - Kubus / Mbed 2 deprecated Kubus

Dependencies:   mbed nRF24L01P

Committer:
Bartosz Stebel
Date:
Thu Jan 19 01:23:07 2017 +0100
Revision:
54:2551a3c781cf
Parent:
53:b2c949470f4e
Parent:
51:090149c4aa28
Child:
56:065bd3a75d97
merge wifi branch with everything else

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pannaannap 5:fbd5b1e953e6 1 #include "common.h"
pannaannap 7:e51d0fbb1a25 2 #include "master.h"
pannaannap 5:fbd5b1e953e6 3
pannaanna 39:381993764b40 4 #include "cantcoap.h"
sbarzowski 10:869163c7929d 5 #include <sstream>
sbarzowski 10:869163c7929d 6
sbarzowski 51:090149c4aa28 7 const int boards_count = 3;
sbarzowski 51:090149c4aa28 8
sbarzowski 51:090149c4aa28 9
pannaannap 7:e51d0fbb1a25 10 int master_loop() {
pannaannap 7:e51d0fbb1a25 11 Serial pc(USBTX, USBRX); // tx, rx
pannaanna 39:381993764b40 12 Serial wifi(PA_9, PA_10);
Bartosz Stebel 53:b2c949470f4e 13 DigitalOut frm(PC_8);
pannaannap 7:e51d0fbb1a25 14 nRF24L01P radio(PB_15, PB_14, PB_13, PB_12, PB_1, PB_2); // mosi, miso, sck, csn, ce, irq
Micha? ?azowik 50:e83e38fece23 15
pannaannap 5:fbd5b1e953e6 16 char rxData[TRANSFER_SIZE];
pannaannap 5:fbd5b1e953e6 17
pannaannap 5:fbd5b1e953e6 18 pc.baud(115200);
pannaanna 39:381993764b40 19 wifi.baud(115200);
Micha? ?azowik 50:e83e38fece23 20
sbarzowski 51:090149c4aa28 21 vector<unsigned long long> rx_addresses(addresses, addresses + boards_count);
sbarzowski 51:090149c4aa28 22
sbarzowski 51:090149c4aa28 23 radio_init_master(&radio, rx_addresses);
pannaanna 39:381993764b40 24
pannaannap 5:fbd5b1e953e6 25 // Display the (default) setup of the nRF24L01+ chip
pannaannap 5:fbd5b1e953e6 26 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", radio.getRfFrequency() );
pannaannap 5:fbd5b1e953e6 27 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", radio.getRfOutputPower() );
pannaannap 5:fbd5b1e953e6 28 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", radio.getAirDataRate() );
pannaannap 5:fbd5b1e953e6 29 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", radio.getTxAddress() );
pannaannap 5:fbd5b1e953e6 30 pc.printf( "nRF24L01+ RX0 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P0) );
pannaannap 5:fbd5b1e953e6 31 pc.printf( "nRF24L01+ RX1 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P1) );
sbarzowski 51:090149c4aa28 32 pc.printf( "nRF24L01+ RX2 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P2) );
sbarzowski 51:090149c4aa28 33 pc.printf( "nRF24L01+ RX3 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P3) );
pannaannap 5:fbd5b1e953e6 34
Bartosz Stebel 53:b2c949470f4e 35 frm = 1;
pannaannap 5:fbd5b1e953e6 36 while (1) {
sbarzowski 51:090149c4aa28 37 for (int board = 0; board < boards_count; ++board) {
sbarzowski 51:090149c4aa28 38 int pipe = pipes[board];
sbarzowski 51:090149c4aa28 39 //pc.printf("pipe: %x\r\n", pipe);
sbarzowski 51:090149c4aa28 40 if(radio.readable(pipe)){
sbarzowski 51:090149c4aa28 41 int rx_bytes = radio.read(pipe, rxData, sizeof(rxData));
Bartosz Stebel 54:2551a3c781cf 42 CoapPDU pdu;
Bartosz Stebel 54:2551a3c781cf 43 pdu.setVersion(1);
Bartosz Stebel 54:2551a3c781cf 44 pdu.setType(CoapPDU::COAP_NON_CONFIRMABLE);
Bartosz Stebel 54:2551a3c781cf 45 pdu.setCode(CoapPDU::COAP_POST);
Bartosz Stebel 54:2551a3c781cf 46 pdu.setToken((uint8_t*)"\3\2\1\1",4);
Bartosz Stebel 54:2551a3c781cf 47 pdu.setMessageID(0x0005);
sbarzowski 51:090149c4aa28 48 std::string output = str_hex(rxData, rx_bytes);
Bartosz Stebel 54:2551a3c781cf 49 //wifi.printf("received: %s\r\n", output.c_str());
sbarzowski 51:090149c4aa28 50 pc.printf("received: %s\r\n", output.c_str());
Bartosz Stebel 54:2551a3c781cf 51 Data d;
Bartosz Stebel 54:2551a3c781cf 52 d.deserialize(std::string(rxData, 32));
Bartosz Stebel 54:2551a3c781cf 53 std::stringstream ss;
Bartosz Stebel 54:2551a3c781cf 54
Bartosz Stebel 54:2551a3c781cf 55 for (int i = 0; i < rx_bytes; ++i) {
Bartosz Stebel 54:2551a3c781cf 56 ss << std::hex << rxData[i] / 16 << rxData[i] % 16; // ugly!
Bartosz Stebel 54:2551a3c781cf 57 }
Bartosz Stebel 54:2551a3c781cf 58 pc.printf("received: %s|id %d \r\n", ss.str().c_str(), d.type);
Bartosz Stebel 54:2551a3c781cf 59 //wifi.printf("received: %s, pkt:", ss.str().c_str());
Bartosz Stebel 52:917b3f31cad3 60
Bartosz Stebel 54:2551a3c781cf 61 char uribuf[64];
Bartosz Stebel 54:2551a3c781cf 62 switch(d.type) {
Bartosz Stebel 54:2551a3c781cf 63 case PIR1:
Bartosz Stebel 54:2551a3c781cf 64 strcpy(uribuf, "pir1");
Bartosz Stebel 54:2551a3c781cf 65 break;
Bartosz Stebel 54:2551a3c781cf 66 case PIR2:
Bartosz Stebel 54:2551a3c781cf 67 strcpy(uribuf, "pir2");
Bartosz Stebel 54:2551a3c781cf 68 break;
Bartosz Stebel 54:2551a3c781cf 69 case DISTANCE:
Bartosz Stebel 54:2551a3c781cf 70 strcpy(uribuf, "distance");
Bartosz Stebel 54:2551a3c781cf 71 break;
Bartosz Stebel 54:2551a3c781cf 72 case SOUND:
Bartosz Stebel 54:2551a3c781cf 73 strcpy(uribuf, "sound");
Bartosz Stebel 54:2551a3c781cf 74 break;
Bartosz Stebel 54:2551a3c781cf 75 }
Bartosz Stebel 54:2551a3c781cf 76 pdu.setURI(uribuf,strlen(uribuf));
Bartosz Stebel 54:2551a3c781cf 77
Bartosz Stebel 54:2551a3c781cf 78 char pbuf[32];
Bartosz Stebel 54:2551a3c781cf 79 int psize = sprintf(pbuf, "%ld", d.value.i);
Bartosz Stebel 54:2551a3c781cf 80 pdu.setPayload((uint8_t*)pbuf, psize);
Bartosz Stebel 54:2551a3c781cf 81 frm = 0;
Bartosz Stebel 54:2551a3c781cf 82 wifi.write(pdu.getPDUPointer(), pdu.getPDULength(), 0, 0);
Bartosz Stebel 54:2551a3c781cf 83 wait(0.1);
Bartosz Stebel 54:2551a3c781cf 84 frm = 1;
Bartosz Stebel 54:2551a3c781cf 85 //wifi.printf("\n");
sbarzowski 51:090149c4aa28 86 }
pannaannap 5:fbd5b1e953e6 87 }
pannaannap 5:fbd5b1e953e6 88 }
pannaannap 5:fbd5b1e953e6 89 }