提交 fff6e50a authored 作者: Moises Silva's avatar Moises Silva

freetdm: Fix E&M answer procedure for DAHDI

上级 72f0cf47
...@@ -2285,6 +2285,7 @@ static FIO_SIGNAL_CB_FUNCTION(on_fxo_signal) ...@@ -2285,6 +2285,7 @@ static FIO_SIGNAL_CB_FUNCTION(on_fxo_signal)
} }
break; break;
case FTDM_SIGEVENT_SIGSTATUS_CHANGED: case FTDM_SIGEVENT_SIGSTATUS_CHANGED:
case FTDM_SIGEVENT_COLLECTED_DIGIT: /* Analog E&M */
break; break;
default: default:
{ {
......
...@@ -737,6 +737,7 @@ static FIO_COMMAND_FUNCTION(zt_command) ...@@ -737,6 +737,7 @@ static FIO_COMMAND_FUNCTION(zt_command)
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "OFFHOOK Failed"); ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "OFFHOOK Failed");
return FTDM_FAIL; return FTDM_FAIL;
} }
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Channel is now offhook\n");
ftdm_set_flag_locked(ftdmchan, FTDM_CHANNEL_OFFHOOK); ftdm_set_flag_locked(ftdmchan, FTDM_CHANNEL_OFFHOOK);
} }
break; break;
...@@ -747,6 +748,7 @@ static FIO_COMMAND_FUNCTION(zt_command) ...@@ -747,6 +748,7 @@ static FIO_COMMAND_FUNCTION(zt_command)
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "ONHOOK Failed"); ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "ONHOOK Failed");
return FTDM_FAIL; return FTDM_FAIL;
} }
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Channel is now onhook\n");
ftdm_clear_flag_locked(ftdmchan, FTDM_CHANNEL_OFFHOOK); ftdm_clear_flag_locked(ftdmchan, FTDM_CHANNEL_OFFHOOK);
} }
break; break;
...@@ -1084,7 +1086,10 @@ static __inline__ ftdm_status_t zt_channel_process_event(ftdm_channel_t *fchan, ...@@ -1084,7 +1086,10 @@ static __inline__ ftdm_status_t zt_channel_process_event(ftdm_channel_t *fchan,
case ZT_EVENT_RINGOFFHOOK: case ZT_EVENT_RINGOFFHOOK:
{ {
if (fchan->type == FTDM_CHAN_TYPE_FXS || (fchan->type == FTDM_CHAN_TYPE_EM && fchan->state != FTDM_CHANNEL_STATE_UP)) { if (fchan->type == FTDM_CHAN_TYPE_FXS || (fchan->type == FTDM_CHAN_TYPE_EM && fchan->state != FTDM_CHANNEL_STATE_UP)) {
ftdm_set_flag_locked(fchan, FTDM_CHANNEL_OFFHOOK); if (fchan->type != FTDM_CHAN_TYPE_EM) {
/* In E&M we're supposed to set this flag when the tx side goes offhook, not the rx */
ftdm_set_flag_locked(fchan, FTDM_CHANNEL_OFFHOOK);
}
*event_id = FTDM_OOB_OFFHOOK; *event_id = FTDM_OOB_OFFHOOK;
} else if (fchan->type == FTDM_CHAN_TYPE_FXO) { } else if (fchan->type == FTDM_CHAN_TYPE_FXO) {
*event_id = FTDM_OOB_RING_START; *event_id = FTDM_OOB_RING_START;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论