#include <RHReliableDatagram.h>
#include <RH_RF69.h>
#include <SPI.h>
#define SERVER_ADDRESS 1
uint8_t buf[RH_RF69_MAX_MESSAGE_LEN]; // for received message
char txbuf[RH_RF69_MAX_MESSAGE_LEN];
char displayBuf[128];
uint8_t myAddress;
RH_RF69 driver;
RHReliableDatagram manager(driver, SERVER_ADDRESS);
void setup() {
myAddress = SERVER_ADDRESS;
Serial.begin(9600);
delay(4000);
Serial.println("Start Initializing");
delay(500);
while (1) {
if (!manager.init()) {
Serial.print(millis()); Serial.println(" init failed");
delay(500);
} else {
break; // init success
}
}
Serial.println("init radio OK!");
driver.setThisAddress(SERVER_ADDRESS);
}
int rssiTo_dBm(uint8_t rssi) {
return( (int)(int8_t)rssi);
}
void loop() {
if (manager.available()) {
uint8_t len = sizeof(buf);
uint8_t from, to, id, rssi;
if (manager.recvfromAck(buf, &len, &from, &to, &id)) {
rssi = driver.lastRssi();
sprintf(displayBuf, "\nmsg from #%d id:%-3d RSSI:0x%02X(%ddBm) len:%d Is:%s\n", from, id, rssi, rssiTo_dBm(rssi), len, buf);
Serial.println(displayBuf);
snprintf(txbuf, (int)sizeof(txbuf)-1, "me:#%d to:#%d millis=%lu", myAddress, from, millis());
if (!manager.sendtoWait((uint8_t *)txbuf, strlen(txbuf)+1, from)) {
Serial.println("sendtoWait failed");
}
}
}
delay(200); //Without nothing works
}