]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Add beginning of auto-restart functionality
authorMichael Jerris <mike@jerris.com>
Tue, 29 May 2007 16:30:20 +0000 (16:30 +0000)
committerMichael Jerris <mike@jerris.com>
Tue, 29 May 2007 16:30:20 +0000 (16:30 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@179 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/freetdm/src/isdn/Q931StateTE.c
libs/freetdm/src/isdn/Q931api.c
libs/freetdm/src/isdn/include/Q931.h
libs/freetdm/src/zap_isdn.c

index 941d683710e03e830f00496fd071e8fcfbfdeab7..fbdd9f08a7f063544a038e18b5aacf5a2ab4b6af 100644 (file)
@@ -813,6 +813,9 @@ L3INT Q931ProcRestartTE(Q931_TrunkInfo_t *pTrunk, L3UCHAR * buf, L3INT iFrom)
        }
        else if (iFrom ==2)
        {
+               if (pTrunk->autoRestartAck) {
+                       Q931AckRestart(pTrunk, buf);
+               }
                /* TODO Add proc here*/
         ret = Q931Tx34(pTrunk,buf,pMes->Size);
        }
index 36764e95a0a604e599357353cd38fb9183ba64ed..7930fa53db83515cc662740f9b2684c568c454df 100644 (file)
@@ -39,6 +39,8 @@
 #include "Q931.h"
 #include "memory.h"
 
+extern L3INT Q931L4HeaderSpace;
+
 /*
 L3INT Q931CreateMesIndex(L3INT mc)
 {
@@ -109,12 +111,13 @@ L3INT Q931Api_InitTrunk(Q931_TrunkInfo_t *pTrunk,
        pTrunk->PrivateData32 = PrivateData32;
        pTrunk->PrivateData34 = PrivateData34;
 
-    pTrunk->LastCRV            = 0;
-    pTrunk->Dialect            = Dialect + NetUser;       
-    pTrunk->Enabled            = 0;
-    pTrunk->TrunkType  = TrunkType;
-    pTrunk->NetUser            = NetUser;
-    pTrunk->TrunkState = 0;
+    pTrunk->LastCRV                    = 0;
+    pTrunk->Dialect                    = Dialect + NetUser;       
+    pTrunk->Enabled                    = 0;
+    pTrunk->TrunkType          = TrunkType;
+    pTrunk->NetUser                    = NetUser;
+    pTrunk->TrunkState         = 0;
+       pTrunk->autoRestartAck  = 0;
     for(y=0; y < Q931MAXCHPERTRUNK; y++)
     {
         pTrunk->ch[y].Available = 1;
@@ -541,3 +544,15 @@ L3INT Q931ReleaseComplete(Q931_TrunkInfo_t *pTrunk, L3INT iTo)
 
        return 0;
 }
+
+L3INT Q931AckRestart(Q931_TrunkInfo_t *pTrunk, L3UCHAR *buf)
+{
+       L3INT RetCode;
+
+    Q931mes_Header *ptr = (Q931mes_Header*)&buf[Q931L4HeaderSpace];
+       ptr->MesType = Q931mes_RESTART_ACKNOWLEDGE;
+
+       RetCode = Q931Proc[pTrunk->Dialect][ptr->MesType](pTrunk, buf, 4);
+
+    return RetCode;
+}
index 4e16a2a5554ece4ae70d3e8b83ff4589dc3e083e..10a2e6e5ddc3add23693e3e5897a7e040baa9c7c 100644 (file)
@@ -900,6 +900,7 @@ L3INT Q931InitIEHLComp(Q931ie_HLComp * pIE);
 
 L3INT Q931Disconnect(Q931_TrunkInfo_t *pTrunk, L3INT iTo, L3INT iCRV, L3INT iCause);
 L3INT Q931ReleaseComplete(Q931_TrunkInfo_t *pTrunk, L3INT iTo);
+L3INT Q931AckRestart(Q931_TrunkInfo_t *pTrunk, L3UCHAR *buf);
 
 L3INT Q931Api_InitTrunk(Q931_TrunkInfo_t *pTrunk,
                                                Q931Dialect_t Dialect,
index 2076419ba830373839007cee40905bfe7b8333e0..55b58e890fff37a5c92f4019026320284fc32e33 100644 (file)
@@ -72,9 +72,6 @@ static L3INT zap_isdn_931_34(void *pvt, L2UCHAR *msg, L2INT mlen)
 
        zap_log(ZAP_LOG_DEBUG, "Yay I got an event! Type:[%d] Size:[%d]\n", gen->MesType, gen->Size);
 
-       gen->MesType = Q931mes_RESTART_ACKNOWLEDGE;
-       Q931Rx43(&data->q931, msg, gen->Size);
-
        return 0;
 }
 
@@ -246,7 +243,8 @@ zap_status_t zap_isdn_configure_span(zap_span_t *span, Q921NetUser_t mode, Q931D
                                          zap_isdn_931_err,
                                          &span->isdn_data->q921,
                                          span);
-       
+
+       span->isdn_data->q931.autoRestartAck = 1;
 
        span->signal_type = ZAP_SIGTYPE_ISDN;