// free transform object memory void ofdmframegen_destroy(ofdmframegen _q) { // free subcarrier type array memory free(_q->p); // free transform array memory free(_q->X); free(_q->x); FFT_DESTROY_PLAN(_q->ifft); // free tapering window and transition buffer free(_q->taper); free(_q->postfix); // free PLCP memory arrays free(_q->S0); free(_q->s0); free(_q->S1); free(_q->s1); // free pilot msequence object memory msequence_destroy(_q->ms_pilot); // free main object memory free(_q); }
// destroy WLAN framing synchronizer object void wlanframesync_destroy(wlanframesync _q) { #if DEBUG_WLANFRAMESYNC // free debugging objects if necessary if (_q->agc_rx != NULL) agc_crcf_destroy(_q->agc_rx); if (_q->debug_x != NULL) windowcf_destroy(_q->debug_x); if (_q->debug_rssi != NULL) windowf_destroy(_q->debug_rssi); if (_q->debug_framesyms != NULL) windowcf_destroy(_q->debug_framesyms); #endif // free transform object windowcf_destroy(_q->input_buffer); free(_q->X); free(_q->x); FFT_DESTROY_PLAN(_q->fft); // destroy synchronizer objects nco_crcf_destroy(_q->nco_rx); // numerically-controlled oscillator wlan_lfsr_destroy(_q->ms_pilot); // pilot sequence generator // free memory for encoded message free(_q->msg_enc); // free main object memory free(_q); }
// destroy fskdem object void fskdem_destroy(fskdem _q) { // free allocated arrays free(_q->demod_map); free(_q->buf_time); free(_q->buf_freq); FFT_DESTROY_PLAN(_q->fft); // free main object memory free(_q); }
void firpfbch_destroy(firpfbch _c) { unsigned int i; for (i=0; i<_c->num_channels; i++) { DOTPROD(_destroy)(_c->dp[i]); WINDOW(_destroy)(_c->w[i]); } free(_c->dp); free(_c->w); FFT_DESTROY_PLAN(_c->fft); free(_c->h); free(_c->x); free(_c->X); free(_c->X_prime); free(_c); }
void ofdmframesync_destroy(ofdmframesync _q) { #if DEBUG_OFDMFRAMESYNC // destroy debugging objects if (_q->debug_x != NULL) windowcf_destroy(_q->debug_x); if (_q->debug_rssi != NULL) windowf_destroy(_q->debug_rssi); if (_q->debug_framesyms != NULL) windowcf_destroy(_q->debug_framesyms); if (_q->G_hat != NULL) free(_q->G_hat); if (_q->px != NULL) free(_q->px); if (_q->py != NULL) free(_q->py); if (_q->debug_pilot_0 != NULL) windowf_destroy(_q->debug_pilot_0); if (_q->debug_pilot_1 != NULL) windowf_destroy(_q->debug_pilot_1); #endif // free subcarrier type array memory free(_q->p); // free transform object windowcf_destroy(_q->input_buffer); free(_q->X); free(_q->x); FFT_DESTROY_PLAN(_q->fft); // clean up PLCP arrays free(_q->S0); free(_q->s0); free(_q->S1); free(_q->s1); // free gain arrays free(_q->G0); free(_q->G1); free(_q->G); free(_q->B); free(_q->R); // destroy synchronizer objects nco_crcf_destroy(_q->nco_rx); // numerically-controlled oscillator msequence_destroy(_q->ms_pilot); // free main object memory free(_q); }
void FFTransformer::fillComplexSub() { auto plan = FFT_CREATE_PLAN(m_bufferSize, m_complexSub, m_complexSub, FFTW_FORWARD, FFTW_ESTIMATE); double speed = Options::getInstance()->getSignalSpeed(); double rxRate = Options::getInstance()->getBand(); for(size_t i = 0; i < m_bufferSize; i++) { double t = i / rxRate; t *= t; auto iter = *(m_complexSub + i); iter[0] = cos(M_PI * t * speed); iter[1] = sin(M_PI * t * speed); } FFT_EXECUTE(plan); for(size_t i = 0; i < m_bufferSize; i++) m_complexSub[i][1] *= -1; FFT_DESTROY_PLAN(plan); }