diff --git a/data/is-cfg.json b/data/is-cfg.json index 736d44c..66a8a09 100644 --- a/data/is-cfg.json +++ b/data/is-cfg.json @@ -35,12 +35,16 @@ "beacon": false }, "lora": { - "frequency_rx": 433775000, - "frequency_tx": 433775000, - "power": 20, - "spreading_factor": 12, - "signal_bandwidth": 125000, - "coding_rate4": 5 + "rxFrequency": 433775000, + "rxSpreadingFactor": 12, + "rxSignalBandwidth": 125000, + "rxCodingRate4": 5, + "rxGain": 1, + "txFrequency": 433900000, + "txSpreadingFactor": 11, + "txSignalBandwidth": 125000, + "txCodingRate4": 5, + "txPower": 20 }, "display": { "always_on": true, diff --git a/lib/LoRa_APRS/LoRa_APRS.cpp b/lib/LoRa_APRS/LoRa_APRS.cpp index ea28f8b..d790d77 100644 --- a/lib/LoRa_APRS/LoRa_APRS.cpp +++ b/lib/LoRa_APRS/LoRa_APRS.cpp @@ -1,6 +1,6 @@ #include "LoRa_APRS.h" -LoRa_APRS::LoRa_APRS() : _RxFrequency(433775000), _TxFrequency(433775000) { +LoRa_APRS::LoRa_APRS() : _rxFrequency(433775000), _rxSpreadingFactor(12), _rxSignalBandwidth(125000), _rxCodingRate4(5), _txFrequency(433775000), _txSpreadingFactor(12), _txSignalBandwidth(125000), _txCodingRate4(5) { } bool LoRa_APRS::checkMessage() { @@ -32,7 +32,10 @@ std::shared_ptr LoRa_APRS::getMessage() { } void LoRa_APRS::sendMessage(const std::shared_ptr msg) { - setFrequency(_TxFrequency); + setSpreadingFactor(_txSpreadingFactor); + setSignalBandwidth(_txSignalBandwidth); + setCodingRate4(_txCodingRate4); + setFrequency(_txFrequency); String data = msg->encode(); beginPacket(); // Header: @@ -42,24 +45,84 @@ void LoRa_APRS::sendMessage(const std::shared_ptr msg) { // APRS Data: write((const uint8_t *)data.c_str(), data.length()); endPacket(); - setFrequency(_RxFrequency); + setSpreadingFactor(_rxSpreadingFactor); + setSignalBandwidth(_rxSignalBandwidth); + setCodingRate4(_rxCodingRate4); + setFrequency(_rxFrequency); } void LoRa_APRS::setRxFrequency(long frequency) { - _RxFrequency = frequency; - setFrequency(_RxFrequency); + _rxFrequency = frequency; + setFrequency(_rxFrequency); } // cppcheck-suppress unusedFunction long LoRa_APRS::getRxFrequency() const { - return _RxFrequency; + return _rxFrequency; } void LoRa_APRS::setTxFrequency(long frequency) { - _TxFrequency = frequency; + _txFrequency = frequency; } // cppcheck-suppress unusedFunction long LoRa_APRS::getTxFrequency() const { - return _TxFrequency; + return _txFrequency; +} + +void LoRa_APRS::setRxSpreadingFactor(int spreadingFactor) { + _rxSpreadingFactor = spreadingFactor; + setSpreadingFactor(_rxSpreadingFactor); +} + +// cppcheck-suppress unusedFunction +long LoRa_APRS::getRxSpreadingFactor() const { + return _rxSpreadingFactor; +} + +void LoRa_APRS::setRxSignalBandwidth(long signalBandwidth) { + _rxSignalBandwidth = signalBandwidth; + setSignalBandwidth(_rxSignalBandwidth); +} + +// cppcheck-suppress unusedFunction +long LoRa_APRS::getRxSignalBandwidth() const { + return _rxSignalBandwidth; +} + +void LoRa_APRS::setRxCodingRate4(int codingRate) { + _rxCodingRate4 = codingRate; + setCodingRate4(_rxCodingRate4); +} + +// cppcheck-suppress unusedFunction +long LoRa_APRS::getRxCodingRate4() const { + return _rxCodingRate4; +} + +void LoRa_APRS::setTxSpreadingFactor(int spreadingFactor) { + _txSpreadingFactor = spreadingFactor; +} + +// cppcheck-suppress unusedFunction +long LoRa_APRS::getTxSpreadingFactor() const { + return _txSpreadingFactor; +} + +void LoRa_APRS::setTxSignalBandwidth(long signalBandwidth) { + _txSignalBandwidth = signalBandwidth; +} + +// cppcheck-suppress unusedFunction +long LoRa_APRS::getTxSignalBandwidth() const { + return _txSignalBandwidth; +} + +void LoRa_APRS::setTxCodingRate4(int codingRate) { + _txCodingRate4 = codingRate; +} + +// cppcheck-suppress unusedFunction +long LoRa_APRS::getTxCodingRate4() const { + return _txCodingRate4; } diff --git a/lib/LoRa_APRS/LoRa_APRS.h b/lib/LoRa_APRS/LoRa_APRS.h index cacd0fe..6e92229 100644 --- a/lib/LoRa_APRS/LoRa_APRS.h +++ b/lib/LoRa_APRS/LoRa_APRS.h @@ -22,10 +22,34 @@ public: void setTxFrequency(long frequency); long getTxFrequency() const; + void setRxSpreadingFactor(int spreadingFactor); + long getRxSpreadingFactor() const; + + void setRxSignalBandwidth(long signalBandwidth); + long getRxSignalBandwidth() const; + + void setRxCodingRate4(int codingRate); + long getRxCodingRate4() const; + + void setTxSpreadingFactor(int spreadingFactor); + long getTxSpreadingFactor() const; + + void setTxSignalBandwidth(long signalBandwidth); + long getTxSignalBandwidth() const; + + void setTxCodingRate4(int codingRate); + long getTxCodingRate4() const; + private: std::shared_ptr _LastReceivedMsg; - long _RxFrequency; - long _TxFrequency; + long _rxFrequency; + int _rxSpreadingFactor; + long _rxSignalBandwidth; + int _rxCodingRate4; + long _txFrequency; + int _txSpreadingFactor; + long _txSignalBandwidth; + int _txCodingRate4; }; #endif diff --git a/src/TaskModem.cpp b/src/TaskModem.cpp index 7dad353..ffb8cb2 100644 --- a/src/TaskModem.cpp +++ b/src/TaskModem.cpp @@ -16,19 +16,24 @@ ModemTask::~ModemTask() { bool ModemTask::setup(System &system) { 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)) { + if (!_lora_aprs.begin(system.getUserConfig()->lora.rxFrequency)) { 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.setRxFrequency(system.getUserConfig()->lora.rxFrequency); + _lora_aprs.setRxSpreadingFactor(system.getUserConfig()->lora.rxSpreadingFactor); + _lora_aprs.setRxSignalBandwidth(system.getUserConfig()->lora.rxSignalBandwidth); + _lora_aprs.setRxCodingRate4(system.getUserConfig()->lora.rxCodingRate4); + _lora_aprs.setGain(system.getUserConfig()->lora.rxGain); + + _lora_aprs.setTxFrequency(system.getUserConfig()->lora.txFrequency); + _lora_aprs.setTxSpreadingFactor(system.getUserConfig()->lora.txSpreadingFactor); + _lora_aprs.setTxSignalBandwidth(system.getUserConfig()->lora.txSignalBandwidth); + _lora_aprs.setTxCodingRate4(system.getUserConfig()->lora.txCodingRate4); + _lora_aprs.setTxPower(system.getUserConfig()->lora.txPower); _lora_aprs.enableCrc(); _stateInfo = ""; diff --git a/src/project_configuration.cpp b/src/project_configuration.cpp index 656d284..eeb0ff2 100644 --- a/src/project_configuration.cpp +++ b/src/project_configuration.cpp @@ -36,14 +36,21 @@ void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocumen conf.aprs_is.server = data["aprs_is"]["server"].as(); conf.aprs_is.port = data["aprs_is"]["port"] | 14580; - conf.digi.active = data["digi"]["active"] | false; - conf.digi.beacon = data["digi"]["beacon"] | false; - conf.lora.frequencyRx = data["lora"]["frequency_rx"] | 433775000; - conf.lora.frequencyTx = data["lora"]["frequency_tx"] | 433775000; - conf.lora.power = data["lora"]["power"] | 20; - conf.lora.spreadingFactor = data["lora"]["spreading_factor"] | 12; - conf.lora.signalBandwidth = data["lora"]["signal_bandwidth"] | 125000; - conf.lora.codingRate4 = data["lora"]["coding_rate4"] | 5; + conf.digi.active = data["digi"]["active"] | false; + conf.digi.beacon = data["digi"]["beacon"] | false; + + conf.lora.rxFrequency = data["lora"]["rxFrequency"] | 433775000; + conf.lora.rxSpreadingFactor = data["lora"]["rxSpreadingFactor"] | 12; + conf.lora.rxSignalBandwidth = data["lora"]["rxSignalBandwidth"] | 125000; + conf.lora.rxCodingRate4 = data["lora"]["rxCodingRate4"] | 5; + conf.lora.rxGain = data["lora"]["rxGain"] | 1; + + conf.lora.txFrequency = data["lora"]["txFrequency"] | 433775000; + conf.lora.txSpreadingFactor = data["lora"]["txSpreadingFactor"] | 12; + conf.lora.txSignalBandwidth = data["lora"]["txSignalBandwidth"] | 125000; + conf.lora.txCodingRate4 = data["lora"]["txCodingRate4"] | 5; + conf.lora.txPower = data["lora"]["txPower"] | 20; + conf.display.alwaysOn = data["display"]["always_on"] | true; conf.display.timeout = data["display"]["timeout"] | 10; conf.display.overwritePin = data["display"]["overwrite_pin"] | 0; @@ -98,12 +105,16 @@ void ProjectConfigurationManagement::writeProjectConfiguration(Configuration &co data["aprs_is"]["port"] = conf.aprs_is.port; data["digi"]["active"] = conf.digi.active; data["digi"]["beacon"] = conf.digi.beacon; - data["lora"]["frequency_rx"] = conf.lora.frequencyRx; - data["lora"]["frequency_tx"] = conf.lora.frequencyTx; - data["lora"]["power"] = conf.lora.power; - data["lora"]["spreading_factor"] = conf.lora.spreadingFactor; - data["lora"]["signal_bandwidth"] = conf.lora.signalBandwidth; - data["lora"]["coding_rate4"] = conf.lora.codingRate4; + data["lora"]["rxFrequency"] = conf.lora.rxFrequency; + data["lora"]["rxSpreadingFactor"] = conf.lora.rxSpreadingFactor; + data["lora"]["rxSignalBandwidth"] = conf.lora.rxSignalBandwidth; + data["lora"]["rxCodingRate4"] = conf.lora.rxCodingRate4; + data["lora"]["rxGain"] = conf.lora.rxGain; + data["lora"]["txFrequency"] = conf.lora.txFrequency; + data["lora"]["txSpreadingFactor"] = conf.lora.txSpreadingFactor; + data["lora"]["txSignalBandwidth"] = conf.lora.txSignalBandwidth; + data["lora"]["txCodingRate4"] = conf.lora.txCodingRate4; + data["lora"]["txPower"] = conf.lora.txPower; data["display"]["always_on"] = conf.display.alwaysOn; data["display"]["timeout"] = conf.display.timeout; data["display"]["overwrite_pin"] = conf.display.overwritePin; diff --git a/src/project_configuration.h b/src/project_configuration.h index b2ba0bc..9628451 100644 --- a/src/project_configuration.h +++ b/src/project_configuration.h @@ -66,15 +66,19 @@ public: class LoRa { public: - LoRa() : frequencyRx(433775000), frequencyTx(433775000), power(20), spreadingFactor(12), signalBandwidth(125000), codingRate4(5) { + LoRa() : rxFrequency(433775000), rxSpreadingFactor(12), rxSignalBandwidth(125000), rxCodingRate4(5), rxGain(1), txFrequency(433775000), txSpreadingFactor(12), txSignalBandwidth(125000), txCodingRate4(5), txPower(20) { } - long frequencyRx; - long frequencyTx; - int power; - int spreadingFactor; - long signalBandwidth; - int codingRate4; + long rxFrequency; + int rxSpreadingFactor; + long rxSignalBandwidth; + int rxCodingRate4; + int rxGain; + long txFrequency; + int txSpreadingFactor; + long txSignalBandwidth; + int txCodingRate4; + int txPower; }; class Display {