hamnet70/impl/src/sdr/sdr.h

54 lines
1.2 KiB
C

#ifndef SDR_SDR_H
#define SDR_SDR_H
#include <complex.h>
#include <SoapySDR/Device.h>
#include <liquid/liquid.h>
#include "results.h"
typedef struct {
SoapySDRDevice *sdr;
SoapySDRStream *rx_stream;
SoapySDRStream *tx_stream;
firinterp_crcf interp;
nco_crcf tx_nco;
firdecim_crcf decim;
nco_crcf rx_nco;
} sdr_ctx_t;
result_t sdr_init(sdr_ctx_t *ctx);
result_t sdr_destroy(sdr_ctx_t *ctx);
result_t sdr_start_rx(sdr_ctx_t *ctx);
result_t sdr_start_tx(sdr_ctx_t *ctx, size_t burst_size);
result_t sdr_stop_rx(sdr_ctx_t *ctx);
result_t sdr_stop_tx(sdr_ctx_t *ctx);
result_t sdr_transmit(sdr_ctx_t *ctx, const float complex *samples, size_t nsamples, long timeout_us);
result_t sdr_receive(sdr_ctx_t *ctx, float complex *samples, size_t *nsamples, long timeout_us);
result_t sdr_flush_tx_buffer(sdr_ctx_t *ctx);
/*!
* \brief Convert and resample a received signal to baseband.
*/
result_t sdr_rf_to_baseband(sdr_ctx_t *ctx,
const float complex *rf_samples, size_t nrf,
float complex *bb_samples, size_t nbb);
/*!
* \brief Convert and resample a baseband signal for transmission.
*/
result_t sdr_baseband_to_rf(sdr_ctx_t *ctx,
const float complex *bb_samples, size_t nbb,
float complex *rf_samples, size_t nrf);
#endif // SDR_SDR_H