54 lines
1.2 KiB
C
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
|