diff --git a/data/is-cfg.json b/data/is-cfg.json index 5018eb0..cf49d82 100644 --- a/data/is-cfg.json +++ b/data/is-cfg.json @@ -10,6 +10,7 @@ "dns2": "192.0.2.2" }, "wifi": { + "active": true, "AP": [ { "SSID": "YOURSSID", @@ -37,6 +38,7 @@ }, "lora": { "frequency_rx": 433775000, + "gain_rx": 0, "frequency_tx": 433775000, "power": 20, "spreading_factor": 12, diff --git a/lib/Display/Display.cpp b/lib/Display/Display.cpp index 95766b5..16a7e9d 100644 --- a/lib/Display/Display.cpp +++ b/lib/Display/Display.cpp @@ -42,6 +42,11 @@ void Display::setDisplaySaveTimeout(uint32_t timeout) { _displaySaveModeTimer.setTimeout(timeout * 1000); } +void Display::activateDistplay() +{ + _disp->displayOn(); +} + void Display::update() { if (_displayFrameRate.check()) { diff --git a/lib/Display/Display.h b/lib/Display/Display.h index 045e898..6347737 100644 --- a/lib/Display/Display.h +++ b/lib/Display/Display.h @@ -37,6 +37,8 @@ public: void activateDisplaySaveMode(); void setDisplaySaveTimeout(uint32_t timeout); + void activateDistplay(); + // functions for update loop void update(); void addFrame(std::shared_ptr frame); diff --git a/lib/LoRa_APRS/LoRa_APRS.cpp b/lib/LoRa_APRS/LoRa_APRS.cpp index ea28f8b..48d2dfa 100644 --- a/lib/LoRa_APRS/LoRa_APRS.cpp +++ b/lib/LoRa_APRS/LoRa_APRS.cpp @@ -50,6 +50,10 @@ void LoRa_APRS::setRxFrequency(long frequency) { setFrequency(_RxFrequency); } +void LoRa_APRS::setRxGain(uint8_t gain) { + setGain(gain); +} + // cppcheck-suppress unusedFunction long LoRa_APRS::getRxFrequency() const { return _RxFrequency; diff --git a/lib/LoRa_APRS/LoRa_APRS.h b/lib/LoRa_APRS/LoRa_APRS.h index cacd0fe..3d6eff4 100644 --- a/lib/LoRa_APRS/LoRa_APRS.h +++ b/lib/LoRa_APRS/LoRa_APRS.h @@ -19,6 +19,8 @@ public: void setRxFrequency(long frequency); long getRxFrequency() const; + void setRxGain(uint8_t gain); + void setTxFrequency(long frequency); long getTxFrequency() const; diff --git a/lib/System/TaskManager.cpp b/lib/System/TaskManager.cpp index b53bc1d..d524ad0 100644 --- a/lib/System/TaskManager.cpp +++ b/lib/System/TaskManager.cpp @@ -14,7 +14,9 @@ void TaskManager::addAlwaysRunTask(Task *task) { } std::list TaskManager::getTasks() { - return _tasks; + std::list tasks = _alwaysRunTasks; + std::copy(_tasks.begin(), _tasks.end(), std::back_inserter(tasks)); + return tasks; } bool TaskManager::setup(System &system) { diff --git a/src/LoRa_APRS_iGate.cpp b/src/LoRa_APRS_iGate.cpp index 1eb69cc..6e4cf58 100644 --- a/src/LoRa_APRS_iGate.cpp +++ b/src/LoRa_APRS_iGate.cpp @@ -18,7 +18,7 @@ #include "TaskWifi.h" #include "project_configuration.h" -#define VERSION "21.35.0" +#define VERSION "21.44.0-dev" String create_lat_aprs(double lat); String create_long_aprs(double lng); @@ -100,9 +100,10 @@ void setup() { LoRaSystem.getTaskManager().addTask(&routerTask); if (userConfig.aprs_is.active) { - if (boardConfig->Type == eETH_BOARD) { + if (boardConfig->Type == eETH_BOARD && !userConfig.wifi.active) { LoRaSystem.getTaskManager().addAlwaysRunTask(ðTask); - } else { + } + if (userConfig.wifi.active) { LoRaSystem.getTaskManager().addAlwaysRunTask(&wifiTask); } LoRaSystem.getTaskManager().addTask(&otaTask); diff --git a/src/TaskDisplay.cpp b/src/TaskDisplay.cpp index bfe6d0b..6d3ab19 100644 --- a/src/TaskDisplay.cpp +++ b/src/TaskDisplay.cpp @@ -25,6 +25,9 @@ bool DisplayTask::setup(System &system) { } bool DisplayTask::loop(System &system) { + if (system.getUserConfig()->display.overwritePin != 0 && !digitalRead(system.getUserConfig()->display.overwritePin)) { + system.getDisplay().activateDistplay(); + } system.getDisplay().update(); return true; } diff --git a/src/TaskModem.cpp b/src/TaskModem.cpp index 7dad353..d3908bc 100644 --- a/src/TaskModem.cpp +++ b/src/TaskModem.cpp @@ -24,6 +24,7 @@ bool ModemTask::setup(System &system) { ; } _lora_aprs.setRxFrequency(system.getUserConfig()->lora.frequencyRx); + _lora_aprs.setRxGain(system.getUserConfig()->lora.gainRx); _lora_aprs.setTxFrequency(system.getUserConfig()->lora.frequencyTx); _lora_aprs.setTxPower(system.getUserConfig()->lora.power); _lora_aprs.setSpreadingFactor(system.getUserConfig()->lora.spreadingFactor); diff --git a/src/TaskRouter.cpp b/src/TaskRouter.cpp index ec8f485..f64f6b0 100644 --- a/src/TaskRouter.cpp +++ b/src/TaskRouter.cpp @@ -94,7 +94,7 @@ bool RouterTask::loop(System &system) { } uint32_t diff = _beacon_timer.getTriggerTimeInSec(); - _stateInfo = "beacon " + String(uint32_t(diff / 60)) + ":" + String(uint32_t(diff % 60)); + _stateInfo = "beacon " + String(uint32_t(diff / 600)) + String(uint32_t(diff / 60) % 10) + ":" + String(uint32_t(diff / 10) % 6) + String(uint32_t(diff % 10)); return true; } diff --git a/src/project_configuration.cpp b/src/project_configuration.cpp index c5e044f..cd3702b 100644 --- a/src/project_configuration.cpp +++ b/src/project_configuration.cpp @@ -18,7 +18,8 @@ void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocumen conf.network.dns2.fromString(data["network"]["dns2"].as()); } - JsonArray aps = data["wifi"]["AP"].as(); + conf.wifi.active = data["wifi"]["active"]; + JsonArray aps = data["wifi"]["AP"].as(); for (JsonVariant v : aps) { Configuration::Wifi::AP ap; ap.SSID = v["SSID"].as(); @@ -40,6 +41,7 @@ void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocumen conf.digi.active = data["digi"]["active"] | false; conf.digi.beacon = data["digi"]["beacon"] | false; conf.lora.frequencyRx = data["lora"]["frequency_rx"] | 433775000; + conf.lora.gainRx = data["lora"]["gain_rx"] | 0; conf.lora.frequencyTx = data["lora"]["frequency_tx"] | 433775000; conf.lora.power = data["lora"]["power"] | 20; conf.lora.spreadingFactor = data["lora"]["spreading_factor"] | 12; @@ -84,7 +86,8 @@ void ProjectConfigurationManagement::writeProjectConfiguration(Configuration &co data["network"]["dns2"] = conf.network.dns2.toString(); } - JsonArray aps = data["wifi"].createNestedArray("AP"); + data["wifi"]["active"] = conf.wifi.active; + JsonArray aps = data["wifi"].createNestedArray("AP"); for (Configuration::Wifi::AP ap : conf.wifi.APs) { JsonObject v = aps.createNestedObject(); v["SSID"] = ap.SSID; @@ -101,6 +104,7 @@ void ProjectConfigurationManagement::writeProjectConfiguration(Configuration &co data["digi"]["active"] = conf.digi.active; data["digi"]["beacon"] = conf.digi.beacon; data["lora"]["frequency_rx"] = conf.lora.frequencyRx; + data["lora"]["gain_rx"] = conf.lora.gainRx; data["lora"]["frequency_tx"] = conf.lora.frequencyTx; data["lora"]["power"] = conf.lora.power; data["lora"]["spreading_factor"] = conf.lora.spreadingFactor; diff --git a/src/project_configuration.h b/src/project_configuration.h index cdc0982..9ec3432 100644 --- a/src/project_configuration.h +++ b/src/project_configuration.h @@ -22,15 +22,16 @@ public: class Wifi { public: + Wifi() : active(true) { + } + + bool active; class AP { public: String SSID; String password; }; - Wifi() { - } - std::list APs; }; @@ -70,12 +71,13 @@ public: LoRa() : frequencyRx(433775000), frequencyTx(433775000), power(20), spreadingFactor(12), signalBandwidth(125000), codingRate4(5) { } - long frequencyRx; - long frequencyTx; - int power; - int spreadingFactor; - long signalBandwidth; - int codingRate4; + long frequencyRx; + uint8_t gainRx; + long frequencyTx; + int power; + int spreadingFactor; + long signalBandwidth; + int codingRate4; }; class Display {