// execute frame synchronizer // _q : frame synchronizer object // _x : input sample array [size: _n x 1] // _n : number of input samples void flexframesync_execute(flexframesync _q, float complex * _x, unsigned int _n) { unsigned int i; for (i=0; i<_n; i++) { #if DEBUG_FLEXFRAMESYNC if (_q->debug_enabled) windowcf_push(_q->debug_x, _x[i]); #endif switch (_q->state) { case STATE_DETECTFRAME: // detect frame (look for p/n sequence) flexframesync_execute_seekpn(_q, _x[i]); break; case STATE_RXPN: // receive p/n sequence symbols flexframesync_execute_rxpn(_q, _x[i]); break; case STATE_RXHEADER: // receive header sequence symbols flexframesync_execute_rxheader(_q, _x[i]); break; case STATE_RXPAYLOAD: // receive payload symbols flexframesync_execute_rxpayload(_q, _x[i]); break; default: fprintf(stderr,"error: flexframesync_exeucte(), unknown/unsupported state\n"); exit(1); } } }
// execute frame synchronizer // _q : frame synchronizer object // _x : input sample array [size: _n x 1] // _n : number of input samples void flexframesync_execute(flexframesync _q, float complex * _x, unsigned int _n) { unsigned int i; for (i=0; i<_n; i++) { #if DEBUG_FLEXFRAMESYNC // write samples to debug buffer // NOTE: the debug_qdetector_flush prevents samples from being written twice if (_q->debug_enabled && !_q->debug_qdetector_flush) windowcf_push(_q->debug_x, _x[i]); #endif switch (_q->state) { case FLEXFRAMESYNC_STATE_DETECTFRAME: // detect frame (look for p/n sequence) flexframesync_execute_seekpn(_q, _x[i]); break; case FLEXFRAMESYNC_STATE_RXPREAMBLE: // receive p/n sequence symbols flexframesync_execute_rxpreamble(_q, _x[i]); break; case FLEXFRAMESYNC_STATE_RXHEADER: // receive header symbols flexframesync_execute_rxheader(_q, _x[i]); break; case FLEXFRAMESYNC_STATE_RXPAYLOAD: // receive payload symbols flexframesync_execute_rxpayload(_q, _x[i]); break; default: fprintf(stderr,"error: flexframesync_exeucte(), unknown/unsupported state\n"); exit(1); } } }