mirror of
https://github.com/ALLFATHER-BV/wadamesh.git
synced 2026-11-12 02:27:35 +00:00
The GPS enable pin (GPIO11) is active-LOW on the original ThinkNode-M9 but active-HIGH on the newer revision (keyboard controller at 0x6D, e.g. Elecrow's Meshtastic SKU LMM15409D2). Driven LOW on those units the GPS never gets a fix: on one unit, same spot, 0 satellites with EN active-LOW vs 15 with active-HIGH, and 34 after 20 minutes outdoors with the GPS toggled off and on again from the UI. Meshtastic's ELECROW-ThinkNode-M9 variant makes the same split, keyed on the same keyboard address (m9Version > 1 ? HIGH : LOW), and Elecrow engineers have confirmed the split. WadaNmeaLocationProvider: keep the enable level in a member that defaults to the compile-time GPS_EN_ACTIVE, add setEnActive() to override it at runtime (re-driving the pin so a running GPS stays on), and an optional setPostEnableHook() run at the end of begin(). Every other board is unaffected. thinknode_m9: m9KeyboardAddr() and a one-shot found-callback on the keyboard driver; target.cpp uses it, when the controller is at 0x6D, to call gps.setEnActive(true) and to register a GPIO10 wake pulse (50 ms, HIGH 5 ms, LOW, 50 ms) after enabling, as Elecrow engineers confirmed. Any other address keeps the existing default (LOW, no pulse), so the 0x6C path is unchanged; it is not tested here, no 0x6C unit was available. Depends on the keyboard 0x6D probe change. Signed-off-by: Pratik Patel <Pratik@MakerNova.io>