]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
update
authorAnthony Minessale <anthony.minessale@gmail.com>
Thu, 14 Jun 2007 04:44:44 +0000 (04:44 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Thu, 14 Jun 2007 04:44:44 +0000 (04:44 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@256 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/freetdm/mod_openzap/mod_openzap.c
libs/freetdm/src/zap_isdn.c

index 639fc18f6f4c3df743c9a118e1abdc2135789885..8f1abc3ecfb3e1b6c28bbfbb512f763634f4b834 100644 (file)
@@ -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;
 
 }
index d114be55d0d722a4c4df0b1c77b3f0938d5052e2..0ae26472aba29612a24a2bc83bf89582b9db010a 100644 (file)
@@ -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;
 }