aboutsummaryrefslogtreecommitdiffstats
path: root/src/common/sdr.c
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2017-07-11 20:26:40 +0200
committerAndreas Eversberg <jolly@eversberg.eu>2017-07-15 12:45:19 +0200
commitfda224c27f84b17ac6b0427534adcbe48be96635 (patch)
tree063e41d1bbe41b958b5f237de4f1a33456692782 /src/common/sdr.c
parent538b4a42ec0925cbd764ab8733bc1639d4221107 (diff)
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.
Diffstat (limited to 'src/common/sdr.c')
-rw-r--r--src/common/sdr.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/common/sdr.c b/src/common/sdr.c
index e24c8bd..049e6af 100644
--- a/src/common/sdr.c
+++ b/src/common/sdr.c
@@ -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;
}