.titleBar { margin-bottom: 5px!important; }

[visdn] Ziffern werden doppelt gewählt

Dieses Thema im Forum "Asterisk ISDN mit vISDN" wurde erstellt von lo4dro, 15 Feb. 2006.

  1. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 lo4dro, 15 Feb. 2006
    Zuletzt bearbeitet: 15 Feb. 2006
    Hallo Leute.

    Ich wähle an meinem ISDN-Telefon 0123456
    visdn wählt:

    Code:
    -- Executing Dial("VISDN/visdn0/122.I", "VISDN/visdn1/00112233445566|90|Ttr") in new stack
        -- Called visdn1/00112233445566
    
    Hat jemad ne Idee?
    Ich nutze zwei HFC-Karten, eine im NT- und die andere im TE- Modus.

    Auserdem wird die "CALLERIDNUM" meines Endgerätes nicht übermittelt, es wird immer dieser default CLIP eingetragen.
     
  2. Sleepy

    Sleepy Neuer User

    Registriert seit:
    5 Okt. 2005
    Beiträge:
    10
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    das gleiche Problem habe ich auch, aber ich konnte feststellen,
    dass die Ziffern nur doppelt kommen, wenn ich über meine EUMEX504PC wähle.
    Wenn ich über ein ISDN-Telefon am S0-Bus wähle, interpretiert er die gewählte Nummer richtig.

    Bei aktiviertem "debug visdn generic" sieht es so aus als ob er auch jeweils nur eine Ziffer erkennt.

    Das Problem mit der CALLERID hab ich auch... aber sonst funktionierts ganz gut.

    ich habe auf einem Debian Sarge aus den xorcom Quellen:

    deb http://rapid.dotsrc.org/ unstable/
    deb http://rapid.dotsrc.org/ experimental/

    asterisk-classic (1.2.4) und amportal installiert

    und vISDN:

    http://www.visdn.org/download/snapshots/visdn-devel-20060307.tar.bz2

    visdn.conf
    Code:
    [general]
    
    [global]
    tei = dynamic
    network_role = private
    tones_option = yes
    outbound_called_ton = unknown
    force_outbound_cli =
    force_outbound_cli_ton = no
    clir_mode = default_off
    overlap_sending = Yes
    overlap_receiving = No
    cli_rewriting = No
    national_prefix = 0
    international_prefix = 00
    network_specific_prefix =
    subscriber_prefix =
    abbreviated_prefix =
    autorelease_dlc = 10
    
    [visdn0]
    network_role = private
    context = from-internal
    tones_option = yes
    clir_mode = default_off
    clip_enabled = yes
    clip_default_number =
    clip_numbers = _X.
    cli_rewriting = no
    language=nl
    T302=6
    
    _____________________

    Sleepy
     
  3. Sleepy

    Sleepy Neuer User

    Registriert seit:
    5 Okt. 2005
    Beiträge:
    10
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    gelöst: Man nehme einen Editor ......

    ... und mache sich ans Werk.

    Das hat mich so richtig aufgeregt, aber jetzt tuts.

    Zur Erklärung wie ich drauf gekommen bin:

    Ich habe ein paar zusätzliche Ausgaben in die Wählfunktion reingeschrieben, und dabei ist mir aufgefallen, dass mehrere DTMF-Frames mit der gleichen Ziffer ankommen.

    Mein Programmcode wartet nach einem gültigen DTMF-Frame bis irgendein andersartiger Frame ankommt. (z.B. Pause zwischen den Tönen)

    Und so gehts:

    Also im Editor die Datei .../visdn-0.0.0/chan_visdn/overlap.c öffnen und folgende Funktion suchen:
    Code:
    static int visdn_exec_overlap_dial(struct ast_channel *chan, void *data)
    {
            struct localuser *u;
            int retval = -1;
            int do_exit = FALSE;
            LOCAL_USER_ADD(u);
    
            char called_number[32] = "";
    
            while(ast_waitfor(chan, -1) > -1 && !do_exit) {
                    struct ast_frame *f;
                    f = ast_read(chan);
                    if (!f)
                            break;
    
                    if (f->frametype == AST_FRAME_DTMF)
                             do_exit = new_digit(chan, called_number,
                                             sizeof(called_number),
                                             f->subclass, &retval);
    
                    ast_frfree(f);
            }
    
            LOCAL_USER_REMOVE(u);
            return retval;
    }
    

    und daraus machen wir dann:
    Code:
    static int visdn_exec_overlap_dial(struct ast_channel *chan, void *data)
    {
            struct localuser *u;
            int retval = -1;
            int do_exit = FALSE;
            LOCAL_USER_ADD(u);
            int val;
    
            char called_number[32] = "";
    
    
            while(ast_waitfor(chan, -1) > -1 && !do_exit) {
                    struct ast_frame *f;
                    f = ast_read(chan);
                    if (!f)
                            break;
    
                    if (f->frametype == AST_FRAME_DTMF)
                    {        do_exit = new_digit(chan, called_number,
                                             sizeof(called_number),
                                             f->subclass, &retval);
                    }
    
                    ast_frfree(f);
    
                    do {
                        struct ast_frame *g;
                        g = ast_read(chan);
                        if (!g)
                            break;
                        val = g->frametype;
                        ast_frfree(g);
    
                    } while (val == AST_FRAME_DTMF);
            }
    
            LOCAL_USER_REMOVE(u);
            return retval;
    }
    
    .... dann noch im Verzeichnis .../visdn-0.0.0/chan_visdn/
    Code:
    make
    make install
    
    ... Asterisk neu starten und schon ist das Problem gelöst. ;)


    Viel Spaß

    wünscht Sleepy
     
  4. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Vielen Dank für den Bugfix.
    Wird das offizielles?
     
  5. Sleepy

    Sleepy Neuer User

    Registriert seit:
    5 Okt. 2005
    Beiträge:
    10
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Gern geschehen.
    Ich hab dem Herrn Daniele Orlandi auch ne mail zukommen lassen,
    da sich in der Datei noch weitere kleine Fehler eingeschlichen haben.

    Ich hoffe mal, dass ers übernimmt.
     
  6. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Sleepy.

    Bei mir hat das nicht funktioniert.
    Kannst du mir das File zukommen lassen?
    Vielleicht liegt es noch an was anderem.