]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add function to initialize a new trunk.
authorMichael Jerris <mike@jerris.com>
Tue, 22 May 2007 02:45:42 +0000 (02:45 +0000)
committerMichael Jerris <mike@jerris.com>
Tue, 22 May 2007 02:45:42 +0000 (02:45 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@92 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/openzap/src/isdn/Q931api.c
libs/openzap/src/isdn/include/Q931.h

index e93b43193be3a40d332518d09e449c8f82cda822..04d1685991894f4cfc1c989109bacfbfedc12add 100644 (file)
@@ -68,28 +68,54 @@ L3INT Q931CreateIEIndex(L3INT iec)
 }
 */
 
-void Q931Api_InitTrunk(Q931_TrunkInfo *pTrunk)
+L3INT Q931Api_InitTrunk(Q931_TrunkInfo *pTrunk, Q931Dialect_t Dialect, Q931NetUser_t NetUser, Q931_TrunkType_t TrunkType)
 {
-       int y;
+       int y, dchannel, maxchans;
+
+       switch(TrunkType)
+       {
+       case Q931_TrType_E1:
+               dchannel = 16;
+               maxchans = 31;
+               break;
+
+       case Q931_TrType_T1:
+       case Q931_TrType_J1:
+               dchannel = 24;
+               maxchans = 24;
+               break;
+
+       case Q931_TrType_BRI:
+               dchannel = 3;
+               maxchans = 3;
+               break;
+
+       default:
+               return 0;
+       }
+
     pTrunk->LastCRV            = 0;
-    pTrunk->Dialect            = 0;       
+    pTrunk->Dialect            = Dialect;       
     pTrunk->Enabled            = 0;
-    pTrunk->TrunkType  = Q931_TrType_E1;
-    pTrunk->NetUser            = Q931_TE;
+    pTrunk->TrunkType  = TrunkType;
+    pTrunk->NetUser            = NetUser;
     pTrunk->TrunkState = 0;
     for(y=0; y < Q931MAXCHPERTRUNK; y++)
     {
         pTrunk->ch[y].Available = 1;
 
-        /* Set up E1 scheme by default */
-        if(y==0)
+        if(y == 0)
         {
             pTrunk->ch[y].ChanType = Q931_ChType_Sync;
         }
-        else if(y==16)
+        else if(y == dchannel)
         {
             pTrunk->ch[y].ChanType = Q931_ChType_D;
         }
+        else if(y > maxchans)
+        {
+            pTrunk->ch[y].ChanType = Q931_ChType_NotUsed;
+        }
         else
         {
                        pTrunk->ch[y].ChanType = Q931_ChType_B;
@@ -101,6 +127,7 @@ void Q931Api_InitTrunk(Q931_TrunkInfo *pTrunk)
         pTrunk->call[y].InUse = 0;
 
     }
+       return 1;
 }
 
 void Q931SetMesProc(L3UCHAR mes, L3UCHAR dialect, 
index f420b9d5ae237a0ca92a266d8185a71ddf52a08f..1fc31190c8f2a69f37003bef981f8b649eab6962 100644 (file)
@@ -1918,34 +1918,54 @@ typedef struct
 \r
 *****************************************************************************/\r
 \r
+typedef enum                                           /* Network/User Mode.                   */\r
+{\r
+       Q931_TE=0,                                              /*  0 : User Mode                       */\r
+    Q931_NT=1                                          /*  1 : Network Mode                    */\r
+} Q931NetUser_t;\r
+\r
+typedef enum                                           /* Dialect enum                         */\r
+{\r
+       Q931_Dialect_Q931 = 0,\r
+\r
+       Q931_Dialect_Count\r
+} Q931Dialect_t;\r
+\r
+typedef enum                                           /* Trunk Line Type.                     */\r
+{\r
+       Q931_TrType_E1=0,                               /*  0 : E1 Trunk                        */\r
+    Q931_TrType_T1=1,                          /*  1 : T1 Trunk                        */\r
+    Q931_TrType_J1=2,                          /*  2 : J1 Trunk                        */\r
+    Q931_TrType_BRI=3                          /*  3 : BRI Trunk                       */\r
+} Q931_TrunkType_t;\r
+\r
+typedef enum                                           /* Trunk State                                                  */\r
+{\r
+       Q931_TrState_NoAlignment=0,             /* Trunk not aligned                                    */\r
+       Q931_TrState_Aligning=1,                /* Aligning in progress                                 */\r
+       Q931_TrState_Aligned=2                  /* Trunk Aligned                                                */\r
+} Q931_TrunkState_t;\r
+\r
+typedef enum {\r
+       Q931_ChType_NotUsed=0,                  /* Unused Channel                                               */\r
+       Q931_ChType_B=1,                                /* B Channel (Voice)                                    */              \r
+       Q931_ChType_D=2,                                /* D Channel (Signalling)                               */\r
+       Q931_ChType_Sync=3                              /* Sync Channel                                                 */\r
+} Q931_ChanType_t;\r
+\r
 typedef struct\r
 {\r
-       enum _NetUser                                   /* Network/User Mode.                   */\r
-       {\r
-               Q931_TE=0,                  /*  0 : User Mode                       */\r
-        Q931_NT=1                   /*  1 : Network Mode                    */\r
-       }NetUser;\r
+       Q931NetUser_t NetUser;                  /* Network/User Mode.                   */\r
 \r
-    L3UCHAR     Dialect;            /* Q.931 Based dielact index.           */\r
+    Q931Dialect_t Dialect;                     /* Q.931 Based dielact index.           */\r
 \r
-       enum _TrunkType                                 /* Trunk Line Type.                     */\r
-       {\r
-               Q931_TrType_E1=0,           /*  0 : E1 Trunk                        */\r
-        Q931_TrType_T1=1,           /*  1 : T1 Trunk                        */\r
-        Q931_TrType_J1=2,           /*  2 : J1 Trunk                        */\r
-        Q931_TrType_BRI=3           /*  3 : BRI Trunk                       */\r
-       }TrunkType;\r
+       Q931_TrunkType_t TrunkType;             /* Trunk Line Type.                     */\r
 \r
     L3UCHAR     Enabled;            /* Enabled/Disabled                     */\r
                                     /*  0 = Disabled                        */\r
                                     /*  1 = Enabled                         */\r
 \r
-       enum _TrState                                   /* Trunk State                                                  */\r
-       {\r
-               Q931_TrState_NoAlignment=0,     /* Trunk not aligned                                    */\r
-               Q931_TrState_Aligning=1,        /* Aligning in progress                                 */\r
-               Q931_TrState_Aligned=2          /* Trunk Aligned                                                */\r
-       }TrunkState;\r
+       Q931_TrunkState_t TrunkState;\r
 \r
     L3INT       LastCRV;            /* Last used crv for the trunk.         */\r
 \r
@@ -1972,12 +1992,7 @@ typedef struct
        /* channels to fit an E1 since T1/J1 and BRI will fit inside a E1.              */\r
     struct _charray\r
     {\r
-               enum _ChanType{\r
-                       Q931_ChType_NotUsed=0,  /* Unused Channel                                               */\r
-                       Q931_ChType_B=1,                /* B Channel (Voice)                                    */              \r
-                       Q931_ChType_D=2,                /* D Channel (Signalling)                               */\r
-                       Q931_ChType_Sync=3              /* Sync Channel                                                 */\r
-               }ChanType;\r
+               Q931_ChanType_t ChanType;       /* Unused, B, D, Sync */\r
 \r
         L3UCHAR Available;          /* Channel Available Flag               */\r
                                     /*  0 : Avaiabled                       */\r
@@ -2409,4 +2424,6 @@ L3INT Q931InitIEHLComp(Q931ie_HLComp * pIE);
 L3INT Q931Disconnect(Q931_TrunkInfo *pTrunk, L3INT iTo, L3INT iCRV, L3INT iCause);\r
 L3INT Q931ReleaseComplete(Q931_TrunkInfo *pTrunk, L3INT iTo);\r
 \r
+L3INT Q931Api_InitTrunk(Q931_TrunkInfo *pTrunk, Q931Dialect_t Dialect, Q931NetUser_t NetUser, Q931_TrunkType_t TrunkType);
+\r
 #endif /* _Q931_NL */\r