diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2019-07-20 18:11:17 +0200 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2019-08-26 21:10:20 +0200 |
commit | d6579c124424532b9550c02d712c0d01a7da5114 (patch) | |
tree | 855f40b807eb09b2f4da969e36e2b82287c063b3 /src/bnetz | |
parent | b266b0f743282dd659f7423a2d441208cc7494fc (diff) |
Allow giving alphanumeric channels (Prepare for IMTS)
Diffstat (limited to 'src/bnetz')
-rw-r--r-- | src/bnetz/bnetz.c | 32 | ||||
-rw-r--r-- | src/bnetz/bnetz.h | 2 | ||||
-rw-r--r-- | src/bnetz/main.c | 2 |
3 files changed, 18 insertions, 18 deletions
diff --git a/src/bnetz/bnetz.c b/src/bnetz/bnetz.c index b9663a4..4c597bb 100644 --- a/src/bnetz/bnetz.c +++ b/src/bnetz/bnetz.c @@ -157,27 +157,27 @@ static void bnetz_timeout(struct timer *timer); static void bnetz_go_idle(bnetz_t *bnetz); /* Create transceiver instance and link to a list. */ -int bnetz_create(int kanal, const char *audiodev, int use_sdr, int samplerate, double rx_gain, int gfs, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback, double squelch_db, const char *paging, int metering) +int bnetz_create(const char *kanal, const char *audiodev, int use_sdr, int samplerate, double rx_gain, int gfs, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback, double squelch_db, const char *paging, int metering) { bnetz_t *bnetz; enum paging_signal paging_signal = PAGING_SIGNAL_NONE; char paging_file[255] = "", paging_on[255] = "", paging_off[255] = ""; int rc; - if (!(kanal >= 1 && kanal <= 39) && !(kanal >= 50 && kanal <= 86)) { - PDEBUG(DBNETZ, DEBUG_ERROR, "Channel ('Kanal') number %d invalid.\n", kanal); + if (!(atoi(kanal) >= 1 && atoi(kanal) <= 39) && !(atoi(kanal) >= 50 && atoi(kanal) <= 86)) { + PDEBUG(DBNETZ, DEBUG_ERROR, "Channel ('Kanal') number %s invalid.\n", kanal); return -EINVAL; } - if (kanal == 19) { - PDEBUG(DBNETZ, DEBUG_ERROR, "Selected calling channel ('Rufkanal') number %d can't be used as traffic channel.\n", kanal); + if (atoi(kanal) == 19) { + PDEBUG(DBNETZ, DEBUG_ERROR, "Selected calling channel ('Rufkanal') number %s can't be used as traffic channel.\n", kanal); return -EINVAL; } - if (kanal >= 38 && kanal <= 39) - PDEBUG(DBNETZ, DEBUG_NOTICE, "Selected channel ('Kanal') number %d may not be supported by older B1-Network phones.\n", kanal); - if (kanal >= 50) - PDEBUG(DBNETZ, DEBUG_NOTICE, "Selected channel ('Kanal') number %d belongs to B2-Network and is not supported by B1 phones.\n", kanal); + if (atoi(kanal) >= 38 && atoi(kanal) <= 39) + PDEBUG(DBNETZ, DEBUG_NOTICE, "Selected channel ('Kanal') number %s may not be supported by older B1-Network phones.\n", kanal); + if (atoi(kanal) >= 50) + PDEBUG(DBNETZ, DEBUG_NOTICE, "Selected channel ('Kanal') number %s belongs to B2-Network and is not supported by B1 phones.\n", kanal); if ((gfs < 1 || gfs > 19)) { PDEBUG(DBNETZ, DEBUG_ERROR, "Given 'Gruppenfreisignal' %d invalid.\n", gfs); @@ -220,10 +220,10 @@ error_paging: return -ENOMEM; } - PDEBUG(DBNETZ, DEBUG_DEBUG, "Creating 'B-Netz' instance for 'Kanal' = %d 'Gruppenfreisignal' = %d (sample rate %d).\n", kanal, gfs, samplerate); + PDEBUG(DBNETZ, DEBUG_DEBUG, "Creating 'B-Netz' instance for 'Kanal' = %s 'Gruppenfreisignal' = %d (sample rate %d).\n", kanal, gfs, samplerate); /* init general part of transceiver */ - rc = sender_create(&bnetz->sender, kanal, bnetz_kanal2freq(kanal, 0), bnetz_kanal2freq(kanal, 1), audiodev, use_sdr, samplerate, rx_gain, pre_emphasis, de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback, paging_signal); + rc = sender_create(&bnetz->sender, kanal, bnetz_kanal2freq(atoi(kanal), 0), bnetz_kanal2freq(atoi(kanal), 1), audiodev, use_sdr, samplerate, rx_gain, pre_emphasis, de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback, paging_signal); if (rc < 0) { PDEBUG(DBNETZ, DEBUG_ERROR, "Failed to init transceiver process!\n"); goto error; @@ -247,7 +247,7 @@ error_paging: /* go into idle state */ bnetz_go_idle(bnetz); - PDEBUG(DBNETZ, DEBUG_NOTICE, "Created 'Kanal' #%d\n", kanal); + PDEBUG(DBNETZ, DEBUG_NOTICE, "Created 'Kanal' #%s\n", kanal); PDEBUG(DBNETZ, DEBUG_NOTICE, " -> Using station ID (Gruppenfreisignal) %d\n", gfs); return 0; @@ -263,7 +263,7 @@ void bnetz_destroy(sender_t *sender) { bnetz_t *bnetz = (bnetz_t *) sender; - PDEBUG(DBNETZ, DEBUG_DEBUG, "Destroying 'B-Netz' instance for 'Kanal' = %d.\n", sender->kanal); + PDEBUG(DBNETZ, DEBUG_DEBUG, "Destroying 'B-Netz' instance for 'Kanal' = %s.\n", sender->kanal); switch_channel_19(bnetz, 0); dsp_cleanup_sender(bnetz); timer_exit(&bnetz->timer); @@ -276,7 +276,7 @@ static void bnetz_go_idle(bnetz_t *bnetz) { timer_stop(&bnetz->timer); - PDEBUG(DBNETZ, DEBUG_INFO, "Entering IDLE state on channel %d, sending 'Gruppenfreisignal' %d.\n", bnetz->sender.kanal, bnetz->gfs); + PDEBUG(DBNETZ, DEBUG_INFO, "Entering IDLE state on channel %s, sending 'Gruppenfreisignal' %d.\n", bnetz->sender.kanal, bnetz->gfs); bnetz->station_id[0] = '\0'; /* remove station ID before state change, so status is shown correctly */ bnetz_new_state(bnetz, BNETZ_FREI); bnetz_set_dsp_mode(bnetz, DSP_MODE_TELEGRAMM); @@ -342,7 +342,7 @@ const char *bnetz_get_telegramm(bnetz_t *bnetz) return NULL; } if (bnetz->station_id_pos == 5) { - it = bnetz_digit2telegramm(bnetz->sender.kanal + 1000); + it = bnetz_digit2telegramm(atoi(bnetz->sender.kanal) + 1000); bnetz->page_mode = PAGE_MODE_KANALBEFEHL; break; } @@ -656,7 +656,7 @@ static void bnetz_timeout(struct timer *timer) bnetz_set_dsp_mode(bnetz, DSP_MODE_TELEGRAMM); break; case BNETZ_SELEKTIVRUF_AUS: - PDEBUG_CHAN(DBNETZ, DEBUG_DEBUG, "Transmitter switched back to channel %d, waiting for paging response.\n", bnetz->sender.kanal); + PDEBUG_CHAN(DBNETZ, DEBUG_DEBUG, "Transmitter switched back to channel %s, waiting for paging response.\n", bnetz->sender.kanal); bnetz_new_state(bnetz, BNETZ_RUFBESTAETIGUNG); switch_channel_19(bnetz, 0); timer_start(&bnetz->timer, PAGING_TO); diff --git a/src/bnetz/bnetz.h b/src/bnetz/bnetz.h index 71acab9..c520902 100644 --- a/src/bnetz/bnetz.h +++ b/src/bnetz/bnetz.h @@ -112,7 +112,7 @@ typedef struct bnetz { double bnetz_kanal2freq(int kanal, int unterband); int bnetz_init(void); -int bnetz_create(int kanal, const char *audiodev, int use_sdr, int samplerate, double rx_gain, int gfs, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback, double squelch_db, const char *paging, int metering); +int bnetz_create(const char *kanal, const char *audiodev, int use_sdr, int samplerate, double rx_gain, int gfs, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback, double squelch_db, const char *paging, int metering); void bnetz_destroy(sender_t *sender); void bnetz_loss_indication(bnetz_t *bnetz, double loss_time); void bnetz_receive_tone(bnetz_t *bnetz, int bit); diff --git a/src/bnetz/main.c b/src/bnetz/main.c index 88cd700..b78352b 100644 --- a/src/bnetz/main.c +++ b/src/bnetz/main.c @@ -190,7 +190,7 @@ int main(int argc, char *argv[]) fprintf(stderr, "Failed to create \"Sender\" instance. Quitting!\n"); goto fail; } - printf("Base station for channel %d ready, please tune transmitter to %.3f MHz and receiver " "to %.3f MHz. (%.3f MHz offset)\n", kanal[i], bnetz_kanal2freq(kanal[i], 0) / 1e6, bnetz_kanal2freq(kanal[i], 1) / 1e6, bnetz_kanal2freq(kanal[i], 2) / 1e6); + printf("Base station for channel %s ready, please tune transmitter to %.3f MHz and receiver " "to %.3f MHz. (%.3f MHz offset)\n", kanal[i], bnetz_kanal2freq(atoi(kanal[i]), 0) / 1e6, bnetz_kanal2freq(atoi(kanal[i]), 1) / 1e6, bnetz_kanal2freq(atoi(kanal[i]), 2) / 1e6); printf("To call phone, switch transmitter (using paging signal) to %.3f MHz.\n", bnetz_kanal2freq(19, 0) / 1e6); } |