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@54:2551a3c781cf, 2017-01-19 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |