Fixing and improving SDR support (SoapySDR and UHD)
- Soapy SDR now works. - Channels can be selected. - Antennas can be listed and selected. - Device args, tune args, stream args can be specified.
This commit is contained in:
@@ -57,24 +57,29 @@ typedef struct sdr {
|
||||
|
||||
static int sdr_use_uhd, sdr_use_soapy;
|
||||
static int sdr_channel;
|
||||
static const char *sdr_device_args;
|
||||
static const char *sdr_device_args, *sdr_stream_args, *sdr_tune_args;
|
||||
static const char *sdr_rx_antenna, *sdr_tx_antenna;
|
||||
static double sdr_rx_gain, sdr_tx_gain;
|
||||
const char *sdr_write_iq_rx_wave, *sdr_write_iq_tx_wave, *sdr_read_iq_rx_wave, *sdr_read_iq_tx_wave;
|
||||
static double sdr_bandwidth;
|
||||
|
||||
int sdr_init(int sdr_uhd, int sdr_soapy, int channel, const char *device_args, double rx_gain, double tx_gain, double bandwidth, const char *write_iq_rx_wave, const char *write_iq_tx_wave, const char *read_iq_rx_wave, const char *read_iq_tx_wave)
|
||||
int sdr_init(int sdr_uhd, int sdr_soapy, int channel, const char *device_args, const char *stream_args, const char *tune_args, const char *tx_antenna, const char *rx_antenna, double tx_gain, double rx_gain, double bandwidth, const char *write_iq_tx_wave, const char *write_iq_rx_wave, const char *read_iq_tx_wave, const char *read_iq_rx_wave)
|
||||
{
|
||||
sdr_use_uhd = sdr_uhd;
|
||||
sdr_use_soapy = sdr_soapy;
|
||||
sdr_channel = channel;
|
||||
sdr_device_args = strdup(device_args);
|
||||
sdr_rx_gain = rx_gain;
|
||||
sdr_stream_args = strdup(stream_args);
|
||||
sdr_tune_args = strdup(tune_args);
|
||||
sdr_tx_antenna = strdup(tx_antenna);
|
||||
sdr_rx_antenna = strdup(rx_antenna);
|
||||
sdr_tx_gain = tx_gain;
|
||||
sdr_rx_gain = rx_gain;
|
||||
sdr_bandwidth = bandwidth;
|
||||
sdr_write_iq_rx_wave = write_iq_rx_wave;
|
||||
sdr_write_iq_tx_wave = write_iq_tx_wave;
|
||||
sdr_read_iq_rx_wave = read_iq_rx_wave;
|
||||
sdr_write_iq_rx_wave = write_iq_rx_wave;
|
||||
sdr_read_iq_tx_wave = read_iq_tx_wave;
|
||||
sdr_read_iq_rx_wave = read_iq_rx_wave;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -242,7 +247,7 @@ void *sdr_open(const char __attribute__((__unused__)) *audiodev, double *tx_freq
|
||||
|
||||
#ifdef HAVE_UHD
|
||||
if (sdr_use_uhd) {
|
||||
rc = uhd_open(sdr_channel, sdr_device_args, tx_center_frequency, rx_center_frequency, sdr->samplerate, sdr_rx_gain, sdr_tx_gain, sdr_bandwidth);
|
||||
rc = uhd_open(sdr_channel, sdr_device_args, sdr_stream_args, sdr_tune_args, sdr_tx_antenna, sdr_rx_antenna, tx_center_frequency, rx_center_frequency, sdr->samplerate, sdr_tx_gain, sdr_rx_gain, sdr_bandwidth);
|
||||
if (rc)
|
||||
goto error;
|
||||
}
|
||||
@@ -250,7 +255,7 @@ void *sdr_open(const char __attribute__((__unused__)) *audiodev, double *tx_freq
|
||||
|
||||
#ifdef HAVE_SOAPY
|
||||
if (sdr_use_soapy) {
|
||||
rc = soapy_open(sdr_channel, sdr_device_args, tx_center_frequency, rx_center_frequency, sdr->samplerate, sdr_rx_gain, sdr_tx_gain, sdr_bandwidth);
|
||||
rc = soapy_open(sdr_channel, sdr_device_args, sdr_stream_args, sdr_tune_args, sdr_tx_antenna, sdr_rx_antenna, tx_center_frequency, rx_center_frequency, sdr->samplerate, sdr_tx_gain, sdr_rx_gain, sdr_bandwidth);
|
||||
if (rc)
|
||||
goto error;
|
||||
}
|
||||
|
Reference in New Issue
Block a user