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@56:065bd3a75d97, 2017-01-19 (annotated)
- Committer:
- Micha? ?azowik 
- Date:
- Thu Jan 19 11:26:38 2017 +0100
- Revision:
- 56:065bd3a75d97
- Parent:
- 54:2551a3c781cf
- Child:
- 60:b419ea9472de
Backed out changeset 090149c4aa28
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 | |
| pannaannap | 7:e51d0fbb1a25 | 7 | int master_loop() { | 
| pannaannap | 7:e51d0fbb1a25 | 8 | Serial pc(USBTX, USBRX); // tx, rx | 
| pannaanna | 39:381993764b40 | 9 | Serial wifi(PA_9, PA_10); | 
| Bartosz Stebel | 53:b2c949470f4e | 10 | DigitalOut frm(PC_8); | 
| pannaannap | 7:e51d0fbb1a25 | 11 | nRF24L01P radio(PB_15, PB_14, PB_13, PB_12, PB_1, PB_2); // mosi, miso, sck, csn, ce, irq | 
| Micha? ?azowik | 50:e83e38fece23 | 12 | |
| Micha? ?azowik | 56:065bd3a75d97 | 13 | const unsigned long long RX_ADDRESS = MASTER_ADDRESS; | 
| Micha? ?azowik | 56:065bd3a75d97 | 14 | const unsigned long long TX_ADDRESS = BOARD1_ADDRESS; | 
| Micha? ?azowik | 56:065bd3a75d97 | 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 | |
| Micha? ?azowik | 56:065bd3a75d97 | 21 | radio_init(&radio, RX_ADDRESS, TX_ADDRESS); | 
| pannaanna | 39:381993764b40 | 22 | |
| pannaannap | 5:fbd5b1e953e6 | 23 | // Display the (default) setup of the nRF24L01+ chip | 
| pannaannap | 5:fbd5b1e953e6 | 24 | pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", radio.getRfFrequency() ); | 
| pannaannap | 5:fbd5b1e953e6 | 25 | pc.printf( "nRF24L01+ Output power : %d dBm\r\n", radio.getRfOutputPower() ); | 
| pannaannap | 5:fbd5b1e953e6 | 26 | pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", radio.getAirDataRate() ); | 
| pannaannap | 5:fbd5b1e953e6 | 27 | pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", radio.getTxAddress() ); | 
| pannaannap | 5:fbd5b1e953e6 | 28 | pc.printf( "nRF24L01+ RX0 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P0) ); | 
| pannaannap | 5:fbd5b1e953e6 | 29 | pc.printf( "nRF24L01+ RX1 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P1) ); | 
| pannaannap | 5:fbd5b1e953e6 | 30 | |
| Bartosz Stebel | 53:b2c949470f4e | 31 | frm = 1; | 
| pannaannap | 5:fbd5b1e953e6 | 32 | while (1) { | 
| Micha? ?azowik | 56:065bd3a75d97 | 33 | if(radio.readable(NRF24L01P_PIPE_P1)){ | 
| Micha? ?azowik | 56:065bd3a75d97 | 34 | int rx_bytes = radio.read(NRF24L01P_PIPE_P1, rxData, sizeof(rxData)); | 
| Micha? ?azowik | 56:065bd3a75d97 | 35 | CoapPDU pdu; | 
| Micha? ?azowik | 56:065bd3a75d97 | 36 | pdu.setVersion(1); | 
| Micha? ?azowik | 56:065bd3a75d97 | 37 | pdu.setType(CoapPDU::COAP_NON_CONFIRMABLE); | 
| Micha? ?azowik | 56:065bd3a75d97 | 38 | pdu.setCode(CoapPDU::COAP_POST); | 
| Micha? ?azowik | 56:065bd3a75d97 | 39 | pdu.setToken((uint8_t*)"\3\2\1\1",4); | 
| Micha? ?azowik | 56:065bd3a75d97 | 40 | pdu.setMessageID(0x0005); | 
| Micha? ?azowik | 56:065bd3a75d97 | 41 | std::string output = str_hex(rxData, rx_bytes); | 
| Micha? ?azowik | 56:065bd3a75d97 | 42 | //wifi.printf("received: %s\r\n", output.c_str()); | 
| Micha? ?azowik | 56:065bd3a75d97 | 43 | pc.printf("received: %s\r\n", output.c_str()); | 
| Micha? ?azowik | 56:065bd3a75d97 | 44 | Data d; | 
| Micha? ?azowik | 56:065bd3a75d97 | 45 | d.deserialize(std::string(rxData, 32)); | 
| Micha? ?azowik | 56:065bd3a75d97 | 46 | std::stringstream ss; | 
| Bartosz Stebel | 54:2551a3c781cf | 47 | |
| Micha? ?azowik | 56:065bd3a75d97 | 48 | for (int i = 0; i < rx_bytes; ++i) { | 
| Micha? ?azowik | 56:065bd3a75d97 | 49 | ss << std::hex << rxData[i] / 16 << rxData[i] % 16; // ugly! | 
| Micha? ?azowik | 56:065bd3a75d97 | 50 | } | 
| Micha? ?azowik | 56:065bd3a75d97 | 51 | pc.printf("received: %s|id %d \r\n", ss.str().c_str(), d.type); | 
| Micha? ?azowik | 56:065bd3a75d97 | 52 | //wifi.printf("received: %s, pkt:", ss.str().c_str()); | 
| Bartosz Stebel | 52:917b3f31cad3 | 53 | |
| Micha? ?azowik | 56:065bd3a75d97 | 54 | char uribuf[64]; | 
| Micha? ?azowik | 56:065bd3a75d97 | 55 | switch(d.type) { | 
| Micha? ?azowik | 56:065bd3a75d97 | 56 | case PIR1: | 
| Micha? ?azowik | 56:065bd3a75d97 | 57 | strcpy(uribuf, "pir1"); | 
| Micha? ?azowik | 56:065bd3a75d97 | 58 | break; | 
| Micha? ?azowik | 56:065bd3a75d97 | 59 | case PIR2: | 
| Micha? ?azowik | 56:065bd3a75d97 | 60 | strcpy(uribuf, "pir2"); | 
| Micha? ?azowik | 56:065bd3a75d97 | 61 | break; | 
| Micha? ?azowik | 56:065bd3a75d97 | 62 | case DISTANCE: | 
| Micha? ?azowik | 56:065bd3a75d97 | 63 | strcpy(uribuf, "distance"); | 
| Micha? ?azowik | 56:065bd3a75d97 | 64 | break; | 
| Micha? ?azowik | 56:065bd3a75d97 | 65 | case SOUND: | 
| Micha? ?azowik | 56:065bd3a75d97 | 66 | strcpy(uribuf, "sound"); | 
| Micha? ?azowik | 56:065bd3a75d97 | 67 | break; | 
| Micha? ?azowik | 56:065bd3a75d97 | 68 | } | 
| Micha? ?azowik | 56:065bd3a75d97 | 69 | pdu.setURI(uribuf,strlen(uribuf)); | 
| Bartosz Stebel | 54:2551a3c781cf | 70 | |
| Micha? ?azowik | 56:065bd3a75d97 | 71 | char pbuf[32]; | 
| Micha? ?azowik | 56:065bd3a75d97 | 72 | int psize = sprintf(pbuf, "%ld", d.value.i); | 
| Micha? ?azowik | 56:065bd3a75d97 | 73 | pdu.setPayload((uint8_t*)pbuf, psize); | 
| Micha? ?azowik | 56:065bd3a75d97 | 74 | frm = 0; | 
| Micha? ?azowik | 56:065bd3a75d97 | 75 | wifi.write(pdu.getPDUPointer(), pdu.getPDULength(), 0, 0); | 
| Micha? ?azowik | 56:065bd3a75d97 | 76 | wait(0.1); | 
| Micha? ?azowik | 56:065bd3a75d97 | 77 | frm = 1; | 
| Micha? ?azowik | 56:065bd3a75d97 | 78 | //wifi.printf("\n"); | 
| pannaannap | 5:fbd5b1e953e6 | 79 | } | 
| pannaannap | 5:fbd5b1e953e6 | 80 | } | 
| pannaannap | 5:fbd5b1e953e6 | 81 | } |