osmo-gmr: FCCH bursts

osmo-gmr 0.2.104-2b98 Osmocom GMR-1

Files | Data Structures | Functions | Variables
FCCH bursts
GMR-1 Software Defined Radio library

## 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...

## Detailed Description

## Function Documentation

## ◆ gmr1_fcch_fine()

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.

Parameters

  [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)

Returns
  0 in case of success. -errno for errors.

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.

## ◆ gmr1_fcch_rough()

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.

Parameters

  [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

Returns
  0 in case of success. -errno for errors.

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)

## ◆ gmr1_fcch_rough_multi()

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.

Parameters

  [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

Returns
  A positive value of the number of FCCH returned. -errno for errors

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.

## ◆ gmr1_fcch_snr()

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.

Parameters

  [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

Returns
  0 in case of success. -errno for errors.

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.

## Variable Documentation

## ◆ gmr1_fcch3_lband_burst

const struct gmr1_fcch_burst gmr1_fcch3_lband_burst

Initial value:
= {
.freq = 0.32f,
.len = 12 * 39,
}

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.

## ◆ gmr1_fcch3_sband_burst

const struct gmr1_fcch_burst gmr1_fcch3_sband_burst

Initial value:
= {
.freq = 0.16f,
.len = 12 * 39,
}

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.

## ◆ gmr1_fcch_burst

const struct gmr1_fcch_burst gmr1_fcch_burst

Initial value:
= {
.freq = 0.32f,
.len = 3 * 39,
}

FCCH burst (GMR-1 version) See GMR-1 05.004 (ETSI TS 101 376-5-2 V3.1.1) - Section 8.1.