58 lines
2.2 KiB
Python
58 lines
2.2 KiB
Python
import numpy as np
|
|
|
|
from galileo_rx.acquisition.acquisition_manager import AcquisitionManager
|
|
from galileo_rx.config import AcquisitionConfig
|
|
from galileo_rx.signal_profiles import galileo_e1_profile
|
|
from galileo_rx.signals.code_provider import SyntheticCodeProvider
|
|
from galileo_rx.signals.signal_generator import ChannelModelConfig, SatelliteSignalConfig, SyntheticSignalGenerator
|
|
|
|
|
|
def test_e1c_secondary_wipeoff_for_eight_ms() -> None:
|
|
fs = 4.092e6
|
|
profile = galileo_e1_profile()
|
|
provider = SyntheticCodeProvider()
|
|
generator = SyntheticSignalGenerator(
|
|
profile, provider, fs,
|
|
satellites=[SatelliteSignalConfig(8, "E1C", code_delay_chips=12.0, doppler_hz=500.0)],
|
|
channel=ChannelModelConfig(add_awgn=False),
|
|
)
|
|
samples, _ = generator.generate(int(0.008 * fs))
|
|
config = AcquisitionConfig(
|
|
doppler_min_hz=500,
|
|
doppler_max_hz=500,
|
|
doppler_step_hz=250,
|
|
coherent_integration_ms=8,
|
|
noncoherent_accumulations=1,
|
|
detection_threshold=1.5,
|
|
zero_padding_mode="none",
|
|
secondary_code_mode="wipeoff",
|
|
parabolic_interpolation=False,
|
|
)
|
|
result, _ = AcquisitionManager(profile, provider, fs, config).acquire_one(samples, "E1C", 8)
|
|
assert result.detected and abs(result.code_phase_chips - 12.0) < 0.3
|
|
|
|
|
|
def test_e1b_bit_transition_hypothesis() -> None:
|
|
fs = 4.092e6
|
|
profile = galileo_e1_profile()
|
|
provider = SyntheticCodeProvider()
|
|
generator = SyntheticSignalGenerator(
|
|
profile, provider, fs,
|
|
satellites=[SatelliteSignalConfig(9, "E1B", code_delay_chips=20.0, navigation_bits=[1, -1])],
|
|
channel=ChannelModelConfig(add_awgn=False),
|
|
)
|
|
samples, _ = generator.generate(int(0.008 * fs))
|
|
config = AcquisitionConfig(
|
|
doppler_min_hz=0,
|
|
doppler_max_hz=0,
|
|
doppler_step_hz=250,
|
|
coherent_integration_ms=8,
|
|
noncoherent_accumulations=1,
|
|
detection_threshold=1.5,
|
|
zero_padding_mode="none",
|
|
bit_transition_mode="hypothesis",
|
|
parabolic_interpolation=False,
|
|
)
|
|
result, _ = AcquisitionManager(profile, provider, fs, config).acquire_one(samples, "E1B", 9)
|
|
assert result.detected and abs(result.code_phase_chips - 20.0) < 0.3
|