2023-08-05 22:56:07 +00:00
|
|
|
#ifndef LORA_MODEM_H_
|
|
|
|
#define LORA_MODEM_H_
|
|
|
|
|
|
|
|
#include <RadioLib.h>
|
|
|
|
|
2023-09-23 13:37:35 +00:00
|
|
|
#include "BoardFinder/BoardFinder.h"
|
2023-08-05 22:56:07 +00:00
|
|
|
#include "project_configuration.h"
|
|
|
|
|
|
|
|
class LoRaModem {
|
|
|
|
public:
|
2023-08-06 20:49:48 +00:00
|
|
|
LoRaModem() : _module(0) {
|
|
|
|
}
|
|
|
|
|
2023-08-05 22:56:07 +00:00
|
|
|
virtual ~LoRaModem() {
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual int16_t begin(const LoraPins &lora_pins, const Configuration::LoRa &lora_config, const uint16_t preambleLength, void (*setFlag)()) = 0;
|
|
|
|
|
|
|
|
virtual int16_t readData(String &str) = 0;
|
|
|
|
|
|
|
|
virtual int16_t setFrequency(float freq) = 0;
|
|
|
|
virtual int16_t startReceive() = 0;
|
|
|
|
virtual int16_t startTransmit(String &str) = 0;
|
|
|
|
|
|
|
|
virtual int16_t receive(String &str) = 0;
|
|
|
|
|
|
|
|
virtual float getRSSI() = 0;
|
|
|
|
virtual float getSNR() = 0;
|
|
|
|
virtual float getFrequencyError() = 0;
|
|
|
|
virtual uint8_t getModemStatus() = 0;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
Module *_module;
|
|
|
|
};
|
|
|
|
|
|
|
|
class Modem_SX1278 : public LoRaModem {
|
|
|
|
public:
|
2023-08-06 20:49:48 +00:00
|
|
|
Modem_SX1278();
|
|
|
|
|
2023-08-05 22:56:07 +00:00
|
|
|
int16_t begin(const LoraPins &lora_pins, const Configuration::LoRa &lora_config, const uint16_t preambleLength, void (*setFlag)()) override;
|
|
|
|
|
|
|
|
int16_t readData(String &str) override;
|
|
|
|
|
|
|
|
int16_t setFrequency(float freq) override;
|
|
|
|
int16_t startReceive() override;
|
|
|
|
int16_t startTransmit(String &str) override;
|
|
|
|
|
|
|
|
int16_t receive(String &str) override;
|
|
|
|
|
|
|
|
float getRSSI() override;
|
|
|
|
float getSNR() override;
|
|
|
|
float getFrequencyError() override;
|
|
|
|
uint8_t getModemStatus() override;
|
|
|
|
|
|
|
|
private:
|
|
|
|
SX1278 *_radio;
|
|
|
|
};
|
|
|
|
|
2023-08-06 20:49:48 +00:00
|
|
|
class Modem_SX1268 : public LoRaModem {
|
2023-08-05 22:56:07 +00:00
|
|
|
public:
|
2023-08-06 20:49:48 +00:00
|
|
|
Modem_SX1268();
|
|
|
|
|
2023-08-05 22:56:07 +00:00
|
|
|
int16_t begin(const LoraPins &lora_pins, const Configuration::LoRa &lora_config, const uint16_t preambleLength, void (*setFlag)()) override;
|
|
|
|
|
|
|
|
int16_t readData(String &str) override;
|
|
|
|
|
|
|
|
int16_t setFrequency(float freq) override;
|
|
|
|
int16_t startReceive() override;
|
|
|
|
int16_t startTransmit(String &str) override;
|
|
|
|
|
|
|
|
int16_t receive(String &str) override;
|
|
|
|
|
|
|
|
float getRSSI() override;
|
|
|
|
float getSNR() override;
|
|
|
|
float getFrequencyError() override;
|
|
|
|
uint8_t getModemStatus() override;
|
|
|
|
|
|
|
|
private:
|
|
|
|
SX1262 *_radio;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|