SvxLink-Ansagen etwas verzögern

  • Hallo zusammen,

    ich möchte gerne alle Ansagen von SvxLink, welche nach dem Einschalten des Senders ausgegeben werden, ein wenig verzögern. Bei Funkgeräten (auf der Benutzerseite) mit langsamer TX/RX-Umschaltung und/oder langsam öffnender Rauschsperre werden manchmal die ersten Silben der Ansagen abgeschnitten.

    Im Prinzip funktioniert der Parameter TX_DELAY, allerdings wird damit leider der gesamte Audiostream - also auch das RX-Audio beim Repeaterbetrieb - verzögert. Der Parameter RGR_SOUND_DELAY bringt zumindest beim Roger-Beep schon einmal das gewünschte Ergebnis.

    Vermutlich müssen irgendwo die TCL-Routinen modifiziert werden. Vielleicht gibt es dort ja eine zentrale Stelle, wo ich ansetzen kann ...

    Schönen Gruß
    Frank, DL3DCW

  • Hi Frank,

    es sollte reichen, wenn Du nach dem locale-Prinzip im Namespace "RepeaterLogic" (so es bei Dir entsprechend genutzt wird) in der Prozedur "repeater_up" ganz am Anfang ein playSilence xxx; einfügst, Bsp:


    Code
    proc repeater_up {reason} {
      global mycall;
      global active_module;
      variable repeater_is_up;
    
    
      set repeater_is_up 1;
      playSilence 300;  # <---- Ausgaben um 300ms verzögert
      ...usw.

    vy 73s de Adi, DL1HRC

  • Hallo Adi,

    danke für die schnelle Hilfe! Damit wäre das oben beschriebene Problem nach dem Einschalten des Senders schon einmal gelöst.

    Noch nicht gelöst ist es in dem Fall, wenn der Repeater schon sendet und man gibt z.B. ein DTMF-Kommando per Funk. Dann antwortet SvxLink sofort. Daran habe ich bei meiner Fragestellung leider noch gar nicht gedacht.

    Die Verzögerung muss also vermutlich so eingebaut werden, das alle Ausgaben von SvxLink etwas verzögert werden ...

    Schönen Gruß
    Frank, DL3DCW

  • Dafür solltest Du in der events.tcl die Prozedur playMsg um diesen playSilence-Eintrag erweitern.

    73s de Adi

  • Hallo Adi,

    das hört sich schlüssig und einfach an ;-). Ich werde es mal testen und dann berichten. Vielen Dank für die Hilfe!

    Schönen Gruß
    Frank, DL3DCW

  • Hallo Adi,

    leider doch keine ganz optimale Lösung, da dann auch längere Pausen zwischen den einzelnen Buchstaben bei der Kennung entstehen: Delta (Pause) Bravo (Pause) Null ...

    Ist also vermutlich doch nicht so einfach, wie ich gedacht bzw. gehofft hatte ;-).

    Schönen Gruß
    Frank, DL3DCW

  • ja stimmt, hatte daran nicht gedacht. Aber ist das wirklich so störend, ich meine wie lange brauchen denn die Funkgeräte zum Öffnen der Rauschsperre bzw. zur TX/RX-Umschaltung?
    Oder schalten die Röhrenheizung des RX bei jedem TX-Durchgang ab :D

    73s de Adi

  • Hallo Adi,

    sowohl mein Baofeng UV-5R also auch mein Yaesu FT-60E verschlucken manchmal die erste Silbe. Dann höre ich nur noch Bravo-Null anstatt Delta-Bravo-Null. Wenn ich ein DTMF-Kommando gebe, kommt die Ausgabe "gefühlt" fast vor dem Loslassen der PTT. SvxLink ist da ein wenig schnell. Oder mein Raspberry hat vielleicht einfach zu viel Power, hi ...

    Schönen Gruß
    Frank, DL3DCW

  • Hast Du als SQL eine VOX?
    Eventuell solltest durch mal probieren den Parameter SQL_HANGTIME zu vergrößern.
    Eventuelles Nachrauschen kannst Du mit SQL_TAIL reduzieren.
    Ist jetzt nur so eine Idee.
    73s de Adi

  • Hallo Adi,

    nein, ich arbeite mit "echtem" SQL-Signal. Im Moment habe ich folgende Idee:

    Kurze Verzögerung nach Einschalten des TX einfügen: transmit is_on=1 (Logic.tcl)
    Kurze Verzögerung nach DTMF-Kommando einfügen: dtmf_cmd_received (Logic.tcl)

    Muss ich aber noch ausprobieren ...

    Schönen Gruß
    Frank, DL3DCW

  • Hallo zusammen,

    ein "playSilence" in der "Logic.tcl" innerhalb der Prozedur "transmit" führt leider nicht zum gewünschten Ergebnis.

    Ich habe nun folgende Anpassungen vorgenommen:

    • In der "RepeaterLogic.tcl" innerhalb der Prozedur "repeater_up" ein "playSilence 500;" einfügen
    • In der "Logic.tcl" innerhalb der Prozedur "send_short_ident" ein "playSilence 500;" einfügen
    • In der "Logic.tcl" innerhalb der Prozedur "send_long_ident" ein "playSilence 500;" einfügen


    Für eine Pause nach dem Empfang eines DTMF-Kommandos:

    • In der "Logic.tcl" innerhalb der Prozedur "dtmf_cmd_received" ein "playSilence 500;" einfügen


    Damit läuft es im Repeater-Modus bisher erst einmal sehr zufriedenstellend.

    Schönen Gruß
    Frank, DL3DCW