Files
galileo/tests/integration/test_detection_and_lock_loss.py
T

34 lines
1.6 KiB
Python

import numpy as np
from galileo_rx.acquisition.acquisition_manager import AcquisitionManager
from galileo_rx.config import AcquisitionConfig, TrackingConfig
from galileo_rx.signal_profiles import galileo_e1_profile
from galileo_rx.signals.code_provider import SyntheticCodeProvider
from galileo_rx.tracking.tracking_channel import TrackingChannel
from galileo_rx.types import AcquisitionResult, TrackingState
def test_noise_only_does_not_pass_peak_ratio_threshold() -> None:
fs = 4.092e6
rng = np.random.default_rng(345)
samples = rng.standard_normal(int(0.008 * fs)) + 1j * rng.standard_normal(int(0.008 * fs))
config = AcquisitionConfig(
doppler_min_hz=-500, doppler_max_hz=500, doppler_step_hz=250,
noncoherent_accumulations=2, detection_threshold=2.5, zero_padding_mode="none",
)
result, _ = AcquisitionManager(galileo_e1_profile(), SyntheticCodeProvider(), fs, config).acquire_one(samples, "E1C", 1)
assert not result.detected
def test_consecutive_failures_request_reacquisition() -> None:
fs = 4.092e6
acquisition = AcquisitionResult(
True, 1, "E1B", 0.0, 0.0, 0.0, 0.0, 1.0, 0.1, 10.0, None, 4.0, 1
)
config = TrackingConfig(use_fll_assist=False, loss_of_lock_epochs=3)
channel = TrackingChannel(galileo_e1_profile(), SyntheticCodeProvider(), fs, config, acquisition)
zero_epoch = np.zeros(channel.integration_samples, dtype=np.complex128)
measurements = [channel.process_epoch(zero_epoch) for _ in range(3)]
assert measurements[-1].reacquisition_requested
assert measurements[-1].state == TrackingState.REACQUISITION