diff --git a/lib/TelnetSpy/TelnetSpy.cpp b/lib/TelnetSpy/TelnetSpy.cpp index c0d619c..e794597 100644 --- a/lib/TelnetSpy/TelnetSpy.cpp +++ b/lib/TelnetSpy/TelnetSpy.cpp @@ -545,7 +545,13 @@ void TelnetSpy::handle() { return; } if (!listening) { - if (WiFi.status() != WL_CONNECTED) { + + wifi_mode_t currentMode = WiFi.getMode(); + bool isAPEnabled = ((currentMode & WIFI_MODE_AP) != 0); + bool isSTAconnected = WiFi.status() == WL_CONNECTED; + +// if (WiFi.status() != WL_CONNECTED && !isAPEnabled) { + if (!isSTAconnected && !isAPEnabled) { return; } telnetServer = new WiFiServer(port); diff --git a/src/Afterburner.cpp b/src/Afterburner.cpp index 0917303..07490b4 100644 --- a/src/Afterburner.cpp +++ b/src/Afterburner.cpp @@ -1043,7 +1043,8 @@ bool validateFrame(const CProtocol& frame, const char* name) int requestOn(bool checkTemp) { - if(bHasHtrData && (0 == SmartError.checkVolts(FilteredSamples.FastipVolts.getValue(), FilteredSamples.FastGlowAmps.getValue()))) { + bool LVCOK = SmartError.checkVolts(FilteredSamples.FastipVolts.getValue(), FilteredSamples.FastGlowAmps.getValue()) != 2; + if(bHasHtrData && LVCOK) { RTC_Store.setCyclicEngaged(true); // for cyclic mode RTC_Store.setFrostOn(false); // cancel frost mode if(!preemptCyclicMode()) { // only start if below cyclic threshold when enabled diff --git a/src/Protocol/SmartError.cpp b/src/Protocol/SmartError.cpp index 9b5bba6..a3daea3 100644 --- a/src/Protocol/SmartError.cpp +++ b/src/Protocol/SmartError.cpp @@ -130,8 +130,12 @@ CSmartError::checkVolts(float ipVolts, float glowI, bool throwfault) // Native NV values here are x10 integers // loom compenstaion, allow 1V drop for 10A current (bit naive but better than no compensation) - float cableComp = glowI * 0.1; - float threshLVC = NVstore.getHeaterTuning().getLVC() - cableComp; // NVstore + float cableComp = glowI * 0.1; + float usrLVC = NVstore.getHeaterTuning().getLVC(); + if(usrLVC == 0) { + return 0; + } + float threshLVC = usrLVC - cableComp; // NVstore // test low voltage cutout if(ipVolts < threshLVC) { @@ -144,6 +148,7 @@ CSmartError::checkVolts(float ipVolts, float glowI, bool throwfault) // warning threshold float threshWarn = threshLVC + 0.5; // nominally create a warning threshold, 0.5V over LVC threhsold +/* float alertlimit; // but always introduce it if below system voltage if(NVstore.getHeaterTuning().sysVoltage == 120) { alertlimit = 12.0 - cableComp; @@ -154,6 +159,7 @@ CSmartError::checkVolts(float ipVolts, float glowI, bool throwfault) if(threshWarn < alertlimit) { threshWarn = alertlimit; } +*/ if(ipVolts < threshWarn) { return 1; // LVC OK, but below warning threshold, return code = 1 diff --git a/src/Utility/BoardDetect.cpp b/src/Utility/BoardDetect.cpp index ffb6c47..790857d 100644 --- a/src/Utility/BoardDetect.cpp +++ b/src/Utility/BoardDetect.cpp @@ -56,8 +56,9 @@ // unmodified V2.0 LOW HIGH LOW - digital only (V2 PCB) // modified V2.0 LOW LOW HIGH - full GPIO (V2 or V3 PCB) // V2.1 LOW LOW HIGH - digital only (modified V2 PCB) -// No GPIO V2.0 HIGH LOW HIGH - no GPIO (V2 or V3 PCB, 0R in C6) +// No GPIO V2.0 HIGH LOW HIGH - no GPIO (V2 PCB, 0R in C6) // V2.1 LOW LOW LOW - digital only (V3 PCB, 0R in C6) +// No GPIO V3.x HIGH HIGH LOW - no GPIO (V3.x PCB, 0R in C6) // // // **************************************************************************************** @@ -125,6 +126,11 @@ int BoardDetect() revision = BRD_V2_NOGPIO; DebugPort.println("Board detect: digital input test reveals V2.2 PCB - no GPIO (V2.0 userID) "); } + // V3.x PCB, pin 33 grounded via 0R instead of 100n cap, digio transistors not fitted dig in pins pull high + else if((pin33 == LOW) && (pin26 == HIGH) && (pin25 == HIGH)) { + revision = BRD_V2_NOGPIO; + DebugPort.println("Board detect: digital input test reveals V3.x PCB - no GPIO (V2.0 userID) "); + } // modified V2 PCB or new V2.1PCB, pins 25 & 33 swapped, Alg routed to usuable pin 33 // cap, dig inputs pulled low by transistors else if((pin33 == HIGH) && (pin26 == LOW) && (pin25 == LOW)) { revision = BRD_V2_FULLGPIO;