symsync_rrrf

Variants: symsync_crcf, symsync_rrrf

Multi-rate symbol synchronizer for symbol timing recovery.

Public Functions

symsync_rrrf symsync_rrrf_create(unsigned int _k, unsigned int _M, float * _h, unsigned int _h_len)
symsync_rrrf symsync_rrrf_create_rnyquist(int _type, unsigned int _k, unsigned int _m, float _beta, unsigned int _M)
symsync_rrrf symsync_rrrf_create_kaiser(unsigned int _k, unsigned int _m, float _beta, unsigned int _M)
symsync_rrrf symsync_rrrf_copy(symsync_rrrf _q)
int symsync_rrrf_destroy(symsync_rrrf _q)
int symsync_rrrf_print(symsync_rrrf _q)
int symsync_rrrf_reset(symsync_rrrf _q)
int symsync_rrrf_lock(symsync_rrrf _q)
int symsync_rrrf_unlock(symsync_rrrf _q)
int symsync_rrrf_is_locked(symsync_rrrf _q)
int symsync_rrrf_set_output_rate(symsync_rrrf _q, unsigned int _k_out)
int symsync_rrrf_set_lf_bw(symsync_rrrf _q, float _bt)
float symsync_rrrf_get_tau(symsync_rrrf _q)
int symsync_rrrf_execute(symsync_rrrf _q, float * _x, unsigned int _nx, float * _y, unsigned int * _ny)

Interfaces

symsync_rrrf symsync_rrrf_create(unsigned int _k, unsigned int _M, float * _h, unsigned int _h_len)

Create synchronizer object from external coefficients

  • _k : samples per symbol, 2 <= _k
  • _M : number of filters in the bank, 0 < _M
  • _h : matched filter coefficients, shape: (_h_len, 1)
  • _h_len : length of matched filter; \( h_{len} = 2 k m + 1 \)

symsync_rrrf symsync_rrrf_create_rnyquist(int _type, unsigned int _k, unsigned int _m, float _beta, unsigned int _M)

Create square-root Nyquist symbol synchronizer from prototype

  • _type : filter type (e.g. LIQUID_FIRFILT_RRC)
  • _k : samples/symbol, 2 <= _k
  • _m : symbol delay, 0 < _m
  • _beta : rolloff factor, 0 <= _beta <= 1
  • _M : number of filters in the bank, 0 < _M

symsync_rrrf symsync_rrrf_create_kaiser(unsigned int _k, unsigned int _m, float _beta, unsigned int _M)

Create symsync using Kaiser filter interpolator. This is useful when the input signal has its matched filter applied already.

  • _k : input samples/symbol, 2 <= _k
  • _m : symbol delay, 0 < _m
  • _beta : rolloff factor, 0 <= _beta <= 1
  • _M : number of filters in the bank, 0 < _M

symsync_rrrf symsync_rrrf_copy(symsync_rrrf _q)

Copy object including all internal objects and state

int symsync_rrrf_destroy(symsync_rrrf _q)

Destroy symsync object, freeing all internal memory

int symsync_rrrf_print(symsync_rrrf _q)

Print symsync object's parameters to stdout

int symsync_rrrf_reset(symsync_rrrf _q)

Reset symsync internal state

int symsync_rrrf_lock(symsync_rrrf _q)

Lock the symbol synchronizer's loop control

int symsync_rrrf_unlock(symsync_rrrf _q)

Unlock the symbol synchronizer's loop control

int symsync_rrrf_is_locked(symsync_rrrf _q)

Check the lock state of the symbol synchronizer's loop control, returning 1 if the object is locked, 0 if unlocked.

int symsync_rrrf_set_output_rate(symsync_rrrf _q, unsigned int _k_out)

Set synchronizer output rate (samples/symbol)

  • _q : synchronizer object
  • _k_out : output samples/symbol, 0 < _k_out

int symsync_rrrf_set_lf_bw(symsync_rrrf _q, float _bt)

Set loop-filter bandwidth

  • _q : synchronizer object
  • _bt : loop bandwidth, 0 <= _bt <= 1

float symsync_rrrf_get_tau(symsync_rrrf _q)

Return instantaneous fractional timing offset estimate

int symsync_rrrf_execute(symsync_rrrf _q, float * _x, unsigned int _nx, float * _y, unsigned int * _ny)

Execute synchronizer on input data array

  • _q : synchronizer object
  • _x : input data array, shape: (_nx, 1)
  • _nx : number of input samples
  • _y : output data array
  • _ny : number of samples written to output buffer