19 lines
697 B
Python
19 lines
697 B
Python
from __future__ import annotations
|
|
|
|
import numpy as np
|
|
|
|
from galileo_rx.tracking.lock_detector import LockDetector
|
|
from galileo_rx.types import CorrelatorOutputs
|
|
|
|
|
|
def _correlators(phase_rad: float) -> CorrelatorOutputs:
|
|
prompt = complex(np.exp(1j * phase_rad))
|
|
return CorrelatorOutputs(0.2 * prompt, 0.5 * prompt, prompt, 0.5 * prompt, 0.2 * prompt)
|
|
|
|
|
|
def test_data_lock_detector_ignores_bpsk_transition_but_detects_quadrature_jump() -> None:
|
|
detector = LockDetector(data_sign_insensitive=True)
|
|
detector.update(_correlators(0.0))
|
|
assert detector.update(_correlators(np.pi)).cycle_slip is False
|
|
assert detector.update(_correlators(np.pi + 0.49 * np.pi)).cycle_slip is True
|