SvxLink Roger Beep: Unterschied zwischen den Versionen

Zeile 46: Zeile 46:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Nachdem nun Töne in Sprachdateien vorhanden sind können diese nun in das Skript integriert werden, etwa folgendermaßen:
 
Nachdem nun Töne in Sprachdateien vorhanden sind können diese nun in das Skript integriert werden, etwa folgendermaßen:
 +
 +
 +
proc send_rgr_sound {} {
 +
 +
       variable is_rf;
 +
 +
       if {!$is_rf} {
 +
 +
               # network
 +
 +
               playMsg "Core" "beep500-30";
 +
 +
               playSilence 80;
 +
 +
       } else {
 +
 +
               # rf
 +
 +
               playMsg "Core" "beep1633-30";
 +
 +
               playSilence 80;
 +
 +
               playMsg "Core" "beep1209-30";
 +
 +
               playSilence 80;
 +
 +
       }
 +
 +
       set is_rf 0;
 +
 +
       }
 +
 +
}

Version vom 20. November 2023, 12:45 Uhr

Svxlink kann optional am Ende der Aussendung einen Roger-Beep senden.

Dieser wird im Abschnitt "[RepeaterLogic]" durch die Einstellung RGR_SOUND_DELAY gesteuert.

Der Wert "-1" deaktiviert den Ton, positive Werte definieren die Verzögerung bis der Ton ausgesendet wird.

In der Standard-Konfiguration wird die konkrete Aussendung durch das TCL-Script "Logic.tcl" im Verzeichnis "/usr/share/svxlink/events.d/local/" gesteuert, konkret durch die Prozedur "send_rgr_sound({}".


Diese kann durch ein eigenes Script ersetzt werden. Dazu wird das Untervereichnis "local" angelegt und dort ein TCL-Script erstellt, etwa "rogerbeep.tcl" im Verzeichnis "/usr/share/svxlink/events.d/local/":

namespace eval Logic {

variable is_rf 0;

proc squelch_open {rx_id is_open} {
        variable sql_rx_id;
        variable is_rf;
        set sql_rx_id $rx_id;
        if {!$is_open} {
                set is_rf 1;
        }
}

proc send_rgr_sound {} {
        variable is_rf;
        if {!$is_rf} {
                # Signal wurde vom Netzwerk empfangen
                playTone 500 300 150;
        } else {
                # Signal wurde von lokal empfangen
                playTone 1633 300 50;
                playSilence 80;
                playTone 1209 300 50;
        }
        set is_rf 0;
        }
}
# end of namespace

In obigen Script wird unterschieden, ob über Funk (rf) oder anders (Svxreflector) empfangen wurde, je nachdem wir ein tiefer oder ein hoher Ton ausgesendet.

Alternativ zum integrierten Tongenerator kann auch eine Sounddatei abgespielt werden. Diese ist (sprachabhängig) zu hinterlegen, etwa in "/usr/share/svxlink/sounds/en_US/Core".

Svxlink erwartet die Sprachdatei in einem bestimmten Format, diese kann durch "sox" erzeugt werden:

sox beep500-10.wav -r 16k -c1 out/beep500-10.wav

Nachdem nun Töne in Sprachdateien vorhanden sind können diese nun in das Skript integriert werden, etwa folgendermaßen:


proc send_rgr_sound {} {

       variable is_rf;

       if {!$is_rf} {

               # network

               playMsg "Core" "beep500-30";

               playSilence 80;

       } else {

               # rf

               playMsg "Core" "beep1633-30";

               playSilence 80;

               playMsg "Core" "beep1209-30";

               playSilence 80;

       }

       set is_rf 0;

       }

}

Diskussionen