33 lines
981 B
Python
33 lines
981 B
Python
import numpy as np
|
|
|
|
from galileo_rx.tracking.discriminators import (
|
|
dll_noncoherent_power_chips,
|
|
dll_normalized_envelope_chips,
|
|
fll_bpsk_phase_difference_hz,
|
|
fll_phase_difference_hz,
|
|
pll_four_quadrant_rad,
|
|
pll_two_quadrant_rad,
|
|
)
|
|
|
|
|
|
def test_pll_discriminator_sign_and_units() -> None:
|
|
prompt = np.exp(1j * 0.2)
|
|
assert abs(pll_four_quadrant_rad(prompt) - 0.2) < 1e-12
|
|
assert abs(pll_two_quadrant_rad(prompt) - 0.2) < 1e-12
|
|
|
|
|
|
def test_fll_phase_difference_is_hz() -> None:
|
|
dt = 0.004
|
|
assert abs(fll_phase_difference_hz(1 + 0j, np.exp(2j * np.pi * 10 * dt), dt) - 10.0) < 1e-12
|
|
|
|
|
|
def test_bpsk_fll_rejects_data_sign_transition() -> None:
|
|
dt = 0.004
|
|
prompt = -np.exp(2j * np.pi * 10 * dt)
|
|
assert abs(fll_bpsk_phase_difference_hz(1 + 0j, prompt, dt) - 10.0) < 1e-12
|
|
|
|
|
|
def test_dll_sign() -> None:
|
|
assert dll_normalized_envelope_chips(2 + 0j, 1 + 0j, 0.25) > 0
|
|
assert dll_noncoherent_power_chips(2 + 0j, 1 + 0j, 0.25) > 0
|