Keep original Tracker Full neighbor table within its RAM budget

This commit is contained in:
mikecarper committed 2026-10-18 19:01:35 -07:00
1 parent 27a5e0d452
commit 8268befbdc
3 files changed
+26 -1

No files matched your search

+1
View File
@@ -3061,6 +3061,7 @@ requires_dram_limited_neighbors() {
# 8 KiB static reserve at 254 neighbors. Use their board-declared 50-entry
# tables when the OTA manager is included.
case "${1,,}" in
heltec_wireless_tracker_repeater_observer_mqtt|\
heltec_tracker_v1_1_repeater_observer_mqtt|\
heltec_tracker_v2_repeater_observer_mqtt)
# The non-PSRAM Tracker's color framebuffer, MQTT/TLS and OTA leave
+5 -1
View File
@@ -34,6 +34,10 @@ recipe has no verified panel readback connection. Detection is not enabled for
that wiring. A touchscreen acknowledgement alone does not establish that the
LCD responds. The V4 R8 TFT and older V4 TFT pin mappings are distinct.
Full Wireless Tracker repeaters retain the board's 50-neighbor capacity, as
the V1.1 and V2 Full profiles already do. This preserves RAM for the screen,
GPS, MQTT and update services; the RAM admission limits remain unchanged.
The R8 readback route is documented in Heltec's
[Expansion Kit V2.03 schematic](https://resource.heltec.cn/download/WiFi_LoRa_32_Expansion_Kit-V2/schematic/Expansion_board_V2.03.pdf).
Tracker V1 wiring is documented in the
@@ -75,7 +79,7 @@ the picker can advertise detection.
| Check | Result |
| --- | --- |
| Native detection, rendering, power and headless regressions | PASS, 31 test methods, including 12 new detection methods with sanitizers and negative controls |
| Recipe, release-proof, controls and offline-picker regressions | PASS, 41 test methods |
| Recipe, release-proof, controls and offline-picker regressions | PASS, 42 test methods |
| Resolved PlatformIO configuration | PASS, 31 optional-screen environments across the three hardware families; integral-screen recipes excluded |
| Picker JavaScript regressions | PASS, 4 suites |
| Complete build-profile selection suite | PASS |
+20
View File
@@ -26,6 +26,26 @@ def manifest(spec, target):
class OptionalDisplayProfilesTest(unittest.TestCase):
def test_all_tracker_full_repeaters_keep_the_measured_safe_neighbor_capacity(self):
script = r'''
set -euo pipefail
source "$1/build_legacy.sh"
ESP32_FULL_BUILD=1
for target in Heltec_Wireless_Tracker_repeater_observer_mqtt heltec_tracker_v1_1_repeater_observer_mqtt heltec_tracker_v2_repeater_observer_mqtt; do
PLATFORMIO_BUILD_FLAGS=""
PLATFORMIO_BUILD_UNFLAGS=""
BUILD_REDUCTIONS=()
apply_repeater_neighbor_capacity "$target"
[[ "$PLATFORMIO_BUILD_FLAGS" == *"-DMAX_NEIGHBOURS=50"* ]]
[[ " ${BUILD_REDUCTIONS[*]} " == *"mesh.neighbors limited to 50"* ]]
done
ESP32_FULL_BUILD=0
! requires_dram_limited_neighbors Heltec_Wireless_Tracker_repeater_observer_mqtt
'''
result = subprocess.run(["bash", "-c", script, "optional-screen-capacity", str(ROOT)],
cwd=ROOT, capture_output=True, text=True, check=False)
self.assertEqual(result.returncode, 0, result.stdout + result.stderr)
def test_optional_hardware_defaults_and_integral_screens_are_separate(self):
recipes = Recipes()
for spec, target in zip(displays.SPECS, TARGETS):