Files
StarPilot/openpilot/starpilot/gps/tests/test_acquisition.py
T
firestar5683 ab81464bd1 Maps
Add navigation and map matching providers with the vendored map service sources.

Co-authored-by: Daniel Koepping <elkoled@gmail.com>
Co-authored-by: Danny <dannyirwin31@yahoo.com>
Co-authored-by: Prabhaav Pillai <prabhaav@msu.edu>
Co-authored-by: dirwin31 <83434411+dirwin31@users.noreply.github.com>
2026-10-14 19:56:17 -05:00

74 lines
2.5 KiB
Python

from types import SimpleNamespace as NS
from openpilot.starpilot.gps.acquisition import GpsAcquisition, acquisition_progress
class GnssMaster:
def __init__(self):
self.updated = {'gpsLocationExternal': False, 'qcomGnss': False}
self.valid = {'gpsLocationExternal': True, 'qcomGnss': True}
self.messages = {}
def update(self, _timeout):
pass
def __getitem__(self, key):
return self.messages[key]
def measurement(self, source, states):
self.updated = {'gpsLocationExternal': False, 'qcomGnss': True}
self.messages['qcomGnss'] = NS(which=lambda: 'measurementReport',
measurementReport=NS(source=source, sv=[NS(observationState=state) for state in states]))
def test_qualcomm_counts_only_tracked_satellites_and_expires_each_constellation():
sm = GnssMaster()
acquisition = GpsAcquisition(sm_factory=lambda: sm)
acquisition.update(10)
assert acquisition.satellites(10) is None and acquisition.since == 10
sm.measurement(0, [5, 5, 4, 1, 0])
acquisition.update(11)
sm.measurement(1, [5, 2])
acquisition.update(12)
assert acquisition.satellites(12) == 4
assert acquisition.satellites(16.5) == 1
assert acquisition.satellites(17) is None
def test_ublox_preferred_count_expiry_invalid_reports_and_reset():
sm = GnssMaster()
acquisition = GpsAcquisition(sm_factory=lambda: sm)
sm.measurement(0, [5, 4, 0])
acquisition.update(10)
sm.updated = {'gpsLocationExternal': True, 'qcomGnss': False}
sm.messages['gpsLocationExternal'] = NS(satelliteCount=9)
acquisition.update(11)
assert acquisition.satellites(11) == 9
sm.valid['gpsLocationExternal'] = False
acquisition.update(15)
assert acquisition.satellites(16) is None
acquisition.reset()
assert acquisition.since is None and acquisition.satellites(11) is None
def test_progress_matches_aacomma():
assert acquisition_progress(None) == acquisition_progress(0) == .04
assert acquisition_progress(3) == .5
assert acquisition_progress(6) == acquisition_progress(12) == 1
def test_qualcomm_reads_real_capnp_enums():
from openpilot.cereal import log
gnss = log.QcomGnss.new_message()
report = gnss.init('measurementReport')
report.source = 'glonass'
satellites = report.init('sv', 3)
for satellite, state in zip(satellites, ('track', 'trackVerify', 'search'), strict=True):
satellite.observationState = state
sm = GnssMaster()
sm.updated['qcomGnss'] = True
sm.messages['qcomGnss'] = gnss
acquisition = GpsAcquisition(sm_factory=lambda: sm)
acquisition.update(10)
assert acquisition.satellites(10) == 2