Trennung EchoLink-Verbindung verhindern

Es gibt leider eine ganze Reihe von Leuten, deren Horizont arg beschränkt ist, die dem QSO-Thema nicht folgen können, den OMs durch die Trennung der EchoLink-Verbindung permanent das QSO zerstören oder für Rundsprüche zusammengeschaltete Relaisstationen trennen. Um zu verhindern, dass eine EchoLink-Verbindung ständig durch diese Störer getrennt wird, kann man einen der folgenden Wege gehen.

1) Disconnect wird durch „geheimes Kommando“ verhindert

* Erzeugen Sie eine Datei z.B. no-disconnect.tcl mit dem folgenden Inhalt:

# das Überschreiben der Prozedur mit folgendem Inhalt verhindert das 
# einfache Trennen einer EchoLink-Verbindung durch "#" 
# Ersetzen Sie die Werte für 
# "XX" mit dem Kommando für die Aktivierung der Disconnect-Sperre 
# "YY" mit dem Kommando für die Deaktivierung der Disconnect-Sperre 
# für den Zeitraum der Aktivierung nimmt svxlink kein "leeres" DTMF-Kommando 
# entgegen (z.B. Rundspruch) 

namespace eval Logic {

  # variable for Logic.tcl (muss im namespace Logic definiert werden, Nachtrag, 5.3.13, M. H.)
  variable ignore_dtmf 0;
  proc dtmf_cmd_received {cmd} {
     puts "DTMF command received: $cmd";
     variable ignore_dtmf;
     if {$cmd == "XX"} {
         set ignore_dtmf 1;
         return 1;
     }
     if {$ignore_dtmf} {
      if {$cmd == "YY"} {
         set ignore_dtmf 0;
         return 1;
      } elseif {$cmd == ""} {
         return 1;
      }
     }
   return 0;
 }
}
# end of namespace Logic

2) Disconnect ist erst nach xx Sekunden möglich und nur wenn von der EchoLink-Station kein Audiostream mehr zu empfangen ist, benötigt eine Erweiterung im Modul EchoLink/ModuleEchoLink::inIsReceiving():
* Erzeugen Sie eine Datei z.B. no-disconnect.tcl mit dem folgenden Inhalt:

namespace eval Logic {
  proc dtmf_cmd_received {cmd} {
    global last_el_stream;
    global is_el_rx;
    variable now;
    variable ignore_dtmf;
    variable diff;
    set cs $EchoLink::num_connected_stations;
    set now [clock seconds];

    # Trennung erst nach 35 Sekunden oder durch geheimes Kommando "78#"
    set diff [expr {$last_el_stream + 35 - $now}];
    if {$cs > 0} {
       if {(($diff < 0) && !$is_el_rx) || $cmd == "78"} {
          puts "disconnect OK";
          return 0;
       }
       return 1;
       } else {
         return 0;
       }
    }
}
# end of namespace Logic

namespace eval EchoLink { 
   proc is_receiving {isrec} { 
     global last_el_stream; 
     global is_el_rx; 
     set is_el_rx $isrec;
     if {$isrec == 0} {
       set last_el_stream [clock seconds];
     }
    puts "is_receiving $isrec $is_el_rx $last_el_stream";
  }
}
# end of namespace EchoLink

2) Speichern Sie diese Datei(en) in ein entsprechendes locale-Verzeichnis (siehe Locale-Konzept) und starten Sie SvxLink neu