Tasmota/lib/lib_rf/LoRa/examples/LoRaCADCallback/LoRaCADCallback.ino

59 lines
1.2 KiB
Arduino
Raw Permalink Normal View History

2024-02-23 13:58:39 +00:00
#include <SPI.h>
#include "LoRa.h"
#ifdef ARDUINO_SAMD_MKRWAN1300
#error "This example is not compatible with the Arduino MKR WAN 1300 board!"
#endif
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("LoRa Receiver Callback");
if (!LoRa.begin(915E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
// register the channel activity dectection callback
LoRa.onCadDone(onCadDone);
// register the receive callback
LoRa.onReceive(onReceive);
// put the radio into CAD mode
LoRa.channelActivityDetection();
}
void loop() {
// do nothing
}
void onCadDone(boolean signalDetected) {
// detect preamble
if (signalDetected) {
Serial.println("Signal detected");
// put the radio into continuous receive mode
LoRa.receive();
} else {
// try next activity dectection
LoRa.channelActivityDetection();
}
}
void onReceive(int packetSize) {
// received a packet
Serial.print("Received packet '");
// read packet
for (int i = 0; i < packetSize; i++) {
Serial.print((char)LoRa.read());
}
// print RSSI of packet
Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());
// put the radio into CAD mode
LoRa.channelActivityDetection();
}