34 lines
1.6 KiB
Python
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
|