Test program for RFM69 library. Listens and prints packets from "RFM69_Sender" nodes

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }