Files
MeshCore/test/test_t1000e_sensor_power.py
T

51 lines
2.4 KiB
Python

#!/usr/bin/env python3
"""Verify the upstream sensor-rail correction without changing local GPS/OTA."""
from pathlib import Path
import subprocess
import tempfile
import unittest
ROOT = Path(__file__).resolve().parents[1]
VARIANT = ROOT / "variants/t1000-e"
FIXTURES = ROOT / "test/fixtures/t1000e_sensor_power"
class T1000eSensorPowerTests(unittest.TestCase):
def test_obsolete_p0_04_control_is_removed_everywhere(self):
for path in VARIANT.iterdir():
if path.suffix in (".h", ".cpp", ".ini"):
with self.subTest(path=path.name):
self.assertNotIn("SENSOR_EN", path.read_text())
self.assertRegex((VARIANT / "variant.h").read_text(), r"PIN_3V3_EN\s+\(38\)")
def test_real_rail_and_existing_shutdown_and_gps_are_preserved(self):
board = (VARIANT / "T1000eBoard.h").read_text()
self.assertIn("void shutdownPeripherals() override", board)
self.assertIn("NRF52Board::shutdownPeripherals();", board)
for pin in ("GPS_VRTC_EN", "GPS_RESET", "GPS_SLEEP_INT", "GPS_RTC_INT",
"GPS_EN", "PIN_3V3_EN", "PIN_3V3_ACC_EN", "BUZZER_EN"):
self.assertIn(f"digitalWrite({pin}, LOW);", board)
target = (VARIANT / "target.cpp").read_text()
for method in ("armGpsPowerSavingCycle", "loopGpsTelemetry", "processGpsTelemetryFix"):
self.assertIn(method, target)
startup = (VARIANT / "variant.cpp").read_text()
self.assertIn("digitalWrite(GPS_EN, HIGH);", startup)
self.assertIn("digitalWrite(GPS_VRTC_EN, HIGH);", startup)
self.assertIn("pinMode(PIN_3V3_EN, OUTPUT);", startup)
def test_actual_sensor_functions_only_switch_p1_06_and_keep_bounds(self):
with tempfile.TemporaryDirectory(prefix="t1000e-sensor-power-") as temp:
binary = Path(temp) / "power"
compiled = subprocess.run([
"c++", "-std=c++11", "-Wall", "-Wextra", "-Wno-unused-variable",
"-I", str(FIXTURES), "-I", str(VARIANT), str(FIXTURES / "power.cpp"),
"-o", str(binary),
], text=True, capture_output=True)
self.assertEqual(compiled.returncode, 0, compiled.stderr)
executed = subprocess.run([str(binary)], text=True, capture_output=True)
self.assertEqual(executed.returncode, 0, executed.stderr)
if __name__ == "__main__":
unittest.main()