From f4e72b8b833afdc80c5249a86713851b91bbccd3 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 14 Jun 2007 04:44:44 +0000 Subject: [PATCH] update git-svn-id: http://svn.openzap.org/svn/openzap/trunk@256 a93c3328-9c30-0410-af19-c9cd2b2d52af --- libs/freetdm/mod_openzap/mod_openzap.c | 5 ++-- libs/freetdm/src/zap_isdn.c | 36 ++++++++++++++++++++++++-- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/libs/freetdm/mod_openzap/mod_openzap.c b/libs/freetdm/mod_openzap/mod_openzap.c index 639fc18f6f..8f1abc3ecf 100644 --- a/libs/freetdm/mod_openzap/mod_openzap.c +++ b/libs/freetdm/mod_openzap/mod_openzap.c @@ -774,18 +774,17 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi switch_core_session_destroy(new_session); cause = SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; goto fail; - } - return SWITCH_CAUSE_SUCCESS; } - fail: + if (zchan) { zap_channel_done(zchan); } + return cause; } diff --git a/libs/freetdm/src/zap_isdn.c b/libs/freetdm/src/zap_isdn.c index d114be55d0..0ae26472ab 100644 --- a/libs/freetdm/src/zap_isdn.c +++ b/libs/freetdm/src/zap_isdn.c @@ -55,6 +55,13 @@ static L2ULONG zap_time_now() #endif } +static ZIO_CHANNEL_OUTGOING_CALL_FUNCTION(isdn_outgoing_call) +{ + zap_status_t status = ZAP_SUCCESS; + zap_set_state_locked(zchan, ZAP_CHANNEL_STATE_DIALING); + return status; +} + static L3INT zap_isdn_931_err(void *pvt, L3INT id, L3INT p1, L3INT p2) { zap_log(ZAP_LOG_ERROR, "ERROR: [%s] [%d] [%d]\n", q931_error_to_name(id), p1, p2); @@ -207,6 +214,32 @@ static __inline__ void state_advance(zap_channel_t *zchan) Q931Rx43(&data->q931, (void *)gen, zchan->caller_data.raw_data_len); } break; + case ZAP_CHANNEL_STATE_DIALING: + { + Q931ie_BearerCap BearerCap; + Q931ie_ChanID ChanID; + Q931ie_CallingNum CallingNum; + Q931ie_CalledNum CalledNum; + + Q931InitIEBearerCap(&BearerCap); + Q931InitIEChanID(&ChanID); + Q931InitIECallingNum(&CallingNum); + Q931InitIECalledNum(&CalledNum); + + ChanID.ChanSlot = zchan->chan_id; + + //CallingNum.Digits + + + //Q931InitMesGeneric(gen); + gen->MesType = Q931mes_SETUP; + gen->BearerCap = Q931AppendIE((L3UCHAR *) gen, (L3UCHAR *) &BearerCap); + gen->ChanID = Q931AppendIE((L3UCHAR *) gen, (L3UCHAR *) &ChanID); + gen->CallingNum = Q931AppendIE((L3UCHAR *) gen, (L3UCHAR *) &CallingNum); + gen->CalledNum = Q931AppendIE((L3UCHAR *) gen, (L3UCHAR *) &CalledNum); + + } + break; case ZAP_CHANNEL_STATE_HANGUP: { Q931ie_Cause cause; @@ -399,9 +432,8 @@ zap_status_t zap_isdn_configure_span(zap_span_t *span, Q921NetUser_t mode, Q931D span); span->isdn_data->q931.autoRestartAck = 1; - - span->signal_type = ZAP_SIGTYPE_ISDN; + span->outgoing_call = isdn_outgoing_call; return ZAP_SUCCESS; }