diff --git a/src/LoRa_APRS_iGate.cpp b/src/LoRa_APRS_iGate.cpp index db136a4..465692d 100644 --- a/src/LoRa_APRS_iGate.cpp +++ b/src/LoRa_APRS_iGate.cpp @@ -100,6 +100,15 @@ void setup() { LoRaSystem.setBoardConfig(boardConfig); LoRaSystem.setUserConfig(&userConfig); + + if (userConfig.display.vccPin != 0 && userConfig.display.gndPin != 0) { + pinMode(userConfig.display.vccPin, OUTPUT); + digitalWrite(userConfig.display.vccPin, HIGH); + pinMode(userConfig.display.gndPin, OUTPUT); + digitalWrite(userConfig.display.gndPin, LOW); + LoRaSystem.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, MODULE_NAME, "Using GPIO to power display: VCC %d , GND %d", userConfig.display.vccPin, userConfig.display.gndPin); + } + LoRaSystem.getTaskManager().addTask(&displayTask); LoRaSystem.getTaskManager().addTask(&modemTask); LoRaSystem.getTaskManager().addTask(&routerTask); @@ -145,6 +154,14 @@ void setup() { pinMode(userConfig.display.overwritePin, INPUT_PULLUP); } + if (userConfig.display.vccPin != 0 && userConfig.display.gndPin != 0) { + pinMode(userConfig.display.vccPin, OUTPUT); + digitalWrite(userConfig.display.vccPin, HIGH); + pinMode(userConfig.display.gndPin, OUTPUT); + digitalWrite(userConfig.display.gndPin, LOW); + LoRaSystem.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, MODULE_NAME, "Using GPIO to power display: VCC %d , GND %d", userConfig.display.vccPin, userConfig.display.gndPin); + } + delay(5000); LoRaSystem.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_INFO, MODULE_NAME, "setup done..."); } diff --git a/src/project_configuration.cpp b/src/project_configuration.cpp index 6deebf5..92e6d43 100644 --- a/src/project_configuration.cpp +++ b/src/project_configuration.cpp @@ -62,6 +62,8 @@ void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocumen conf.display.alwaysOn = data["display"]["always_on"] | true; conf.display.timeout = data["display"]["timeout"] | 10; conf.display.overwritePin = data["display"]["overwrite_pin"] | 0; + conf.display.vccPin = data["display"]["pin_vcc"] | 0; + conf.display.gndPin = data["display"]["pin_gnd"] | 0; conf.display.turn180 = data["display"]["turn180"] | true; conf.ftp.active = data["ftp"]["active"] | false; @@ -140,6 +142,8 @@ void ProjectConfigurationManagement::writeProjectConfiguration(Configuration &co data["display"]["always_on"] = conf.display.alwaysOn; data["display"]["timeout"] = conf.display.timeout; data["display"]["overwrite_pin"] = conf.display.overwritePin; + data["display"]["pin_vcc"] = conf.display.vccPin; + data["display"]["pin_gnd"] = conf.display.gndPin; data["display"]["turn180"] = conf.display.turn180; data["ftp"]["active"] = conf.ftp.active; JsonArray users = data["ftp"].createNestedArray("user"); diff --git a/src/project_configuration.h b/src/project_configuration.h index 234a83a..de64c60 100644 --- a/src/project_configuration.h +++ b/src/project_configuration.h @@ -94,12 +94,14 @@ public: class Display { public: - Display() : alwaysOn(true), timeout(10), overwritePin(0), turn180(true) { + Display() : alwaysOn(true), timeout(10), overwritePin(0), vccPin(0), gndPin(0), turn180(true) { } bool alwaysOn; int timeout; int overwritePin; + int vccPin; + int gndPin; bool turn180; };