osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Files | |
file | fcch.h |
Osmocom GMR-1 FCCH bursts header. | |
file | fcch.c |
Osmocom GMR-1 FCCH bursts implementation. | |
Data Structures | |
struct | gmr1_fcch_burst |
Functions | |
int | gmr1_fcch_rough (const struct gmr1_fcch_burst *burst_type, struct osmo_cxvec *search_win_in, int sps, float freq_shift, int *toa) |
Rough FCCH timing acquisition. More... | |
int | gmr1_fcch_rough_multi (const struct gmr1_fcch_burst *burst_type, struct osmo_cxvec *search_win_in, int sps, float freq_shift, int *peaks_toa, int N) |
Rough FCCH timing acquisition w/ multiple FCCH detection. More... | |
int | gmr1_fcch_fine (const struct gmr1_fcch_burst *burst_type, struct osmo_cxvec *burst_in, int sps, float freq_shift, int *toa, float *freq_error) |
Fine FCCH timing & frequency acquisition. More... | |
int | gmr1_fcch_snr (const struct gmr1_fcch_burst *burst_type, struct osmo_cxvec *burst_in, int sps, float freq_shift, float *snr) |
SNR estimation on a FCCH burst. More... | |
Variables | |
const struct gmr1_fcch_burst | gmr1_fcch_burst |
FCCH burst (GMR-1 version) See GMR-1 05.004 (ETSI TS 101 376-5-2 V3.1.1) - Section 8.1. | |
const struct gmr1_fcch_burst | gmr1_fcch3_lband_burst |
FCCH3 L-band burst (GMR-1 3G version for L-band) See GMR-1 05.004 (ETSI TS 101 376-5-2 V3.1.1) - Section 8.2.1. | |
const struct gmr1_fcch_burst | gmr1_fcch3_sband_burst |
FCCH3 S-band burst (GMR-1 3G version for S-band) See GMR-1 05.004 (ETSI TS 101 376-5-2 V3.1.1) - Section 8.2.2. | |
const struct gmr1_fcch_burst | gmr1_fcch_burst |
FCCH burst (GMR-1 version) See GMR-1 05.004 (ETSI TS 101 376-5-2 V3.1.1) - Section 8.1. More... | |
const struct gmr1_fcch_burst | gmr1_fcch3_lband_burst |
FCCH3 L-band burst (GMR-1 3G version for L-band) See GMR-1 05.004 (ETSI TS 101 376-5-2 V3.1.1) - Section 8.2.1. More... | |
const struct gmr1_fcch_burst | gmr1_fcch3_sband_burst |
FCCH3 S-band burst (GMR-1 3G version for S-band) See GMR-1 05.004 (ETSI TS 101 376-5-2 V3.1.1) - Section 8.2.2. More... | |
int gmr1_fcch_fine | ( | const struct gmr1_fcch_burst * | burst_type, |
struct osmo_cxvec * | burst_in, | ||
int | sps, | ||
float | freq_shift, | ||
int * | toa, | ||
float * | freq_error | ||
) |
Fine FCCH timing & frequency acquisition.
[in] | burst_type | FCCH burst format description |
[in] | burst_in | Complex signal of the FCCH burst |
[in] | sps | Oversampling used in the input complex signal |
[in] | freq_shift | Frequency shift to pre-apply to burst_in (rad/sym) |
[out] | toa | Pointer to the toa return variable |
[out] | freq_error | Pointer to the frequency error return variable (rad/sym) |
The input vector must be burst_type->len * sps samples long. The frequency error is doesn't include any correction done with freq_shift.
References osmo_cxvec::len.
int gmr1_fcch_rough | ( | const struct gmr1_fcch_burst * | burst_type, |
struct osmo_cxvec * | search_win_in, | ||
int | sps, | ||
float | freq_shift, | ||
int * | toa | ||
) |
Rough FCCH timing acquisition.
[in] | burst_type | FCCH burst format description |
[in] | search_win_in | Complex signal where to search for FCCH |
[in] | sps | Oversampling used in the input complex signal |
[in] | freq_shift | Frequency shift to pre-apply to search_win_in (rad/sym) |
[out] | toa | Pointer to the toa return variable |
To be sure to acquire the signal, you need more than a single BCCH period. (so more than 320 ms of signal, plus the fcch length itself)
int gmr1_fcch_rough_multi | ( | const struct gmr1_fcch_burst * | burst_type, |
struct osmo_cxvec * | search_win_in, | ||
int | sps, | ||
float | freq_shift, | ||
int * | peaks_toa, | ||
int | N | ||
) |
Rough FCCH timing acquisition w/ multiple FCCH detection.
[in] | burst_type | FCCH burst format description |
[in] | search_win_in | Complex signal where to search for FCCH |
[in] | sps | Oversampling used in the input complex signal |
[in] | freq_shift | Frequency shift to pre-apply to search_win_in (rad/sym) |
[out] | peaks_toa | Array of floats to store the returned alignements |
[in] | N | Maximum number of alignements to returns |
This method can detect multiple overlapping FCCH and returns alignements for all of them. To do so it needs at least 650 ms worth of data (two SI cycles plus some margin).
References GMR1_SYM_RATE, and osmo_cxvec::len.
int gmr1_fcch_snr | ( | const struct gmr1_fcch_burst * | burst_type, |
struct osmo_cxvec * | burst_in, | ||
int | sps, | ||
float | freq_shift, | ||
float * | snr | ||
) |
SNR estimation on a FCCH burst.
[in] | burst_type | FCCH burst format description |
[in] | burst_in | Complex signal of the FCCH burst |
[in] | sps | Oversampling used in the input complex signal |
[in] | freq_shift | Frequency shift to pre-apply to burst_in (rad/sym) |
[out] | snr | Pointer to the SNR return variable |
The input vector must be burst_type->len * sps samples long. This method estimated the FFT peak energy over the FFT average energy to estimate SNR.
References osmo_cxvec::len.
const struct gmr1_fcch_burst gmr1_fcch3_lband_burst |
FCCH3 L-band burst (GMR-1 3G version for L-band) See GMR-1 05.004 (ETSI TS 101 376-5-2 V3.1.1) - Section 8.2.1.
const struct gmr1_fcch_burst gmr1_fcch3_sband_burst |
FCCH3 S-band burst (GMR-1 3G version for S-band) See GMR-1 05.004 (ETSI TS 101 376-5-2 V3.1.1) - Section 8.2.2.
const struct gmr1_fcch_burst gmr1_fcch_burst |
FCCH burst (GMR-1 version) See GMR-1 05.004 (ETSI TS 101 376-5-2 V3.1.1) - Section 8.1.