X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=chan_lcr.c;h=a396013cbaf2813f3c5a26d20bb0a1f35bc66014;hp=169505653c5e05692ace253c3c29f7483f912f79;hb=refs%2Fheads%2Fbackup2;hpb=d2bcbfbaf06eafcf44d8884fd6fb0a7f334b479b diff --git a/chan_lcr.c b/chan_lcr.c index 1695056..a396013 100644 --- a/chan_lcr.c +++ b/chan_lcr.c @@ -238,6 +238,8 @@ void chan_lcr_log(int type, const char *file, int line, const char *function, st char ast_text[128] = "NULL"; va_list args; + if (!option_debug) return; + ast_mutex_lock(&log_lock); va_start(args,fmt); @@ -255,8 +257,8 @@ void chan_lcr_log(int type, const char *file, int line, const char *function, st #endif ast_text[sizeof(ast_text)-1] = '\0'; -// ast_log(type, file, line, function, "[call=%s ast=%s] %s", call_text, ast_text, buffer); - printf("[call=%s ast=%s line=%d] %s", call_text, ast_text, line, buffer); + ast_log(type, file, line, function, "[call=%s ast=%s] %s", call_text, ast_text, buffer); +// printf("[call=%s ast=%s line=%d] %s", call_text, ast_text, line, buffer); ast_mutex_unlock(&log_lock); } @@ -331,6 +333,10 @@ struct chan_call *alloc_call(void) } fcntl((*callp)->pipe[0], F_SETFL, O_NONBLOCK); CDEBUG(*callp, NULL, "Call instance allocated.\n"); + + /* unset dtmf (default, use option 'd' to enable) */ + (*callp)->dsp_dtmf = 0; + return *callp; } @@ -426,13 +432,13 @@ void apply_opt(struct chan_call *call, char *data) send_message(MESSAGE_NOTIFY, call->ref, &newparam); } break; - case 'n': + case 'D': if (opt[1] != '\0') { - CERROR(call, call->ast, "Option 'n' (no DTMF) expects no parameter.\n", opt); + CERROR(call, call->ast, "Option 'D' (DTMF) expects no parameter.\n", opt); break; } - CDEBUG(call, call->ast, "Option 'n' (no DTMF).\n"); - call->dsp_dtmf = 0; + CDEBUG(call, call->ast, "Option 'D' (DTMF).\n"); + call->dsp_dtmf = 1; break; #if 0 case 'c': @@ -1574,8 +1580,6 @@ int receive_message(int message_type, unsigned int ref, union parameter *param) /* set ref */ call->ref = ref; call->ref_was_assigned = 1; - /* set dtmf (default, use option 'n' to disable */ - call->dsp_dtmf = 1; /* wait for setup (or release from asterisk) */ } else { /* new ref, as requested from this remote application */ @@ -1589,8 +1593,6 @@ int receive_message(int message_type, unsigned int ref, union parameter *param) /* store new ref */ call->ref = ref; call->ref_was_assigned = 1; - /* set dtmf (default, use option 'n' to disable */ - call->dsp_dtmf = 1; /* send pending setup info */ if (call->state == CHAN_LCR_STATE_OUT_PREPARE) send_setup_to_lcr(call); @@ -3012,6 +3014,15 @@ static int lcr_indicate(struct ast_channel *ast, int cond, const void *data, siz break; case AST_CONTROL_PROGRESS: CDEBUG(call, ast, "Received indicate AST_CONTROL_PROGRESS from Asterisk.\n"); + if (call->state == CHAN_LCR_STATE_IN_SETUP + || call->state == CHAN_LCR_STATE_IN_DIALING) { + CDEBUG(call, ast, "Changing to proceeding state, because no more dialing possible.\n"); + /* send message to lcr */ + memset(&newparam, 0, sizeof(union parameter)); + send_message(MESSAGE_PROCEEDING, call->ref, &newparam); + /* change state */ + call->state = CHAN_LCR_STATE_IN_PROCEEDING; + } /* request bchannel */ CDEBUG(call, ast, "Requesting audio path.\n"); memset(&newparam, 0, sizeof(union parameter)); @@ -3451,7 +3462,7 @@ static int lcr_config_exec(struct ast_channel *ast, void *data, char **argv) break; call = call->next; } - if (call) + if (call) { #ifdef LCR_FOR_ASTERISK apply_opt(call, (char *)data); @@ -3469,7 +3480,7 @@ static int lcr_config_exec(struct ast_channel *ast, void *data, char **argv) newparam.queue = call->tx_queue * 8; send_message(MESSAGE_DISABLE_DEJITTER, call->ref, &newparam); } - else + } else CERROR(NULL, ast, "lcr_config app not called by chan_lcr channel.\n"); ast_mutex_unlock(&chan_lock); @@ -3542,7 +3553,7 @@ int load_module(void) "\n" "The available options are:\n" " d - Send display text on called phone, text is the optarg.\n" - " n - Don't detect dtmf tones from LCR.\n" + " D - Forward detected dtmf tones from LCR.\n" " h - Force data call (HDLC).\n" " q - Add queue to make fax stream seamless (required for fax app).\n" " Use queue size in miliseconds for optarg. (try 250)\n"