提交 7b1da231 authored 作者: David Yat Sin's avatar David Yat Sin

freetdm: Updated signalling modules to not set channel state to DIALING on OUTGOING_CALL_FUNCTION

上级 cabd05d1
...@@ -287,7 +287,6 @@ static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(isdn_outgoing_call) ...@@ -287,7 +287,6 @@ static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(isdn_outgoing_call)
{ {
ftdm_status_t status = FTDM_SUCCESS; ftdm_status_t status = FTDM_SUCCESS;
ftdm_set_flag(ftdmchan, FTDM_CHANNEL_OUTBOUND); ftdm_set_flag(ftdmchan, FTDM_CHANNEL_OUTBOUND);
ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_DIALING);
return status; return status;
} }
...@@ -300,7 +299,14 @@ static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(isdn_outgoing_call) ...@@ -300,7 +299,14 @@ static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(isdn_outgoing_call)
#ifdef __TODO__ #ifdef __TODO__
static FIO_CHANNEL_REQUEST_FUNCTION(isdn_channel_request) static FIO_CHANNEL_REQUEST_FUNCTION(isdn_channel_request)
{ {
#if 1 /* FIXME caller_data.raw_data does not exist anymore, see docs/variables.txt for more info */
Q931mes_Generic empty_gen;
Q931mes_Generic *gen = &empty_gen;
memset(&empty_gen, 0, sizeof(empty_gen)) ;
#else
Q931mes_Generic *gen = (Q931mes_Generic *) caller_data->raw_data; Q931mes_Generic *gen = (Q931mes_Generic *) caller_data->raw_data;
#endif
Q931ie_BearerCap BearerCap; Q931ie_BearerCap BearerCap;
Q931ie_ChanID ChanID = { 0 }; Q931ie_ChanID ChanID = { 0 };
Q931ie_CallingNum CallingNum; Q931ie_CallingNum CallingNum;
...@@ -1095,12 +1101,16 @@ static L3INT ftdm_isdn_931_34(void *pvt, struct Q931_Call *call, Q931mes_Generic ...@@ -1095,12 +1101,16 @@ static L3INT ftdm_isdn_931_34(void *pvt, struct Q931_Call *call, Q931mes_Generic
#ifdef __TODO_OR_REMOVE__ #ifdef __TODO_OR_REMOVE__
ftdmchan->caller_data.CRV = gen->CRV; ftdmchan->caller_data.CRV = gen->CRV;
#endif #endif
#if 0 /* FIXME */
if (cplen > sizeof(caller_data->raw_data)) { if (cplen > sizeof(caller_data->raw_data)) {
cplen = sizeof(caller_data->raw_data); cplen = sizeof(caller_data->raw_data);
} }
#endif
gen->CRVFlag = !(gen->CRVFlag); gen->CRVFlag = !(gen->CRVFlag);
#if 0 /* FIXME */
memcpy(caller_data->raw_data, msg, cplen); memcpy(caller_data->raw_data, msg, cplen);
caller_data->raw_data_len = cplen; caller_data->raw_data_len = cplen;
#endif
fail = 0; fail = 0;
} }
} }
...@@ -1298,12 +1308,20 @@ static int ftdm_isdn_921_21(void *pvt, L2UCHAR *msg, L2INT mlen) ...@@ -1298,12 +1308,20 @@ static int ftdm_isdn_921_21(void *pvt, L2UCHAR *msg, L2INT mlen)
static __inline__ void state_advance(ftdm_channel_t *ftdmchan) static __inline__ void state_advance(ftdm_channel_t *ftdmchan)
{ {
Q931mes_Generic *gen = (Q931mes_Generic *) ftdmchan->caller_data.raw_data;
ftdm_isdn_data_t *isdn_data = ftdmchan->span->signal_data; ftdm_isdn_data_t *isdn_data = ftdmchan->span->signal_data;
ftdm_span_t *span = ftdm_channel_get_span(ftdmchan); ftdm_span_t *span = ftdm_channel_get_span(ftdmchan);
ftdm_sigmsg_t sig; ftdm_sigmsg_t sig;
ftdm_status_t status; ftdm_status_t status;
#if 1 /* FIXME caller_data.raw_data does not exist anymore, see docs/variables.txt for more info */
Q931mes_Generic empty_gen;
Q931mes_Generic *gen = &empty_gen;
memset(&empty_gen, 0, sizeof(empty_gen)) ;
#else
Q931mes_Generic *gen = (Q931mes_Generic *) ftdmchan->caller_data.raw_data;
#endif
ftdm_log(FTDM_LOG_DEBUG, "%d:%d STATE [%s]\n", ftdm_log(FTDM_LOG_DEBUG, "%d:%d STATE [%s]\n",
ftdm_channel_get_span_id(ftdmchan), ftdm_channel_get_span_id(ftdmchan),
ftdm_channel_get_id(ftdmchan), ftdm_channel_get_id(ftdmchan),
...@@ -1431,7 +1449,9 @@ static __inline__ void state_advance(ftdm_channel_t *ftdmchan) ...@@ -1431,7 +1449,9 @@ static __inline__ void state_advance(ftdm_channel_t *ftdmchan)
gen->MesType = Q931mes_CONNECT; gen->MesType = Q931mes_CONNECT;
gen->BearerCap = 0; gen->BearerCap = 0;
gen->CRVFlag = 1; /* inbound call */ gen->CRVFlag = 1; /* inbound call */
#if 0 /* FIXME */
Q931Rx43(&isdn_data->q931, gen, ftdmchan->caller_data.raw_data_len); Q931Rx43(&isdn_data->q931, gen, ftdmchan->caller_data.raw_data_len);
#endif
} }
} }
break; break;
......
...@@ -95,7 +95,6 @@ static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(isdn_outgoing_call) ...@@ -95,7 +95,6 @@ static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(isdn_outgoing_call)
{ {
ftdm_status_t status = FTDM_SUCCESS; ftdm_status_t status = FTDM_SUCCESS;
ftdm_set_flag(ftdmchan, FTDM_CHANNEL_OUTBOUND); ftdm_set_flag(ftdmchan, FTDM_CHANNEL_OUTBOUND);
ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_DIALING);
return status; return status;
} }
......
...@@ -471,12 +471,9 @@ static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(r2_outgoing_call) ...@@ -471,12 +471,9 @@ static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(r2_outgoing_call)
return FTDM_FAIL; return FTDM_FAIL;
} }
ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_DIALING);
ftdm_channel_set_feature(ftdmchan, FTDM_CHANNEL_FEATURE_IO_STATS); ftdm_channel_set_feature(ftdmchan, FTDM_CHANNEL_FEATURE_IO_STATS);
ftdm_channel_command(ftdmchan, FTDM_COMMAND_FLUSH_TX_BUFFERS, NULL); ftdm_channel_command(ftdmchan, FTDM_COMMAND_FLUSH_TX_BUFFERS, NULL);
ftdm_channel_command(ftdmchan, FTDM_COMMAND_FLUSH_RX_BUFFERS, NULL); ftdm_channel_command(ftdmchan, FTDM_COMMAND_FLUSH_RX_BUFFERS, NULL);
return FTDM_SUCCESS; return FTDM_SUCCESS;
} }
......
...@@ -1272,8 +1272,7 @@ static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(ftdm_sangoma_ss7_outgoing_call) ...@@ -1272,8 +1272,7 @@ static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(ftdm_sangoma_ss7_outgoing_call)
switch (ftdmchan->state){ switch (ftdmchan->state){
/**************************************************************************/ /**************************************************************************/
case FTDM_CHANNEL_STATE_DOWN: case FTDM_CHANNEL_STATE_DOWN:
/* inform the monitor thread that we want to make a call */ /* inform the monitor thread that we want to make a call by returning FTDM_SUCCESS */
ftdm_set_state_locked (ftdmchan, FTDM_CHANNEL_STATE_DIALING);
/* unlock the channel */ /* unlock the channel */
ftdm_mutex_unlock (ftdmchan->mutex); ftdm_mutex_unlock (ftdmchan->mutex);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论