From 8070392996d70fd6474babd4cc07ca2d1d51a502 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Nidecki?= Date: Sun, 25 Apr 2021 16:29:07 +0200 Subject: [PATCH] Move preferences code to spearate cpp/h files. Fixed saving GPS enable status Developer option for syslog logging --- include/preference_storage.h | 48 +++++++++++++++++++++++++++++++++++ include/syslog_log.h | 25 ++++++++++++++++++ include/taskWebServer.h | 41 ------------------------------ platformio.ini | 13 ++++++++++ src/TTGO_T-Beam_LoRa_APRS.ino | 16 ++++++++---- src/preference_storage.cpp | 3 +++ src/taskWebServer.cpp | 25 +++++++++++++++++- 7 files changed, 124 insertions(+), 47 deletions(-) create mode 100644 include/preference_storage.h create mode 100644 include/syslog_log.h create mode 100644 src/preference_storage.cpp diff --git a/include/preference_storage.h b/include/preference_storage.h new file mode 100644 index 0000000..442e43b --- /dev/null +++ b/include/preference_storage.h @@ -0,0 +1,48 @@ +#include + +#ifndef PREF_STORAGE +#define PREF_STORAGE + + +#define ENABLE_PREFERENCES +extern Preferences preferences; + +// MAX 15 chars for preferenece key!!! +static const char *const PREF_WIFI_SSID = "wifi_ssid"; +static const char *const PREF_WIFI_PASSWORD = "wifi_password"; +static const char *const PREF_APRS_CALLSIGN = "aprs_callsign"; +static const char *const PREF_APRS_RELAY_PATH = "aprs_relay_path"; +static const char *const PREF_APRS_RELAY_PATH_INIT = "aprs_relay_init"; +static const char *const PREF_APRS_SYMBOL_TABLE = "aprs_s_table"; +static const char *const PREF_APRS_SYMBOL = "aprs_symbol"; +static const char *const PREF_APRS_COMMENT = "aprs_comment"; +static const char *const PREF_APRS_COMMENT_INIT = "aprs_comm_init"; +static const char *const PREF_APRS_SHOW_ALTITUDE = "aprs_alt"; +static const char *const PREF_APRS_SHOW_ALTITUDE_INIT = "aprs_alt_init"; +static const char *const PREF_APRS_SHOW_BATTERY = "aprs_batt"; +static const char *const PREF_APRS_SHOW_BATTERY_INIT = "aprs_batt_init"; +static const char *const PREF_APRS_LATITUDE_PRESET = "aprs_lat_p"; +static const char *const PREF_APRS_LATITUDE_PRESET_INIT = "aprs_lat_p_init"; +static const char *const PREF_APRS_LONGITUDE_PRESET = "aprs_lon_p"; +static const char *const PREF_APRS_LONGITUDE_PRESET_INIT = "aprs_lon_p_init"; +static const char *const PREF_APRS_FIXED_BEACON_PRESET = "aprs_fixed_beac"; +static const char *const PREF_APRS_FIXED_BEACON_PRESET_INIT = "aprs_fix_b_init"; +static const char *const PREF_APRS_FIXED_BEACON_INTERVAL_PRESET = "aprs_fb_interv"; +static const char *const PREF_APRS_FIXED_BEACON_INTERVAL_PRESET_INIT = "aprs_fb_in_init"; +static const char *const PREF_APRS_GPS_EN = "gps_enabled"; +static const char *const PREF_APRS_GPS_EN_INIT = "gps_state_init"; +static const char *const PREF_APRS_SHOW_CMT = "show_cmt"; +static const char *const PREF_APRS_SHOW_CMT_INIT = "show_cmt_init"; +static const char *const PREF_DEV_BT_EN = "bt_enabled"; +static const char *const PREF_DEV_BT_EN_INIT = "bt_enabled_init"; +static const char *const PREF_DEV_OL_EN = "oled_enabled"; +static const char *const PREF_DEV_OL_EN_INIT = "ol_enabled_init"; +static const char *const PREF_DEV_SHOW_RX_TIME = "sh_rxtime"; +static const char *const PREF_DEV_SHOW_RX_TIME_INIT = "sh_rxtime_init"; +static const char *const PREF_DEV_AUTO_SHUT = "shutdown_act"; +static const char *const PREF_DEV_AUTO_SHUT_INIT = "shutdown_actini"; +static const char *const PREF_DEV_AUTO_SHUT_PRESET = "shutdown_dt"; +static const char *const PREF_DEV_AUTO_SHUT_PRESET_INIT = "shutdown_dtini"; + + +#endif diff --git a/include/syslog_log.h b/include/syslog_log.h new file mode 100644 index 0000000..3f6adf1 --- /dev/null +++ b/include/syslog_log.h @@ -0,0 +1,25 @@ +#ifdef ENABLE_SYSLOG + #include + #include +#endif + +#ifndef SYSLOG_LOG +#define SYSLOG_LOG +#ifdef ENABLE_SYSLOG +extern Syslog syslog; + #define syslog_log(a, b) syslog.log(a, b) +#else + #define LOG_EMERG 0 + #define LOG_ALERT 1 + #define LOG_CRIT 2 + #define LOG_ERR 3 + #define LOG_WARNING 4 + #define LOG_NOTICE 5 + #define LOG_INFO 6 + #define LOG_DEBUG 7 + + #define syslog_log(a, b) do{}while(0) +#endif + +#endif + diff --git a/include/taskWebServer.h b/include/taskWebServer.h index f059d4e..a9f1600 100644 --- a/include/taskWebServer.h +++ b/include/taskWebServer.h @@ -2,56 +2,15 @@ #include #include #include -#include #include #ifndef TASK_WEBSERVER #define TASK_WEBSERVER -#define ENABLE_PREFERENCES - -extern Preferences preferences; #ifdef KISS_PROTOCOL extern WiFiServer tncServer; #endif -// MAX 15 chars for preferenece key!!! -static const char *const PREF_WIFI_SSID = "wifi_ssid"; -static const char *const PREF_WIFI_PASSWORD = "wifi_password"; -static const char *const PREF_APRS_CALLSIGN = "aprs_callsign"; -static const char *const PREF_APRS_RELAY_PATH = "aprs_relay_path"; -static const char *const PREF_APRS_RELAY_PATH_INIT = "aprs_relay_init"; -static const char *const PREF_APRS_SYMBOL_TABLE = "aprs_s_table"; -static const char *const PREF_APRS_SYMBOL = "aprs_symbol"; -static const char *const PREF_APRS_COMMENT = "aprs_comment"; -static const char *const PREF_APRS_COMMENT_INIT = "aprs_comm_init"; -static const char *const PREF_APRS_SHOW_ALTITUDE = "aprs_alt"; -static const char *const PREF_APRS_SHOW_ALTITUDE_INIT = "aprs_alt_init"; -static const char *const PREF_APRS_SHOW_BATTERY = "aprs_batt"; -static const char *const PREF_APRS_SHOW_BATTERY_INIT = "aprs_batt_init"; -static const char *const PREF_APRS_LATITUDE_PRESET = "aprs_lat_p"; -static const char *const PREF_APRS_LATITUDE_PRESET_INIT = "aprs_lat_p_init"; -static const char *const PREF_APRS_LONGITUDE_PRESET = "aprs_lon_p"; -static const char *const PREF_APRS_LONGITUDE_PRESET_INIT = "aprs_lon_p_init"; -static const char *const PREF_APRS_FIXED_BEACON_PRESET = "aprs_fixed_beac"; -static const char *const PREF_APRS_FIXED_BEACON_PRESET_INIT = "aprs_fix_b_init"; -static const char *const PREF_APRS_FIXED_BEACON_INTERVAL_PRESET = "aprs_fb_interv"; -static const char *const PREF_APRS_FIXED_BEACON_INTERVAL_PRESET_INIT = "aprs_fb_in_init"; -static const char *const PREF_APRS_GPS_EN = "gps_enabled"; -static const char *const PREF_APRS_GPS_EN_INIT = "gps_state_init"; -static const char *const PREF_APRS_SHOW_CMT = "show_cmt"; -static const char *const PREF_APRS_SHOW_CMT_INIT = "show_cmt_init"; -static const char *const PREF_DEV_BT_EN = "bt_enabled"; -static const char *const PREF_DEV_BT_EN_INIT = "bt_enabled_init"; -static const char *const PREF_DEV_OL_EN = "oled_enabled"; -static const char *const PREF_DEV_OL_EN_INIT = "ol_enabled_init"; -static const char *const PREF_DEV_SHOW_RX_TIME = "sh_rxtime"; -static const char *const PREF_DEV_SHOW_RX_TIME_INIT = "sh_rxtime_init"; -static const char *const PREF_DEV_AUTO_SHUT = "shutdown_act"; -static const char *const PREF_DEV_AUTO_SHUT_INIT = "shutdown_actini"; -static const char *const PREF_DEV_AUTO_SHUT_PRESET = "shutdown_dt"; -static const char *const PREF_DEV_AUTO_SHUT_PRESET_INIT = "shutdown_dtini"; - typedef struct { String callsign; } tWebServerCfg; diff --git a/platformio.ini b/platformio.ini index 96b1f8a..8e22768 100644 --- a/platformio.ini +++ b/platformio.ini @@ -108,3 +108,16 @@ build_flags = -D ENABLE_WIFI -D HELTEC_V2 +[env:ttgo-t-beam-v1.0-development] +platform = espressif32 @ 3.0.0 +board = ttgo-t-beam +build_flags = + ${env.build_flags} + -D T_BEAM_V1_0 + -D ENABLE_WIFI + -D ENABLE_BLUETOOTH + -D ENABLE_SYSLOG + -D 'SYSLOG_IP="192.168.0.102"' +lib_deps = + ${env.lib_deps} + arcao/Syslog diff --git a/src/TTGO_T-Beam_LoRa_APRS.ino b/src/TTGO_T-Beam_LoRa_APRS.ino index c706d8b..13479b1 100644 --- a/src/TTGO_T-Beam_LoRa_APRS.ino +++ b/src/TTGO_T-Beam_LoRa_APRS.ino @@ -22,6 +22,8 @@ #include #include "taskGPS.h" #include "version.h" +#include "preference_storage.h" +#include "syslog_log.h" #ifdef KISS_PROTOCOL #include "taskTNC.h" @@ -744,15 +746,17 @@ void loop() { if(digitalRead(BUTTON)==LOW && key_up == false && millis() >= time_delay && t_lock == false){ t_lock = true; - if(gps_state == true){ + if(gps_state){ gps_state = false; #ifdef T_BEAM_V1_0 axp.setPowerOutPut(AXP192_LDO3, AXP202_OFF); // GPS OFF #endif writedisplaytext("((GPSOFF))","","","","",""); next_fixed_beacon = millis() + fix_beacon_interval; - preferences.putBool(PREF_APRS_GPS_EN_INIT, false); - preferences.putBool(PREF_APRS_GPS_EN, false); + #ifdef ENABLE_PREFERENCES + preferences.putBool(PREF_APRS_GPS_EN, false); + #endif + }else{ gps_state = true; @@ -760,8 +764,9 @@ void loop() { axp.setPowerOutPut(AXP192_LDO3, AXP202_ON); #endif writedisplaytext("((GPS ON))","","","","",""); // GPS ON - preferences.putBool(PREF_APRS_GPS_EN_INIT, true); - preferences.putBool(PREF_APRS_GPS_EN, true); + #ifdef ENABLE_PREFERENCES + preferences.putBool(PREF_APRS_GPS_EN, true); + #endif } } @@ -834,6 +839,7 @@ void loop() { #ifdef KISS_PROTOCOL sendToTNC(loraReceivedFrameString); #endif + syslog_log(LOG_INFO, String("Received LoRa: '") + loraReceivedFrameString + "', RSSI:" + rf95.lastRssi() + ", SNR: " + rf95.lastSNR()); } #endif #ifdef T_BEAM_V1_0 diff --git a/src/preference_storage.cpp b/src/preference_storage.cpp new file mode 100644 index 0000000..f11b6c6 --- /dev/null +++ b/src/preference_storage.cpp @@ -0,0 +1,3 @@ +#include "preference_storage.h" + +Preferences preferences; \ No newline at end of file diff --git a/src/taskWebServer.cpp b/src/taskWebServer.cpp index 1b5c5f0..2709ec3 100644 --- a/src/taskWebServer.cpp +++ b/src/taskWebServer.cpp @@ -1,4 +1,6 @@ #include "taskWebServer.h" +#include "preference_storage.h" +#include "syslog_log.h" /** * @see board_build.embed_txtfiles in platformio.ini */ @@ -13,11 +15,18 @@ extern const char web_js_js_end[] asm("_binary_data_embed_js_js_out_end"); String apSSID = ""; String apPassword = "xxxxxxxxxx"; WebServer server(80); -Preferences preferences; #ifdef KISS_PROTOCOL WiFiServer tncServer(NETWORK_TNC_PORT); #endif +#ifdef ENABLE_SYSLOG + // A UDP instance to let us send and receive packets over UDP + WiFiUDP udpClient; + + // Create a new empty syslog instance + Syslog syslog(udpClient, SYSLOG_PROTO_IETF); +#endif + void sendCacheHeader() { server.sendHeader("Cache-Control", "max-age=3600"); } void sendGzipHeader() { server.sendHeader("Content-Encoding", "gzip"); } @@ -199,25 +208,31 @@ void handle_saveDeviceCfg(){ server.on("/save_device_cfg", handle_saveDeviceCfg); server.on("/restore", handle_Restore); server.on("/update", HTTP_POST, []() { + syslog_log(LOG_WARNING, String("Update finished. Status: ") + (Update.hasError() ? "Ok" : "Error")); server.sendHeader("Connection", "close"); server.send(200, "text/plain", (Update.hasError()) ? "FAIL" : "OK"); + delay(500); ESP.restart(); }, []() { HTTPUpload& upload = server.upload(); if (upload.status == UPLOAD_FILE_START) { Serial.printf("Update: %s\n", upload.filename.c_str()); if (!Update.begin(UPDATE_SIZE_UNKNOWN)) { //start with max available size + syslog_log(LOG_ERR, String("Update begin error: ") + Update.errorString()); Update.printError(Serial); } } else if (upload.status == UPLOAD_FILE_WRITE) { /* flashing firmware to ESP*/ if (Update.write(upload.buf, upload.currentSize) != upload.currentSize) { + syslog_log(LOG_ERR, String("Update error: ") + Update.errorString()); Update.printError(Serial); } } else if (upload.status == UPLOAD_FILE_END) { if (Update.end(true)) { //true to set the size to the current progress Serial.printf("Update Success: %u\nRebooting...\n", upload.totalSize); + syslog_log(LOG_WARNING, String("Update Success: ") + String((int)upload.totalSize)); } else { + syslog_log(LOG_ERR, String("Update error: ") + Update.errorString()); Update.printError(Serial); } } @@ -237,6 +252,14 @@ void handle_saveDeviceCfg(){ vTaskDelay(500/portTICK_PERIOD_MS); } Serial.println("Connected. IP: " + WiFi.localIP().toString()); + #ifdef ENABLE_SYSLOG + syslog.server(SYSLOG_IP, 514); + syslog.deviceHostname(webServerCfg->callsign.c_str()); + syslog.appName("TTGO"); + syslog.defaultPriority(LOG_KERN); + syslog_log(LOG_INFO, "Connected. IP: " + WiFi.localIP().toString()); + #endif + } server.begin();