diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2017-07-11 20:26:40 +0200 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2017-07-15 12:45:19 +0200 |
commit | fda224c27f84b17ac6b0427534adcbe48be96635 (patch) | |
tree | 063e41d1bbe41b958b5f237de4f1a33456692782 /src/common/sdr.c | |
parent | 538b4a42ec0925cbd764ab8733bc1639d4221107 (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.c | 19 |
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; } |