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

Dependencies:   mbed RFM69

Committer:
pedroneto1209
Date:
Mon Jul 29 18:26:05 2019 +0000
Revision:
2:08246d6498ce
Parent:
1:7bc722e656a5
baja

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 //
pedroneto1209 2:08246d6498ce 5 #include "mbed.h"
pedroneto1209 2:08246d6498ce 6 #include "RFM69.h"
br549 0:52becca880bd 7
pedroneto1209 2:08246d6498ce 8 #define NETWORK_ID 101
pedroneto1209 2:08246d6498ce 9 #define BOXRADIO_ID 69
pedroneto1209 2:08246d6498ce 10 #define NODE_ID 55
pedroneto1209 2:08246d6498ce 11 #define FREQUENCY_915MHZ 91
br549 0:52becca880bd 12
br549 0:52becca880bd 13 // Uncomment only one of the following three to match radio frequency
br549 0:52becca880bd 14 //#define FREQUENCY RF69_433MHZ
br549 0:52becca880bd 15 //#define FREQUENCY RF69_868MHZ
br549 0:52becca880bd 16 #define FREQUENCY RF69_915MHZ
br549 0:52becca880bd 17
pedroneto1209 2:08246d6498ce 18 #define IS_RFM69HW //NOTE: uncomment this ONLY for RFM69HW or RFM69HCW
br549 0:52becca880bd 19 #define ENCRYPT_KEY "EncryptKey123456" // use same 16byte encryption key for all devices on net
br549 0:52becca880bd 20 #define ACK_TIME 50 // max msec for ACK wait
br549 0:52becca880bd 21 #define LED 9 // Anardino miniWireless has LEDs on D9
br549 0:52becca880bd 22 #define SERIAL_BAUD 115200
br549 0:52becca880bd 23 #define VERSION "1.0"
br549 0:52becca880bd 24
br549 0:52becca880bd 25 #define MSGBUFSIZE 64 // message buffersize, but for this demo we only use:
br549 0:52becca880bd 26 // 1-byte NODEID + 4-bytes for time + 1-byte for temp in C + 2-bytes for vcc(mV)
br549 0:52becca880bd 27
pedroneto1209 2:08246d6498ce 28 Serial pc(PA_9, PA_10);
pedroneto1209 2:08246d6498ce 29 DigitalOut myled(PC_13);
pedroneto1209 2:08246d6498ce 30 DigitalOut but(PA_1, PullUp);
br549 1:7bc722e656a5 31 //RFM69::RFM69(PinName PinName mosi, PinName miso, PinName sclk,slaveSelectPin, PinName int)
pedroneto1209 2:08246d6498ce 32 RFM69 radio(PB_15, PB_14, PB_13, PB_12, PA_8);
pedroneto1209 2:08246d6498ce 33
br549 0:52becca880bd 34 bool promiscuousMode = false; // set 'true' to sniff all packets on the same network
pedroneto1209 2:08246d6498ce 35 uint8_t data[61];
br549 0:52becca880bd 36 bool requestACK=false;
pedroneto1209 2:08246d6498ce 37
br549 0:52becca880bd 38 Timer tmr;
br549 0:52becca880bd 39
br549 0:52becca880bd 40 main() {
br549 0:52becca880bd 41 uint8_t theNodeID;
br549 0:52becca880bd 42 tmr.start();
br549 0:52becca880bd 43
pedroneto1209 2:08246d6498ce 44 pc.baud(SERIAL_BAUD);
br549 0:52becca880bd 45 pc.printf("\r\nListener %s startup at %d Mhz...\r\n",VERSION,(FREQUENCY==RF69_433MHZ ? 433 : FREQUENCY==RF69_868MHZ ? 868 : 915));
br549 0:52becca880bd 46 wait(1);
br549 0:52becca880bd 47 radio.initialize(FREQUENCY, GATEWAY_ID, NETWORKID);
br549 0:52becca880bd 48 radio.encrypt(0);
br549 0:52becca880bd 49 radio.promiscuous(promiscuousMode);
pedroneto1209 2:08246d6498ce 50 radio.setPowerLevel(20);
br549 0:52becca880bd 51 #ifdef IS_RFM69HW
br549 0:52becca880bd 52 radio.setHighPower(); //uncomment #define ONLY if radio is of type: RFM69HW or RFM69HCW
br549 0:52becca880bd 53 #endif
br549 0:52becca880bd 54
br549 0:52becca880bd 55 while(1) {
br549 0:52becca880bd 56 if (radio.receiveDone()) {
br549 0:52becca880bd 57 pc.printf("Received from TNODE: %d ",radio.SENDERID);
br549 0:52becca880bd 58 pc.printf((char*)radio.DATA);
br549 0:52becca880bd 59 if (radio.ACKRequested()){
br549 0:52becca880bd 60 theNodeID = radio.SENDERID;
br549 0:52becca880bd 61 radio.sendACK();
br549 0:52becca880bd 62 pc.printf(" - ACK sent. Receive RSSI: %d\r\n",radio.RSSI);
br549 0:52becca880bd 63 } else pc.printf("Receive RSSI: %d\r\n",radio.RSSI);
br549 0:52becca880bd 64 }
br549 0:52becca880bd 65 myled = !myled;
br549 0:52becca880bd 66 }
br549 0:52becca880bd 67 }