aboutsummaryrefslogtreecommitdiffstats
path: root/src/amps
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2017-05-14 12:27:56 +0200
committerAndreas Eversberg <jolly@eversberg.eu>2017-05-17 20:06:42 +0200
commit4d10ee7c82315f9933ad01433e9502d2f36b4621 (patch)
treeb2650affacf14bdefea2331d9ccdd6546520f16a /src/amps
parentca10048e5caa77d8ed4c4902336f8ef88738a5e0 (diff)
No "sdr" audio device option required anymore (when using SDR)
Diffstat (limited to 'src/amps')
-rw-r--r--src/amps/amps.c4
-rw-r--r--src/amps/amps.h2
-rw-r--r--src/amps/main.c23
3 files changed, 21 insertions, 8 deletions
diff --git a/src/amps/amps.c b/src/amps/amps.c
index fadedbc..c0f2709 100644
--- a/src/amps/amps.c
+++ b/src/amps/amps.c
@@ -377,7 +377,7 @@ static amps_t *search_pc(void)
static void amps_go_idle(amps_t *amps);
/* Create transceiver instance and link to a list. */
-int amps_create(int channel, enum amps_chan_type chan_type, const char *audiodev, int samplerate, double rx_gain, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, amps_si *si, uint16_t sid, uint8_t sat, int polarity, int tolerant, int loopback)
+int amps_create(int channel, enum amps_chan_type chan_type, const char *audiodev, int use_sdr, int samplerate, double rx_gain, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, amps_si *si, uint16_t sid, uint8_t sat, int polarity, int tolerant, int loopback)
{
sender_t *sender;
amps_t *amps;
@@ -443,7 +443,7 @@ int amps_create(int channel, enum amps_chan_type chan_type, const char *audiodev
PDEBUG(DAMPS, DEBUG_DEBUG, "Creating 'AMPS' instance for channel = %d (sample rate %d).\n", channel, samplerate);
/* init general part of transceiver */
- rc = sender_create(&amps->sender, channel, amps_channel2freq(channel, 0), amps_channel2freq(channel, 1), audiodev, samplerate, rx_gain, 0, 0, write_rx_wave, write_tx_wave, read_rx_wave, loopback, 0, PAGING_SIGNAL_NONE);
+ rc = sender_create(&amps->sender, channel, amps_channel2freq(channel, 0), amps_channel2freq(channel, 1), audiodev, use_sdr, samplerate, rx_gain, 0, 0, write_rx_wave, write_tx_wave, read_rx_wave, loopback, 0, PAGING_SIGNAL_NONE);
if (rc < 0) {
PDEBUG(DAMPS, DEBUG_ERROR, "Failed to init transceiver process!\n");
goto error;
diff --git a/src/amps/amps.h b/src/amps/amps.h
index 279f571..706982d 100644
--- a/src/amps/amps.h
+++ b/src/amps/amps.h
@@ -164,7 +164,7 @@ const char *amps_min12number(uint32_t min1);
void amps_number2min(const char *number, uint32_t *min1, uint16_t *min2);
const char *amps_min2number(uint32_t min1, uint16_t min2);
const char *amps_scm(uint8_t scm);
-int amps_create(int channel, enum amps_chan_type chan_type, const char *audiodev, int samplerate, double rx_gain, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, amps_si *si, uint16_t sid, uint8_t sat, int polarity, int tolerant, int loopback);
+int amps_create(int channel, enum amps_chan_type chan_type, const char *audiodev, int use_sdr, int samplerate, double rx_gain, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, amps_si *si, uint16_t sid, uint8_t sat, int polarity, int tolerant, int loopback);
void amps_destroy(sender_t *sender);
void amps_rx_signaling_tone(amps_t *amps, int tone, double quality);
void amps_rx_sat(amps_t *amps, int tone, double quality);
diff --git a/src/amps/main.c b/src/amps/main.c
index 7f83602..9ab4051 100644
--- a/src/amps/main.c
+++ b/src/amps/main.c
@@ -260,14 +260,27 @@ int main(int argc, char *argv[])
print_help(argv[-skip_args]);
return 0;
}
+ if (use_sdr) {
+ /* set audiodev */
+ for (i = 0; i < num_kanal; i++)
+ audiodev[i] = "sdr";
+ num_audiodev = num_kanal;
+ /* set channel types for more than 1 channel */
+ if (num_kanal > 1 && num_chan_type == 0) {
+ chan_type[0] = CHAN_TYPE_CC_PC;
+ for (i = 1; i < num_kanal; i++)
+ chan_type[i] = CHAN_TYPE_VC;
+ num_chan_type = num_kanal;
+ }
+ }
if (num_kanal == 1 && num_audiodev == 0)
- num_audiodev = 1; /* use defualt */
+ num_audiodev = 1; /* use default */
if (num_kanal != num_audiodev) {
fprintf(stderr, "You need to specify as many sound devices as you have channels.\n");
exit(0);
}
if (num_kanal == 1 && num_chan_type == 0)
- num_chan_type = 1; /* use defualt */
+ num_chan_type = 1; /* use default */
if (num_kanal != num_chan_type) {
fprintf(stderr, "You need to specify as many channel types as you have channels.\n");
exit(0);
@@ -315,7 +328,7 @@ int main(int argc, char *argv[])
fprintf(stderr, "You did not define any VC (voice) channel. You will not be able to make any call.\n");
/* SDR always requires emphasis */
- if (!strcmp(audiodev[0], "sdr")) {
+ if (use_sdr) {
do_pre_emphasis = 1;
do_de_emphasis = 1;
}
@@ -333,7 +346,7 @@ int main(int argc, char *argv[])
polarity = 1; /* positive */
else if (!strcmp(flip_polarity, "yes"))
polarity = -1; /* negative */
- else if (!strcmp(audiodev[0], "sdr"))
+ else if (use_sdr)
polarity = 1; /* SDR is always positive */
else {
fprintf(stderr, "You must define, if the the TX deviation polarity has to be flipped. (-F yes | no) See help.\n");
@@ -345,7 +358,7 @@ int main(int argc, char *argv[])
amps_si si;
init_sysinfo(&si, ms_power, ms_power, dcc, sid >> 1, regh, regr, pureg, pdreg, locaid, regincr, bis);
- rc = amps_create(kanal[i], chan_type[i], audiodev[i], samplerate, rx_gain, do_pre_emphasis, do_de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, &si, sid, scc, polarity, tolerant, loopback);
+ rc = amps_create(kanal[i], chan_type[i], audiodev[i], use_sdr, samplerate, rx_gain, do_pre_emphasis, do_de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, &si, sid, scc, polarity, tolerant, loopback);
if (rc < 0) {
fprintf(stderr, "Failed to create \"Sender\" instance. Quitting!\n");
goto fail;