Verbindungsstatus des Servers ausgeben

  • Liebe Gemeinde,
    heute möchte ich Euch vorstellen, wie man einen Status zu einem oder auch mehreren verlinkten Net- und/oder Remotelinks herstellt, verwaltet und ausliest. Einen Hasenfuß hat die Sache: Es funktioniert nicht, wenn man die „Timeout“ – Funktion zur zeitgesteuerten Verbindung oder Trennung von Logiken nutzen möchte.

    Schritt 1, Definition einer Datei, in der der Status hinterlegt wird:
    In der svxlink.conf steht in der betreffenden Logiksection der Parameter „DEFAULT_ACTIVE=1“:

    Code
    [RemoteLink]CONNECT_LOGICS=SimplexLogic:91:R70,RemoteLogic:91:R2DEFAULT_ACTIVE=1

    Achtung, die beliebige Bezeichnung „R2“ und „R70“ (in meinem Fall für 2m und 70cm Logik) fragen wir später in einer Prozedur ab.
    Beim Starten von svxlink wird die entsprechende Logik aktiviert. Sollte die Logik beim Startv deaktiviert sein und später manuell aktiviert werden, wird daraus natürlich „set status_netlink 0“ und „DEFAULT_ACTIVE=0“.
    In meinem Beispiel wird /var/tmp/svx.remote_netlink_status mit dem Inhalt „set status_netlink 1“ beim Start von svxlink angelegt. Dazu muss folgender Inhalt in der ./local/RemoteLogic.tcl hinterlegt werden:

    Code
    proc startup {} {  global logic_name;  append func $logic_name "::checkPeriodicIdentify";  Logic::addTimerTickSubscriber $func;  Logic::startup_rl;  puts "startup bei $logic_name, setzen svx.remote_netlink_status auf 0"  exec /bin/echo "set status_link 0" > /var/tmp/svx.remote_link_status;….

    Schritt 2, Ändern des Status per DTMF:
    In der ./local/RemoteLogic.tcl folgende Prozeduren hinterlegen:

    Code
    proc activating_link {name} {  global logic_name;  Logic::activating_link $name;if {$name == "R70"} {  exec /bin/echo "set status_link 1" > /var/tmp/svx.remote_link_status;}}


    Damit wird bei einer Aktivierung per DTMF der geänderte Status in der Datei /var/tmp/svx.remote_link_status hinterlegt.

    Code
    proc deactivating_link {name} {  global logic_name;  Logic::deactivating_link $name;if {$name == "R70"} {  exec /bin/echo "set status_link 0" > /var/tmp/svx.remote_link_status;}}


    Damit wird bei einer Deaktivierung per DTMF der neue Status in der Datei /var/tmp/svx.remote_link_status hinterlegt.

    Schritt 3, Auswerten des Status:
    Neben dem einfachen Auslesen des Inhalts der /var/tmp/svx.remote_link_status und der weiteren Verarbeitung z.B. in einem HTML-Script, kann man natürlich auch den Status per HF mitteilen. Das mache ich in meiner Konfiguration an zwei Stellen, zum einen bei der „*“ Funktion sowie bei der SHORT_IDENT_INTERVAL.
    Die „*“-Funktion definiere ich in der ./local/man_ident.tcl folgendermaßen:

    Code
    …#--------- ausgabe Link Statusvariable status_link;source "/var/tmp/svx.remote_link_status";if {$status_link == 1} {        playMsg "Core" "Remote_Logik_aktiv";        playSilence 300;   }}

    Ferner wird dem Anrufer einer Echolinkverbindung der Status angesagt. Dazu habe ich die ./local/EchoLink.tcl um folgenden Eintrag ergänzt:

    Diese Anleitung ist nicht für den "Beginner" gedacht, da einige Prozeduren nur unvollständig aufgeführt sind und nur die wesentlichen Teile der Thematik beinhalten. Ferner habe ich mir erlaubt, die kompletten Pfade wegzulassen, da das "locale-Prinzip" bekannt sein sollte. Natürlich müssen im Falle einer Sprachausgabe vorher noch die entsprechenden Sounddateien generiert werden. Hat man mehr als eine Logik im Einsatz, kann man entsprechend viele Status-Files einsetzen und darauf abfragen.

    Viel Spaß und gutes Gelingen beim Umsetzen.