diff --git a/lib/obp60task/OBPDataOperations.cpp b/lib/obp60task/OBPDataOperations.cpp index 562b1f6..c968e11 100644 --- a/lib/obp60task/OBPDataOperations.cpp +++ b/lib/obp60task/OBPDataOperations.cpp @@ -135,7 +135,7 @@ bool CalibrationData::calibrateInstance(GwApi::BoatValue* boatDataValue) double dataValue = 0; std::string format = ""; - // we test this earlier, but for safety reason ... + // we test this earlier, but for safety reasons ... if (calibrationMap.find(instance) == calibrationMap.end()) { LOG_DEBUG(GwLog::DEBUG, "BoatDataCalibration: %s not in calibration list", instance.c_str()); return false; @@ -151,7 +151,7 @@ bool CalibrationData::calibrateInstance(GwApi::BoatValue* boatDataValue) slope = calibrationMap[instance].slope; dataValue = boatDataValue->value; format = boatDataValue->getFormat().c_str(); - LOG_DEBUG(GwLog::DEBUG, "BoatDataCalibration: %s: value: %f, format: %s", instance.c_str(), dataValue, format.c_str()); + // LOG_DEBUG(GwLog::DEBUG, "BoatDataCalibration: %s: value: %f, format: %s", instance.c_str(), dataValue, format.c_str()); if (format == "formatWind") { // instance is of type angle dataValue = (dataValue * slope) + offset; @@ -174,7 +174,7 @@ bool CalibrationData::calibrateInstance(GwApi::BoatValue* boatDataValue) calibrationMap[instance].value = dataValue; // store the calibrated value in the list calibrationMap[instance].isCalibrated = true; - LOG_DEBUG(GwLog::DEBUG, "BoatDataCalibration: %s: Offset: %f, Slope: %f, Result: %f", instance.c_str(), offset, slope, calibrationMap[instance].value); + // LOG_DEBUG(GwLog::DEBUG, "BoatDataCalibration: %s: Offset: %f, Slope: %f, Result: %f", instance.c_str(), offset, slope, calibrationMap[instance].value); return true; } @@ -189,7 +189,7 @@ bool CalibrationData::smoothInstance(GwApi::BoatValue* boatDataValue) // we test this earlier, but for safety reason ... if (calibrationMap.find(instance) == calibrationMap.end()) { - LOG_DEBUG(GwLog::DEBUG, "BoatDataCalibration: %s not in calibration list", instance.c_str()); + // LOG_DEBUG(GwLog::DEBUG, "BoatDataCalibration: %s not in calibration list", instance.c_str()); return false; } @@ -211,7 +211,7 @@ bool CalibrationData::smoothInstance(GwApi::BoatValue* boatDataValue) calibrationMap[instance].value = dataValue; // store the smoothed value in the list calibrationMap[instance].isCalibrated = true; - LOG_DEBUG(GwLog::DEBUG, "BoatDataCalibration: %s: smooth: %f, oldValue: %f, result: %f", instance.c_str(), smoothFactor, oldValue, calibrationMap[instance].value); + // LOG_DEBUG(GwLog::DEBUG, "BoatDataCalibration: %s: smooth: %f, oldValue: %f, result: %f", instance.c_str(), smoothFactor, oldValue, calibrationMap[instance].value); return true; } @@ -241,7 +241,7 @@ void HstryBuf::add(double value) { if (value >= hstryMin && value <= hstryMax) { hstryBuf.add(value); - LOG_DEBUG(GwLog::DEBUG, "HstryBuf::add: name: %s, value: %.3f", hstryBuf.getName(), value); + // LOG_DEBUG(GwLog::DEBUG, "HstryBuf::add: name: %s, value: %.3f", hstryBuf.getName(), value); } } @@ -405,7 +405,7 @@ void WindUtils::calcTwdSA(const double* AWA, const double* AWS, double stw = -*STW; addPolar(AWD, AWS, CTW, &stw, TWD, TWS); - // Normalize TWD and TWA to 0-360°/2PI + // Normalize TWD to [0..360°] (2PI) and TWA to [-180..180] (PI) *TWD = to2PI(*TWD); *TWA = toPI(*TWD - *HDT); } @@ -487,8 +487,8 @@ bool WindUtils::addWinds() double hdtVal = hdtBVal->valid ? hdtBVal->value : DBL_MAX; double hdmVal = hdmBVal->valid ? hdmBVal->value : DBL_MAX; double varVal = varBVal->valid ? varBVal->value : DBL_MAX; - LOG_DEBUG(GwLog::DEBUG, "WindUtils:addWinds: AWA %.1f, AWS %.1f, COG %.1f, STW %.1f, SOG %.2f, HDT %.1f, HDM %.1f, VAR %.1f", awaBVal->value * RAD_TO_DEG, awsBVal->value * 3.6 / 1.852, - cogBVal->value * RAD_TO_DEG, stwBVal->value * 3.6 / 1.852, sogBVal->value * 3.6 / 1.852, hdtBVal->value * RAD_TO_DEG, hdmBVal->value * RAD_TO_DEG, varBVal->value * RAD_TO_DEG); + //LOG_DEBUG(GwLog::DEBUG, "WindUtils:addWinds: AWA %.1f, AWS %.1f, COG %.1f, STW %.1f, SOG %.2f, HDT %.1f, HDM %.1f, VAR %.1f", awaBVal->value * RAD_TO_DEG, awsBVal->value * 3.6 / 1.852, + // cogBVal->value * RAD_TO_DEG, stwBVal->value * 3.6 / 1.852, sogBVal->value * 3.6 / 1.852, hdtBVal->value * RAD_TO_DEG, hdmBVal->value * RAD_TO_DEG, varBVal->value * RAD_TO_DEG); // Check if TWD can be calculated from TWA and HDT/HDM if (twaBVal->valid) { @@ -528,8 +528,8 @@ bool WindUtils::addWinds() } } } - LOG_DEBUG(GwLog::DEBUG, "WindUtils:addWinds: twCalculated %d, TWD %.1f, TWA %.1f, TWS %.2f kn, AWD: %.1f", twCalculated, twdBVal->value * RAD_TO_DEG, - twaBVal->value * RAD_TO_DEG, twsBVal->value * 3.6 / 1.852, awdBVal->value * RAD_TO_DEG); + // LOG_DEBUG(GwLog::DEBUG, "WindUtils:addWinds: twCalculated %d, TWD %.1f, TWA %.1f, TWS %.2f kn, AWD: %.1f", twCalculated, twdBVal->value * RAD_TO_DEG, + // twaBVal->value * RAD_TO_DEG, twsBVal->value * 3.6 / 1.852, awdBVal->value * RAD_TO_DEG); return twCalculated; } diff --git a/lib/obp60task/OBPcharts.cpp b/lib/obp60task/OBPcharts.cpp index e15fc83..8ae38ec 100644 --- a/lib/obp60task/OBPcharts.cpp +++ b/lib/obp60task/OBPcharts.cpp @@ -161,8 +161,8 @@ bool Chart::setChartDimensions(const char direction, const int8_t size) break; } } - LOG_DEBUG(GwLog::ERROR, "obp60:setChartDimensions %s: direction: %c, size: %d, dWidth: %d, dHeight: %d, timAxis: %d, valAxis: %d, cRoot{%d, %d}, top: %d, bottom: %d, hGap: %d, vGap: %d", - dataBuf.getName(), direction, size, dWidth, dHeight, timAxis, valAxis, cRoot.x, cRoot.y, top, bottom, hGap, vGap); + //LOG_DEBUG(GwLog::DEBUG, "obp60:setChartDimensions %s: direction: %c, size: %d, dWidth: %d, dHeight: %d, timAxis: %d, valAxis: %d, cRoot{%d, %d}, top: %d, bottom: %d, hGap: %d, vGap: %d", + // dataBuf.getName(), direction, size, dWidth, dHeight, timAxis, valAxis, cRoot.x, cRoot.y, top, bottom, hGap, vGap); return true; } @@ -176,7 +176,7 @@ void Chart::drawChrt(const char chrtDir, const int8_t chrtIntv, GwApi::BoatValue // LOG_DEBUG(GwLog::DEBUG, "Chart:drawChart: min: %.1f, mid: %.1f, max: %.1f, rng: %.1f", chrtMin, chrtMid, chrtMax, chrtRng); calcChrtBorders(chrtMin, chrtMid, chrtMax, chrtRng); chrtScale = double(valAxis) / chrtRng; // Chart scale: pixels per value step - LOG_DEBUG(GwLog::DEBUG, "Chart:drawChart: min: %.1f, mid: %.1f, max: %.1f, rng: %.1f", chrtMin, chrtMid, chrtMax, chrtRng); + // LOG_DEBUG(GwLog::DEBUG, "Chart:drawChart: min: %.1f, mid: %.1f, max: %.1f, rng: %.1f", chrtMin, chrtMid, chrtMax, chrtRng); // Do we have valid buffer data? if (dataBuf.getMax() == dbMAX_VAL) { // only values in buffer -> no valid wind data available @@ -261,8 +261,8 @@ void Chart::calcChrtBorders(double& rngMin, double& rngMid, double& rngMax, doub } recalcRngMid = false; // Reset flag for determination - LOG_DEBUG(GwLog::DEBUG, "calcChrtRange: rngMin: %.1f°, rngMid: %.1f°, rngMax: %.1f°, rng: %.1f°, rngStep: %.1f°", rngMin * RAD_TO_DEG, rngMid * RAD_TO_DEG, rngMax * RAD_TO_DEG, - rng * RAD_TO_DEG, rngStep * RAD_TO_DEG); + // LOG_DEBUG(GwLog::DEBUG, "calcChrtRange: rngMin: %.1f°, rngMid: %.1f°, rngMax: %.1f°, rng: %.1f°, rngStep: %.1f°", rngMin * RAD_TO_DEG, rngMid * RAD_TO_DEG, rngMax * RAD_TO_DEG, + // rng * RAD_TO_DEG, rngStep * RAD_TO_DEG); } } @@ -287,8 +287,8 @@ void Chart::calcChrtBorders(double& rngMin, double& rngMid, double& rngMax, doub rng = halfRng * 2.0; - LOG_DEBUG(GwLog::DEBUG, "calcChrtBorders: rngMin: %.1f°, rngMid: %.1f°, rngMax: %.1f°, tmpRng: %.1f°, rng: %.1f°, rngStep: %.1f°", rngMin * RAD_TO_DEG, rngMid * RAD_TO_DEG, rngMax * RAD_TO_DEG, - tmpRng * RAD_TO_DEG, rng * RAD_TO_DEG, rngStep * RAD_TO_DEG); + // LOG_DEBUG(GwLog::DEBUG, "calcChrtBorders: rngMin: %.1f°, rngMid: %.1f°, rngMax: %.1f°, tmpRng: %.1f°, rng: %.1f°, rngStep: %.1f°", rngMin * RAD_TO_DEG, rngMid * RAD_TO_DEG, rngMax * RAD_TO_DEG, + // tmpRng * RAD_TO_DEG, rng * RAD_TO_DEG, rngStep * RAD_TO_DEG); } else { // chart data is of any other type @@ -320,8 +320,8 @@ void Chart::calcChrtBorders(double& rngMin, double& rngMid, double& rngMax, doub rngMid = (rngMin + rngMax) / 2.0; rng = rngMax - rngMin; - LOG_DEBUG(GwLog::DEBUG, "calcChrtRange-end: currMinVal: %.1f, currMaxVal: %.1f, rngMin: %.1f, rngMid: %.1f, rngMax: %.1f, rng: %.1f, rngStep: %.1f, zeroValue: %.1f, dbMIN_VAL: %.1f", - currMinVal, currMaxVal, rngMin, rngMid, rngMax, rng, rngStep, zeroValue, dbMIN_VAL); + // LOG_DEBUG(GwLog::DEBUG, "calcChrtRange-end: currMinVal: %.1f, currMaxVal: %.1f, rngMin: %.1f, rngMid: %.1f, rngMax: %.1f, rng: %.1f, rngStep: %.1f, zeroValue: %.1f, dbMIN_VAL: %.1f", + // currMinVal, currMaxVal, rngMin, rngMid, rngMax, rng, rngStep, zeroValue, dbMIN_VAL); } } @@ -397,6 +397,8 @@ void Chart::drawChartLines(const char direction, const int8_t chrtIntv, const do } break; } + + taskYIELD(); // we run for 50-150ms; be polite to other tasks with same priority } } @@ -656,7 +658,7 @@ void Chart::prntHorizChartThreeValueAxisLabel(const GFXfont* font) if (font == &Ubuntu_Bold10pt8b) { xOffset = 39; - yOffset = 15; + yOffset = 16; } else if (font == &Ubuntu_Bold12pt8b) { xOffset = 51; yOffset = 18; @@ -718,7 +720,7 @@ void Chart::prntHorizChartMultiValueAxisLabel(const GFXfont* font) axSlots = valAxis / static_cast(VALAXIS_STEP); // number of axis labels (and we want to have a double calculation, no integer) axIntv = chrtRng / axSlots; axLabel = chrtMin + axIntv; - LOG_DEBUG(GwLog::DEBUG, "Chart::printHorizMultiValueAxisLabel: chrtRng: %.2f, th-chrtRng: %.2f, axSlots: %.2f, axIntv: %.2f, axLabel: %.2f, chrtMin: %.2f, chrtMid: %.2f, chrtMax: %.2f", chrtRng, this->chrtRng, axSlots, axIntv, axLabel, this->chrtMin, chrtMid, chrtMax); + // LOG_DEBUG(GwLog::DEBUG, "Chart::printHorizMultiValueAxisLabel: chrtRng: %.2f, th-chrtRng: %.2f, axSlots: %.2f, axIntv: %.2f, axLabel: %.2f, chrtMin: %.2f, chrtMid: %.2f, chrtMax: %.2f", chrtRng, this->chrtRng, axSlots, axIntv, axLabel, this->chrtMin, chrtMid, chrtMax); int loopStrt, loopEnd, loopStp; if (chrtDataFmt == SPEED || chrtDataFmt == TEMPERATURE || chrtDataFmt == OTHER) { diff --git a/lib/obp60task/PageAnchor.cpp b/lib/obp60task/PageAnchor.cpp index b98fef0..11ce083 100644 --- a/lib/obp60task/PageAnchor.cpp +++ b/lib/obp60task/PageAnchor.cpp @@ -269,7 +269,6 @@ private: void displayModeConfig(PageData &pageData) { - getdisplay().setTextColor(commonData->fgcolor); getdisplay().setFont(&Ubuntu_Bold12pt8b); getdisplay().setCursor(8, 48); diff --git a/lib/obp60task/PageOneValue.cpp b/lib/obp60task/PageOneValue.cpp index a5c0f9c..78cc6e6 100644 --- a/lib/obp60task/PageOneValue.cpp +++ b/lib/obp60task/PageOneValue.cpp @@ -162,9 +162,13 @@ public: constexpr int ZOOM_KEY = 1; #endif - if (dataHstryBuf) { // show "Mode" key only if chart supported boat data type is available + if (dataHstryBuf) { // show "Mode" key only if chart-supported boat data type is available commonData->keydata[0].label = "MODE"; - commonData->keydata[ZOOM_KEY].label = "ZOOM"; + if (pageMode != VALUE) { // show "ZOOM" key only if chart is visible + commonData->keydata[ZOOM_KEY].label = "ZOOM"; + } else { + commonData->keydata[ZOOM_KEY].label = ""; + } } else { commonData->keydata[0].label = ""; commonData->keydata[ZOOM_KEY].label = ""; @@ -189,14 +193,15 @@ public: pageMode = VALUE; break; } + setupKeys(); // Adjust key definition depending on and chart-supported boat data type return 0; // Commit the key } - // Set time frame to show for history chart + // Set time frame to show for chart #if defined BOARD_OBP60S3 - if (key == 5) { + if (key == 5 && pageMode != VALUE) { #elif defined BOARD_OBP40S3 - if (key == 2) { + if (key == 2 && pageMode != VALUE) { #endif if (dataIntv == 1) { dataIntv = 2; @@ -247,7 +252,7 @@ public: } } - setupKeys(); // adjust key depending on chart supported boat data type + setupKeys(); // Adjust key definition depending on and chart-supported boat data type } int displayPage(PageData& pageData) diff --git a/lib/obp60task/PageTwoValues.cpp b/lib/obp60task/PageTwoValues.cpp index 323cbcb..5990656 100644 --- a/lib/obp60task/PageTwoValues.cpp +++ b/lib/obp60task/PageTwoValues.cpp @@ -114,7 +114,7 @@ private: } if (numValues == 2 && mode == FULL) { // print line only, if we want to show 2 data values - getdisplay().fillRect(0, 145, width, 3, commonData->fgcolor); // Horizontal line 3 pix + getdisplay().fillRect(0, 145, width, 3, commonData->fgcolor); // Horizontal line 3 pix } } @@ -149,7 +149,11 @@ public: if (dataHstryBuf[0] || dataHstryBuf[1]) { // show "Mode" key only if at least 1 chart supported boat data type is available commonData->keydata[0].label = "MODE"; - commonData->keydata[ZOOM_KEY].label = "ZOOM"; + if (pageMode != VALUES) { // show "ZOOM" key only if chart is visible + commonData->keydata[ZOOM_KEY].label = "ZOOM"; + } else { + commonData->keydata[ZOOM_KEY].label = ""; + } } else { commonData->keydata[0].label = ""; commonData->keydata[ZOOM_KEY].label = ""; @@ -191,14 +195,15 @@ public: pageMode = VALUES; break; } + setupKeys(); // Adjust key definition depending on and chart-supported boat data type return 0; // Commit the key } - // Set time frame to show for history chart + // Set time frame to show for chart #if defined BOARD_OBP60S3 - if (key == 5) { + if (key == 5 && pageMode != VALUES) { #elif defined BOARD_OBP40S3 - if (key == 2) { + if (key == 2 && pageMode != VALUES) { #endif if (dataIntv == 1) { dataIntv = 2; @@ -251,7 +256,7 @@ public: } } - setupKeys(); // adjust key depending on chart supported boat data type + setupKeys(); // Adjust key definition depending on and chart-supported boat data type } int displayPage(PageData& pageData) @@ -285,13 +290,13 @@ public: showData(bValue, FULL); } else if (pageMode == VAL1_CHART) { // show data value 1 and chart - showData({bValue[0]}, HALF); + showData({ bValue[0] }, HALF); if (dataChart[0]) { dataChart[0]->showChrt(HORIZONTAL, HALF_SIZE_BOTTOM, dataIntv, NO_PRNT_NAME, NO_PRNT_VALUE, *bValue[0]); } } else if (pageMode == VAL2_CHART) { // show data value 2 and chart - showData({bValue[1]}, HALF); + showData({ bValue[1] }, HALF); if (dataChart[1]) { dataChart[1]->showChrt(HORIZONTAL, HALF_SIZE_BOTTOM, dataIntv, NO_PRNT_NAME, NO_PRNT_VALUE, *bValue[1]); } diff --git a/lib/obp60task/PageWindPlot.cpp b/lib/obp60task/PageWindPlot.cpp index f5745f7..da948c2 100644 --- a/lib/obp60task/PageWindPlot.cpp +++ b/lib/obp60task/PageWindPlot.cpp @@ -196,7 +196,7 @@ public: int displayPage(PageData& pageData) { LOG_DEBUG(GwLog::LOG, "Display PageWindPlot"); - ulong pageTime = millis(); + // ulong pageTime = millis(); if (showTruW != oldShowTruW) { @@ -243,7 +243,7 @@ public: } } - LOG_DEBUG(GwLog::DEBUG, "PageWindPlot: page time %ldms", millis() - pageTime); + // LOG_DEBUG(GwLog::DEBUG, "PageWindPlot: page time %ldms", millis() - pageTime); return PAGE_UPDATE; } }; diff --git a/lib/obp60task/config_obp40.json b/lib/obp60task/config_obp40.json index 508c3f5..22e9a50 100644 --- a/lib/obp60task/config_obp40.json +++ b/lib/obp60task/config_obp40.json @@ -19,6 +19,28 @@ "obp40": "true" } }, + { + "name": "mapServer", + "label": "map server", + "type": "string", + "default": "", + "description": "Server for converting map tiles. Use only one hostname or IP address", + "category": "wifi client", + "capabilities": { + "obp40": "true" + } + }, + { + "name": "mapTilePath", + "label": "map tile path", + "type": "string", + "default": "map.php", + "description": "Path to converter access e.g. index.php or map.php", + "category": "wifi client", + "capabilities": { + "obp40": "true" + } + }, { "name": "timeZone", "label": "Time Zone", @@ -1862,7 +1884,7 @@ "description": "Wind source for page 1: [true|apparent]", "list": [ "True wind", - "apparent wind" + "Apparent wind" ], "category": "OBP40 Page 1", "capabilities": { @@ -2185,7 +2207,7 @@ "description": "Wind source for page 2: [true|apparent]", "list": [ "True wind", - "apparent wind" + "Apparent wind" ], "category": "OBP40 Page 2", "capabilities": { @@ -2499,7 +2521,7 @@ "description": "Wind source for page 3: [true|apparent]", "list": [ "True wind", - "apparent wind" + "Apparent wind" ], "category": "OBP40 Page 3", "capabilities": { @@ -2804,7 +2826,7 @@ "description": "Wind source for page 4: [true|apparent]", "list": [ "True wind", - "apparent wind" + "Apparent wind" ], "category": "OBP40 Page 4", "capabilities": { @@ -3100,7 +3122,7 @@ "description": "Wind source for page 5: [true|apparent]", "list": [ "True wind", - "apparent wind" + "Apparent wind" ], "category": "OBP40 Page 5", "capabilities": { @@ -3387,7 +3409,7 @@ "description": "Wind source for page 6: [true|apparent]", "list": [ "True wind", - "apparent wind" + "Apparent wind" ], "category": "OBP40 Page 6", "capabilities": { @@ -3665,7 +3687,7 @@ "description": "Wind source for page 7: [true|apparent]", "list": [ "True wind", - "apparent wind" + "Apparent wind" ], "category": "OBP40 Page 7", "capabilities": { @@ -3934,7 +3956,7 @@ "description": "Wind source for page 8: [true|apparent]", "list": [ "True wind", - "apparent wind" + "Apparent wind" ], "category": "OBP40 Page 8", "capabilities": { @@ -4194,7 +4216,7 @@ "description": "Wind source for page 9: [true|apparent]", "list": [ "True wind", - "apparent wind" + "Apparent wind" ], "category": "OBP40 Page 9", "capabilities": { @@ -4445,7 +4467,7 @@ "description": "Wind source for page 10: [true|apparent]", "list": [ "True wind", - "apparent wind" + "Apparent wind" ], "category": "OBP40 Page 10", "capabilities": { diff --git a/lib/obp60task/extra_task.py b/lib/obp60task/extra_task.py index 28e9980..66ee3b1 100644 --- a/lib/obp60task/extra_task.py +++ b/lib/obp60task/extra_task.py @@ -1,12 +1,21 @@ # PlatformIO extra script for obp60task +import subprocess + +patching = False + epdtype = "unknown" pcbvers = "unknown" for x in env["BUILD_FLAGS"]: - if x.startswith("-D HARDWARE_"): + if not x.startswith('-D'): + continue + opt = x[2:].strip() + if opt.startswith("HARDWARE_"): pcbvers = x.split('_')[1] - if x.startswith("-D DISPLAY_"): + elif opt.startswith("DISPLAY_"): epdtype = x.split('_')[1] + elif opt == 'ENABLE_PATCHES': + patching = True propfilename = os.path.join(env["PROJECT_LIBDEPS_DIR"], env["PIOENV"], "GxEPD2/library.properties") properties = {} @@ -28,3 +37,20 @@ except: env["CPPDEFINES"].extend([("BOARD", env["BOARD"]), ("EPDTYPE", epdtype), ("PCBVERS", pcbvers), ("GXEPD2VERS", gxepd2vers)]) print("added hardware info to CPPDEFINES") + +if patching: + # apply patches to gateway code + print("applying gateway patches") + patchdir = os.path.join(os.path.dirname(script), "patches") + if not os.path.isdir(patchdir): + print("patchdir not found, no patches applied") + else: + patchfiles = [f for f in os.listdir(patchdir)] + for p in patchfiles: + patch = os.path.join(patchdir, p) + print(f"applying {patch}") + res = subprocess.run(["git", "apply", patch], capture_output=True, text=True) + if res.returncode != 0: + print(res.stderr) + else: + print("no patches found") diff --git a/lib/obp60task/platformio.ini b/lib/obp60task/platformio.ini index 0788b7a..dc510f2 100644 --- a/lib/obp60task/platformio.ini +++ b/lib/obp60task/platformio.ini @@ -60,6 +60,7 @@ build_flags= # -D DISPLAY_GYE042A87 #alternativ E-Ink display from Genyo Optical, R10 2.2 ohm - medium # -D DISPLAY_SE0420NQ04 #alternativ E-Ink display from SID Technology, R10 2.2 ohm - bad (burn in effects) # -D DISPLAY_ZJY400300-042CAAMFGN #alternativ E-Ink display from ZZE Technology, R10 2.2 ohm - very good +# -D ENABLE_PATCHES #enable patching of gateway code ${env.build_flags} #CONFIG_ESP_TASK_WDT_TIMEOUT_S = 10 #Task Watchdog timeout period (seconds) [1...60] 5 default upload_port = /dev/ttyACM0 #OBP60 download via USB-C direct @@ -112,6 +113,7 @@ build_flags= #-D DISPLAY_ZJY400300-042CAAMFGN #alternativ E-Ink display from ZZE Technology, R10 2.2 ohm - very good -D LIPO_ACCU_1200 #Hardware extension, LiPo accu 3,7V 1200mAh -D VOLTAGE_SENSOR #Hardware extension, LiPo voltage sensor with two resistors + #-D ENABLE_PATCHES #enable patching of gateway code ${env.build_flags} upload_port = /dev/ttyUSB0 #OBP40 download via external USB/Serail converter upload_protocol = esptool #firmware upload via USB OTG seriell, by first upload need to set the ESP32-S3 in the upload mode with shortcut GND to Pin27 diff --git a/lib/obp60task/run_install_tools b/lib/obp60task/run_install_tools index 9c4667e..c46c10c 100644 --- a/lib/obp60task/run_install_tools +++ b/lib/obp60task/run_install_tools @@ -8,6 +8,6 @@ # Install tools echo "Installing tools" -cd /workspace/esp32-nmea2000 +cd /workspaces/esp32-nmea2000 pip3 install -U esptool pip3 install platformio