remove smart pointer from Modem

This commit is contained in:
Peter Buchegger 2021-05-21 23:04:10 +02:00
parent b24f42d00a
commit b16ea9dd81
4 changed files with 15 additions and 28 deletions

View file

@ -1,10 +1,5 @@
#include "LoRa_APRS.h"
LoRa_APRS::LoRa_APRS(BoardConfig const *const boardConfig) : _LastReceivedMsg(0), _RxFrequency(LORA_RX_FREQUENCY), _TxFrequency(LORA_TX_FREQUENCY) {
SPI.begin(boardConfig->LoraSck, boardConfig->LoraMiso, boardConfig->LoraMosi, boardConfig->LoraCS);
setPins(boardConfig->LoraCS, boardConfig->LoraReset, boardConfig->LoraIRQ);
}
bool LoRa_APRS::checkMessage() {
if (!parsePacket()) {
return false;

View file

@ -4,20 +4,11 @@
#include <Arduino.h>
#include <APRS-Decoder.h>
#include <BoardFinder.h>
#include <LoRa.h>
#include <memory>
#define LORA_RX_FREQUENCY (433775000)
#define LORA_TX_FREQUENCY (433900000)
#define LORA_SPREADING_FACTOR (12)
#define LORA_SIGNAL_BANDWIDTH (125E3)
#define LORA_CODING_RATE4 (5)
class LoRa_APRS : public LoRaClass {
public:
explicit LoRa_APRS(BoardConfig const *const boardConfig);
bool checkMessage();
std::shared_ptr<APRSMessage> getMessage();

View file

@ -14,37 +14,38 @@ ModemTask::~ModemTask() {
}
bool ModemTask::setup(System &system) {
_lora_aprs = std::shared_ptr<LoRa_APRS>(new LoRa_APRS(system.getBoardConfig()));
if (!_lora_aprs->begin(_lora_aprs->getRxFrequency())) {
SPI.begin(system.getBoardConfig()->LoraSck, system.getBoardConfig()->LoraMiso, system.getBoardConfig()->LoraMosi, system.getBoardConfig()->LoraCS);
_lora_aprs.setPins(system.getBoardConfig()->LoraCS, system.getBoardConfig()->LoraReset, system.getBoardConfig()->LoraIRQ);
if (!_lora_aprs.begin(system.getUserConfig()->lora.frequencyRx)) {
logPrintlnE("Starting LoRa failed!");
_stateInfo = "LoRa-Modem failed";
_state = Error;
while (true)
;
}
_lora_aprs->setRxFrequency(system.getUserConfig()->lora.frequencyRx);
_lora_aprs->setTxFrequency(system.getUserConfig()->lora.frequencyTx);
_lora_aprs->setTxPower(system.getUserConfig()->lora.power);
_lora_aprs->setSpreadingFactor(system.getUserConfig()->lora.spreadingFactor);
_lora_aprs->setSignalBandwidth(system.getUserConfig()->lora.signalBandwidth);
_lora_aprs->setCodingRate4(system.getUserConfig()->lora.codingRate4);
_lora_aprs->enableCrc();
_lora_aprs.setRxFrequency(system.getUserConfig()->lora.frequencyRx);
_lora_aprs.setTxFrequency(system.getUserConfig()->lora.frequencyTx);
_lora_aprs.setTxPower(system.getUserConfig()->lora.power);
_lora_aprs.setSpreadingFactor(system.getUserConfig()->lora.spreadingFactor);
_lora_aprs.setSignalBandwidth(system.getUserConfig()->lora.signalBandwidth);
_lora_aprs.setCodingRate4(system.getUserConfig()->lora.codingRate4);
_lora_aprs.enableCrc();
_stateInfo = "";
return true;
}
bool ModemTask::loop(System &system) {
if (_lora_aprs->checkMessage()) {
std::shared_ptr<APRSMessage> msg = _lora_aprs->getMessage();
if (_lora_aprs.checkMessage()) {
std::shared_ptr<APRSMessage> msg = _lora_aprs.getMessage();
// msg->getAPRSBody()->setData(msg->getAPRSBody()->getData() + " 123");
logPrintD("[" + timeString() + "] ");
logPrintD("Received packet '");
logPrintD(msg->toString());
logPrintD("' with RSSI ");
logPrintD(String(_lora_aprs->packetRssi()));
logPrintD(String(_lora_aprs.packetRssi()));
logPrintD(" and SNR ");
logPrintlnD(String(_lora_aprs->packetSnr()));
logPrintlnD(String(_lora_aprs.packetSnr()));
String path = msg->getPath();
if (path.indexOf("RFONLY") != -1 || path.indexOf("NOGATE") != -1 || path.indexOf("TCPIP") != -1) {

View file

@ -14,7 +14,7 @@ public:
virtual bool loop(System &system) override;
private:
std::shared_ptr<LoRa_APRS> _lora_aprs;
LoRa_APRS _lora_aprs;
TaskQueue<std::shared_ptr<APRSMessage>> &_fromModem;
};