pedro neto
/
testepedro
Test program for RFM69 library. Listens and prints packets from "RFM69_Sender" nodes
Listener.cpp@0:52becca880bd, 2015-02-26 (annotated)
- Committer:
- br549
- Date:
- Thu Feb 26 04:21:40 2015 +0000
- Revision:
- 0:52becca880bd
- Child:
- 1:7bc722e656a5
Sync'd with published library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
br549 | 0:52becca880bd | 1 | // Listener - print sender messages |
br549 | 0:52becca880bd | 2 | // From Tnode/Tsender @ anarduino.com |
br549 | 0:52becca880bd | 3 | // 2014 - anarduino.com |
br549 | 0:52becca880bd | 4 | // |
br549 | 0:52becca880bd | 5 | #include <RFM69.h> |
br549 | 0:52becca880bd | 6 | #include <SPI.h> |
br549 | 0:52becca880bd | 7 | |
br549 | 0:52becca880bd | 8 | #define GATEWAY_ID 1 // this is ME, TGateway |
br549 | 0:52becca880bd | 9 | #define NETWORKID 101 //the same on all nodes that talk to each other |
br549 | 0:52becca880bd | 10 | |
br549 | 0:52becca880bd | 11 | // Uncomment only one of the following three to match radio frequency |
br549 | 0:52becca880bd | 12 | //#define FREQUENCY RF69_433MHZ |
br549 | 0:52becca880bd | 13 | //#define FREQUENCY RF69_868MHZ |
br549 | 0:52becca880bd | 14 | #define FREQUENCY RF69_915MHZ |
br549 | 0:52becca880bd | 15 | |
br549 | 0:52becca880bd | 16 | //#define IS_RFM69HW //NOTE: uncomment this ONLY for RFM69HW or RFM69HCW |
br549 | 0:52becca880bd | 17 | #define ENCRYPT_KEY "EncryptKey123456" // use same 16byte encryption key for all devices on net |
br549 | 0:52becca880bd | 18 | #define ACK_TIME 50 // max msec for ACK wait |
br549 | 0:52becca880bd | 19 | #define LED 9 // Anardino miniWireless has LEDs on D9 |
br549 | 0:52becca880bd | 20 | #define SERIAL_BAUD 115200 |
br549 | 0:52becca880bd | 21 | #define VERSION "1.0" |
br549 | 0:52becca880bd | 22 | |
br549 | 0:52becca880bd | 23 | #define MSGBUFSIZE 64 // message buffersize, but for this demo we only use: |
br549 | 0:52becca880bd | 24 | // 1-byte NODEID + 4-bytes for time + 1-byte for temp in C + 2-bytes for vcc(mV) |
br549 | 0:52becca880bd | 25 | uint8_t msgBuf[MSGBUFSIZE]; |
br549 | 0:52becca880bd | 26 | InterruptIn mybutton(USER_BUTTON); |
br549 | 0:52becca880bd | 27 | DigitalOut myled(D9); |
br549 | 0:52becca880bd | 28 | |
br549 | 0:52becca880bd | 29 | //Serial pc(SERIAL_TX, SERIAL_RX); |
br549 | 0:52becca880bd | 30 | Serial pc(USBTX, USBRX); |
br549 | 0:52becca880bd | 31 | //RFM69::RFM69(PinName mosi, PinName miso, PinName sclk,PinName slaveSelectPin,PinName interrupt) |
br549 | 0:52becca880bd | 32 | RFM69 radio(D11,D12,D13,D10,D8); |
br549 | 0:52becca880bd | 33 | bool promiscuousMode = false; // set 'true' to sniff all packets on the same network |
br549 | 0:52becca880bd | 34 | bool requestACK=false; |
br549 | 0:52becca880bd | 35 | Timer tmr; |
br549 | 0:52becca880bd | 36 | #pragma pack(1) |
br549 | 0:52becca880bd | 37 | union itag { |
br549 | 0:52becca880bd | 38 | uint8_t b[2]; |
br549 | 0:52becca880bd | 39 | uint16_t i; |
br549 | 0:52becca880bd | 40 | }it; |
br549 | 0:52becca880bd | 41 | union ltag { |
br549 | 0:52becca880bd | 42 | uint8_t b[4]; |
br549 | 0:52becca880bd | 43 | long l; |
br549 | 0:52becca880bd | 44 | }lt; // used to force byte order in case we end up using result in various endian targets... |
br549 | 0:52becca880bd | 45 | |
br549 | 0:52becca880bd | 46 | main() { |
br549 | 0:52becca880bd | 47 | memset(msgBuf,0,sizeof(msgBuf)); |
br549 | 0:52becca880bd | 48 | uint8_t theNodeID; |
br549 | 0:52becca880bd | 49 | tmr.start(); |
br549 | 0:52becca880bd | 50 | |
br549 | 0:52becca880bd | 51 | pc.baud(SERIAL_BAUD); |
br549 | 0:52becca880bd | 52 | pc.printf("\r\nListener %s startup at %d Mhz...\r\n",VERSION,(FREQUENCY==RF69_433MHZ ? 433 : FREQUENCY==RF69_868MHZ ? 868 : 915)); |
br549 | 0:52becca880bd | 53 | wait(1); |
br549 | 0:52becca880bd | 54 | radio.initialize(FREQUENCY, GATEWAY_ID, NETWORKID); |
br549 | 0:52becca880bd | 55 | radio.encrypt(0); |
br549 | 0:52becca880bd | 56 | radio.promiscuous(promiscuousMode); |
br549 | 0:52becca880bd | 57 | radio.setPowerLevel(5); |
br549 | 0:52becca880bd | 58 | #ifdef IS_RFM69HW |
br549 | 0:52becca880bd | 59 | radio.setHighPower(); //uncomment #define ONLY if radio is of type: RFM69HW or RFM69HCW |
br549 | 0:52becca880bd | 60 | #endif |
br549 | 0:52becca880bd | 61 | |
br549 | 0:52becca880bd | 62 | while(1) { |
br549 | 0:52becca880bd | 63 | if (radio.receiveDone()) { |
br549 | 0:52becca880bd | 64 | pc.printf("Received from TNODE: %d ",radio.SENDERID); |
br549 | 0:52becca880bd | 65 | pc.printf((char*)radio.DATA); |
br549 | 0:52becca880bd | 66 | if (radio.ACKRequested()){ |
br549 | 0:52becca880bd | 67 | theNodeID = radio.SENDERID; |
br549 | 0:52becca880bd | 68 | radio.sendACK(); |
br549 | 0:52becca880bd | 69 | pc.printf(" - ACK sent. Receive RSSI: %d\r\n",radio.RSSI); |
br549 | 0:52becca880bd | 70 | } else pc.printf("Receive RSSI: %d\r\n",radio.RSSI); |
br549 | 0:52becca880bd | 71 | } |
br549 | 0:52becca880bd | 72 | myled = !myled; |
br549 | 0:52becca880bd | 73 | } |
br549 | 0:52becca880bd | 74 | } |