diff --git a/data/tracker_config.json b/data/tracker_config.json index f2fc11c..0522794 100644 --- a/data/tracker_config.json +++ b/data/tracker_config.json @@ -1,7 +1,7 @@ { "beacons": [ { - "callsign": "NOCALL-7", + "callsign": "CA2RXU-7", "symbol": "[", "overlay": "/", "micE": "", @@ -19,7 +19,7 @@ } }, { - "callsign": "NOCALL-7", + "callsign": "CA2RXU-7", "symbol": ">", "overlay": "/", "micE": "", @@ -37,7 +37,7 @@ } }, { - "callsign": "NOCALL-7", + "callsign": "CA2RXU-7", "symbol": "b", "overlay": "/", "micE": "", @@ -55,19 +55,15 @@ } } ], - "lora": { - "frequency": 433775000, - "spreadingFactor": 12, - "signalBandwidth": 125000, - "codingRate4": 5, - "power": 20 - }, + "display": { + "showSymbol": true, + "ecoMode": true, + "timeout": 4, + "turn180" : false + }, "other": { "simplifiedTrackerMode": false, - "showSymbolOnScreen": true, "sendCommentAfterXBeacons": 10, - "displayEcoMode": false, - "displayTimeout": 4, "path": "WIDE1-1", "nonSmartBeaconRate": 15, "rememberStationTime": 30, @@ -75,36 +71,46 @@ "standingUpdateTime": 15, "sendAltitude": true, "sendBatteryInfo": false, - "bluetoothType": 1, + "bluetoothType": 0, "bluetoothActive": true, "disableGPS": false }, + "winlink": { + "password": "ABCDEF" + }, + "bme": { + "active": true, + "sendTelemetry": false, + "heightCorrection": 0 + }, + "notification": { + "ledTx": true, + "ledTxPin": 25, + "ledMessage": true, + "ledMessagePin": 13, + "ledFlashlight": true, + "ledFlashlightPin": 14, + "buzzerActive": true, + "buzzerPinTone": 4, + "buzzerPinVcc": 2, + "bootUpBeep": true, + "txBeep": false, + "messageRxBeep": true, + "stationBeep": true, + "lowBatteryBeep": false + }, + "lora": { + "frequency": 433775000, + "spreadingFactor": 12, + "signalBandwidth": 125000, + "codingRate4": 5, + "power": 20 + }, "pttTrigger": { "active": false, "io_pin": 4, "preDelay": 0, "postDelay": 0, "reverse": false - }, - "bme": { - "active": false, - "sendTelemetry": false, - "heightCorrection": 0 - }, - "notification": { - "ledTx": false, - "ledTxPin": 13, - "ledMessage": false, - "ledMessagePin": 2, - "ledFlashlight": false, - "ledFlashlightPin": 14, - "buzzerActive": false, - "buzzerPinTone": 33, - "buzzerPinVcc": 25, - "bootUpBeep": false, - "txBeep": false, - "messageRxBeep": false, - "stationBeep": false, - "lowBatteryBeep": false } } \ No newline at end of file diff --git a/src/LoRa_APRS_Tracker.cpp b/src/LoRa_APRS_Tracker.cpp index e746302..3fa9a62 100644 --- a/src/LoRa_APRS_Tracker.cpp +++ b/src/LoRa_APRS_Tracker.cpp @@ -34,7 +34,7 @@ BluetoothSerial SerialBT; OneButton userButton = OneButton(BUTTON_PIN, true, true); #endif -String versionDate = "2024.01.18"; +String versionDate = "2024.01.22"; int myBeaconsIndex = 0; int myBeaconsSize = Config.beacons.size(); @@ -45,7 +45,7 @@ int menuDisplay = 100; int messagesIterator = 0; std::vector loadedAPRSMessages; -bool displayEcoMode = Config.displayEcoMode; +bool displayEcoMode = Config.display.ecoMode; bool displayState = true; uint32_t displayTime = millis(); uint32_t refreshDisplayTime = millis(); diff --git a/src/configuration.cpp b/src/configuration.cpp index 385455d..89fef4d 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -32,7 +32,6 @@ void Configuration::readFile(fs::FS &fs, const char *fileName) { bcn.overlay = BeaconsArray[i]["overlay"].as(); bcn.micE = BeaconsArray[i]["micE"].as(); bcn.comment = BeaconsArray[i]["comment"].as(); - bcn.smartBeaconState = BeaconsArray[i]["smartBeacon"]["active"].as(); bcn.slowRate = BeaconsArray[i]["smartBeacon"]["slowRate"].as(); bcn.slowSpeed = BeaconsArray[i]["smartBeacon"]["slowSpeed"].as(); @@ -41,22 +40,17 @@ void Configuration::readFile(fs::FS &fs, const char *fileName) { bcn.minTxDist = BeaconsArray[i]["smartBeacon"]["minTxDist"].as(); bcn.minDeltaBeacon = BeaconsArray[i]["smartBeacon"]["minDeltaBeacon"].as(); bcn.turnMinDeg = BeaconsArray[i]["smartBeacon"]["turnMinDeg"].as(); - bcn.turnSlope = BeaconsArray[i]["smartBeacon"]["turnSlope"].as(); - + bcn.turnSlope = BeaconsArray[i]["smartBeacon"]["turnSlope"].as(); + beacons.push_back(bcn); } - loramodule.frequency = data["lora"]["frequency"].as(); - loramodule.spreadingFactor = data["lora"]["spreadingFactor"].as(); - loramodule.signalBandwidth = data["lora"]["signalBandwidth"].as(); - loramodule.codingRate4 = data["lora"]["codingRate4"].as(); - loramodule.power = data["lora"]["power"].as(); + display.showSymbol = data["display"]["showSymbol"].as(); + display.ecoMode = data["display"]["ecoMode"].as(); + display.timeout = data["display"]["timeout"].as(); + display.turn180 = data["display"]["turn180"].as(); - ptt.active = data["pttTrigger"]["active"].as(); - ptt.io_pin = data["pttTrigger"]["io_pin"].as(); - ptt.preDelay = data["pttTrigger"]["preDelay"].as(); - ptt.postDelay = data["pttTrigger"]["postDelay"].as(); - ptt.reverse = data["pttTrigger"]["reverse"].as(); + winlink.password = data["winlink"]["password"].as(); bme.active = data["bme"]["active"].as(); bme.sendTelemetry = data["bme"]["sendTelemetry"].as(); @@ -77,11 +71,20 @@ void Configuration::readFile(fs::FS &fs, const char *fileName) { notification.stationBeep = data["notification"]["stationBeep"].as(); notification.lowBatteryBeep = data["notification"]["lowBatteryBeep"].as(); + loramodule.frequency = data["lora"]["frequency"].as(); + loramodule.spreadingFactor = data["lora"]["spreadingFactor"].as(); + loramodule.signalBandwidth = data["lora"]["signalBandwidth"].as(); + loramodule.codingRate4 = data["lora"]["codingRate4"].as(); + loramodule.power = data["lora"]["power"].as(); + + ptt.active = data["pttTrigger"]["active"].as(); + ptt.io_pin = data["pttTrigger"]["io_pin"].as(); + ptt.preDelay = data["pttTrigger"]["preDelay"].as(); + ptt.postDelay = data["pttTrigger"]["postDelay"].as(); + ptt.reverse = data["pttTrigger"]["reverse"].as(); + simplifiedTrackerMode = data["other"]["simplifiedTrackerMode"].as(); - showSymbolOnScreen = data["other"]["showSymbolOnScreen"].as(); sendCommentAfterXBeacons = data["other"]["sendCommentAfterXBeacons"].as(); - displayEcoMode = data["other"]["displayEcoMode"].as(); - displayTimeout = data["other"]["displayTimeout"].as(); path = data["other"]["path"].as(); nonSmartBeaconRate = data["other"]["nonSmartBeaconRate"].as(); rememberStationTime = data["other"]["rememberStationTime"].as(); diff --git a/src/configuration.h b/src/configuration.h index c0f716f..0d6bfcb 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -23,22 +23,17 @@ public: int turnSlope; }; -class LoraModule { +class Display { public: - long frequency; - int spreadingFactor; - long signalBandwidth; - int codingRate4; - int power; + bool showSymbol; + bool ecoMode; + int timeout; + bool turn180; }; -class Ptt { +class Winlink { public: - bool active; - int io_pin; - int preDelay; - int postDelay; - bool reverse; + String password; }; class BME { @@ -66,21 +61,37 @@ public: bool lowBatteryBeep; }; +class LoraModule { +public: + long frequency; + int spreadingFactor; + long signalBandwidth; + int codingRate4; + int power; +}; + +class Ptt { +public: + bool active; + int io_pin; + int preDelay; + int postDelay; + bool reverse; +}; class Configuration { public: std::vector beacons; - LoraModule loramodule; - Ptt ptt; + Display display; + Winlink winlink; BME bme; Notification notification; - + LoraModule loramodule; + Ptt ptt; + bool simplifiedTrackerMode; - bool showSymbolOnScreen; int sendCommentAfterXBeacons; - bool displayEcoMode; - int displayTimeout; String path; int nonSmartBeaconRate; int rememberStationTime; diff --git a/src/display.cpp b/src/display.cpp index b00a1cf..b749cf4 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -67,6 +67,9 @@ void setup_display() { while (true) { } } + if (Config.display.turn180) { + display.setRotation(2); + } #else if (!display.begin(0x3c, true)) { logger.log(logging::LoggerLevel::LOGGER_LEVEL_ERROR, "SH1106", "allocation failed!"); @@ -248,7 +251,7 @@ void show_display(String header, String line1, String line2, String line3, Strin display.ssd1306_command(screenBrightness); #endif - if (menuDisplay==0 && Config.showSymbolOnScreen) { + if (menuDisplay==0 && Config.display.showSymbol) { int symbol = 100; for (int i=0; isymbol == symbolArray[i]) { diff --git a/src/menu_utils.cpp b/src/menu_utils.cpp index 0355db6..b711ad7 100644 --- a/src/menu_utils.cpp +++ b/src/menu_utils.cpp @@ -318,7 +318,7 @@ namespace MENU_Utils { String hdopState, firstRowMainMenu, secondRowMainMenu, thirdRowMainMenu, fourthRowMainMenu, fifthRowMainMenu, sixthRowMainMenu; firstRowMainMenu = currentBeacon->callsign; - if (Config.showSymbolOnScreen) { + if (Config.display.showSymbol) { for (int j=firstRowMainMenu.length();j<9;j++) { firstRowMainMenu += " "; } diff --git a/src/utils.cpp b/src/utils.cpp index bad40d1..19e773a 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -86,7 +86,7 @@ namespace Utils { void checkDisplayEcoMode() { uint32_t lastDisplayTime = millis() - displayTime; - if (displayEcoMode && menuDisplay==0 && millis()>10*1000 && lastDisplayTime >= Config.displayTimeout*1000) { + if (displayEcoMode && menuDisplay==0 && millis()>10*1000 && lastDisplayTime >= Config.display.timeout*1000) { display_toggle(false); displayState = false; }