From b32e0ab6025a025850dc0079fa6596a96d7295a6 Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Mon, 9 Oct 2017 20:49:14 +0200 Subject: Implementation of RX level squelch (for A-Netz and B-Netz) Use -S for setting RF level or use -S auto for auto level. When squelch closes, audio is muted. If squelch is closed for some seconds (depending on network), call is released. (RF loss condition) The previous loss detection has been removed --- src/anetz/anetz.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/anetz/anetz.c') diff --git a/src/anetz/anetz.c b/src/anetz/anetz.c index 1d58efe..27eb1b0 100644 --- a/src/anetz/anetz.c +++ b/src/anetz/anetz.c @@ -186,7 +186,7 @@ static void anetz_timeout(struct timer *timer); static void anetz_go_idle(anetz_t *anetz); /* Create transceiver instance and link to a list. */ -int anetz_create(int kanal, const char *audiodev, int use_sdr, int samplerate, double rx_gain, double page_gain, int page_sequence, 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 loss_volume) +int anetz_create(int kanal, const char *audiodev, int use_sdr, int samplerate, double rx_gain, double page_gain, int page_sequence, 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) { anetz_t *anetz; int rc; @@ -205,14 +205,14 @@ int anetz_create(int kanal, const char *audiodev, int use_sdr, int samplerate, d PDEBUG(DANETZ, DEBUG_DEBUG, "Creating 'A-Netz' instance for 'Kanal' = %d (sample rate %d).\n", kanal, samplerate); /* init general part of transceiver */ - rc = sender_create(&anetz->sender, kanal, anetz_kanal2freq(kanal, 0), anetz_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, loss_volume, PAGING_SIGNAL_NONE); + rc = sender_create(&anetz->sender, kanal, anetz_kanal2freq(kanal, 0), anetz_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_NONE); if (rc < 0) { PDEBUG(DANETZ, DEBUG_ERROR, "Failed to init 'Sender' processing!\n"); goto error; } /* init audio processing */ - rc = dsp_init_sender(anetz, page_gain, page_sequence); + rc = dsp_init_sender(anetz, page_gain, page_sequence, squelch_db); if (rc < 0) { PDEBUG(DANETZ, DEBUG_ERROR, "Failed to init signal processing!\n"); goto error; @@ -282,10 +282,10 @@ static void anetz_page(anetz_t *anetz, const char *dial_string, double *freq) } /* Loss of signal was detected, release active call. */ -void anetz_loss_indication(anetz_t *anetz) +void anetz_loss_indication(anetz_t *anetz, double loss_time) { if (anetz->state == ANETZ_GESPRAECH) { - PDEBUG_CHAN(DANETZ, DEBUG_NOTICE, "Detected loss of signal, releasing.\n"); + PDEBUG_CHAN(DANETZ, DEBUG_NOTICE, "Detected loss of signal after %.1f seconds, releasing.\n", loss_time); anetz_release(anetz); call_in_release(anetz->callref, CAUSE_TEMPFAIL); anetz->callref = 0; -- cgit v1.2.3