sm0svx / svxlink

Advanced repeater system software with EchoLink support for Linux including a GUI, Qtel - the Qt EchoLink client
http://svxlink.org/
Other
433 stars 170 forks source link

Repeater Timeout notification #660

Open f5vmr opened 8 months ago

f5vmr commented 8 months ago

When implementing in [Rx1] SQL_TIMEOUT=300 (for example), a repeater installation simply issues a rgr-beep and goes into 'boing mode' until shutdown, or the person causing the timeout releases the PTT. All other participants have no idea at the present time, what has occured, but clearly any further transmissions would be ineffective, until the caller drops his transmission. I think it would be beneficial at this moment to perhaps consider that a variable "TIMEOUT" be added to the $reason list in the c++ to be able to be read in the RepeaterLogic.tcl and passed to Logic.tcl to a playMsg "Core" "timeout" announcing that the initial caller had overrun. (enabling the others to call him out on speaking for too long - LOL.) Only if another station stronger in RF than the blocking station can perhaps reset the timer?

Would this be a simple fix in the RepeaterLogic.cpp or other connected file to enable this addition.

73 - Chris.

f5vmr commented 2 months ago

I have created this code to replace proc squelch_open in Logic.tcl. proc squelch_open {rx_id is_open} { variable sql_rx_id; variable second_tick_subscribers; global time_elapsed; global squelch_is_open;

set sql_rx_id $rx_id; set squelch_is_open $is_open;

if {$is_open} { set time_elapsed 0; lappend second_tick_subscribers check_squelch_timeout; } else { if {$time_elapsed >= 180} { playMsg "Default" "timeout"; } set time_elapsed 0; set second_tick_subscribers [lsearch -all -inline -not $second_tick_subscribers check_squelch_timeout]; } }

proc check_squelch_timeout {} { global time_elapsed; global squelch_is_open;

if {$squelch_is_open} { incr time_elapsed; puts "Time elapsed: $time_elapsed";

if {$time_elapsed >= 180} {
  sound_timeout;
}
return 1;

} else { return 0; } }

proc sound_timeout {} { playTone 850 700 100 } This code runs when the squelch is opened, and closes normally, however provides a count of duration, that if exceeding 180 seconds, will superimpose a regular pip tone upon the emission of the repeater or module, until the squelch is closed, when the verbal announcement of "timeout" is transmitted. The duration of the counter is reset, and the repeater/Simplex unit resumes its normal operation.