]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
fixed a litle bug regarding HOLD/RETRIEVE. beatufied some logs, changed some loglevel...
authorChristian Richter <christian.richter@beronet.com>
Thu, 23 Nov 2006 16:10:23 +0000 (16:10 +0000)
committerChristian Richter <christian.richter@beronet.com>
Thu, 23 Nov 2006 16:10:23 +0000 (16:10 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@47968 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_misdn.c
channels/misdn/isdn_lib.c
channels/misdn_config.c

index e1302a5fb16b704bdafd263726bd1ccf6a392225..424eda6b49ca378744d3b438557e3fd152a0d153 100644 (file)
@@ -796,8 +796,8 @@ static int misdn_show_cls (int fd, int argc, char *argv[])
                        print_bc_info(fd, help, bc);
                } else {
                        if (help->state == MISDN_HOLDED) {
-                               chan_misdn_log(0, 0, "ITS A HOLDED BC:\n");
-                               chan_misdn_log(0,0," --> l3_id: %x\n"
+                               chan_misdn_log(2, 0, "ITS A HOLDED BC:\n");
+                               chan_misdn_log(2,0," --> l3_id: %x\n"
                                                " --> dad:%s oad:%s\n"
                                
                                                ,help->l3id
@@ -1220,8 +1220,7 @@ static int update_config (struct chan_list *ch, int orig)
        
        int port=bc->port;
        
-       chan_misdn_log(1,port,"update_config: Getting Config\n");
-
+       chan_misdn_log(7,port,"update_config: Getting Config\n");
 
        int hdlc=0;
        misdn_cfg_get( port, MISDN_CFG_HDLC, &hdlc, sizeof(int));
@@ -1635,7 +1634,7 @@ static int misdn_call(struct ast_channel *ast, char *dest, int timeout)
        
        chan_misdn_log(1, port, "* CALL: %s\n",dest);
        
-       chan_misdn_log(1, port, " --> * dad:%s tech:%s ctx:%s\n",ast->exten,ast->name, ast->context);
+       chan_misdn_log(2, port, " --> * dad:%s tech:%s ctx:%s\n",ast->exten,ast->name, ast->context);
        
        chan_misdn_log(3, port, " --> * adding2newbc ext %s\n",ast->exten);
        if (ast->exten) {
@@ -1691,7 +1690,7 @@ static int misdn_call(struct ast_channel *ast, char *dest, int timeout)
                return -1;
        }
        
-       chan_misdn_log(1, port, " --> * SEND: State Dialing pid:%d\n",newbc?newbc->pid:1);
+       chan_misdn_log(2, port, " --> * SEND: State Dialing pid:%d\n",newbc?newbc->pid:1);
 
        ast_setstate(ast, AST_STATE_DIALING);
        ast->hangupcause=16;
@@ -1855,12 +1854,11 @@ static int misdn_indication(struct ast_channel *ast, int cond)
                return -1;
        }
        
-       chan_misdn_log(1, p->bc->port, "* IND : Indication [%d] from %s\n",cond, ast->exten);
+       chan_misdn_log(5, p->bc->port, "* IND : Indication [%d] from %s\n",cond, ast->exten);
        
        switch (cond) {
        case AST_CONTROL_BUSY:
-               chan_misdn_log(1, p->bc->port, "* IND :\tbusy\n");
-               chan_misdn_log(1, p->bc->port, " --> * SEND: State Busy pid:%d\n",p->bc?p->bc->pid:-1);
+               chan_misdn_log(1, p->bc->port, "* IND :\tbusy pid:%d\n",p->bc?p->bc->pid:-1);
                ast_setstate(ast,AST_STATE_BUSY);
 
                p->bc->out_cause=17;
@@ -1873,41 +1871,42 @@ static int misdn_indication(struct ast_channel *ast, int cond)
                return -1;
                break;
        case AST_CONTROL_RING:
-               chan_misdn_log(1, p->bc->port, " --> * IND :\tring pid:%d\n",p->bc?p->bc->pid:-1);
+               chan_misdn_log(1, p->bc->port, "* IND :\tring pid:%d\n",p->bc?p->bc->pid:-1);
                return -1;
                break;
                
        case AST_CONTROL_RINGING:
+               chan_misdn_log(1, p->bc->port, "* IND :\tringing pid:%d\n",p->bc?p->bc->pid:-1);
                switch (p->state) {
                        case MISDN_ALERTING:
-                               chan_misdn_log(1, p->bc->port, " --> * IND :\tringing pid:%d but I was Ringing before, so ignoreing it\n",p->bc?p->bc->pid:-1);
+                               chan_misdn_log(2, p->bc->port, " --> * IND :\tringing pid:%d but I was Ringing before, so ignoreing it\n",p->bc?p->bc->pid:-1);
                                break;
                        case MISDN_CONNECTED:
-                               chan_misdn_log(1, p->bc->port, " --> * IND :\tringing pid:%d but Connected, so just send TONE_ALERTING without state changes \n",p->bc?p->bc->pid:-1);
+                               chan_misdn_log(2, p->bc->port, " --> * IND :\tringing pid:%d but Connected, so just send TONE_ALERTING without state changes \n",p->bc?p->bc->pid:-1);
                                return -1;
                                break;
                        default:
                                p->state=MISDN_ALERTING;
-                               chan_misdn_log(1, p->bc->port, " --> * IND :\tringing pid:%d\n",p->bc?p->bc->pid:-1);
+                               chan_misdn_log(2, p->bc->port, " --> * IND :\tringing pid:%d\n",p->bc?p->bc->pid:-1);
                                misdn_lib_send_event( p->bc, EVENT_ALERTING);
                        
                                if (p->other_ch && p->other_ch->bc) {
                                        if (misdn_inband_avail(p->other_ch->bc)) {
-                                               chan_misdn_log(1,p->bc->port, " --> other End is mISDN and has inband info available\n");
+                                               chan_misdn_log(2,p->bc->port, " --> other End is mISDN and has inband info available\n");
                                                break;
                                        }
 
                                        if (!p->other_ch->bc->nt) {
-                                               chan_misdn_log(1,p->bc->port, " --> other End is mISDN TE so it has inband info for sure (?)\n");
+                                               chan_misdn_log(2,p->bc->port, " --> other End is mISDN TE so it has inband info for sure (?)\n");
                                                break;
                                        }
                                }
 
-                               chan_misdn_log(1, p->bc->port, " --> * SEND: State Ring pid:%d\n",p->bc?p->bc->pid:-1);
+                               chan_misdn_log(3, p->bc->port, " --> * SEND: State Ring pid:%d\n",p->bc?p->bc->pid:-1);
                                ast_setstate(ast,AST_STATE_RINGING);
                        
                                if ( !p->bc->nt && (p->orginator==ORG_MISDN) && !p->incoming_early_audio ) 
-                                       chan_misdn_log(1,p->bc->port, " --> incoming_early_audio off\n");
+                                       chan_misdn_log(2,p->bc->port, " --> incoming_early_audio off\n");
                                else 
                                        return -1;
                }
@@ -2044,10 +2043,10 @@ static int misdn_hangup(struct ast_channel *ast)
                }
     
                chan_misdn_log(1, bc->port, "* IND : HANGUP\tpid:%d ctx:%s dad:%s oad:%s State:%s\n",p->bc?p->bc->pid:-1, ast->context, ast->exten, AST_CID_P(ast), misdn_get_ch_state(p));
-               chan_misdn_log(2, bc->port, " --> l3id:%x\n",p->l3id);
-               chan_misdn_log(1, bc->port, " --> cause:%d\n",bc->cause);
-               chan_misdn_log(1, bc->port, " --> out_cause:%d\n",bc->out_cause);
-               chan_misdn_log(1, bc->port, " --> state:%s\n", misdn_get_ch_state(p));
+               chan_misdn_log(3, bc->port, " --> l3id:%x\n",p->l3id);
+               chan_misdn_log(3, bc->port, " --> cause:%d\n",bc->cause);
+               chan_misdn_log(2, bc->port, " --> out_cause:%d\n",bc->out_cause);
+               chan_misdn_log(2, bc->port, " --> state:%s\n", misdn_get_ch_state(p));
                
                switch (p->state) {
                case MISDN_CALLING:
@@ -2132,7 +2131,7 @@ static int misdn_hangup(struct ast_channel *ast)
        }
        
 
-       chan_misdn_log(1, bc->port, "Channel: %s hanguped new state:%s\n",ast->name,misdn_get_ch_state(p));
+       chan_misdn_log(3, bc->port, " --> Channel: %s hanguped new state:%s\n",ast->name,misdn_get_ch_state(p));
        
        return 0;
 }
@@ -2348,9 +2347,9 @@ enum ast_bridge_result  misdn_bridge (struct ast_channel *c0,
                        /* got hangup .. */
 
                        if (!f) 
-                               chan_misdn_log(1,ch1->bc->port,"Read Null Frame\n");
+                               chan_misdn_log(4,ch1->bc->port,"Read Null Frame\n");
                        else
-                               chan_misdn_log(1,ch1->bc->port,"Read Frame Controll class:%d\n",f->subclass);
+                               chan_misdn_log(4,ch1->bc->port,"Read Frame Controll class:%d\n",f->subclass);
                        
                        *fo=f;
                        *rc=who;
@@ -2955,11 +2954,11 @@ static void hangup_chan(struct chan_list *ch)
                return;
        }
 
-       cb_log(1,port,"hangup_chan\n");
+       cb_log(5,port,"hangup_chan called\n");
 
        if (ch->need_hangup) 
        {
-               cb_log(1,port,"-> hangup\n");
+               cb_log(2,port," --> hangup\n");
                send_cause2ast(ch->ast,ch->bc,ch);
                ch->need_hangup=0;
                ch->need_queue_hangup=0;
@@ -2969,7 +2968,7 @@ static void hangup_chan(struct chan_list *ch)
        }
 
        if (!ch->need_queue_hangup) {
-               cb_log(1,port,"No need to queue hangup\n");
+               cb_log(2,port," --> No need to queue hangup\n");
        }
 
        ch->need_queue_hangup=0;
@@ -2978,7 +2977,7 @@ static void hangup_chan(struct chan_list *ch)
 
                if (ch->ast)
                        ast_queue_hangup(ch->ast);
-               cb_log(1,port,"-> queue_hangup\n");
+               cb_log(2,port," --> queue_hangup\n");
        } else {
                cb_log(1,port,"Cannot hangup chan, no ast\n");
        }
@@ -2998,7 +2997,7 @@ static void release_chan(struct misdn_bchannel *bc) {
                        ast=ch->ast;
                } 
                
-               chan_misdn_log(1, bc->port, "release_chan: bc with l3id: %x\n",bc->l3_id);
+               chan_misdn_log(5, bc->port, "release_chan: bc with l3id: %x\n",bc->l3_id);
                
                /*releaseing jitterbuffer*/
                if (ch->jb ) {
@@ -3177,7 +3176,7 @@ void import_ch(struct ast_channel *chan, struct misdn_bchannel *bc, struct chan_
        tmp=pbx_builtin_getvar_helper(chan,"MISDN_PID");
        if (tmp) {
                ch->other_pid=atoi(tmp);
-               chan_misdn_log(1,bc->port,"IMPORT_PID: importing pid:%s\n",tmp);
+               chan_misdn_log(3,bc->port," --> IMPORT_PID: importing pid:%s\n",tmp);
 
                if (ch->other_pid >0) {
                        ch->other_ch=find_chan_by_pid(cl_te,ch->other_pid);
@@ -3190,7 +3189,7 @@ void export_ch(struct ast_channel *chan, struct misdn_bchannel *bc, struct chan_
 {
        char tmp[32];
 
-       chan_misdn_log(1,bc->port,"EXPORT_PID: pid:%d\n",bc->pid);
+       chan_misdn_log(3,bc->port," --> EXPORT_PID: pid:%d\n",bc->pid);
        sprintf(tmp,"%d",bc->pid);
        pbx_builtin_setvar_helper(chan,"_MISDN_PID",tmp);
 }
@@ -3730,15 +3729,15 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
                ast_queue_control(ch->ast, AST_CONTROL_RINGING);
                ast_setstate(ch->ast, AST_STATE_RINGING);
                
-               cb_log(1,bc->port,"Set State Ringing\n");
+               cb_log(7,bc->port," --> Set State Ringing\n");
                
                if ( misdn_cap_is_speech(bc->capability) && misdn_inband_avail(bc)) {
                        cb_log(1,bc->port,"Starting Tones, we have inband Data\n");
                        start_bc_tones(ch);
                } else {
-                       cb_log(1,bc->port,"We have no inband Data, the other end must create ringing\n");
+                       cb_log(3,bc->port," --> We have no inband Data, the other end must create ringing\n");
                        if (ch->far_alerting) {
-                               cb_log(1,bc->port,"The other end can not do ringing eh ?.. we must do all ourself..");
+                               cb_log(1,bc->port," --> The other end can not do ringing eh ?.. we must do all ourself..");
                                start_bc_tones(ch);
                                /*tone_indicate(ch, TONE_FAR_ALERTING);*/
                        }
@@ -4009,6 +4008,9 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
                ch->bc=bc;
                ch->state = MISDN_CONNECTED;
 
+               ch->hold_info.port=0;
+               ch->hold_info.channel=0;
+               
                struct ast_channel *hold_ast=AST_BRIDGED_P(ch->ast);
                
                if (hold_ast) {
index f07951c57ab1df61f7a14dd2bb5684a319cc0143..72b7d8243944cb9fe8aa5a454cdcd47177a66647 100644 (file)
@@ -420,10 +420,10 @@ static int find_free_chan_in_stack(struct misdn_stack *stack, int channel)
 {
        int i;
 
-       cb_log(1,stack->port,"find_free_chan: req_chan:%d\n",channel);
+       cb_log(5,stack->port,"find_free_chan: req_chan:%d\n",channel);
 
        if (channel < 0 || channel > MAX_BCHANS) {
-               cb_log(4, stack->port, " !! out of bound call to find_free_chan_in_stack! (ch:%d)\n", channel);
+               cb_log(0, stack->port, " !! out of bound call to find_free_chan_in_stack! (ch:%d)\n", channel);
                return 0;
        }
        
@@ -432,14 +432,14 @@ static int find_free_chan_in_stack(struct misdn_stack *stack, int channel)
        for (i = 0; i < stack->b_num; i++) {
                if (i != 15 && (channel < 0 || i == channel)) { /* skip E1 Dchannel ;) and work with chan preselection */
                        if (!stack->channels[i]) {
-                               cb_log (1, stack->port, " --> found chan%s: %d\n", channel>=0?" (preselected)":"", i+1);
+                               cb_log (3, stack->port, " --> found chan%s: %d\n", channel>=0?" (preselected)":"", i+1);
                                stack->channels[i] = 1;
                                return i+1;
                        }
                }
        }
 
-       cb_log (4, stack->port, " !! NO FREE CHAN IN STACK\n");
+       cb_log (1, stack->port, " !! NO FREE CHAN IN STACK\n");
        dump_chan_list(stack);
   
        return 0;
@@ -1671,8 +1671,6 @@ int misdn_lib_port_up(int port, int check)
             stack;
             stack=stack->next) {
                
-               if ( !stack->ptp && !check) return 1;
-               
                if (stack->port == port) {
 
                        if (stack->blocked) {
@@ -1690,7 +1688,7 @@ int misdn_lib_port_up(int port, int check)
                                        return 0;
                                }
                        } else {
-                               if ( stack->l1link)
+                               if ( !check || stack->l1link )
                                        return 1;
                                else {
                                        cb_log(0,port, "Port down PMP\n");
@@ -2030,7 +2028,7 @@ handle_event_nt(void *dat, void *arg)
                                                if (stack->ptp) 
                                                        set_chan_in_stack(stack, bc->channel);
                                                else 
-                                                       cb_log(0,stack->port," --> PTMP but channel requested\n");
+                                                       cb_log(3,stack->port," --> PTMP but channel requested\n");
 
                                        } else {
 
@@ -3173,7 +3171,7 @@ int misdn_lib_send_event(struct misdn_bchannel *bc, enum event_e event )
        }
        
        cb_log(1, stack->port, "I SEND:%s oad:%s dad:%s pid:%d\n", isdn_get_info(msgs_g, event, 0), bc->oad, bc->dad, bc->pid);
-       cb_log(1, stack->port, " --> bc_state:%s\n",bc_state2str(bc->bc_state));
+       cb_log(4, stack->port, " --> bc_state:%s\n",bc_state2str(bc->bc_state));
        misdn_lib_log_ies(bc);
        
        switch (event) {
@@ -4182,7 +4180,7 @@ void manager_ec_enable(struct misdn_bchannel *bc)
 
        struct misdn_stack *stack=get_stack_by_bc(bc);
        
-       cb_log(1, stack?stack->port:0,"ec_enable\n");
+       cb_log(4, stack?stack->port:0,"ec_enable\n");
 
        if (!misdn_cap_is_speech(bc->capability)) {
                cb_log(1, stack?stack->port:0, " --> no speech? cannot enable EC\n");
@@ -4190,7 +4188,7 @@ void manager_ec_enable(struct misdn_bchannel *bc)
        }
 
        if (bc->ec_enable) {
-               cb_log(1, stack?stack->port:0,"Sending Control ECHOCAN_ON taps:%d training:%d\n",bc->ec_deftaps, bc->ec_training);
+               cb_log(3, stack?stack->port:0,"Sending Control ECHOCAN_ON taps:%d training:%d\n",bc->ec_deftaps, bc->ec_training);
        
                switch (bc->ec_deftaps) {
                case 4:
@@ -4222,7 +4220,7 @@ void manager_ec_disable(struct misdn_bchannel *bc)
 {
        struct misdn_stack *stack=get_stack_by_bc(bc);
        
-       cb_log(1, stack?stack->port:0,"ec_disable\n");
+       cb_log(4, stack?stack->port:0," --> ec_disable\n");
 
        if (!misdn_cap_is_speech(bc->capability)) {
                cb_log(1, stack?stack->port:0, " --> no speech? cannot disable EC\n");
@@ -4230,7 +4228,7 @@ void manager_ec_disable(struct misdn_bchannel *bc)
        }
 
        if ( ! bc->ec_enable) {
-               cb_log(1, stack?stack->port:0, "Sending Control ECHOCAN_OFF\n");
+               cb_log(3, stack?stack->port:0, "Sending Control ECHOCAN_OFF\n");
                manager_ph_control(bc,  ECHOCAN_OFF, 0);
        }
 }
@@ -4247,7 +4245,7 @@ void misdn_join_conf(struct misdn_bchannel *bc, int conf_id)
        manager_ph_control(bc, CMX_RECEIVE_OFF, 0);
        manager_ph_control(bc, CMX_CONF_JOIN, conf_id);
 
-       cb_log(1,bc->port, "Joining bc:%x in conf:%d\n",bc->addr,conf_id);
+       cb_log(3,bc->port, "Joining bc:%x in conf:%d\n",bc->addr,conf_id);
 
        char data[16];
        int len=15;
@@ -4265,13 +4263,13 @@ void misdn_split_conf(struct misdn_bchannel *bc, int conf_id)
        manager_ph_control(bc, CMX_RECEIVE_ON, 0);
        manager_ph_control(bc, CMX_CONF_SPLIT, conf_id);
 
-       cb_log(1,bc->port, "Splitting bc:%x in conf:%d\n",bc->addr,conf_id);
+       cb_log(4,bc->port, "Splitting bc:%x in conf:%d\n",bc->addr,conf_id);
 }
 
 void misdn_lib_bridge( struct misdn_bchannel * bc1, struct misdn_bchannel *bc2) {
        int conf_id=bc1->pid +1;
 
-       cb_log(1, bc1->port, "I Send: BRIDGE from:%d to:%d\n",bc1->port,bc2->port);
+       cb_log(4, bc1->port, "I Send: BRIDGE from:%d to:%d\n",bc1->port,bc2->port);
        
        struct misdn_bchannel *bc_list[]={
                bc1,bc2,NULL
@@ -4280,7 +4278,7 @@ void misdn_lib_bridge( struct misdn_bchannel * bc1, struct misdn_bchannel *bc2)
                
        for (bc=bc_list; *bc;  *bc++) { 
                (*bc)->conf_id=conf_id;
-               cb_log(1, (*bc)->port, " --> bc_addr:%x\n",(*bc)->addr);
+               cb_log(4, (*bc)->port, " --> bc_addr:%x\n",(*bc)->addr);
        
                switch((*bc)->bc_state) {
                        case BCHAN_ACTIVATED:
@@ -4315,7 +4313,7 @@ void misdn_lib_split_bridge( struct misdn_bchannel * bc1, struct misdn_bchannel
 
 void misdn_lib_echo(struct misdn_bchannel *bc, int onoff)
 {
-       cb_log(1,bc->port, " --> ECHO %s\n", onoff?"ON":"OFF");
+       cb_log(3,bc->port, " --> ECHO %s\n", onoff?"ON":"OFF");
        manager_ph_control(bc, onoff?CMX_ECHO_ON:CMX_ECHO_OFF, 0);
 }
 
index cc0a0fa9b21415b213e79b482769b46302c51e66..1d33ac15d49e1df735363adf8bbd583574af7f55 100644 (file)
@@ -91,7 +91,7 @@ static const struct misdn_cfg_spec port_spec[] = {
        { "far_alerting", MISDN_CFG_FAR_ALERTING, MISDN_CTYPE_BOOL, "no", NONE },
        { "pmp_l1_check", MISDN_CFG_PMP_L1_CHECK, MISDN_CTYPE_BOOL, "yes", NONE },
        { "reject_cause", MISDN_CFG_REJECT_CAUSE, MISDN_CTYPE_INT, "21", NONE },
-       { "block_on_alarm", MISDN_CFG_ALARM_BLOCK, MISDN_CTYPE_BOOL, "yes", NONE },
+       { "block_on_alarm", MISDN_CFG_ALARM_BLOCK, MISDN_CTYPE_BOOL, "no", NONE },
        { "hdlc", MISDN_CFG_HDLC, MISDN_CTYPE_BOOL, "no", NONE },
        { "context", MISDN_CFG_CONTEXT, MISDN_CTYPE_STR, "default", NONE },
        { "language", MISDN_CFG_LANGUAGE, MISDN_CTYPE_STR, "en", NONE },