From ff25ad46962524cfccb74604f8ab852bb0567fa8 Mon Sep 17 00:00:00 2001 From: Peter Buchegger Date: Fri, 12 Mar 2021 23:21:45 +0100 Subject: [PATCH] add clang-format and format all source files --- .clang-format | 149 +++++ .vscode/extensions.json | 3 +- .vscode/settings.json | 4 + lib/BoardFinder/BoardFinder.cpp | 246 ++++---- lib/BoardFinder/BoardFinder.h | 72 +-- lib/ConfigurationManagement/configuration.cpp | 90 ++- lib/ConfigurationManagement/configuration.h | 17 +- lib/Display/Bitmap.cpp | 575 ++++++++---------- lib/Display/Bitmap.h | 61 +- lib/Display/Display.cpp | 165 +++-- lib/Display/Display.h | 87 +-- lib/LoRa_APRS/LoRa_APRS.cpp | 110 ++-- lib/LoRa_APRS/LoRa_APRS.h | 41 +- lib/PowerManagement/power_management.cpp | 48 +- lib/PowerManagement/power_management.h | 21 +- lib/TaskManager/TaskManager.cpp | 138 ++--- lib/TaskManager/TaskManager.h | 100 +-- lib/TaskManager/TaskQueue.h | 34 +- lib/TaskManager/Timer.cpp | 34 +- lib/TaskManager/Timer.h | 21 +- src/LoRa_APRS_iGate.cpp | 212 +++---- src/Task.cpp | 26 - src/Task.h | 32 +- src/TaskAprsIs.cpp | 120 ++-- src/TaskAprsIs.h | 23 +- src/TaskDisplay.cpp | 39 +- src/TaskDisplay.h | 11 +- src/TaskEth.cpp | 132 ++-- src/TaskEth.h | 11 +- src/TaskFTP.cpp | 74 +-- src/TaskFTP.h | 17 +- src/TaskLora.cpp | 96 ++- src/TaskLora.h | 17 +- src/TaskNTP.cpp | 50 +- src/TaskNTP.h | 17 +- src/TaskOTA.cpp | 102 ++-- src/TaskOTA.h | 17 +- src/TaskWifi.cpp | 73 +-- src/TaskWifi.h | 15 +- src/project_configuration.cpp | 210 +++---- src/project_configuration.h | 162 +++-- 41 files changed, 1664 insertions(+), 1808 deletions(-) create mode 100644 .clang-format create mode 100644 .vscode/settings.json delete mode 100644 src/Task.cpp diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..06c7984 --- /dev/null +++ b/.clang-format @@ -0,0 +1,149 @@ +--- +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignConsecutiveMacros: true +AlignConsecutiveAssignments: true +AlignConsecutiveBitFields: true +AlignConsecutiveDeclarations: true +AlignEscapedNewlines: Left +AlignOperands: Align +AlignTrailingComments: true +AllowAllArgumentsOnNextLine: true +AllowAllConstructorInitializersOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortEnumsOnASingleLine: false +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortLambdasOnASingleLine: None +AllowShortIfStatementsOnASingleLine: Never +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeInheritanceComma: false +BreakInheritanceList: BeforeColon +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 500 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DeriveLineEnding: true +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + - Regex: '.*' + Priority: 1 + SortPriority: 0 +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentCaseLabels: false +IndentCaseBlocks: false +IndentGotoLabels: true +IndentPPDirectives: None +IndentExternBlock: AfterExternBlock +IndentWidth: 2 +IndentWrappedFunctionNames: false +InsertTrailingCommas: None +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Right +ReflowComments: true +SortIncludes: true +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +SpaceBeforeSquareBrackets: false +Standard: Latest +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseCRLF: false +UseTab: Never +WhitespaceSensitiveMacros: + - STRINGIZE + - PP_STRINGIZE + - BOOST_PP_STRINGIZE +... + diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 0f0d740..27bdd05 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -2,6 +2,7 @@ // See http://go.microsoft.com/fwlink/?LinkId=827846 // for the documentation about the extensions.json format "recommendations": [ - "platformio.platformio-ide" + "platformio.platformio-ide", + "xaver.clang-format" ] } diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..38d51f2 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "files.insertFinalNewline": true, + "editor.formatOnSave": true +} \ No newline at end of file diff --git a/lib/BoardFinder/BoardFinder.cpp b/lib/BoardFinder/BoardFinder.cpp index 8b91cb5..57d3d28 100644 --- a/lib/BoardFinder/BoardFinder.cpp +++ b/lib/BoardFinder/BoardFinder.cpp @@ -1,167 +1,135 @@ +#include "BoardFinder.h" #include #include -#include "BoardFinder.h" -BoardConfig::BoardConfig( - String name, BoardType type, - uint8_t oledsda, uint8_t oledscl, uint8_t oledaddr, uint8_t oledreset, - uint8_t lorasck, uint8_t loramiso, uint8_t loramosi, uint8_t loracs, uint8_t lorareset, uint8_t lorairq, - bool needcheckpowerchip, bool powercheckstatus) - : - Name(name), Type(type), - OledSda(oledsda), OledScl(oledscl), OledAddr(oledaddr), OledReset(oledreset), - LoraSck(lorasck), LoraMiso(loramiso), LoraMosi(loramosi), LoraCS(loracs), LoraReset(lorareset), LoraIRQ(lorairq), - needCheckPowerChip(needcheckpowerchip), powerCheckStatus(powercheckstatus) -{ +BoardConfig::BoardConfig(String name, BoardType type, uint8_t oledsda, uint8_t oledscl, uint8_t oledaddr, uint8_t oledreset, uint8_t lorasck, uint8_t loramiso, uint8_t loramosi, uint8_t loracs, uint8_t lorareset, uint8_t lorairq, bool needcheckpowerchip, bool powercheckstatus) + : Name(name), Type(type), OledSda(oledsda), OledScl(oledscl), OledAddr(oledaddr), OledReset(oledreset), LoraSck(lorasck), LoraMiso(loramiso), LoraMosi(loramosi), LoraCS(loracs), LoraReset(lorareset), LoraIRQ(lorairq), needCheckPowerChip(needcheckpowerchip), powerCheckStatus(powercheckstatus) { } -BoardFinder::BoardFinder(std::list> & boardConfigs) - : _boardConfigs(boardConfigs) -{ +BoardFinder::BoardFinder(std::list> &boardConfigs) : _boardConfigs(boardConfigs) { } -std::shared_ptr BoardFinder::searchBoardConfig() -{ - logPrintlnI("looking for a board config."); - logPrintlnI("searching for OLED..."); +std::shared_ptr BoardFinder::searchBoardConfig() { + logPrintlnI("looking for a board config."); + logPrintlnI("searching for OLED..."); - for(std::shared_ptr boardconf : _boardConfigs) - { - if(boardconf->needCheckPowerChip && checkPowerConfig(boardconf) == boardconf->powerCheckStatus) - { - PowerManagement powerManagement; - TwoWire wire(0); - wire.begin(boardconf->OledSda, boardconf->OledScl); - powerManagement.begin(wire); - powerManagement.activateOLED(); - } - else if(boardconf->needCheckPowerChip) - { - continue; - } - if(checkOledConfig(boardconf)) - { - logPrintI("found a board config: "); - logPrintlnI(boardconf->Name); - return boardconf; - } - } + for (std::shared_ptr boardconf : _boardConfigs) { + if (boardconf->needCheckPowerChip && checkPowerConfig(boardconf) == boardconf->powerCheckStatus) { + PowerManagement powerManagement; + TwoWire wire(0); + wire.begin(boardconf->OledSda, boardconf->OledScl); + powerManagement.begin(wire); + powerManagement.activateOLED(); + } else if (boardconf->needCheckPowerChip) { + continue; + } + if (checkOledConfig(boardconf)) { + logPrintI("found a board config: "); + logPrintlnI(boardconf->Name); + return boardconf; + } + } - logPrintlnW("could not find OLED, will search for the modem now..."); + logPrintlnW("could not find OLED, will search for the modem now..."); - for(std::shared_ptr boardconf : _boardConfigs) - { - if(boardconf->needCheckPowerChip && checkPowerConfig(boardconf) == boardconf->powerCheckStatus) - { - PowerManagement powerManagement; - TwoWire wire(0); - wire.begin(boardconf->OledSda, boardconf->OledScl); - powerManagement.begin(wire); - powerManagement.activateLoRa(); - } - if(checkModemConfig(boardconf)) - { - logPrintI("found a board config: "); - logPrintlnI(boardconf->Name); - return boardconf; - } - } + for (std::shared_ptr boardconf : _boardConfigs) { + if (boardconf->needCheckPowerChip && checkPowerConfig(boardconf) == boardconf->powerCheckStatus) { + PowerManagement powerManagement; + TwoWire wire(0); + wire.begin(boardconf->OledSda, boardconf->OledScl); + powerManagement.begin(wire); + powerManagement.activateLoRa(); + } + if (checkModemConfig(boardconf)) { + logPrintI("found a board config: "); + logPrintlnI(boardconf->Name); + return boardconf; + } + } - logPrintlnW("could not find a board config!"); + logPrintlnW("could not find a board config!"); - return 0; + return 0; } -std::shared_ptr BoardFinder::getBoardConfig(String name) -{ - std::_List_iterator> elem = std::find_if(_boardConfigs.begin(), _boardConfigs.end(), [&](std::shared_ptr conf) - { - return conf->Name == name; - }); - if(elem == _boardConfigs.end()) - { - return 0; - } - return *elem; +std::shared_ptr BoardFinder::getBoardConfig(String name) { + std::_List_iterator> elem = std::find_if(_boardConfigs.begin(), _boardConfigs.end(), [&](std::shared_ptr conf) { + return conf->Name == name; + }); + if (elem == _boardConfigs.end()) { + return 0; + } + return *elem; } -bool BoardFinder::checkOledConfig(std::shared_ptr boardConfig) -{ - if(boardConfig->OledReset > 0) - { - pinMode(boardConfig->OledReset, OUTPUT); - digitalWrite(boardConfig->OledReset, HIGH); - delay(1); - digitalWrite(boardConfig->OledReset, LOW); - delay(10); - digitalWrite(boardConfig->OledReset, HIGH); - } - TwoWire wire(0); - if(!wire.begin(boardConfig->OledSda, boardConfig->OledScl)) - { - logPrintlnW("issue with wire"); - return false; - } - wire.beginTransmission(boardConfig->OledAddr); - if(!wire.endTransmission()) - { - return true; - } - return false; +bool BoardFinder::checkOledConfig(std::shared_ptr boardConfig) { + if (boardConfig->OledReset > 0) { + pinMode(boardConfig->OledReset, OUTPUT); + digitalWrite(boardConfig->OledReset, HIGH); + delay(1); + digitalWrite(boardConfig->OledReset, LOW); + delay(10); + digitalWrite(boardConfig->OledReset, HIGH); + } + TwoWire wire(0); + if (!wire.begin(boardConfig->OledSda, boardConfig->OledScl)) { + logPrintlnW("issue with wire"); + return false; + } + wire.beginTransmission(boardConfig->OledAddr); + if (!wire.endTransmission()) { + return true; + } + return false; } -bool BoardFinder::checkModemConfig(std::shared_ptr boardConfig) -{ - pinMode(boardConfig->LoraReset, OUTPUT); - digitalWrite(boardConfig->LoraReset, LOW); - delay(10); - digitalWrite(boardConfig->LoraReset, HIGH); - delay(10); +bool BoardFinder::checkModemConfig(std::shared_ptr boardConfig) { + pinMode(boardConfig->LoraReset, OUTPUT); + digitalWrite(boardConfig->LoraReset, LOW); + delay(10); + digitalWrite(boardConfig->LoraReset, HIGH); + delay(10); - pinMode(boardConfig->LoraCS, OUTPUT); - digitalWrite(boardConfig->LoraCS, HIGH); + pinMode(boardConfig->LoraCS, OUTPUT); + digitalWrite(boardConfig->LoraCS, HIGH); - SPIClass spi; - spi.begin(boardConfig->LoraSck, boardConfig->LoraMiso, boardConfig->LoraMosi, boardConfig->LoraCS); + SPIClass spi; + spi.begin(boardConfig->LoraSck, boardConfig->LoraMiso, boardConfig->LoraMosi, boardConfig->LoraCS); - digitalWrite(boardConfig->LoraCS, LOW); + digitalWrite(boardConfig->LoraCS, LOW); - spi.beginTransaction(SPISettings(8E6, MSBFIRST, SPI_MODE0)); - spi.transfer(0x42); - uint8_t response = spi.transfer(0x00); - spi.endTransaction(); + spi.beginTransaction(SPISettings(8E6, MSBFIRST, SPI_MODE0)); + spi.transfer(0x42); + uint8_t response = spi.transfer(0x00); + spi.endTransaction(); - digitalWrite(boardConfig->LoraCS, HIGH); + digitalWrite(boardConfig->LoraCS, HIGH); - if(response == 0x12) - { - return true; - } - return false; + if (response == 0x12) { + return true; + } + return false; } -bool BoardFinder::checkPowerConfig(std::shared_ptr boardConfig) -{ - TwoWire wire(0); - if(!wire.begin(boardConfig->OledSda, boardConfig->OledScl)) - { - logPrintlnW("issue with wire"); - return false; - } - wire.beginTransmission(0x34); - wire.write(0x03); - wire.endTransmission(); - - wire.requestFrom(0x34, 1); - int response = wire.read(); - wire.endTransmission(); +bool BoardFinder::checkPowerConfig(std::shared_ptr boardConfig) { + TwoWire wire(0); + if (!wire.begin(boardConfig->OledSda, boardConfig->OledScl)) { + logPrintlnW("issue with wire"); + return false; + } + wire.beginTransmission(0x34); + wire.write(0x03); + wire.endTransmission(); - logPrintlnD(String(response)); - if(response == 0x03) - { - logPrintlnD("power chip found!"); - return true; - } - logPrintlnD("power chip NOT found"); - return false; + wire.requestFrom(0x34, 1); + int response = wire.read(); + wire.endTransmission(); + + logPrintlnD(String(response)); + if (response == 0x03) { + logPrintlnD("power chip found!"); + return true; + } + logPrintlnD("power chip NOT found"); + return false; } diff --git a/lib/BoardFinder/BoardFinder.h b/lib/BoardFinder/BoardFinder.h index 4dbe435..04dc8a4 100644 --- a/lib/BoardFinder/BoardFinder.h +++ b/lib/BoardFinder/BoardFinder.h @@ -5,64 +5,58 @@ #include #include -#include #include +#include enum BoardType { - eHELTEC_WIFI_LORA_32_V1, - eHELTEC_WIFI_LORA_32_V2, - eTTGO_LORA32_V1, - eTTGO_LORA32_V2, - eTTGO_T_Beam_V0_7, - eTTGO_T_Beam_V1_0, - eETH_BOARD, - eTRACKERD + eHELTEC_WIFI_LORA_32_V1, + eHELTEC_WIFI_LORA_32_V2, + eTTGO_LORA32_V1, + eTTGO_LORA32_V2, + eTTGO_T_Beam_V0_7, + eTTGO_T_Beam_V1_0, + eETH_BOARD, + eTRACKERD }; -class BoardConfig -{ +class BoardConfig { public: - explicit BoardConfig( - String name, BoardType type, - uint8_t oledsda, uint8_t oledscl, uint8_t oledaddr, uint8_t oledreset, - uint8_t lorasck, uint8_t loramiso, uint8_t loramosi, uint8_t loracs, uint8_t lorareset, uint8_t lorairq, - bool needcheckpowerchip = false, bool powercheckstatus = false); + explicit BoardConfig(String name, BoardType type, uint8_t oledsda, uint8_t oledscl, uint8_t oledaddr, uint8_t oledreset, uint8_t lorasck, uint8_t loramiso, uint8_t loramosi, uint8_t loracs, uint8_t lorareset, uint8_t lorairq, bool needcheckpowerchip = false, bool powercheckstatus = false); - String Name; - BoardType Type; + String Name; + BoardType Type; - uint8_t OledSda; - uint8_t OledScl; - uint8_t OledAddr; - uint8_t OledReset; + uint8_t OledSda; + uint8_t OledScl; + uint8_t OledAddr; + uint8_t OledReset; - uint8_t LoraSck; - uint8_t LoraMiso; - uint8_t LoraMosi; - uint8_t LoraCS; - uint8_t LoraReset; - uint8_t LoraIRQ; + uint8_t LoraSck; + uint8_t LoraMiso; + uint8_t LoraMosi; + uint8_t LoraCS; + uint8_t LoraReset; + uint8_t LoraIRQ; - bool needCheckPowerChip; - bool powerCheckStatus; + bool needCheckPowerChip; + bool powerCheckStatus; }; -class BoardFinder -{ +class BoardFinder { public: - explicit BoardFinder(std::list> & boardConfigs); + explicit BoardFinder(std::list> &boardConfigs); - std::shared_ptr searchBoardConfig(); + std::shared_ptr searchBoardConfig(); - std::shared_ptr getBoardConfig(String name); + std::shared_ptr getBoardConfig(String name); private: - std::list> _boardConfigs; + std::list> _boardConfigs; - bool checkOledConfig(std::shared_ptr boardConfig); - bool checkModemConfig(std::shared_ptr boardConfig); - bool checkPowerConfig(std::shared_ptr boardConfig); + bool checkOledConfig(std::shared_ptr boardConfig); + bool checkModemConfig(std::shared_ptr boardConfig); + bool checkPowerConfig(std::shared_ptr boardConfig); }; #endif diff --git a/lib/ConfigurationManagement/configuration.cpp b/lib/ConfigurationManagement/configuration.cpp index b713489..7a35fdc 100644 --- a/lib/ConfigurationManagement/configuration.cpp +++ b/lib/ConfigurationManagement/configuration.cpp @@ -1,65 +1,55 @@ +#include "configuration.h" #include #include -#include "configuration.h" -ConfigurationManagement::ConfigurationManagement(String FilePath) - : mFilePath(FilePath) -{ - if(!SPIFFS.begin(true)) - { - logPrintlnE("Mounting SPIFFS was not possible. Trying to format SPIFFS..."); - SPIFFS.format(); - if(!SPIFFS.begin()) - { - logPrintlnE("Formating SPIFFS was not okay!"); - } - } +ConfigurationManagement::ConfigurationManagement(String FilePath) : mFilePath(FilePath) { + if (!SPIFFS.begin(true)) { + logPrintlnE("Mounting SPIFFS was not possible. Trying to format SPIFFS..."); + SPIFFS.format(); + if (!SPIFFS.begin()) { + logPrintlnE("Formating SPIFFS was not okay!"); + } + } } -ConfigurationManagement::~ConfigurationManagement() -{ +ConfigurationManagement::~ConfigurationManagement() { } -std::shared_ptr ConfigurationManagement::readConfiguration() -{ - File file = SPIFFS.open(mFilePath); - if(!file) - { - logPrintlnE("Failed to open file for reading..."); - return 0; - } - DynamicJsonDocument data(2048); - DeserializationError error = deserializeJson(data, file); - if(error) - { - logPrintlnW("Failed to read file, using default configuration."); - } - //serializeJson(data, Serial); - //Serial.println(); - file.close(); +std::shared_ptr ConfigurationManagement::readConfiguration() { + File file = SPIFFS.open(mFilePath); + if (!file) { + logPrintlnE("Failed to open file for reading..."); + return 0; + } + DynamicJsonDocument data(2048); + DeserializationError error = deserializeJson(data, file); + if (error) { + logPrintlnW("Failed to read file, using default configuration."); + } + // serializeJson(data, Serial); + // Serial.println(); + file.close(); - std::shared_ptr conf = readProjectConfiguration(data); + std::shared_ptr conf = readProjectConfiguration(data); - // update config in memory to get the new fields: - writeConfiguration(conf); + // update config in memory to get the new fields: + writeConfiguration(conf); - return conf; + return conf; } -void ConfigurationManagement::writeConfiguration(std::shared_ptr conf) -{ - File file = SPIFFS.open(mFilePath, "w"); - if(!file) - { - logPrintlnE("Failed to open file for writing..."); - return; - } - DynamicJsonDocument data(2048); +void ConfigurationManagement::writeConfiguration(std::shared_ptr conf) { + File file = SPIFFS.open(mFilePath, "w"); + if (!file) { + logPrintlnE("Failed to open file for writing..."); + return; + } + DynamicJsonDocument data(2048); - writeProjectConfiguration(conf, data); + writeProjectConfiguration(conf, data); - serializeJson(data, file); - //serializeJson(data, Serial); - //Serial.println(); - file.close(); + serializeJson(data, file); + // serializeJson(data, Serial); + // Serial.println(); + file.close(); } diff --git a/lib/ConfigurationManagement/configuration.h b/lib/ConfigurationManagement/configuration.h index 5c66303..cb7b6d3 100644 --- a/lib/ConfigurationManagement/configuration.h +++ b/lib/ConfigurationManagement/configuration.h @@ -11,20 +11,19 @@ class Configuration; -class ConfigurationManagement -{ +class ConfigurationManagement { public: - explicit ConfigurationManagement(String FilePath); - virtual ~ConfigurationManagement(); + explicit ConfigurationManagement(String FilePath); + virtual ~ConfigurationManagement(); - std::shared_ptr readConfiguration(); - void writeConfiguration(std::shared_ptr conf); + std::shared_ptr readConfiguration(); + void writeConfiguration(std::shared_ptr conf); private: - virtual std::shared_ptr readProjectConfiguration(DynamicJsonDocument & data) = 0; - virtual void writeProjectConfiguration(std::shared_ptr conf, DynamicJsonDocument & data) = 0; + virtual std::shared_ptr readProjectConfiguration(DynamicJsonDocument &data) = 0; + virtual void writeProjectConfiguration(std::shared_ptr conf, DynamicJsonDocument &data) = 0; - const String mFilePath; + const String mFilePath; }; #endif diff --git a/lib/Display/Bitmap.cpp b/lib/Display/Bitmap.cpp index b8518b8..7321a45 100644 --- a/lib/Display/Bitmap.cpp +++ b/lib/Display/Bitmap.cpp @@ -1,424 +1,353 @@ #include "Bitmap.h" -#include "OLEDDisplay.h" #include "FontConfig.h" +#include "OLEDDisplay.h" //#include "OLEDDisplayFonts.h" // cppcheck-suppress unusedFunction -Bitmap::Bitmap(uint width, uint height) - : _width(width), _height(height), _buffer(0) -{ - allocateBuffer(); +Bitmap::Bitmap(uint width, uint height) : _width(width), _height(height), _buffer(0) { + allocateBuffer(); } // cppcheck-suppress unusedFunction -Bitmap::Bitmap(OLEDDisplay * display) - : _width(display->getWidth()), _height(display->getHeight()), _buffer(0) -{ - allocateBuffer(); +Bitmap::Bitmap(OLEDDisplay *display) : _width(display->getWidth()), _height(display->getHeight()), _buffer(0) { + allocateBuffer(); } // cppcheck-suppress unusedFunction -Bitmap::~Bitmap() -{ - if(_buffer != 0) - { - delete _buffer; - } +Bitmap::~Bitmap() { + if (_buffer != 0) { + delete _buffer; + } } // cppcheck-suppress unusedFunction -uint Bitmap::getWidth() const -{ - return _width; +uint Bitmap::getWidth() const { + return _width; } // cppcheck-suppress unusedFunction -uint Bitmap::getHeight() const -{ - return _height; +uint Bitmap::getHeight() const { + return _height; } // cppcheck-suppress unusedFunction -void Bitmap::setPixel(int x, int y) -{ - if(x >= 0 && x < _width && y >= 0 && y < _height) - { - _buffer[x + (y / 8) * _width] |= (1 << (y % 8)); - } +void Bitmap::setPixel(int x, int y) { + if (x >= 0 && x < _width && y >= 0 && y < _height) { + _buffer[x + (y / 8) * _width] |= (1 << (y % 8)); + } } // cppcheck-suppress unusedFunction -void Bitmap::clearPixel(int x, int y) -{ - if(x >= 0 && x < _width && y >= 0 && y < _height) - { - _buffer[x + (y / 8) * _width] &= ~(1 << (y % 8)); - } +void Bitmap::clearPixel(int x, int y) { + if (x >= 0 && x < _width && y >= 0 && y < _height) { + _buffer[x + (y / 8) * _width] &= ~(1 << (y % 8)); + } } // cppcheck-suppress unusedFunction -bool Bitmap::getPixel(int x, int y) const -{ - if(x >= 0 && x < _width && y >= 0 && y < _height) - { - return _buffer[x + (y / 8) * _width] & (1 << (y % 8)); - } - return false; +bool Bitmap::getPixel(int x, int y) const { + if (x >= 0 && x < _width && y >= 0 && y < _height) { + return _buffer[x + (y / 8) * _width] & (1 << (y % 8)); + } + return false; } // cppcheck-suppress unusedFunction -void Bitmap::clear() -{ - memset(_buffer, 0, _width * _height / 8); +void Bitmap::clear() { + memset(_buffer, 0, _width * _height / 8); } // cppcheck-suppress unusedFunction -void Bitmap::drawLine(int x0, int y0, int x1, int y1) -{ - int dx = abs(x1 - x0); - int dy = abs(y1 - y0); - int sx = x0 < x1 ? 1 : -1; - int sy = y0 < y1 ? 1 : -1; - int err = (dx > dy ? dx : -dy) / 2; +void Bitmap::drawLine(int x0, int y0, int x1, int y1) { + int dx = abs(x1 - x0); + int dy = abs(y1 - y0); + int sx = x0 < x1 ? 1 : -1; + int sy = y0 < y1 ? 1 : -1; + int err = (dx > dy ? dx : -dy) / 2; - while(true) - { - setPixel(x0, y0); - if(x0 == x1 && y0 == y1) - break; + while (true) { + setPixel(x0, y0); + if (x0 == x1 && y0 == y1) + break; - int e2 = err; - if(e2 > -dx) - { - err -= dy; - x0 += sx; - } - if(e2 < dy) - { - err += dx; - y0 += sy; - } - } + int e2 = err; + if (e2 > -dx) { + err -= dy; + x0 += sx; + } + if (e2 < dy) { + err += dx; + y0 += sy; + } + } } // cppcheck-suppress unusedFunction -void Bitmap::drawHorizontalLine(int x, int y, int length) -{ - if(y < 0 || y >= _height) - { - return; - } +void Bitmap::drawHorizontalLine(int x, int y, int length) { + if (y < 0 || y >= _height) { + return; + } - for(int i = 0; i < length; i++) - { - setPixel(x + i, y); - } + for (int i = 0; i < length; i++) { + setPixel(x + i, y); + } } // cppcheck-suppress unusedFunction -void Bitmap::drawVerticalLine(int x, int y, int length) -{ - if (x < 0 || x >= _width) - { - return; - } +void Bitmap::drawVerticalLine(int x, int y, int length) { + if (x < 0 || x >= _width) { + return; + } - for(int i = 0; i < length; i++) - { - setPixel(x, y + i); - } + for (int i = 0; i < length; i++) { + setPixel(x, y + i); + } } // cppcheck-suppress unusedFunction -void Bitmap::drawRect(int x, int y, int width, int height) -{ - drawHorizontalLine(x, y, width); - drawVerticalLine(x, y, height); - drawVerticalLine(x + width - 1, y, height); - drawHorizontalLine(x, y + height - 1, width); +void Bitmap::drawRect(int x, int y, int width, int height) { + drawHorizontalLine(x, y, width); + drawVerticalLine(x, y, height); + drawVerticalLine(x + width - 1, y, height); + drawHorizontalLine(x, y + height - 1, width); } // cppcheck-suppress unusedFunction -void Bitmap::fillRect(int x, int y, int width, int height) -{ - for (int i = 0; i < width; i++) - { - drawVerticalLine(x + i, y, height); - } +void Bitmap::fillRect(int x, int y, int width, int height) { + for (int i = 0; i < width; i++) { + drawVerticalLine(x + i, y, height); + } } // cppcheck-suppress unusedFunction -void Bitmap::drawCircle(int x0, int y0, int radius) -{ - int x = 0; - int y = radius; - int dp = 1 - radius; +void Bitmap::drawCircle(int x0, int y0, int radius) { + int x = 0; + int y = radius; + int dp = 1 - radius; - do - { - if (dp < 0) - { - dp = dp + (x++) * 2 + 3; - } - else - { - dp = dp + (x++) * 2 - (y--) * 2 + 5; - } + do { + if (dp < 0) { + dp = dp + (x++) * 2 + 3; + } else { + dp = dp + (x++) * 2 - (y--) * 2 + 5; + } - setPixel(x0 + x, y0 + y); //For the 8 octants - setPixel(x0 - x, y0 + y); - setPixel(x0 + x, y0 - y); - setPixel(x0 - x, y0 - y); - setPixel(x0 + y, y0 + x); - setPixel(x0 - y, y0 + x); - setPixel(x0 + y, y0 - x); - setPixel(x0 - y, y0 - x); - } - while (x < y); + setPixel(x0 + x, y0 + y); // For the 8 octants + setPixel(x0 - x, y0 + y); + setPixel(x0 + x, y0 - y); + setPixel(x0 - x, y0 - y); + setPixel(x0 + y, y0 + x); + setPixel(x0 - y, y0 + x); + setPixel(x0 + y, y0 - x); + setPixel(x0 - y, y0 - x); + } while (x < y); - setPixel(x0 + radius, y0); - setPixel(x0, y0 + radius); - setPixel(x0 - radius, y0); - setPixel(x0, y0 - radius); + setPixel(x0 + radius, y0); + setPixel(x0, y0 + radius); + setPixel(x0 - radius, y0); + setPixel(x0, y0 - radius); } // cppcheck-suppress unusedFunction -void Bitmap::fillCircle(int x0, int y0, int radius) -{ - int x = 0; - int y = radius; - int dp = 1 - radius; +void Bitmap::fillCircle(int x0, int y0, int radius) { + int x = 0; + int y = radius; + int dp = 1 - radius; - do - { - if (dp < 0) - { - dp = dp + (x++) * 2 + 3; - } - else - { - dp = dp + (x++) * 2 - (y--) * 2 + 5; - } + do { + if (dp < 0) { + dp = dp + (x++) * 2 + 3; + } else { + dp = dp + (x++) * 2 - (y--) * 2 + 5; + } - drawHorizontalLine(x0 - x, y0 - y, 2 * x); - drawHorizontalLine(x0 - x, y0 + y, 2 * x); - drawHorizontalLine(x0 - y, y0 - x, 2 * y); - drawHorizontalLine(x0 - y, y0 + x, 2 * y); - } - while (x < y); - - drawHorizontalLine(x0 - radius, y0, 2 * radius); + drawHorizontalLine(x0 - x, y0 - y, 2 * x); + drawHorizontalLine(x0 - x, y0 + y, 2 * x); + drawHorizontalLine(x0 - y, y0 - x, 2 * y); + drawHorizontalLine(x0 - y, y0 + x, 2 * y); + } while (x < y); + + drawHorizontalLine(x0 - radius, y0, 2 * radius); } // cppcheck-suppress unusedFunction -void Bitmap::drawCircleQuads(int x0, int y0, int radius, int quads) -{ - int x = 0; - int y = radius; - int dp = 1 - radius; +void Bitmap::drawCircleQuads(int x0, int y0, int radius, int quads) { + int x = 0; + int y = radius; + int dp = 1 - radius; - while (x < y) - { - if (dp < 0) - { - dp = dp + (x++) * 2 + 3; - } - else - { - dp = dp + (x++) * 2 - (y--) * 2 + 5; - } + while (x < y) { + if (dp < 0) { + dp = dp + (x++) * 2 + 3; + } else { + dp = dp + (x++) * 2 - (y--) * 2 + 5; + } - if (quads & 0x1) - { - setPixel(x0 + x, y0 - y); - setPixel(x0 + y, y0 - x); - } - if (quads & 0x2) - { - setPixel(x0 - y, y0 - x); - setPixel(x0 - x, y0 - y); - } - if (quads & 0x4) - { - setPixel(x0 - y, y0 + x); - setPixel(x0 - x, y0 + y); - } - if (quads & 0x8) - { - setPixel(x0 + x, y0 + y); - setPixel(x0 + y, y0 + x); - } - } - if (quads & 0x1 && quads & 0x8) - { - setPixel(x0 + radius, y0); - } - if (quads & 0x4 && quads & 0x8) - { - setPixel(x0, y0 + radius); - } - if (quads & 0x2 && quads & 0x4) - { - setPixel(x0 - radius, y0); - } - if (quads & 0x1 && quads & 0x2) - { - setPixel(x0, y0 - radius); - } + if (quads & 0x1) { + setPixel(x0 + x, y0 - y); + setPixel(x0 + y, y0 - x); + } + if (quads & 0x2) { + setPixel(x0 - y, y0 - x); + setPixel(x0 - x, y0 - y); + } + if (quads & 0x4) { + setPixel(x0 - y, y0 + x); + setPixel(x0 - x, y0 + y); + } + if (quads & 0x8) { + setPixel(x0 + x, y0 + y); + setPixel(x0 + y, y0 + x); + } + } + if (quads & 0x1 && quads & 0x8) { + setPixel(x0 + radius, y0); + } + if (quads & 0x4 && quads & 0x8) { + setPixel(x0, y0 + radius); + } + if (quads & 0x2 && quads & 0x4) { + setPixel(x0 - radius, y0); + } + if (quads & 0x1 && quads & 0x2) { + setPixel(x0, y0 - radius); + } } // cppcheck-suppress unusedFunction -void Bitmap::drawProgressBar(int x, int y, int width, int height, int progress) -{ - int radius = height / 2; - int xRadius = x + radius; - int yRadius = y + radius; - int doubleRadius = 2 * radius; - int innerRadius = radius - 2; +void Bitmap::drawProgressBar(int x, int y, int width, int height, int progress) { + int radius = height / 2; + int xRadius = x + radius; + int yRadius = y + radius; + int doubleRadius = 2 * radius; + int innerRadius = radius - 2; - drawCircleQuads(xRadius, yRadius, radius, 0b00000110); - drawHorizontalLine(xRadius, y, width - doubleRadius + 1); - drawHorizontalLine(xRadius, y + height, width - doubleRadius + 1); - drawCircleQuads(x + width - radius, yRadius, radius, 0b00001001); + drawCircleQuads(xRadius, yRadius, radius, 0b00000110); + drawHorizontalLine(xRadius, y, width - doubleRadius + 1); + drawHorizontalLine(xRadius, y + height, width - doubleRadius + 1); + drawCircleQuads(x + width - radius, yRadius, radius, 0b00001001); - uint16_t maxProgressWidth = (width - doubleRadius + 1) * progress / 100; + uint16_t maxProgressWidth = (width - doubleRadius + 1) * progress / 100; - fillCircle(xRadius, yRadius, innerRadius); - fillRect(xRadius + 1, y + 2, maxProgressWidth, height - 3); - fillCircle(xRadius + maxProgressWidth, yRadius, innerRadius); + fillCircle(xRadius, yRadius, innerRadius); + fillRect(xRadius + 1, y + 2, maxProgressWidth, height - 3); + fillCircle(xRadius + maxProgressWidth, yRadius, innerRadius); } // cppcheck-suppress unusedFunction -int Bitmap::drawChar(int x, int y, char c) -{ - fontDesc_t const * font = getSystemFont(); +int Bitmap::drawChar(int x, int y, char c) { + fontDesc_t const *font = getSystemFont(); - if(c == ' ') - { - return x + font->widthInPixel * 4 / 10; - } + if (c == ' ') { + return x + font->widthInPixel * 4 / 10; + } - unsigned char cu = (unsigned char)c; - if(cu < font->firstChar || cu > font->lastChar) - { - cu = '?'; - } + unsigned char cu = (unsigned char)c; + if (cu < font->firstChar || cu > font->lastChar) { + cu = '?'; + } - int firstPixelBitPos = 0; - for(int i = 0; i < (cu - font->firstChar); i++) - { - firstPixelBitPos = firstPixelBitPos + font->pData[i]; - } - firstPixelBitPos = firstPixelBitPos * font->heightInPixel; + int firstPixelBitPos = 0; + for (int i = 0; i < (cu - font->firstChar); i++) { + firstPixelBitPos = firstPixelBitPos + font->pData[i]; + } + firstPixelBitPos = firstPixelBitPos * font->heightInPixel; - unsigned char const * pDataStart = &(font->pData[font->lastChar - font->firstChar + 1]); - const int top = y; - const int widthInPixel = font->pData[cu - font->firstChar]; - for(int i = 0; i < widthInPixel * font->heightInPixel; i++ ) - { - int bytePos = firstPixelBitPos / 8; - int bitPos = firstPixelBitPos % 8; + unsigned char const *pDataStart = &(font->pData[font->lastChar - font->firstChar + 1]); + const int top = y; + const int widthInPixel = font->pData[cu - font->firstChar]; + for (int i = 0; i < widthInPixel * font->heightInPixel; i++) { + int bytePos = firstPixelBitPos / 8; + int bitPos = firstPixelBitPos % 8; - if(pDataStart[bytePos] & ( 1 << bitPos)) - { - setPixel(x, y); - } - else - { - clearPixel(x, y); - } + if (pDataStart[bytePos] & (1 << bitPos)) { + setPixel(x, y); + } else { + clearPixel(x, y); + } - firstPixelBitPos++; - y++; - if(y == top + font->heightInPixel) - { - y = top; - x++; - } - } + firstPixelBitPos++; + y++; + if (y == top + font->heightInPixel) { + y = top; + x++; + } + } - return x + FONT_CHAR_SPACING; + return x + FONT_CHAR_SPACING; } // cppcheck-suppress unusedFunction -int Bitmap::drawString(int x, int y, String text) -{ - int next_x = x; - for(int i = 0; i < text.length(); i++) - { - next_x = drawChar(next_x, y, text[i]); - } - return next_x; +int Bitmap::drawString(int x, int y, String text) { + int next_x = x; + for (int i = 0; i < text.length(); i++) { + next_x = drawChar(next_x, y, text[i]); + } + return next_x; } // cppcheck-suppress unusedFunction -void Bitmap::drawStringf(int x, int y, char * buffer, String format, ... ) -{ - va_list myargs; - va_start(myargs, format); - vsprintf(buffer, format.c_str(), myargs); - va_end(myargs); - drawString(x, y, buffer); +void Bitmap::drawStringf(int x, int y, char *buffer, String format, ...) { + va_list myargs; + va_start(myargs, format); + vsprintf(buffer, format.c_str(), myargs); + va_end(myargs); + drawString(x, y, buffer); } // cppcheck-suppress unusedFunction -int Bitmap::drawStringLF(int x, int y, String text) -{ - fontDesc_t const * font = getSystemFont(); - int next_x = x; - for(int i = 0; i < text.length(); i++) - { - if(next_x + font->widthInPixel > _width) - { - next_x = 0; - y += font->heightInPixel; - } - next_x = drawChar(next_x, y, text[i]); - } - return next_x; +int Bitmap::drawStringLF(int x, int y, String text) { + fontDesc_t const *font = getSystemFont(); + int next_x = x; + for (int i = 0; i < text.length(); i++) { + if (next_x + font->widthInPixel > _width) { + next_x = 0; + y += font->heightInPixel; + } + next_x = drawChar(next_x, y, text[i]); + } + return next_x; } // cppcheck-suppress unusedFunction -void Bitmap::drawStringLFf(int x, int y, char * buffer, String format, ... ) -{ - va_list myargs; - va_start(myargs, format); - vsprintf(buffer, format.c_str(), myargs); - va_end(myargs); - drawStringLF(x, y, buffer); +void Bitmap::drawStringLFf(int x, int y, char *buffer, String format, ...) { + va_list myargs; + va_start(myargs, format); + vsprintf(buffer, format.c_str(), myargs); + va_end(myargs); + drawStringLF(x, y, buffer); } /*void Bitmap::drawBitmap(int x, int y, const Bitmap & bitmap) { - if(_width < x + bitmap.getWidth() || _height < y + bitmap.getHeight()) - { - return; - } + if(_width < x + bitmap.getWidth() || _height < y + bitmap.getHeight()) + { + return; + } - for(int _x = 0; _x < bitmap.getWidth(); _x++) - { - for(int _y = 0; _y < bitmap.getHeight(); _y++) - { - if(bitmap.getPixel(_x, _y)) - { - // _buffer[x + (y / 8) * _width] |= (1 << (y % 8)); - // return _buffer[x + (y / 8) * _width] & (1 << (y % 8)); - Serial.print(_x); - Serial.print(" "); - Serial.println(_y); - setPixel(x + _x, y + _y); - } - else - { - clearPixel(x + _x, y + _y); - } - } - } + for(int _x = 0; _x < bitmap.getWidth(); _x++) + { + for(int _y = 0; _y < bitmap.getHeight(); _y++) + { + if(bitmap.getPixel(_x, _y)) + { + // _buffer[x + (y / 8) * _width] |= (1 << (y % 8)); + // return _buffer[x + (y / 8) * _width] & (1 << (y % 8)); + Serial.print(_x); + Serial.print(" "); + Serial.println(_y); + setPixel(x + _x, y + _y); + } + else + { + clearPixel(x + _x, y + _y); + } + } + } }*/ // cppcheck-suppress unusedFunction -void Bitmap::allocateBuffer() -{ - _buffer = new uint8_t[_width * _height / 8]; - clear(); +void Bitmap::allocateBuffer() { + _buffer = new uint8_t[_width * _height / 8]; + clear(); } diff --git a/lib/Display/Bitmap.h b/lib/Display/Bitmap.h index fe9f0d5..4feb053 100644 --- a/lib/Display/Bitmap.h +++ b/lib/Display/Bitmap.h @@ -6,51 +6,50 @@ class OLEDDisplay; -class Bitmap -{ +class Bitmap { public: - explicit Bitmap(uint width, uint height); - explicit Bitmap(OLEDDisplay * display); - virtual ~Bitmap(); + explicit Bitmap(uint width, uint height); + explicit Bitmap(OLEDDisplay *display); + virtual ~Bitmap(); - uint getWidth() const; - uint getHeight() const; + uint getWidth() const; + uint getHeight() const; - void setPixel(int x, int y); - void clearPixel(int x, int y); - bool getPixel(int x, int y) const; - void clear(); + void setPixel(int x, int y); + void clearPixel(int x, int y); + bool getPixel(int x, int y) const; + void clear(); - void drawLine(int x0, int y0, int x1, int y1); - void drawHorizontalLine(int x, int y, int length); - void drawVerticalLine(int x, int y, int length); + void drawLine(int x0, int y0, int x1, int y1); + void drawHorizontalLine(int x, int y, int length); + void drawVerticalLine(int x, int y, int length); - void drawRect(int x, int y, int width, int height); - void fillRect(int x, int y, int width, int height); + void drawRect(int x, int y, int width, int height); + void fillRect(int x, int y, int width, int height); - void drawCircle(int x0, int y0, int radius); - void fillCircle(int x0, int y0, int radius); - void drawCircleQuads(int x0, int y0, int radius, int quads); + void drawCircle(int x0, int y0, int radius); + void fillCircle(int x0, int y0, int radius); + void drawCircleQuads(int x0, int y0, int radius, int quads); - void drawProgressBar(int x, int y, int width, int height, int progress); + void drawProgressBar(int x, int y, int width, int height, int progress); - int drawChar(int x, int y, char c); - int drawString(int x, int y, String text); - void drawStringf(int x, int y, char * buffer, String format, ... ); - int drawStringLF(int x, int y, String text); - void drawStringLFf(int x, int y, char * buffer, String format, ... ); + int drawChar(int x, int y, char c); + int drawString(int x, int y, String text); + void drawStringf(int x, int y, char *buffer, String format, ...); + int drawStringLF(int x, int y, String text); + void drawStringLFf(int x, int y, char *buffer, String format, ...); - //void drawBitmap(int x, int y, const Bitmap & bitmap); + // void drawBitmap(int x, int y, const Bitmap & bitmap); private: - const uint _width; - const uint _height; + const uint _width; + const uint _height; - uint8_t * _buffer; + uint8_t *_buffer; - void allocateBuffer(); + void allocateBuffer(); - friend class SSD1306; + friend class SSD1306; }; #endif diff --git a/lib/Display/Display.cpp b/lib/Display/Display.cpp index b39e285..d4f1799 100644 --- a/lib/Display/Display.cpp +++ b/lib/Display/Display.cpp @@ -1,116 +1,97 @@ -#include #include "Display.h" #include +#include -Display::Display() - : _disp(0), _statusFrame(0), _displayOff(false) -{ +Display::Display() : _disp(0), _statusFrame(0), _displayOff(false) { } -void Display::setup(std::shared_ptr boardConfig) -{ - if(boardConfig->OledReset != 0) - { - pinMode(boardConfig->OledReset, OUTPUT); - digitalWrite(boardConfig->OledReset, HIGH); - delay(1); - digitalWrite(boardConfig->OledReset, LOW); - delay(10); - digitalWrite(boardConfig->OledReset, HIGH); - } - Wire.begin(boardConfig->OledSda, boardConfig->OledScl); - _disp = std::shared_ptr(new SSD1306(&Wire, boardConfig->OledAddr)); - - Bitmap bitmap(_disp->getWidth(), _disp->getHeight()); - _disp->display(&bitmap); - _displayTimeout.setTimeout(10); - _frameTimeout.setTimeout(15); +void Display::setup(std::shared_ptr boardConfig) { + if (boardConfig->OledReset != 0) { + pinMode(boardConfig->OledReset, OUTPUT); + digitalWrite(boardConfig->OledReset, HIGH); + delay(1); + digitalWrite(boardConfig->OledReset, LOW); + delay(10); + digitalWrite(boardConfig->OledReset, HIGH); + } + Wire.begin(boardConfig->OledSda, boardConfig->OledScl); + _disp = std::shared_ptr(new SSD1306(&Wire, boardConfig->OledAddr)); + + Bitmap bitmap(_disp->getWidth(), _disp->getHeight()); + _disp->display(&bitmap); + _displayTimeout.setTimeout(10); + _frameTimeout.setTimeout(15); } -void Display::turn180() -{ - _disp->flipScreenVertically(); +void Display::turn180() { + _disp->flipScreenVertically(); } -void Display::update() -{ - if(_frameTimeout.check()) - { - if(_statusFrame->isPrio()) - { - Bitmap bitmap(_disp.get()); - _statusFrame->drawStatusPage(bitmap); - activateDisplay(); - _disp->display(&bitmap); - return; - } +void Display::update() { + if (_frameTimeout.check()) { + if (_statusFrame->isPrio()) { + Bitmap bitmap(_disp.get()); + _statusFrame->drawStatusPage(bitmap); + activateDisplay(); + _disp->display(&bitmap); + return; + } - if(_frames.size() > 0) - { - std::shared_ptr frame = *_frames.begin(); - Bitmap bitmap(_disp.get()); - frame->drawStatusPage(bitmap); - activateDisplay(); - _disp->display(&bitmap); - _frames.pop_front(); - _frameTimeout.start(); - return; - } + if (_frames.size() > 0) { + std::shared_ptr frame = *_frames.begin(); + Bitmap bitmap(_disp.get()); + frame->drawStatusPage(bitmap); + activateDisplay(); + _disp->display(&bitmap); + _frames.pop_front(); + _frameTimeout.start(); + return; + } - if(!_displayOff && !_displayTimeout.isActive()) - { - Bitmap bitmap(_disp.get()); - _statusFrame->drawStatusPage(bitmap); - activateDisplay(); - _disp->display(&bitmap); - _displayTimeout.start(); - } - if(_displayTimeout.check()) - { - deactivateDisplay(); - _displayTimeout.reset(); - } - } + if (!_displayOff && !_displayTimeout.isActive()) { + Bitmap bitmap(_disp.get()); + _statusFrame->drawStatusPage(bitmap); + activateDisplay(); + _disp->display(&bitmap); + _displayTimeout.start(); + } + if (_displayTimeout.check()) { + deactivateDisplay(); + _displayTimeout.reset(); + } + } } -void Display::addFrame(std::shared_ptr frame) -{ - _frames.push_back(frame); +void Display::addFrame(std::shared_ptr frame) { + _frames.push_back(frame); } -void Display::setStatusFrame(std::shared_ptr frame) -{ - _statusFrame = frame; +void Display::setStatusFrame(std::shared_ptr frame) { + _statusFrame = frame; } -void Display::showSpashScreen(String firmwareTitle, String version) -{ - Bitmap bitmap(_disp.get()); - bitmap.drawString( 0, 10, firmwareTitle); - bitmap.drawString( 0, 20, version); - bitmap.drawString( 0, 35, "by Peter Buchegger"); - bitmap.drawString(30, 45, "OE5BPA"); - _disp->display(&bitmap); +void Display::showSpashScreen(String firmwareTitle, String version) { + Bitmap bitmap(_disp.get()); + bitmap.drawString(0, 10, firmwareTitle); + bitmap.drawString(0, 20, version); + bitmap.drawString(0, 35, "by Peter Buchegger"); + bitmap.drawString(30, 45, "OE5BPA"); + _disp->display(&bitmap); } -void Display::activateDisplay() -{ - if(_displayOff) - { - _disp->displayOn(); - _displayOff = false; - } +void Display::activateDisplay() { + if (_displayOff) { + _disp->displayOn(); + _displayOff = false; + } } -void Display::deactivateDisplay() -{ - _disp->displayOff(); - _displayOff = true; +void Display::deactivateDisplay() { + _disp->displayOff(); + _displayOff = true; } - -void TextFrame::drawStatusPage(Bitmap & bitmap) -{ - bitmap.drawString(0, 0, _header); - bitmap.drawStringLF(0, 10, _text); +void TextFrame::drawStatusPage(Bitmap &bitmap) { + bitmap.drawString(0, 0, _header); + bitmap.drawStringLF(0, 10, _text); } diff --git a/lib/Display/Display.h b/lib/Display/Display.h index 438c221..5fd57dd 100644 --- a/lib/Display/Display.h +++ b/lib/Display/Display.h @@ -1,76 +1,77 @@ #ifndef DISPLAY_H_ #define DISPLAY_H_ -#include -#include -#include #include -#include -#include -#include #include +#include +#include #include +#include +#include +#include +#include class Timer; class StatusFrame; -class DisplayFrame -{ +class DisplayFrame { public: - DisplayFrame() {} - virtual ~DisplayFrame() {} - virtual void drawStatusPage(Bitmap & bitmap) = 0; + DisplayFrame() { + } + virtual ~DisplayFrame() { + } + virtual void drawStatusPage(Bitmap &bitmap) = 0; }; -class Display -{ +class Display { public: - static Display & instance() - { - static Display _instance; - return _instance; - } + static Display &instance() { + static Display _instance; + return _instance; + } - ~Display() {} + ~Display() { + } - void setup(std::shared_ptr boardConfig); - void turn180(); - void update(); + void setup(std::shared_ptr boardConfig); + void turn180(); + void update(); - void addFrame(std::shared_ptr frame); + void addFrame(std::shared_ptr frame); - void setStatusFrame(std::shared_ptr frame); + void setStatusFrame(std::shared_ptr frame); - void showSpashScreen(String firmwareTitle, String version); + void showSpashScreen(String firmwareTitle, String version); private: - std::shared_ptr _disp; + std::shared_ptr _disp; - std::list> _frames; - std::shared_ptr _statusFrame; - Timer _frameTimeout; + std::list> _frames; + std::shared_ptr _statusFrame; + Timer _frameTimeout; - Timer _displayTimeout; - bool _displayOff; + Timer _displayTimeout; + bool _displayOff; - Display(); - Display(const Display &); - Display & operator = (const Display &); + Display(); + Display(const Display &); + Display &operator=(const Display &); - void activateDisplay(); - void deactivateDisplay(); + void activateDisplay(); + void deactivateDisplay(); }; -class TextFrame : public DisplayFrame -{ +class TextFrame : public DisplayFrame { public: - TextFrame(String header, String text) : _header(header), _text(text) {} - virtual ~TextFrame() {} - void drawStatusPage(Bitmap & bitmap) override; + TextFrame(String header, String text) : _header(header), _text(text) { + } + virtual ~TextFrame() { + } + void drawStatusPage(Bitmap &bitmap) override; private: - String _header; - String _text; + String _header; + String _text; }; #endif diff --git a/lib/LoRa_APRS/LoRa_APRS.cpp b/lib/LoRa_APRS/LoRa_APRS.cpp index 2deb45f..d3279b2 100644 --- a/lib/LoRa_APRS/LoRa_APRS.cpp +++ b/lib/LoRa_APRS/LoRa_APRS.cpp @@ -1,81 +1,67 @@ -#include #include "LoRa_APRS.h" -LoRa_APRS::LoRa_APRS(std::shared_ptr 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); +LoRa_APRS::LoRa_APRS(std::shared_ptr 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; - } - // read header: - char dummy[4]; - readBytes(dummy, 3); - if(dummy[0] != '<') - { - // is no APRS message, ignore message - while(available()) - { - read(); - } - return false; - } - // read APRS data: - String str; - while(available()) - { - str += (char)read(); - } - _LastReceivedMsg = std::shared_ptr(new APRSMessage()); - _LastReceivedMsg->decode(str); - return true; +bool LoRa_APRS::checkMessage() { + if (!parsePacket()) { + return false; + } + // read header: + char dummy[4]; + readBytes(dummy, 3); + if (dummy[0] != '<') { + // is no APRS message, ignore message + while (available()) { + read(); + } + return false; + } + // read APRS data: + String str; + while (available()) { + str += (char)read(); + } + _LastReceivedMsg = std::shared_ptr(new APRSMessage()); + _LastReceivedMsg->decode(str); + return true; } -std::shared_ptr LoRa_APRS::getMessage() -{ - return _LastReceivedMsg; +std::shared_ptr LoRa_APRS::getMessage() { + return _LastReceivedMsg; } // cppcheck-suppress unusedFunction -void LoRa_APRS::sendMessage(const std::shared_ptr msg) -{ - setFrequency(_TxFrequency); - String data = msg->encode(); - beginPacket(); - // Header: - write('<'); - write(0xFF); - write(0x01); - // APRS Data: - write((const uint8_t *)data.c_str(), data.length()); - endPacket(); - setFrequency(_RxFrequency); +void LoRa_APRS::sendMessage(const std::shared_ptr msg) { + setFrequency(_TxFrequency); + String data = msg->encode(); + beginPacket(); + // Header: + write('<'); + write(0xFF); + write(0x01); + // APRS Data: + write((const uint8_t *)data.c_str(), data.length()); + endPacket(); + setFrequency(_RxFrequency); } -void LoRa_APRS::setRxFrequency(long frequency) -{ - _RxFrequency = frequency; - setFrequency(_RxFrequency); +void LoRa_APRS::setRxFrequency(long frequency) { + _RxFrequency = frequency; + setFrequency(_RxFrequency); } -long LoRa_APRS::getRxFrequency() const -{ - return _RxFrequency; +long LoRa_APRS::getRxFrequency() const { + return _RxFrequency; } -void LoRa_APRS::setTxFrequency(long frequency) -{ - _TxFrequency = frequency; +void LoRa_APRS::setTxFrequency(long frequency) { + _TxFrequency = frequency; } // cppcheck-suppress unusedFunction -long LoRa_APRS::getTxFrequency() const -{ - return _TxFrequency; +long LoRa_APRS::getTxFrequency() const { + return _TxFrequency; } diff --git a/lib/LoRa_APRS/LoRa_APRS.h b/lib/LoRa_APRS/LoRa_APRS.h index 1991528..1c29b41 100644 --- a/lib/LoRa_APRS/LoRa_APRS.h +++ b/lib/LoRa_APRS/LoRa_APRS.h @@ -1,37 +1,38 @@ #ifndef LORA_H_ #define LORA_H_ -#include #include -#include -#include -#define LORA_RX_FREQUENCY (433775000) -#define LORA_TX_FREQUENCY (433900000) +#include +#include +#include +#include + +#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) +#define LORA_CODING_RATE4 (5) -class LoRa_APRS : public LoRaClass -{ +class LoRa_APRS : public LoRaClass { public: - explicit LoRa_APRS(std::shared_ptr boardConfig); - - bool checkMessage(); - std::shared_ptr getMessage(); + explicit LoRa_APRS(std::shared_ptr boardConfig); - void sendMessage(const std::shared_ptr msg); + bool checkMessage(); + std::shared_ptr getMessage(); - void setRxFrequency(long frequency); - long getRxFrequency() const; + void sendMessage(const std::shared_ptr msg); - void setTxFrequency(long frequency); - long getTxFrequency() const; + void setRxFrequency(long frequency); + long getRxFrequency() const; + + void setTxFrequency(long frequency); + long getTxFrequency() const; private: - std::shared_ptr _LastReceivedMsg; - long _RxFrequency; - long _TxFrequency; + std::shared_ptr _LastReceivedMsg; + long _RxFrequency; + long _TxFrequency; }; #endif diff --git a/lib/PowerManagement/power_management.cpp b/lib/PowerManagement/power_management.cpp index 8f017b6..06771a3 100644 --- a/lib/PowerManagement/power_management.cpp +++ b/lib/PowerManagement/power_management.cpp @@ -2,54 +2,44 @@ #include "power_management.h" // cppcheck-suppress uninitMemberVar -PowerManagement::PowerManagement() -{ +PowerManagement::PowerManagement() { } // cppcheck-suppress unusedFunction -bool PowerManagement::begin(TwoWire & port) -{ - bool result = axp.begin(port, AXP192_SLAVE_ADDRESS); - if(!result) - { - axp.setDCDC1Voltage(3300); - } - return result; +bool PowerManagement::begin(TwoWire &port) { + bool result = axp.begin(port, AXP192_SLAVE_ADDRESS); + if (!result) { + axp.setDCDC1Voltage(3300); + } + return result; } // cppcheck-suppress unusedFunction -void PowerManagement::activateLoRa() -{ - axp.setPowerOutPut(AXP192_LDO2, AXP202_ON); +void PowerManagement::activateLoRa() { + axp.setPowerOutPut(AXP192_LDO2, AXP202_ON); } // cppcheck-suppress unusedFunction -void PowerManagement::deactivateLoRa() -{ - axp.setPowerOutPut(AXP192_LDO2, AXP202_OFF); +void PowerManagement::deactivateLoRa() { + axp.setPowerOutPut(AXP192_LDO2, AXP202_OFF); } // cppcheck-suppress unusedFunction -void PowerManagement::activateGPS() -{ - axp.setPowerOutPut(AXP192_LDO3, AXP202_ON); +void PowerManagement::activateGPS() { + axp.setPowerOutPut(AXP192_LDO3, AXP202_ON); } // cppcheck-suppress unusedFunction -void PowerManagement::deactivateGPS() -{ - axp.setPowerOutPut(AXP192_LDO3, AXP202_OFF); +void PowerManagement::deactivateGPS() { + axp.setPowerOutPut(AXP192_LDO3, AXP202_OFF); } // cppcheck-suppress unusedFunction -void PowerManagement::activateOLED() -{ - axp.setPowerOutPut(AXP192_DCDC1, AXP202_ON); +void PowerManagement::activateOLED() { + axp.setPowerOutPut(AXP192_DCDC1, AXP202_ON); } // cppcheck-suppress unusedFunction -void PowerManagement::decativateOLED() -{ - axp.setPowerOutPut(AXP192_DCDC1, AXP202_OFF); +void PowerManagement::decativateOLED() { + axp.setPowerOutPut(AXP192_DCDC1, AXP202_OFF); } - diff --git a/lib/PowerManagement/power_management.h b/lib/PowerManagement/power_management.h index ecd6cf6..4cc110b 100644 --- a/lib/PowerManagement/power_management.h +++ b/lib/PowerManagement/power_management.h @@ -4,23 +4,22 @@ #include #include -class PowerManagement -{ +class PowerManagement { public: - PowerManagement(); - bool begin(TwoWire & port); + PowerManagement(); + bool begin(TwoWire &port); - void activateLoRa(); - void deactivateLoRa(); + void activateLoRa(); + void deactivateLoRa(); - void activateGPS(); - void deactivateGPS(); + void activateGPS(); + void deactivateGPS(); - void activateOLED(); - void decativateOLED(); + void activateOLED(); + void decativateOLED(); private: - AXP20X_Class axp; + AXP20X_Class axp; }; #endif diff --git a/lib/TaskManager/TaskManager.cpp b/lib/TaskManager/TaskManager.cpp index d660403..5a338e8 100644 --- a/lib/TaskManager/TaskManager.cpp +++ b/lib/TaskManager/TaskManager.cpp @@ -1,97 +1,77 @@ -#include #include "TaskManager.h" #include +#include -TaskManager::TaskManager() -{ +TaskManager::TaskManager() { } -void TaskManager::addTask(std::shared_ptr task) -{ - _tasks.push_back(task); +void TaskManager::addTask(std::shared_ptr task) { + _tasks.push_back(task); } -std::shared_ptr TaskManager::getTask(const char * name) -{ - std::_List_iterator> elem = std::find_if(_tasks.begin(), _tasks.end(), [&](std::shared_ptr task) - { - return task->getName() == name; - }); - if(elem == _tasks.end()) - { - return 0; - } - return *elem; +std::shared_ptr TaskManager::getTask(const char *name) { + std::_List_iterator> elem = std::find_if(_tasks.begin(), _tasks.end(), [&](std::shared_ptr task) { + return task->getName() == name; + }); + if (elem == _tasks.end()) { + return 0; + } + return *elem; } -std::list> TaskManager::getTasks() -{ - return _tasks; +std::list> TaskManager::getTasks() { + return _tasks; } -bool TaskManager::setup(std::shared_ptr config, std::shared_ptr boardConfig) -{ - logPrintlnV("will setup all tasks..."); - for(std::shared_ptr & elem : _tasks) - { - logPrintW("call setup from "); - logPrintlnW(elem->getName()); - if(!elem->setup(config, boardConfig)) - { - return false; - } - } - return true; +bool TaskManager::setup(std::shared_ptr config, std::shared_ptr boardConfig) { + logPrintlnV("will setup all tasks..."); + for (std::shared_ptr &elem : _tasks) { + logPrintW("call setup from "); + logPrintlnW(elem->getName()); + if (!elem->setup(config, boardConfig)) { + return false; + } + } + return true; } -bool TaskManager::loop(std::shared_ptr config) -{ - //logPrintlnD("will loop all tasks..."); - for(std::shared_ptr & elem : _tasks) - { - //logPrintD("call loop from "); - //logPrintlnD(elem->getName()); - if(!elem->loop(config)) - { - return false; - } - } - return true; +bool TaskManager::loop(std::shared_ptr config) { + // logPrintlnD("will loop all tasks..."); + for (std::shared_ptr &elem : _tasks) { + // logPrintD("call loop from "); + // logPrintlnD(elem->getName()); + if (!elem->loop(config)) { + return false; + } + } + return true; } -void StatusFrame::drawStatusPage(Bitmap & bitmap) -{ - int y = 0; - for(std::shared_ptr task : _tasks) - { - int x = bitmap.drawString(0, y, (task->getName()).substring(0, task->getName().indexOf("Task"))); - x = bitmap.drawString(x, y, ": "); - if(task->getStateInfo() == "") - { - switch (task->getState()) - { - case Error: - bitmap.drawString(x, y, "Error"); - break; - case Warning: - bitmap.drawString(x, y, "Warning"); - default: - break; - } - bitmap.drawString(x, y, "Okay"); - } - else - { - bitmap.drawString(x, y, task->getStateInfo()); - } - y += getSystemFont()->heightInPixel; - } +void StatusFrame::drawStatusPage(Bitmap &bitmap) { + int y = 0; + for (std::shared_ptr task : _tasks) { + int x = bitmap.drawString(0, y, (task->getName()).substring(0, task->getName().indexOf("Task"))); + x = bitmap.drawString(x, y, ": "); + if (task->getStateInfo() == "") { + switch (task->getState()) { + case Error: + bitmap.drawString(x, y, "Error"); + break; + case Warning: + bitmap.drawString(x, y, "Warning"); + default: + break; + } + bitmap.drawString(x, y, "Okay"); + } else { + bitmap.drawString(x, y, task->getStateInfo()); + } + y += getSystemFont()->heightInPixel; + } } -bool StatusFrame::isPrio() const -{ - return std::any_of(_tasks.begin(), _tasks.end(), [](std::shared_ptr task) - { - return task->getState() != Okay; - }); +bool StatusFrame::isPrio() const { + return std::any_of(_tasks.begin(), _tasks.end(), [](std::shared_ptr task) { + return task->getState() != Okay; + }); } diff --git a/lib/TaskManager/TaskManager.h b/lib/TaskManager/TaskManager.h index aa5ccd4..0495b69 100644 --- a/lib/TaskManager/TaskManager.h +++ b/lib/TaskManager/TaskManager.h @@ -1,84 +1,94 @@ #ifndef TASK_MANAGER_H_ #define TASK_MANAGER_H_ -#include -#include #include -#include #include #include +#include +#include +#include #include "TaskQueue.h" enum TaskDisplayState { - Error, - Warning, - Okay, + Error, + Warning, + Okay, }; -class Task -{ +class Task { public: - Task(String & name, int taskId) : _state(Okay), _stateInfo("Booting"), _name(name), _taskId(taskId) {} - Task(const char * name, int taskId) : _state(Okay), _stateInfo("Booting"), _name(name), _taskId(taskId) {} - virtual ~Task() {} + Task(String &name, int taskId) : _state(Okay), _stateInfo("Booting"), _name(name), _taskId(taskId) { + } + Task(const char *name, int taskId) : _state(Okay), _stateInfo("Booting"), _name(name), _taskId(taskId) { + } + virtual ~Task() { + } - String getName() const { return _name; } - int getTaskId() const { return _taskId; } + String getName() const { + return _name; + } + int getTaskId() const { + return _taskId; + } - TaskDisplayState getState() const { return _state; } - String getStateInfo() const { return _stateInfo; } + TaskDisplayState getState() const { + return _state; + } + String getStateInfo() const { + return _stateInfo; + } - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) = 0; - virtual bool loop(std::shared_ptr config) = 0; + virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) = 0; + virtual bool loop(std::shared_ptr config) = 0; protected: - TaskDisplayState _state; - String _stateInfo; + TaskDisplayState _state; + String _stateInfo; private: - String _name; - int _taskId; + String _name; + int _taskId; }; -class TaskManager -{ +class TaskManager { public: - static TaskManager & instance() - { - static TaskManager _instance; - return _instance; - } + static TaskManager &instance() { + static TaskManager _instance; + return _instance; + } - ~TaskManager() {} + ~TaskManager() { + } - void addTask(std::shared_ptr task); - std::shared_ptr getTask(const char * name); - std::list> getTasks(); + void addTask(std::shared_ptr task); + std::shared_ptr getTask(const char *name); + std::list> getTasks(); - bool setup(std::shared_ptr config, std::shared_ptr boardConfig); - bool loop(std::shared_ptr config); + bool setup(std::shared_ptr config, std::shared_ptr boardConfig); + bool loop(std::shared_ptr config); private: - std::list> _tasks; + std::list> _tasks; - TaskManager(); - TaskManager(const TaskManager &); - TaskManager & operator = (const TaskManager &); + TaskManager(); + TaskManager(const TaskManager &); + TaskManager &operator=(const TaskManager &); }; -class StatusFrame : public DisplayFrame -{ +class StatusFrame : public DisplayFrame { public: - explicit StatusFrame(const std::list> & tasks) : _tasks(tasks) {} - virtual ~StatusFrame() {} - void drawStatusPage(Bitmap & bitmap) override; + explicit StatusFrame(const std::list> &tasks) : _tasks(tasks) { + } + virtual ~StatusFrame() { + } + void drawStatusPage(Bitmap &bitmap) override; - bool isPrio() const; + bool isPrio() const; private: - std::list> _tasks; + std::list> _tasks; }; #endif diff --git a/lib/TaskManager/TaskQueue.h b/lib/TaskManager/TaskQueue.h index 258e0de..7553281 100644 --- a/lib/TaskManager/TaskQueue.h +++ b/lib/TaskManager/TaskQueue.h @@ -3,31 +3,27 @@ #include -template -class TaskQueue -{ +template class TaskQueue { public: - TaskQueue() {} + TaskQueue() { + } - void addElement(T elem) - { - _elements.push_back(elem); - } + void addElement(T elem) { + _elements.push_back(elem); + } - T getElement() - { - T elem = _elements.front(); - _elements.pop_front(); - return elem; - } + T getElement() { + T elem = _elements.front(); + _elements.pop_front(); + return elem; + } - bool empty() const - { - return _elements.empty(); - } + bool empty() const { + return _elements.empty(); + } private: - std::list _elements; + std::list _elements; }; #endif diff --git a/lib/TaskManager/Timer.cpp b/lib/TaskManager/Timer.cpp index c89a105..b57d673 100644 --- a/lib/TaskManager/Timer.cpp +++ b/lib/TaskManager/Timer.cpp @@ -1,36 +1,28 @@ #include "Timer.h" -Timer::Timer() - : _timeout_sec(0), _timeout(0) -{ +Timer::Timer() : _timeout_sec(0), _timeout(0) { } -void Timer::setTimeout(const time_t timeout_sec) -{ - _timeout_sec = timeout_sec; +void Timer::setTimeout(const time_t timeout_sec) { + _timeout_sec = timeout_sec; } -time_t Timer::getTriggerTime() const -{ - return _timeout; +time_t Timer::getTriggerTime() const { + return _timeout; } -bool Timer::isActive() const -{ - return _timeout != 0; +bool Timer::isActive() const { + return _timeout != 0; } -void Timer::reset() -{ - _timeout = 0; +void Timer::reset() { + _timeout = 0; } -bool Timer::check() -{ - return now() > _timeout; +bool Timer::check() { + return now() > _timeout; } -void Timer::start() -{ - _timeout = now() + _timeout_sec; +void Timer::start() { + _timeout = now() + _timeout_sec; } diff --git a/lib/TaskManager/Timer.h b/lib/TaskManager/Timer.h index 60f78e7..77fe158 100644 --- a/lib/TaskManager/Timer.h +++ b/lib/TaskManager/Timer.h @@ -3,24 +3,23 @@ #include -class Timer -{ +class Timer { public: - Timer(); + Timer(); - void setTimeout(const time_t timeout_sec); - time_t getTriggerTime() const; + void setTimeout(const time_t timeout_sec); + time_t getTriggerTime() const; - bool isActive() const; + bool isActive() const; - void reset(); + void reset(); - bool check(); - void start(); + bool check(); + void start(); private: - time_t _timeout_sec; - time_t _timeout; + time_t _timeout_sec; + time_t _timeout; }; #endif diff --git a/src/LoRa_APRS_iGate.cpp b/src/LoRa_APRS_iGate.cpp index faf1db5..e57691b 100644 --- a/src/LoRa_APRS_iGate.cpp +++ b/src/LoRa_APRS_iGate.cpp @@ -1,15 +1,11 @@ #include -#include #include -#include - +#include #include - -#include "BoardFinder.h" -//#include "display.h" -#include "power_management.h" -#include "project_configuration.h" +#include +#include +#include #include "TaskAprsIs.h" #include "TaskDisplay.h" @@ -19,6 +15,7 @@ #include "TaskNTP.h" #include "TaskOTA.h" #include "TaskWifi.h" +#include "project_configuration.h" #define VERSION "21.06.0-dev" @@ -26,129 +23,116 @@ String create_lat_aprs(double lat); String create_long_aprs(double lng); std::shared_ptr userConfig; -std::shared_ptr boardConfig; -HardwareSerial Serial(0); +std::shared_ptr boardConfig; +HardwareSerial Serial(0); // cppcheck-suppress unusedFunction -void setup() -{ - Serial.begin(115200); - Logger::instance().setSerial(&Serial); - delay(500); - logPrintlnW("LoRa APRS iGate by OE5BPA (Peter Buchegger)"); - logPrintlnW("Version: " VERSION); +void setup() { + Serial.begin(115200); + Logger::instance().setSerial(&Serial); + delay(500); + logPrintlnW("LoRa APRS iGate by OE5BPA (Peter Buchegger)"); + logPrintlnW("Version: " VERSION); - ProjectConfigurationManagement confmg; - userConfig = confmg.readConfiguration(); + ProjectConfigurationManagement confmg; + userConfig = confmg.readConfiguration(); - std::list> boardConfigs; - boardConfigs.push_back(std::shared_ptr(new BoardConfig("TTGO_LORA32_V1", eTTGO_LORA32_V1, 4, 15, 0x3C, 0, 5, 19, 27, 18, 14, 26))); - boardConfigs.push_back(std::shared_ptr(new BoardConfig("TTGO_LORA32_V2", eTTGO_LORA32_V2, 21, 22, 0x3C, 0, 5, 19, 27, 18, 14, 26, true))); - boardConfigs.push_back(std::shared_ptr(new BoardConfig("TTGO_T_Beam_V0_7", eTTGO_T_Beam_V0_7, 21, 22, 0x3C, 0, 5, 19, 27, 18, 14, 26, true))); - boardConfigs.push_back(std::shared_ptr(new BoardConfig("TTGO_T_Beam_V1_0", eTTGO_T_Beam_V1_0, 21, 22, 0x3C, 0, 5, 19, 27, 18, 14, 26, true, true))); - boardConfigs.push_back(std::shared_ptr(new BoardConfig("ETH_BOARD", eETH_BOARD, 33, 32, 0x3C, 0, 14, 2, 15, 12, 4, 36))); - boardConfigs.push_back(std::shared_ptr(new BoardConfig("TRACKERD", eTRACKERD, 5, 4, 0x3C, 0, 18, 19, 23, 16, 14, 26))); - boardConfigs.push_back(std::shared_ptr(new BoardConfig("HELTEC_WIFI_LORA_32_V1", eHELTEC_WIFI_LORA_32_V1, 4, 15, 0x3C, 16, 5, 19, 27, 18, 14, 26))); - boardConfigs.push_back(std::shared_ptr(new BoardConfig("HELTEC_WIFI_LORA_32_V2", eHELTEC_WIFI_LORA_32_V2, 4, 15, 0x3C, 16, 5, 19, 27, 18, 14, 26))); + std::list> boardConfigs; + // clang-format off + boardConfigs.push_back(std::shared_ptr(new BoardConfig("TTGO_LORA32_V1", eTTGO_LORA32_V1, 4, 15, 0x3C, 0, 5, 19, 27, 18, 14, 26))); + boardConfigs.push_back(std::shared_ptr(new BoardConfig("TTGO_LORA32_V2", eTTGO_LORA32_V2, 21, 22, 0x3C, 0, 5, 19, 27, 18, 14, 26, true))); + boardConfigs.push_back(std::shared_ptr(new BoardConfig("TTGO_T_Beam_V0_7", eTTGO_T_Beam_V0_7, 21, 22, 0x3C, 0, 5, 19, 27, 18, 14, 26, true))); + boardConfigs.push_back(std::shared_ptr(new BoardConfig("TTGO_T_Beam_V1_0", eTTGO_T_Beam_V1_0, 21, 22, 0x3C, 0, 5, 19, 27, 18, 14, 26, true, true))); + boardConfigs.push_back(std::shared_ptr(new BoardConfig("ETH_BOARD", eETH_BOARD, 33, 32, 0x3C, 0, 14, 2, 15, 12, 4, 36))); + boardConfigs.push_back(std::shared_ptr(new BoardConfig("TRACKERD", eTRACKERD, 5, 4, 0x3C, 0, 18, 19, 23, 16, 14, 26))); + boardConfigs.push_back(std::shared_ptr(new BoardConfig("HELTEC_WIFI_LORA_32_V1", eHELTEC_WIFI_LORA_32_V1, 4, 15, 0x3C, 16, 5, 19, 27, 18, 14, 26))); + boardConfigs.push_back(std::shared_ptr(new BoardConfig("HELTEC_WIFI_LORA_32_V2", eHELTEC_WIFI_LORA_32_V2, 4, 15, 0x3C, 16, 5, 19, 27, 18, 14, 26))); + // clang-format on - BoardFinder finder(boardConfigs); - boardConfig = finder.getBoardConfig(userConfig->board); - if(boardConfig == 0) - { - boardConfig = finder.searchBoardConfig(); - if(boardConfig == 0) - { - logPrintlnE("Board config not set and search failed!"); - while(true) - {} - } - userConfig->board = boardConfig->Name; - confmg.writeConfiguration(userConfig); - logPrintlnI("will restart board now!"); - ESP.restart(); - } - logPrintI("Board "); - logPrintI(boardConfig->Name); - logPrintlnI(" loaded."); + BoardFinder finder(boardConfigs); + boardConfig = finder.getBoardConfig(userConfig->board); + if (boardConfig == 0) { + boardConfig = finder.searchBoardConfig(); + if (boardConfig == 0) { + logPrintlnE("Board config not set and search failed!"); + while (true) { + } + } + userConfig->board = boardConfig->Name; + confmg.writeConfiguration(userConfig); + logPrintlnI("will restart board now!"); + ESP.restart(); + } + logPrintI("Board "); + logPrintI(boardConfig->Name); + logPrintlnI(" loaded."); - if(boardConfig->Type == eTTGO_T_Beam_V1_0) - { - Wire.begin(boardConfig->OledSda, boardConfig->OledScl); - std::shared_ptr powerManagement = std::shared_ptr(new PowerManagement); - if (!powerManagement->begin(Wire)) - { - logPrintlnI("AXP192 init done!"); - } - else - { - logPrintlnE("AXP192 init failed!"); - } - powerManagement->activateLoRa(); - powerManagement->activateOLED(); - powerManagement->deactivateGPS(); - } + if (boardConfig->Type == eTTGO_T_Beam_V1_0) { + Wire.begin(boardConfig->OledSda, boardConfig->OledScl); + std::shared_ptr powerManagement = std::shared_ptr(new PowerManagement); + if (!powerManagement->begin(Wire)) { + logPrintlnI("AXP192 init done!"); + } else { + logPrintlnE("AXP192 init failed!"); + } + powerManagement->activateLoRa(); + powerManagement->activateOLED(); + powerManagement->deactivateGPS(); + } - load_config(boardConfig); + load_config(boardConfig); - TaskManager::instance().addTask(std::shared_ptr(new DisplayTask())); - TaskManager::instance().addTask(std::shared_ptr(new LoraTask())); - if(boardConfig->Type == eETH_BOARD) - { - TaskManager::instance().addTask(std::shared_ptr(new EthTask())); - } - TaskManager::instance().addTask(std::shared_ptr(new WifiTask())); - TaskManager::instance().addTask(std::shared_ptr(new OTATask())); - TaskManager::instance().addTask(std::shared_ptr(new NTPTask())); - if(userConfig->ftp.active) - { - TaskManager::instance().addTask(std::shared_ptr(new FTPTask())); - } - TaskManager::instance().addTask(std::shared_ptr(new AprsIsTask())); + TaskManager::instance().addTask(std::shared_ptr(new DisplayTask())); + TaskManager::instance().addTask(std::shared_ptr(new LoraTask())); + if (boardConfig->Type == eETH_BOARD) { + TaskManager::instance().addTask(std::shared_ptr(new EthTask())); + } + TaskManager::instance().addTask(std::shared_ptr(new WifiTask())); + TaskManager::instance().addTask(std::shared_ptr(new OTATask())); + TaskManager::instance().addTask(std::shared_ptr(new NTPTask())); + if (userConfig->ftp.active) { + TaskManager::instance().addTask(std::shared_ptr(new FTPTask())); + } + TaskManager::instance().addTask(std::shared_ptr(new AprsIsTask())); - TaskManager::instance().setup(userConfig, boardConfig); + TaskManager::instance().setup(userConfig, boardConfig); - Display::instance().showSpashScreen("LoRa APRS iGate", VERSION); + Display::instance().showSpashScreen("LoRa APRS iGate", VERSION); - if(userConfig->display.overwritePin != 0) - { - pinMode(userConfig->display.overwritePin, INPUT); - pinMode(userConfig->display.overwritePin, INPUT_PULLUP); - } + if (userConfig->display.overwritePin != 0) { + pinMode(userConfig->display.overwritePin, INPUT); + pinMode(userConfig->display.overwritePin, INPUT_PULLUP); + } - delay(5000); - logPrintlnI("setup done..."); + delay(5000); + logPrintlnI("setup done..."); } // cppcheck-suppress unusedFunction -void loop() -{ - TaskManager::instance().loop(userConfig); +void loop() { + TaskManager::instance().loop(userConfig); } -String create_lat_aprs(double lat) -{ - char str[20]; - char n_s = 'N'; - if(lat < 0) - { - n_s = 'S'; - } - lat = std::abs(lat); - sprintf(str, "%02d%05.2f%c", (int)lat, (lat - (double)((int)lat)) * 60.0, n_s); - String lat_str(str); - return lat_str; +String create_lat_aprs(double lat) { + char str[20]; + char n_s = 'N'; + if (lat < 0) { + n_s = 'S'; + } + lat = std::abs(lat); + sprintf(str, "%02d%05.2f%c", (int)lat, (lat - (double)((int)lat)) * 60.0, n_s); + String lat_str(str); + return lat_str; } -String create_long_aprs(double lng) -{ - char str[20]; - char e_w = 'E'; - if(lng < 0) - { - e_w = 'W'; - } - lng = std::abs(lng); - sprintf(str, "%03d%05.2f%c", (int)lng, (lng - (double)((int)lng)) * 60.0, e_w); - String lng_str(str); - return lng_str; +String create_long_aprs(double lng) { + char str[20]; + char e_w = 'E'; + if (lng < 0) { + e_w = 'W'; + } + lng = std::abs(lng); + sprintf(str, "%03d%05.2f%c", (int)lng, (lng - (double)((int)lng)) * 60.0, e_w); + String lng_str(str); + return lng_str; } diff --git a/src/Task.cpp b/src/Task.cpp deleted file mode 100644 index 6acb4df..0000000 --- a/src/Task.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "Task.h" - -/*char const * const getTaskName(TaskNames task) -{ - switch (task) - { - case TaskDisplay: - return "Display"; - case TaskAprsIs: - return "APRS-IS"; - case TaskEth: - return "ETH"; - case TaskFtp: - return "FTP"; - case TaskLora: - return "LORA"; - case TaskNtp: - return "NTP"; - case TaskOta: - return "OTA"; - case TaskWifi: - return "WIFI"; - default: - return "error"; - } -}*/ diff --git a/src/Task.h b/src/Task.h index eae32f8..4c881a4 100644 --- a/src/Task.h +++ b/src/Task.h @@ -3,24 +3,24 @@ enum TaskNames { - TaskAprsIs = 1, - TaskEth, - TaskFtp, - TaskLora, - TaskNtp, - TaskOta, - TaskWifi, - TaskSize, + TaskAprsIs = 1, + TaskEth, + TaskFtp, + TaskLora, + TaskNtp, + TaskOta, + TaskWifi, + TaskSize, }; -//char const * const getTaskName(TaskNames task); +// char const * const getTaskName(TaskNames task); -#define TASK_APRS_IS "AprsIsTask" -#define TASK_ETH "EthTask" -#define TASK_FTP "FTPTask" -#define TASK_LORA "LoraTask" -#define TASK_NTP "NTPTask" -#define TASK_OTA "OTATask" -#define TASK_WIFI "WifiTask" +#define TASK_APRS_IS "AprsIsTask" +#define TASK_ETH "EthTask" +#define TASK_FTP "FTPTask" +#define TASK_LORA "LoraTask" +#define TASK_NTP "NTPTask" +#define TASK_OTA "OTATask" +#define TASK_WIFI "WifiTask" #endif diff --git a/src/TaskAprsIs.cpp b/src/TaskAprsIs.cpp index 83be5ad..b064e72 100644 --- a/src/TaskAprsIs.cpp +++ b/src/TaskAprsIs.cpp @@ -1,84 +1,74 @@ -#include #include -#include "project_configuration.h" -#include "TaskAprsIs.h" +#include + #include "Task.h" +#include "TaskAprsIs.h" +#include "project_configuration.h" String create_lat_aprs(double lat); String create_long_aprs(double lng); -AprsIsTask::AprsIsTask() - : Task(TASK_APRS_IS, TaskAprsIs) -{ +AprsIsTask::AprsIsTask() : Task(TASK_APRS_IS, TaskAprsIs) { } -AprsIsTask::~AprsIsTask() -{ +AprsIsTask::~AprsIsTask() { } -bool AprsIsTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) -{ - _beacon_timer.setTimeout(minutesToTime_t(config->beacon.timeout)); - _aprs_is = std::shared_ptr(new APRS_IS(config->callsign, config->aprs_is.passcode , "ESP32-APRS-IS", "0.2")); +bool AprsIsTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { + _beacon_timer.setTimeout(minutesToTime_t(config->beacon.timeout)); + _aprs_is = std::shared_ptr(new APRS_IS(config->callsign, config->aprs_is.passcode, "ESP32-APRS-IS", "0.2")); - _beaconMsg = std::shared_ptr(new APRSMessage()); - _beaconMsg->setSource(config->callsign); - _beaconMsg->setDestination("APLG1"); - String lat = create_lat_aprs(config->beacon.positionLatitude); - String lng = create_long_aprs(config->beacon.positionLongitude); - _beaconMsg->getBody()->setData(String("=") + lat + "L" + lng + "a" + config->beacon.message); + _beaconMsg = std::shared_ptr(new APRSMessage()); + _beaconMsg->setSource(config->callsign); + _beaconMsg->setDestination("APLG1"); + String lat = create_lat_aprs(config->beacon.positionLatitude); + String lng = create_long_aprs(config->beacon.positionLongitude); + _beaconMsg->getBody()->setData(String("=") + lat + "L" + lng + "a" + config->beacon.message); - return true; + return true; } -bool AprsIsTask::loop(std::shared_ptr config) -{ - if(!_aprs_is->connected()) - { - if(!connect(config)) - { - _stateInfo = "not connected"; - _state = Error; - return false; - } - _stateInfo = "connected"; - _state = Okay; - return false; - } - - _aprs_is->getAPRSMessage(); +bool AprsIsTask::loop(std::shared_ptr config) { + if (!_aprs_is->connected()) { + if (!connect(config)) { + _stateInfo = "not connected"; + _state = Error; + return false; + } + _stateInfo = "connected"; + _state = Okay; + return false; + } - if(!inputQueue.empty()) - { - std::shared_ptr msg = inputQueue.getElement(); - _aprs_is->sendMessage(msg); - } + _aprs_is->getAPRSMessage(); - if(_beacon_timer.check()) - { - logPrintD("[" + timeString() + "] "); - logPrintlnD(_beaconMsg->encode()); - _aprs_is->sendMessage(_beaconMsg); - Display::instance().addFrame(std::shared_ptr(new TextFrame("BEACON", _beaconMsg->toString()))); - _beacon_timer.start(); - } - time_t diff = _beacon_timer.getTriggerTime() - now(); - _stateInfo = "beacon " + String(minute(diff)) + ":" + String(second(diff)); - _state = Okay; - return true; + if (!inputQueue.empty()) { + std::shared_ptr msg = inputQueue.getElement(); + _aprs_is->sendMessage(msg); + } + + if (_beacon_timer.check()) { + logPrintD("[" + timeString() + "] "); + logPrintlnD(_beaconMsg->encode()); + _aprs_is->sendMessage(_beaconMsg); + Display::instance().addFrame(std::shared_ptr(new TextFrame("BEACON", _beaconMsg->toString()))); + _beacon_timer.start(); + } + time_t diff = _beacon_timer.getTriggerTime() - now(); + _stateInfo = "beacon " + String(minute(diff)) + ":" + String(second(diff)); + _state = Okay; + return true; } -bool AprsIsTask::connect(std::shared_ptr config) -{ - logPrintI("connecting to APRS-IS server: "); - logPrintI(config->aprs_is.server); - logPrintI(" on port: "); - logPrintlnI(String(config->aprs_is.port)); - if(!_aprs_is->connect(config->aprs_is.server, config->aprs_is.port)) - { - logPrintlnE("Connection failed."); - return false; - } - logPrintlnI("Connected to APRS-IS server!"); - return true; +bool AprsIsTask::connect(std::shared_ptr config) { + logPrintI("connecting to APRS-IS server: "); + logPrintI(config->aprs_is.server); + logPrintI(" on port: "); + logPrintlnI(String(config->aprs_is.port)); + if (!_aprs_is->connect(config->aprs_is.server, config->aprs_is.port)) { + logPrintlnE("Connection failed."); + return false; + } + logPrintlnI("Connected to APRS-IS server!"); + return true; } diff --git a/src/TaskAprsIs.h b/src/TaskAprsIs.h index f26041f..0d0757e 100644 --- a/src/TaskAprsIs.h +++ b/src/TaskAprsIs.h @@ -1,28 +1,27 @@ #ifndef TASK_APRS_IS_H_ #define TASK_APRS_IS_H_ -#include #include #include +#include #include -class AprsIsTask : public Task -{ +class AprsIsTask : public Task { public: - AprsIsTask(); - virtual ~AprsIsTask(); + AprsIsTask(); + virtual ~AprsIsTask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; + virtual bool loop(std::shared_ptr config) override; - TaskQueue> inputQueue; + TaskQueue> inputQueue; private: - std::shared_ptr _aprs_is; - std::shared_ptr _beaconMsg; - Timer _beacon_timer; + std::shared_ptr _aprs_is; + std::shared_ptr _beaconMsg; + Timer _beacon_timer; - bool connect(std::shared_ptr config); + bool connect(std::shared_ptr config); }; #endif diff --git a/src/TaskDisplay.cpp b/src/TaskDisplay.cpp index 35f3e38..626b9fb 100644 --- a/src/TaskDisplay.cpp +++ b/src/TaskDisplay.cpp @@ -1,32 +1,27 @@ -#include #include -#include "project_configuration.h" +#include + #include "TaskDisplay.h" +#include "project_configuration.h" -DisplayTask::DisplayTask() - : Task("DisplayTask", 0) -{ +DisplayTask::DisplayTask() : Task("DisplayTask", 0) { } -DisplayTask::~DisplayTask() -{ +DisplayTask::~DisplayTask() { } -bool DisplayTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) -{ - Display::instance().setup(boardConfig); - if(config->display.turn180) - { - Display::instance().turn180(); - } - std::shared_ptr statusFrame = std::shared_ptr(new StatusFrame(TaskManager::instance().getTasks())); - Display::instance().setStatusFrame(statusFrame); - _stateInfo = config->callsign; - return true; +bool DisplayTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { + Display::instance().setup(boardConfig); + if (config->display.turn180) { + Display::instance().turn180(); + } + std::shared_ptr statusFrame = std::shared_ptr(new StatusFrame(TaskManager::instance().getTasks())); + Display::instance().setStatusFrame(statusFrame); + _stateInfo = config->callsign; + return true; } -bool DisplayTask::loop(std::shared_ptr config) -{ - Display::instance().update(); - return true; +bool DisplayTask::loop(std::shared_ptr config) { + Display::instance().update(); + return true; } diff --git a/src/TaskDisplay.h b/src/TaskDisplay.h index 0d1ce2b..4980dee 100644 --- a/src/TaskDisplay.h +++ b/src/TaskDisplay.h @@ -4,14 +4,13 @@ #include #include -class DisplayTask : public Task -{ +class DisplayTask : public Task { public: - DisplayTask(); - virtual ~DisplayTask(); + DisplayTask(); + virtual ~DisplayTask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; + virtual bool loop(std::shared_ptr config) override; }; #endif diff --git a/src/TaskEth.cpp b/src/TaskEth.cpp index a112217..e61d736 100644 --- a/src/TaskEth.cpp +++ b/src/TaskEth.cpp @@ -1,87 +1,81 @@ -#include #include +#include #include -#include "TaskEth.h" + #include "Task.h" +#include "TaskEth.h" volatile bool eth_connected = false; -static void WiFiEvent(WiFiEvent_t event) -{ - switch (event) { - case SYSTEM_EVENT_ETH_START: - logPrintlnI("ETH Started"); - ETH.setHostname("esp32-ethernet"); - break; - case SYSTEM_EVENT_ETH_CONNECTED: - logPrintlnI("ETH Connected"); - break; - case SYSTEM_EVENT_ETH_GOT_IP: - logPrintI("ETH MAC: "); - logPrintI(ETH.macAddress()); - logPrintI(", IPv4: "); - logPrintI(ETH.localIP().toString()); - if (ETH.fullDuplex()) { - logPrintI(", FULL_DUPLEX"); - } - logPrintI(", "); - logPrintI(String(ETH.linkSpeed())); - logPrintlnI("Mbps"); - eth_connected = true; - break; - case SYSTEM_EVENT_ETH_DISCONNECTED: - logPrintlnW("ETH Disconnected"); - eth_connected = false; - break; - case SYSTEM_EVENT_ETH_STOP: - logPrintlnW("ETH Stopped"); - eth_connected = false; - break; - default: - break; - } +static void WiFiEvent(WiFiEvent_t event) { + switch (event) { + case SYSTEM_EVENT_ETH_START: + logPrintlnI("ETH Started"); + ETH.setHostname("esp32-ethernet"); + break; + case SYSTEM_EVENT_ETH_CONNECTED: + logPrintlnI("ETH Connected"); + break; + case SYSTEM_EVENT_ETH_GOT_IP: + logPrintI("ETH MAC: "); + logPrintI(ETH.macAddress()); + logPrintI(", IPv4: "); + logPrintI(ETH.localIP().toString()); + if (ETH.fullDuplex()) { + logPrintI(", FULL_DUPLEX"); + } + logPrintI(", "); + logPrintI(String(ETH.linkSpeed())); + logPrintlnI("Mbps"); + eth_connected = true; + break; + case SYSTEM_EVENT_ETH_DISCONNECTED: + logPrintlnW("ETH Disconnected"); + eth_connected = false; + break; + case SYSTEM_EVENT_ETH_STOP: + logPrintlnW("ETH Stopped"); + eth_connected = false; + break; + default: + break; + } } -EthTask::EthTask() - : Task(TASK_ETH, TaskEth) -{ +EthTask::EthTask() : Task(TASK_ETH, TaskEth) { } -EthTask::~EthTask() -{ +EthTask::~EthTask() { } -bool EthTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) -{ - WiFi.onEvent(WiFiEvent); +bool EthTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { + WiFi.onEvent(WiFiEvent); - #define ETH_POWER_PIN -1 - #define ETH_TYPE ETH_PHY_LAN8720 - #define ETH_ADDR 0 - #define ETH_MDC_PIN 23 - #define ETH_MDIO_PIN 18 - #define ETH_NRST 5 - #define ETH_CLK ETH_CLOCK_GPIO17_OUT // TTGO PoE V1.0 - //#define ETH_CLK ETH_CLOCK_GPIO0_OUT // TTGO PoE V1.2 +#define ETH_POWER_PIN -1 +#define ETH_TYPE ETH_PHY_LAN8720 +#define ETH_ADDR 0 +#define ETH_MDC_PIN 23 +#define ETH_MDIO_PIN 18 +#define ETH_NRST 5 +#define ETH_CLK ETH_CLOCK_GPIO17_OUT // TTGO PoE V1.0 + //#define ETH_CLK ETH_CLOCK_GPIO0_OUT // TTGO PoE V1.2 - pinMode(ETH_NRST, OUTPUT); - digitalWrite(ETH_NRST, 0); - delay(200); - digitalWrite(ETH_NRST, 1); - delay(200); - digitalWrite(ETH_NRST, 0); - delay(200); - digitalWrite(ETH_NRST, 1); + pinMode(ETH_NRST, OUTPUT); + digitalWrite(ETH_NRST, 0); + delay(200); + digitalWrite(ETH_NRST, 1); + delay(200); + digitalWrite(ETH_NRST, 0); + delay(200); + digitalWrite(ETH_NRST, 1); - ETH.begin(ETH_ADDR, ETH_POWER_PIN, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_TYPE, ETH_CLK); - while(!eth_connected) - { - sleep(1); - } - return true; + ETH.begin(ETH_ADDR, ETH_POWER_PIN, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_TYPE, ETH_CLK); + while (!eth_connected) { + sleep(1); + } + return true; } -bool EthTask::loop(std::shared_ptr config) -{ - return true; +bool EthTask::loop(std::shared_ptr config) { + return true; } diff --git a/src/TaskEth.h b/src/TaskEth.h index a814495..79d0a47 100644 --- a/src/TaskEth.h +++ b/src/TaskEth.h @@ -3,14 +3,13 @@ #include -class EthTask : public Task -{ +class EthTask : public Task { public: - EthTask(); - virtual ~EthTask(); + EthTask(); + virtual ~EthTask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; + virtual bool loop(std::shared_ptr config) override; private: }; diff --git a/src/TaskFTP.cpp b/src/TaskFTP.cpp index a29fa32..a44189f 100644 --- a/src/TaskFTP.cpp +++ b/src/TaskFTP.cpp @@ -1,52 +1,44 @@ -#include #include +#include #include -#include "project_configuration.h" -#include "TaskFTP.h" + #include "Task.h" +#include "TaskFTP.h" +#include "project_configuration.h" -FTPTask::FTPTask() - : Task(TASK_FTP, TaskFtp), _beginCalled(false) -{ +FTPTask::FTPTask() : Task(TASK_FTP, TaskFtp), _beginCalled(false) { } -FTPTask::~FTPTask() -{ +FTPTask::~FTPTask() { } -bool FTPTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) -{ - _ftpServer = std::shared_ptr(new FTPServer()); - for(Configuration::Ftp::User user : config->ftp.users) - { - logPrintD("Adding user to FTP Server: "); - logPrintlnD(user.name); - _ftpServer->addUser(user.name, user.password); - } - _ftpServer->addFilesystem("SPIFFS", &SPIFFS); - _stateInfo = "waiting"; - return true; +bool FTPTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { + _ftpServer = std::shared_ptr(new FTPServer()); + for (Configuration::Ftp::User user : config->ftp.users) { + logPrintD("Adding user to FTP Server: "); + logPrintlnD(user.name); + _ftpServer->addUser(user.name, user.password); + } + _ftpServer->addFilesystem("SPIFFS", &SPIFFS); + _stateInfo = "waiting"; + return true; } -bool FTPTask::loop(std::shared_ptr config) -{ - if(!_beginCalled) - { - _ftpServer->begin(); - _beginCalled = true; - } - _ftpServer->handle(); - static bool configWasOpen = false; - if(configWasOpen && _ftpServer->countConnections() == 0) - { - logPrintlnW("Maybe the config has been changed via FTP, lets restart now to get the new config..."); - logPrintlnW(""); - ESP.restart(); - } - if(_ftpServer->countConnections() > 0) - { - configWasOpen = true; - _stateInfo = "has connection"; - } - return true; +bool FTPTask::loop(std::shared_ptr config) { + if (!_beginCalled) { + _ftpServer->begin(); + _beginCalled = true; + } + _ftpServer->handle(); + static bool configWasOpen = false; + if (configWasOpen && _ftpServer->countConnections() == 0) { + logPrintlnW("Maybe the config has been changed via FTP, lets restart now to get the new config..."); + logPrintlnW(""); + ESP.restart(); + } + if (_ftpServer->countConnections() > 0) { + configWasOpen = true; + _stateInfo = "has connection"; + } + return true; } diff --git a/src/TaskFTP.h b/src/TaskFTP.h index 716424c..85c7fd7 100644 --- a/src/TaskFTP.h +++ b/src/TaskFTP.h @@ -1,21 +1,20 @@ #ifndef TASK_FTP_H_ #define TASK_FTP_H_ -#include #include +#include -class FTPTask : public Task -{ +class FTPTask : public Task { public: - FTPTask(); - virtual ~FTPTask(); + FTPTask(); + virtual ~FTPTask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; + virtual bool loop(std::shared_ptr config) override; private: - std::shared_ptr _ftpServer; - bool _beginCalled; + std::shared_ptr _ftpServer; + bool _beginCalled; }; #endif diff --git a/src/TaskLora.cpp b/src/TaskLora.cpp index 4a9dc61..9194fb7 100644 --- a/src/TaskLora.cpp +++ b/src/TaskLora.cpp @@ -1,64 +1,58 @@ -#include #include -#include "project_configuration.h" -#include "TaskLora.h" -#include "TaskAprsIs.h" +#include + #include "Task.h" +#include "TaskAprsIs.h" +#include "TaskLora.h" +#include "project_configuration.h" -LoraTask::LoraTask() - : Task(TASK_LORA, TaskLora) -{ +LoraTask::LoraTask() : Task(TASK_LORA, TaskLora) { } -LoraTask::~LoraTask() -{ +LoraTask::~LoraTask() { } -bool LoraTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) -{ - _lora_aprs = std::shared_ptr(new LoRa_APRS(boardConfig)); - if(!_lora_aprs->begin(_lora_aprs->getRxFrequency())) - { - logPrintlnE("Starting LoRa failed!"); - _stateInfo = "LoRa-Modem failed"; - _state = Error; - while(true); - } - _lora_aprs->setRxFrequency(config->lora.frequencyRx); - _lora_aprs->setTxFrequency(config->lora.frequencyTx); - _lora_aprs->setTxPower(config->lora.power); - _lora_aprs->setSpreadingFactor(config->lora.spreadingFactor); - _lora_aprs->setSignalBandwidth(config->lora.signalBandwidth); - _lora_aprs->setCodingRate4(config->lora.codingRate4); - _lora_aprs->enableCrc(); +bool LoraTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { + _lora_aprs = std::shared_ptr(new LoRa_APRS(boardConfig)); + if (!_lora_aprs->begin(_lora_aprs->getRxFrequency())) { + logPrintlnE("Starting LoRa failed!"); + _stateInfo = "LoRa-Modem failed"; + _state = Error; + while (true) + ; + } + _lora_aprs->setRxFrequency(config->lora.frequencyRx); + _lora_aprs->setTxFrequency(config->lora.frequencyTx); + _lora_aprs->setTxPower(config->lora.power); + _lora_aprs->setSpreadingFactor(config->lora.spreadingFactor); + _lora_aprs->setSignalBandwidth(config->lora.signalBandwidth); + _lora_aprs->setCodingRate4(config->lora.codingRate4); + _lora_aprs->enableCrc(); - _stateInfo = ""; - return true; + _stateInfo = ""; + return true; } -bool LoraTask::loop(std::shared_ptr config) -{ - if(_lora_aprs->checkMessage()) - { - std::shared_ptr 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(" and SNR "); - logPrintlnD(String(_lora_aprs->packetSnr())); - std::shared_ptr is_thread = std::static_pointer_cast(TaskManager::instance().getTask(TASK_APRS_IS)); - is_thread->inputQueue.addElement(msg); - Display::instance().addFrame(std::shared_ptr(new TextFrame("LoRa", msg->toString()))); - } +bool LoraTask::loop(std::shared_ptr config) { + if (_lora_aprs->checkMessage()) { + std::shared_ptr 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(" and SNR "); + logPrintlnD(String(_lora_aprs->packetSnr())); + std::shared_ptr is_thread = std::static_pointer_cast(TaskManager::instance().getTask(TASK_APRS_IS)); + is_thread->inputQueue.addElement(msg); + Display::instance().addFrame(std::shared_ptr(new TextFrame("LoRa", msg->toString()))); + } - if(!inputQueue.empty()) - { - std::shared_ptr msg = inputQueue.getElement(); - _lora_aprs->sendMessage(msg); - } + if (!inputQueue.empty()) { + std::shared_ptr msg = inputQueue.getElement(); + _lora_aprs->sendMessage(msg); + } - return true; + return true; } diff --git a/src/TaskLora.h b/src/TaskLora.h index db2201d..75aac8f 100644 --- a/src/TaskLora.h +++ b/src/TaskLora.h @@ -1,23 +1,22 @@ #ifndef TASK_LORA_H_ #define TASK_LORA_H_ -#include #include #include +#include -class LoraTask : public Task -{ +class LoraTask : public Task { public: - LoraTask(); - virtual ~LoraTask(); + LoraTask(); + virtual ~LoraTask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; + virtual bool loop(std::shared_ptr config) override; - TaskQueue> inputQueue; + TaskQueue> inputQueue; private: - std::shared_ptr _lora_aprs; + std::shared_ptr _lora_aprs; }; #endif diff --git a/src/TaskNTP.cpp b/src/TaskNTP.cpp index 56247e3..5371981 100644 --- a/src/TaskNTP.cpp +++ b/src/TaskNTP.cpp @@ -1,38 +1,32 @@ -#include #include -#include "project_configuration.h" -#include "TaskNTP.h" +#include + #include "Task.h" +#include "TaskNTP.h" +#include "project_configuration.h" -NTPTask::NTPTask() - : Task(TASK_NTP, TaskNtp), _beginCalled(false) -{ +NTPTask::NTPTask() : Task(TASK_NTP, TaskNtp), _beginCalled(false) { } -NTPTask::~NTPTask() -{ +NTPTask::~NTPTask() { } -bool NTPTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) -{ - _ntpClient = std::shared_ptr(new NTPClient(config->ntpServer.c_str())); - return true; +bool NTPTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { + _ntpClient = std::shared_ptr(new NTPClient(config->ntpServer.c_str())); + return true; } -bool NTPTask::loop(std::shared_ptr config) -{ - if(!_beginCalled) - { - _ntpClient->begin(); - _beginCalled = true; - } - if(_ntpClient->update()) - { - setTime(_ntpClient->getEpochTime()); - logPrintI("Current time: "); - logPrintlnI(_ntpClient->getFormattedTime()); - } - _stateInfo = _ntpClient->getFormattedTime(); - _state = Okay; - return true; +bool NTPTask::loop(std::shared_ptr config) { + if (!_beginCalled) { + _ntpClient->begin(); + _beginCalled = true; + } + if (_ntpClient->update()) { + setTime(_ntpClient->getEpochTime()); + logPrintI("Current time: "); + logPrintlnI(_ntpClient->getFormattedTime()); + } + _stateInfo = _ntpClient->getFormattedTime(); + _state = Okay; + return true; } diff --git a/src/TaskNTP.h b/src/TaskNTP.h index ef5240b..88ae419 100644 --- a/src/TaskNTP.h +++ b/src/TaskNTP.h @@ -1,21 +1,20 @@ #ifndef TASK_NTP_H_ #define TASK_NTP_H_ -#include #include +#include -class NTPTask : public Task -{ +class NTPTask : public Task { public: - NTPTask(); - virtual ~NTPTask(); + NTPTask(); + virtual ~NTPTask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; + virtual bool loop(std::shared_ptr config) override; private: - std::shared_ptr _ntpClient; - bool _beginCalled; + std::shared_ptr _ntpClient; + bool _beginCalled; }; #endif diff --git a/src/TaskOTA.cpp b/src/TaskOTA.cpp index bd8c453..5cd7a35 100644 --- a/src/TaskOTA.cpp +++ b/src/TaskOTA.cpp @@ -1,63 +1,59 @@ #include -#include "project_configuration.h" -#include "TaskOTA.h" + #include "Task.h" +#include "TaskOTA.h" +#include "project_configuration.h" -OTATask::OTATask() - : Task(TASK_OTA, TaskOta), _beginCalled(false) -{ +OTATask::OTATask() : Task(TASK_OTA, TaskOta), _beginCalled(false) { } -OTATask::~OTATask() -{ +OTATask::~OTATask() { } -bool OTATask::setup(std::shared_ptr config, std::shared_ptr boardConfig) -{ - _ota = std::shared_ptr(new ArduinoOTAClass()); - _ota->onStart([&]() - { - String type; - if (_ota->getCommand() == U_FLASH) - type = "sketch"; - else // U_SPIFFS - type = "filesystem"; - logPrintlnI("Start updating " + type); - }) - .onEnd([]() - { - logPrintlnI(""); - logPrintlnI("OTA End"); - }) - .onProgress([](unsigned int progress, unsigned int total) - { - logPrintI("Progress: "); - logPrintI(String(progress / (total / 100))); - logPrintlnI("%"); - }) - .onError([](ota_error_t error) - { - logPrintE("Error["); - logPrintE(String(error)); - logPrintE("]: "); - if (error == OTA_AUTH_ERROR) logPrintlnE("Auth Failed"); - else if (error == OTA_BEGIN_ERROR) logPrintlnE("Begin Failed"); - else if (error == OTA_CONNECT_ERROR) logPrintlnE("Connect Failed"); - else if (error == OTA_RECEIVE_ERROR) logPrintlnE("Receive Failed"); - else if (error == OTA_END_ERROR) logPrintlnE("End Failed"); - }); - _ota->setHostname(config->callsign.c_str()); - _stateInfo = ""; - return true; +bool OTATask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { + _ota = std::shared_ptr(new ArduinoOTAClass()); + _ota->onStart([&]() { + String type; + if (_ota->getCommand() == U_FLASH) + type = "sketch"; + else // U_SPIFFS + type = "filesystem"; + logPrintlnI("Start updating " + type); + }) + .onEnd([]() { + logPrintlnI(""); + logPrintlnI("OTA End"); + }) + .onProgress([](unsigned int progress, unsigned int total) { + logPrintI("Progress: "); + logPrintI(String(progress / (total / 100))); + logPrintlnI("%"); + }) + .onError([](ota_error_t error) { + logPrintE("Error["); + logPrintE(String(error)); + logPrintE("]: "); + if (error == OTA_AUTH_ERROR) + logPrintlnE("Auth Failed"); + else if (error == OTA_BEGIN_ERROR) + logPrintlnE("Begin Failed"); + else if (error == OTA_CONNECT_ERROR) + logPrintlnE("Connect Failed"); + else if (error == OTA_RECEIVE_ERROR) + logPrintlnE("Receive Failed"); + else if (error == OTA_END_ERROR) + logPrintlnE("End Failed"); + }); + _ota->setHostname(config->callsign.c_str()); + _stateInfo = ""; + return true; } -bool OTATask::loop(std::shared_ptr config) -{ - if(!_beginCalled) - { - _ota->begin(); - _beginCalled = true; - } - _ota->handle(); - return true; +bool OTATask::loop(std::shared_ptr config) { + if (!_beginCalled) { + _ota->begin(); + _beginCalled = true; + } + _ota->handle(); + return true; } diff --git a/src/TaskOTA.h b/src/TaskOTA.h index f9aa88f..8e3e372 100644 --- a/src/TaskOTA.h +++ b/src/TaskOTA.h @@ -1,21 +1,20 @@ #ifndef TASK_OTA_H_ #define TASK_OTA_H_ -#include #include +#include -class OTATask : public Task -{ +class OTATask : public Task { public: - OTATask(); - virtual ~OTATask(); + OTATask(); + virtual ~OTATask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; + virtual bool loop(std::shared_ptr config) override; private: - std::shared_ptr _ota; - bool _beginCalled; + std::shared_ptr _ota; + bool _beginCalled; }; #endif diff --git a/src/TaskWifi.cpp b/src/TaskWifi.cpp index 8253272..fe37c5b 100644 --- a/src/TaskWifi.cpp +++ b/src/TaskWifi.cpp @@ -1,51 +1,44 @@ #include #include -#include "project_configuration.h" -#include "TaskWifi.h" + #include "Task.h" +#include "TaskWifi.h" +#include "project_configuration.h" -WifiTask::WifiTask() - : Task(TASK_WIFI, TaskWifi), _oldWifiStatus(WL_IDLE_STATUS) -{ +WifiTask::WifiTask() : Task(TASK_WIFI, TaskWifi), _oldWifiStatus(WL_IDLE_STATUS) { } -WifiTask::~WifiTask() -{ +WifiTask::~WifiTask() { } -bool WifiTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) -{ - //WiFi.onEvent(WiFiEvent); - WiFi.setHostname(config->callsign.c_str()); - _wiFiMulti = std::shared_ptr(new WiFiMulti());; - for(Configuration::Wifi::AP ap : config->wifi.APs) - { - logPrintD("Looking for AP: "); - logPrintlnD(ap.SSID); - _wiFiMulti->addAP(ap.SSID.c_str(), ap.password.c_str()); - } - return true; +bool WifiTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { + // WiFi.onEvent(WiFiEvent); + WiFi.setHostname(config->callsign.c_str()); + _wiFiMulti = std::shared_ptr(new WiFiMulti()); + ; + for (Configuration::Wifi::AP ap : config->wifi.APs) { + logPrintD("Looking for AP: "); + logPrintlnD(ap.SSID); + _wiFiMulti->addAP(ap.SSID.c_str(), ap.password.c_str()); + } + return true; } -bool WifiTask::loop(std::shared_ptr config) -{ - const uint8_t wifi_status = _wiFiMulti->run(); - if(wifi_status != WL_CONNECTED) - { - logPrintlnE("WiFi not connected!"); - _oldWifiStatus = wifi_status; - _stateInfo = "WiFi not connected"; - _state = Error; - return false; - } - else if(wifi_status != _oldWifiStatus) - { - logPrintD("IP address: "); - logPrintlnD(WiFi.localIP().toString()); - _oldWifiStatus = wifi_status; - return false; - } - _stateInfo = WiFi.localIP().toString(); - _state = Okay; - return true; +bool WifiTask::loop(std::shared_ptr config) { + const uint8_t wifi_status = _wiFiMulti->run(); + if (wifi_status != WL_CONNECTED) { + logPrintlnE("WiFi not connected!"); + _oldWifiStatus = wifi_status; + _stateInfo = "WiFi not connected"; + _state = Error; + return false; + } else if (wifi_status != _oldWifiStatus) { + logPrintD("IP address: "); + logPrintlnD(WiFi.localIP().toString()); + _oldWifiStatus = wifi_status; + return false; + } + _stateInfo = WiFi.localIP().toString(); + _state = Okay; + return true; } diff --git a/src/TaskWifi.h b/src/TaskWifi.h index 24b2a13..4e99f0b 100644 --- a/src/TaskWifi.h +++ b/src/TaskWifi.h @@ -4,18 +4,17 @@ #include #include -class WifiTask : public Task -{ +class WifiTask : public Task { public: - WifiTask(); - virtual ~WifiTask(); + WifiTask(); + virtual ~WifiTask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; + virtual bool loop(std::shared_ptr config) override; private: - std::shared_ptr _wiFiMulti; - uint8_t _oldWifiStatus; + std::shared_ptr _wiFiMulti; + uint8_t _oldWifiStatus; }; #endif diff --git a/src/project_configuration.cpp b/src/project_configuration.cpp index 4d4f7b0..f34410a 100644 --- a/src/project_configuration.cpp +++ b/src/project_configuration.cpp @@ -1,125 +1,117 @@ #include +#include + #include "project_configuration.h" -#include "logger.h" -std::shared_ptr ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocument & data) -{ - std::shared_ptr conf = std::shared_ptr(new Configuration); - if(data.containsKey("callsign")) - conf->callsign = data["callsign"].as(); +std::shared_ptr ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocument &data) { + std::shared_ptr conf = std::shared_ptr(new Configuration); + if (data.containsKey("callsign")) + conf->callsign = data["callsign"].as(); - JsonArray aps = data["wifi"]["AP"].as(); - for(JsonVariant v : aps) - { - Configuration::Wifi::AP ap; - ap.SSID = v["SSID"].as(); - ap.password = v["password"].as(); - conf->wifi.APs.push_back(ap); - } - if(data.containsKey("beacon") && data["beacon"].containsKey("message")) - conf->beacon.message = data["beacon"]["message"].as(); - conf->beacon.positionLatitude = data["beacon"]["position"]["latitude"] | 0.0; - conf->beacon.positionLongitude = data["beacon"]["position"]["longitude"] | 0.0; - conf->beacon.timeout = data["beacon"]["timeout"] | 15; - if(data.containsKey("aprs_is") && data["aprs_is"].containsKey("passcode")) - conf->aprs_is.passcode = data["aprs_is"]["passcode"].as(); - if(data.containsKey("aprs_is") && data["aprs_is"].containsKey("server")) - conf->aprs_is.server = data["aprs_is"]["server"].as(); - conf->aprs_is.port = data["aprs_is"]["port"] | 14580; + JsonArray aps = data["wifi"]["AP"].as(); + for (JsonVariant v : aps) { + Configuration::Wifi::AP ap; + ap.SSID = v["SSID"].as(); + ap.password = v["password"].as(); + conf->wifi.APs.push_back(ap); + } + if (data.containsKey("beacon") && data["beacon"].containsKey("message")) + conf->beacon.message = data["beacon"]["message"].as(); + conf->beacon.positionLatitude = data["beacon"]["position"]["latitude"] | 0.0; + conf->beacon.positionLongitude = data["beacon"]["position"]["longitude"] | 0.0; + conf->beacon.timeout = data["beacon"]["timeout"] | 15; + if (data.containsKey("aprs_is") && data["aprs_is"].containsKey("passcode")) + conf->aprs_is.passcode = data["aprs_is"]["passcode"].as(); + if (data.containsKey("aprs_is") && data["aprs_is"].containsKey("server")) + conf->aprs_is.server = data["aprs_is"]["server"].as(); + conf->aprs_is.port = data["aprs_is"]["port"] | 14580; - 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->display.alwaysOn = data["display"]["always_on"] | true; - conf->display.timeout = data["display"]["timeout"] | 10; - conf->display.overwritePin = data["display"]["overwrite_pin"] | 0; - conf->display.turn180 = data["display"]["turn180"] | true; + 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->display.alwaysOn = data["display"]["always_on"] | true; + conf->display.timeout = data["display"]["timeout"] | 10; + conf->display.overwritePin = data["display"]["overwrite_pin"] | 0; + conf->display.turn180 = data["display"]["turn180"] | true; - conf->ftp.active = data["ftp"]["active"] | false; - JsonArray users = data["ftp"]["user"].as(); - for(JsonVariant u : users) - { - Configuration::Ftp::User us; - us.name = u["name"].as(); - us.password = u["password"].as(); - conf->ftp.users.push_back(us); - } - if(conf->ftp.users.empty()) - { - Configuration::Ftp::User us; - us.name = "ftp"; - us.password = "ftp"; - conf->ftp.users.push_back(us); - } - if(data.containsKey("ntp_server")) - conf->ntpServer = data["ntp_server"].as(); + conf->ftp.active = data["ftp"]["active"] | false; + JsonArray users = data["ftp"]["user"].as(); + for (JsonVariant u : users) { + Configuration::Ftp::User us; + us.name = u["name"].as(); + us.password = u["password"].as(); + conf->ftp.users.push_back(us); + } + if (conf->ftp.users.empty()) { + Configuration::Ftp::User us; + us.name = "ftp"; + us.password = "ftp"; + conf->ftp.users.push_back(us); + } + if (data.containsKey("ntp_server")) + conf->ntpServer = data["ntp_server"].as(); - if(data.containsKey("board")) - conf->board = data["board"].as(); + if (data.containsKey("board")) + conf->board = data["board"].as(); - return conf; + return conf; } -void ProjectConfigurationManagement::writeProjectConfiguration(std::shared_ptr conf, DynamicJsonDocument & data) -{ - data["callsign"] = conf->callsign; - JsonArray aps = data["wifi"].createNestedArray("AP"); - for(Configuration::Wifi::AP ap : conf->wifi.APs) - { - JsonObject v = aps.createNestedObject(); - v["SSID"] = ap.SSID; - v["password"] = ap.password; - } - data["beacon"]["message"] = conf->beacon.message; - data["beacon"]["position"]["latitude"] = conf->beacon.positionLatitude; - data["beacon"]["position"]["longitude"] = conf->beacon.positionLongitude; - data["beacon"]["timeout"] = conf->beacon.timeout; - data["aprs_is"]["passcode"] = conf->aprs_is.passcode; - data["aprs_is"]["server"] = conf->aprs_is.server; - data["aprs_is"]["port"] = conf->aprs_is.port; - 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["display"]["always_on"] = conf->display.alwaysOn; - data["display"]["timeout"] = conf->display.timeout; - data["display"]["overwrite_pin"] = conf->display.overwritePin; - data["display"]["turn180"] = conf->display.turn180; - data["ftp"]["active"] = conf->ftp.active; - JsonArray users = data["ftp"].createNestedArray("user"); - for(Configuration::Ftp::User u : conf->ftp.users) - { - JsonObject v = users.createNestedObject(); - v["name"] = u.name; - v["password"] = u.password; - } - data["ntp_server"] = conf->ntpServer; +void ProjectConfigurationManagement::writeProjectConfiguration(std::shared_ptr conf, DynamicJsonDocument &data) { + data["callsign"] = conf->callsign; + JsonArray aps = data["wifi"].createNestedArray("AP"); + for (Configuration::Wifi::AP ap : conf->wifi.APs) { + JsonObject v = aps.createNestedObject(); + v["SSID"] = ap.SSID; + v["password"] = ap.password; + } + data["beacon"]["message"] = conf->beacon.message; + data["beacon"]["position"]["latitude"] = conf->beacon.positionLatitude; + data["beacon"]["position"]["longitude"] = conf->beacon.positionLongitude; + data["beacon"]["timeout"] = conf->beacon.timeout; + data["aprs_is"]["passcode"] = conf->aprs_is.passcode; + data["aprs_is"]["server"] = conf->aprs_is.server; + data["aprs_is"]["port"] = conf->aprs_is.port; + 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["display"]["always_on"] = conf->display.alwaysOn; + data["display"]["timeout"] = conf->display.timeout; + data["display"]["overwrite_pin"] = conf->display.overwritePin; + data["display"]["turn180"] = conf->display.turn180; + data["ftp"]["active"] = conf->ftp.active; + JsonArray users = data["ftp"].createNestedArray("user"); + for (Configuration::Ftp::User u : conf->ftp.users) { + JsonObject v = users.createNestedObject(); + v["name"] = u.name; + v["password"] = u.password; + } + data["ntp_server"] = conf->ntpServer; - data["board"] = conf->board; + data["board"] = conf->board; } -std::shared_ptr load_config(std::shared_ptr boardConfig) -{ - ProjectConfigurationManagement confmg; - std::shared_ptr config = confmg.readConfiguration(); - if(config->callsign == "NOCALL-10") - { - logPrintlnE("You have to change your settings in 'data/is-cfg.json' and upload it via \"Upload File System image\"!"); - //show_display("ERROR", "You have to change your settings in 'data/is-cfg.json' and upload it via \"Upload File System image\"!"); - while (true) - {} - } +std::shared_ptr load_config(std::shared_ptr boardConfig) { + ProjectConfigurationManagement confmg; + std::shared_ptr config = confmg.readConfiguration(); + if (config->callsign == "NOCALL-10") { + logPrintlnE("You have to change your settings in 'data/is-cfg.json' and upload it via \"Upload File System image\"!"); + // show_display("ERROR", "You have to change your settings in 'data/is-cfg.json' and upload it via \"Upload File System image\"!"); + while (true) { + } + } - /*if(KEY_BUILTIN != 0 && Config->display.overwritePin == 0) - { - Config->display.overwritePin = KEY_BUILTIN; - }*/ - logPrintlnI("Configuration loaded!"); - return config; + /*if(KEY_BUILTIN != 0 && Config->display.overwritePin == 0) + { + Config->display.overwritePin = KEY_BUILTIN; + }*/ + logPrintlnI("Configuration loaded!"); + return config; } diff --git a/src/project_configuration.h b/src/project_configuration.h index 44da8e5..00ebefa 100644 --- a/src/project_configuration.h +++ b/src/project_configuration.h @@ -1,110 +1,108 @@ #ifndef PROJECT_CONFIGURATION_H_ #define PROJECT_CONFIGURATION_H_ -#include "configuration.h" -#include "BoardFinder.h" +#include +#include -class Configuration -{ +class Configuration { public: - class Wifi - { - public: - class AP - { - public: - String SSID; - String password; - }; + class Wifi { + public: + class AP { + public: + String SSID; + String password; + }; - Wifi() {} + Wifi() { + } - std::list APs; - }; + std::list APs; + }; - class Beacon - { - public: - Beacon() : message("LoRa iGATE & Digi, Info: github.com/peterus/LoRa_APRS_iGate"), positionLatitude(0.0), positionLongitude(0.0), timeout(15) {} + class Beacon { + public: + Beacon() : message("LoRa iGATE & Digi, Info: github.com/peterus/LoRa_APRS_iGate"), positionLatitude(0.0), positionLongitude(0.0), timeout(15) { + } - String message; - double positionLatitude; - double positionLongitude; - int timeout; - }; + String message; + double positionLatitude; + double positionLongitude; + int timeout; + }; - class APRS_IS - { - public: - APRS_IS() : server("euro.aprs2.net"), port(14580) {} + class APRS_IS { + public: + APRS_IS() : server("euro.aprs2.net"), port(14580) { + } - String passcode; - String server; - int port; - }; + String passcode; + String server; + int port; + }; - class LoRa - { - public: - LoRa() : frequencyRx(433775000), frequencyTx(433775000), power(20), spreadingFactor(12), signalBandwidth(125000), codingRate4(5) {} + class LoRa { + 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; + long frequencyTx; + int power; + int spreadingFactor; + long signalBandwidth; + int codingRate4; + }; - class Display - { - public: - Display() : alwaysOn(true), timeout(10), overwritePin(0), turn180(true) {} + class Display { + public: + Display() : alwaysOn(true), timeout(10), overwritePin(0), turn180(true) { + } - bool alwaysOn; - int timeout; - int overwritePin; - bool turn180; - }; + bool alwaysOn; + int timeout; + int overwritePin; + bool turn180; + }; - class Ftp - { - public: - class User - { - public: - String name; - String password; - }; + class Ftp { + public: + class User { + public: + String name; + String password; + }; - Ftp() : active(false) {} + Ftp() : active(false) { + } - bool active; - std::list users; - }; + bool active; + std::list users; + }; - Configuration() : callsign("NOCALL-10"), board(""), ntpServer("pool.ntp.org") {}; + Configuration() : callsign("NOCALL-10"), board(""), ntpServer("pool.ntp.org"){}; - String callsign; - Wifi wifi; - Beacon beacon; - APRS_IS aprs_is; - LoRa lora; - Display display; - Ftp ftp; - String board; - String ntpServer; + String callsign; + Wifi wifi; + Beacon beacon; + APRS_IS aprs_is; + LoRa lora; + Display display; + Ftp ftp; + String board; + String ntpServer; }; -class ProjectConfigurationManagement : public ConfigurationManagement -{ +class ProjectConfigurationManagement : public ConfigurationManagement { public: - explicit ProjectConfigurationManagement() : ConfigurationManagement("/is-cfg.json") {} - virtual ~ProjectConfigurationManagement() {} + explicit ProjectConfigurationManagement() : ConfigurationManagement("/is-cfg.json") { + } + virtual ~ProjectConfigurationManagement() { + } private: - virtual std::shared_ptr readProjectConfiguration(DynamicJsonDocument & data) override; - virtual void writeProjectConfiguration(std::shared_ptr conf, DynamicJsonDocument & data) override; + virtual std::shared_ptr readProjectConfiguration(DynamicJsonDocument &data) override; + virtual void writeProjectConfiguration(std::shared_ptr conf, DynamicJsonDocument &data) override; }; std::shared_ptr load_config(std::shared_ptr boardConfig);