diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index 4290a30e12..6d517c32c0 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -1105,6 +1105,21 @@ static int update_config (struct chan_list *ch, int orig) chan_misdn_log(1,port,"update_config: Getting Config\n"); + + int hdlc=0; + misdn_cfg_get( port, MISDN_CFG_HDLC, &hdlc, sizeof(int)); + + if (hdlc) { + switch (bc->capability) { + case INFO_CAPABILITY_DIGITAL_UNRESTRICTED: + case INFO_CAPABILITY_DIGITAL_RESTRICTED: + chan_misdn_log(1,bc->port," --> CONF HDLC\n"); + bc->hdlc=1; + break; + } + + } + int pres, screen; @@ -1244,7 +1259,19 @@ static int read_config(struct chan_list *ch, int orig) { misdn_cfg_get( port, MISDN_CFG_NEED_MORE_INFOS, &bc->need_more_infos, sizeof(int)); - + int hdlc=0; + misdn_cfg_get( port, MISDN_CFG_HDLC, &hdlc, sizeof(int)); + + if (hdlc) { + switch (bc->capability) { + case INFO_CAPABILITY_DIGITAL_UNRESTRICTED: + case INFO_CAPABILITY_DIGITAL_RESTRICTED: + chan_misdn_log(1,bc->port," --> CONF HDLC\n"); + bc->hdlc=1; + break; + } + + } /*Initialize new Jitterbuffer*/ { misdn_cfg_get( port, MISDN_CFG_JITTERBUFFER, &ch->jb_len, sizeof(int)); @@ -1573,7 +1600,7 @@ static int misdn_call(struct ast_channel *ast, char *dest, int timeout) /* update screening and presentation */ update_config(ch,ORG_AST); - + /* fill in some ies from channel vary*/ import_ies(ast, newbc); diff --git a/channels/misdn/chan_misdn_config.h b/channels/misdn/chan_misdn_config.h index d30e1482c2..9717e78469 100644 --- a/channels/misdn/chan_misdn_config.h +++ b/channels/misdn/chan_misdn_config.h @@ -27,6 +27,7 @@ enum misdn_cfg_elements { MISDN_CFG_TXGAIN, /* int */ MISDN_CFG_TE_CHOOSE_CHANNEL, /* int (bool) */ MISDN_CFG_PMP_L1_CHECK, /* int (bool) */ + MISDN_CFG_HDLC, /* int (bool) */ MISDN_CFG_CONTEXT, /* char[] */ MISDN_CFG_LANGUAGE, /* char[] */ MISDN_CFG_MUSICCLASS, /* char[] */ diff --git a/channels/misdn/isdn_lib.c b/channels/misdn/isdn_lib.c index a699d7f8a3..b0e9477d07 100644 --- a/channels/misdn/isdn_lib.c +++ b/channels/misdn/isdn_lib.c @@ -818,9 +818,11 @@ int setup_bc(struct misdn_bchannel *bc) int channel=bc->channel-1-(bc->channel>16); int b_stid=stack->b_stids[channel>=0?channel:0]; +#if 0 if (bc->hdlc) { clean_up_bc(bc); } +#endif if (bc->upset) { cb_log(4, stack->port, "$$$ bc already upsetted stid :%x\n", b_stid); @@ -946,9 +948,7 @@ int setup_bc(struct misdn_bchannel *bc) bc->upset=1; - manager_bchannel_deactivate(bc); - return 0; } diff --git a/channels/misdn_config.c b/channels/misdn_config.c index fa712d523c..ee31441596 100644 --- a/channels/misdn_config.c +++ b/channels/misdn_config.c @@ -88,6 +88,7 @@ static const struct misdn_cfg_spec port_spec[] = { { "txgain", MISDN_CFG_TXGAIN, MISDN_CTYPE_INT, "0", NONE }, { "te_choose_channel", MISDN_CFG_TE_CHOOSE_CHANNEL, MISDN_CTYPE_BOOL, "no", NONE }, { "pmp_l1_check", MISDN_CFG_PMP_L1_CHECK, MISDN_CTYPE_BOOL, "yes", 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 }, { "musicclass", MISDN_CFG_MUSICCLASS, MISDN_CTYPE_STR, "default", NONE }, diff --git a/configs/misdn.conf.sample b/configs/misdn.conf.sample index 479d6bb83d..67c144bde9 100644 --- a/configs/misdn.conf.sample +++ b/configs/misdn.conf.sample @@ -287,6 +287,12 @@ jitterbuffer=4000 jitterbuffer_upper_threshold=0 +; +; change this to yes, if you want to bridge a mISDN data channel to +; another channel type or to an application. +; +hdlc=no + [intern] ; define your ports, e.g. 1,2 (depends on mISDN-driver loading order) ports=1,2