]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Added typedefs for some functions to simplify the declarations for the function point...
authorMichael Jerris <mike@jerris.com>
Mon, 28 May 2007 22:00:14 +0000 (22:00 +0000)
committerMichael Jerris <mike@jerris.com>
Mon, 28 May 2007 22:00:14 +0000 (22:00 +0000)
API rework to simplify the Umes functions.

git-svn-id: http://svn.openzap.org/svn/openzap/trunk@169 a93c3328-9c30-0410-af19-c9cd2b2d52af

13 files changed:
libs/openzap/Makefile
libs/openzap/msvc/openzap.vcproj
libs/openzap/src/isdn/Q931.c
libs/openzap/src/isdn/Q931api.c
libs/openzap/src/isdn/Q931ie.c
libs/openzap/src/isdn/Q931mes.c
libs/openzap/src/isdn/include/Q931.h
libs/openzap/src/isdn/include/Q931ie.h
libs/openzap/src/isdn/include/national.h
libs/openzap/src/isdn/nationalStateNT.c
libs/openzap/src/isdn/nationalStateTE.c
libs/openzap/src/isdn/nationalie.c [deleted file]
libs/openzap/src/isdn/nationalmes.c

index f5cbeee8abeee907974eff509d0300ff0b66db81..628702c5947b1e4effb2dadcd1afc816ca2ed2d3 100644 (file)
@@ -52,7 +52,6 @@ $(SRC)/isdn/Q931ie.o \
 $(SRC)/isdn/Q931mes.o \
 $(SRC)/isdn/Q931StateNT.o \
 $(SRC)/isdn/Q931StateTE.o \
-$(SRC)/isdn/nationalie.o \
 $(SRC)/isdn/nationalmes.o \
 $(SRC)/isdn/nationalStateNT.o \
 $(SRC)/isdn/nationalStateTE.o \
index d396d9dc8619c577fd34dd258abcc79524f08d2b..1a60eded4554d96fffa60fd06f1a504d9ca3ee11 100644 (file)
                                                RelativePath="..\src\isdn\mfifo.c"\r
                                                >\r
                                        </File>\r
-                                       <File\r
-                                               RelativePath="..\src\isdn\nationalie.c"\r
-                                               >\r
-                                       </File>\r
                                        <File\r
                                                RelativePath="..\src\isdn\nationalmes.c"\r
                                                >\r
index bdc9324c5c0065150f30b792cf91f3a4445b2ec2..d522db0cc4a464d0050da0868db605047861ea4e 100644 (file)
   these table entries during system inititialization of a stack.
 
 *****************************************************************************/
-L3INT (*Q931Proc  [Q931MAXDLCT][Q931MAXMES])   (Q931_TrunkInfo_t *pTrunk, L3UCHAR *,L3INT);
+q931proc_func_t *Q931Proc[Q931MAXDLCT][Q931MAXMES];
 
-L3INT (*Q931Umes  [Q931MAXDLCT][Q931MAXMES])   (Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT IOff, L3INT Size);
-L3INT (*Q931Pmes  [Q931MAXDLCT][Q931MAXMES])   (Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
+q931umes_func_t *Q931Umes[Q931MAXDLCT][Q931MAXMES];
+q931pmes_func_t *Q931Pmes[Q931MAXDLCT][Q931MAXMES];
 
-L3INT (*Q931Uie   [Q931MAXDLCT][Q931MAXIE])            (Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT (*Q931Pie   [Q931MAXDLCT][Q931MAXIE])            (Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
+q931uie_func_t *Q931Uie[Q931MAXDLCT][Q931MAXIE];
+q931pie_func_t *Q931Pie[Q931MAXDLCT][Q931MAXIE];
 
-L3UINT Q931MsgieOffset[Q931MAXIE];
-
-void Q931Initialize_MsgieOffset()
-{
-       L3INT x;
-       Q931mes_Generic msg;
-       ie *index;
-       
-       for(x=0; x<Q931MAXIE; x++) {
-               switch(x)
-               {
-               case Q931ie_SWITCHOOK:
-                       index = &msg.Switchhook;
-                       break;
-               case Q931ie_FEATURE_ACTIVATION:
-                       index = &msg.FeatAct;
-                       break;
-               case Q931ie_FEATURE_INDICATION:
-                       index = &msg.FeatInd;
-                       break;
-               case Q931ie_CALL_IDENTITY:
-                       index = &msg.CallID;
-                       break;
-               case Q931ie_SHIFT:
-                       index = &msg.Shift;
-                       break;
-               case Q931ie_MORE_DATA:
-                       index = &msg.MoreData;
-                       break;
-               case Q931ie_SENDING_COMPLETE:
-                       index = &msg.SendComplete;
-                       break;
-               case Q931ie_CONGESTION_LEVEL:
-                       index = &msg.CongestionLevel;
-                       break;
-               case Q931ie_REPEAT_INDICATOR:
-                       index = &msg.RepeatInd;
-                       break;
-               case Q931ie_SEGMENTED_MESSAGE:
-                       index = &msg.Segment;
-                       break;
-               case Q931ie_BEARER_CAPABILITY:
-                       index = &msg.BearerCap;
-                       break;
-               case Q931ie_CAUSE:
-                       index = &msg.Cause;
-                       break;
-               case Q931ie_CALL_STATE:
-                       index = &msg.CallState;
-                       break;
-               case Q931ie_CHANNEL_IDENTIFICATION:
-                       index = &msg.ChanID;
-                       break;
-               case Q931ie_PROGRESS_INDICATOR:
-                       index = &msg.ProgInd;
-                       break;
-               case Q931ie_NETWORK_SPECIFIC_FACILITIES:
-                       index = &msg.NetFac;
-                       break;
-               case Q931ie_NOTIFICATION_INDICATOR:
-                       index = &msg.NotifInd;
-                       break;
-               case Q931ie_DISPLAY:
-                       index = &msg.Display;
-                       break;
-               case Q931ie_DATETIME:
-                       index = &msg.DateTime;
-                       break;
-               case Q931ie_KEYPAD_FACILITY:
-                       index = &msg.KeypadFac;
-                       break;
-               case Q931ie_SIGNAL:
-                       index = &msg.Signal;
-                       break;
-               case Q931ie_INFORMATION_RATE:
-                       index = &msg.InfoRate;
-                       break;
-               case Q931ie_END_TO_END_TRANSIT_DELAY:
-                       index = &msg.EndEndTxDelay;
-                       break;
-               case Q931ie_TRANSIT_DELAY_SELECTION_AND_IND:
-                       index = &msg.TransDelSelInd;
-                       break;
-               case Q931ie_PACKED_LAYER_BIMARY_PARAMETERS:
-                       index = &msg.PackParam;
-                       break;
-               case Q931ie_PACKED_LAYER_WINDOW_SIZE:
-                       index = &msg.PackWinSize;
-                       break;
-               case Q931ie_PACKED_SIZE:
-                       index = &msg.PackSize;
-                       break;
-               case Q931ie_CALLING_PARTY_NUMBER:
-                       index = &msg.CallingNum;
-                       break;
-               case Q931ie_CALLING_PARTY_SUBADDRESS:
-                       index = &msg.CallingSub;
-                       break;
-               case Q931ie_CALLED_PARTY_NUMBER:
-                       index = &msg.CalledNum;
-                       break;
-               case Q931ie_CALLED_PARTY_SUBADDRESS:
-                       index = &msg.CalledSub;
-                       break;
-               case Q931ie_REDIRECTING_NUMBER:
-                       index = &msg.RedirNum;
-                       break;
-               case Q931ie_TRANSIT_NETWORK_SELECTION:
-                       index = &msg.TransNetSel;
-                       break;
-               case Q931ie_RESTART_INDICATOR:
-                       index = &msg.RestartInd;
-                       break;
-               case Q931ie_LOW_LAYER_COMPATIBILITY:
-                       index = &msg.LLComp;
-                       break;
-               case Q931ie_HIGH_LAYER_COMPATIBILITY:
-                       index = &msg.HLComp;
-                       break;
-               case Q931ie_USER_USER:
-                       index = &msg.UserUser;
-                       break;
-               case Q931ie_ESCAPE_FOR_EX:
-                       index = &msg.Escape;
-                       break;
-               default:
-                       index = NULL;
-                       break;
-               }
-
-               if (index) {
-                       Q931MsgieOffset[x] = (L3UINT)((L3UCHAR *)index - (L3UCHAR *)&msg);
-               } else {
-                       Q931MsgieOffset[x] = 0;
-               }
-       }
-}
-
-ie *Q931MegGetIE(Q931mes_Generic *msg, L3UINT ie_type)
-{
-       L3UINT offset = Q931MsgieOffset[ie_type];
-
-       if (!offset) {
-               return NULL;
-       }
-       
-       return (ie *)((L3UCHAR *)msg + offset);
-
-}
 
 void  (*Q931CreateDialectCB[Q931MAXDLCT])       (L3UCHAR iDialect)=
 {
@@ -305,7 +156,7 @@ L3INT Q931UmesDummy(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, Q931mes_Generic *OBu
   Description:  Dummy function for message processing
 
 *****************************************************************************/
-L3INT Q931UieDummy(Q931_TrunkInfo_t *pTrunk,ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931UieDummy(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     return Q931E_UNKNOWN_IE;
 }
@@ -317,7 +168,7 @@ L3INT Q931UieDummy(Q931_TrunkInfo_t *pTrunk,ie *pIE,L3UCHAR * IBuf, L3UCHAR * OB
   Description:  Dummy function for message processing
 
 *****************************************************************************/
-L3INT Q931PmesDummy(Q931_TrunkInfo_t *pTrunk,Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
+L3INT Q931PmesDummy(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
 {
     return Q931E_UNKNOWN_MESSAGE;
 }
@@ -377,9 +228,6 @@ void Q931Initialize()
 {
     L3INT x,y;
 
-       /* Initialize the Message offset ie Table */
-       Q931Initialize_MsgieOffset();
-
        /* Secure the callbacks to default procs */
     Q931ErrorProc = Q931ErrorDummy;
 
index 7ed7f4ce90a5f3f55dc58c0623020a5e582e66dd..36764e95a0a604e599357353cd38fb9183ba64ed 100644 (file)
@@ -145,11 +145,7 @@ L3INT Q931Api_InitTrunk(Q931_TrunkInfo_t *pTrunk,
        return 1;
 }
 
-void Q931SetMesProc(L3UCHAR mes, L3UCHAR dialect, 
-                L3INT (*Q931ProcFunc)(Q931_TrunkInfo_t *pTrunk, L3UCHAR * b, L3INT iFrom),
-                L3INT (*Q931UmesFunc)(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT IOff, L3INT Size),
-                L3INT (*Q931PmesFunc)(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
-)
+void Q931SetMesProc(L3UCHAR mes, L3UCHAR dialect, q931proc_func_t *Q931ProcFunc, q931umes_func_t *Q931UmesFunc, q931pmes_func_t *Q931PmesFunc)
 {
     if(Q931ProcFunc != NULL)
         Q931Proc[dialect][mes] = Q931ProcFunc;
@@ -159,10 +155,7 @@ void Q931SetMesProc(L3UCHAR mes, L3UCHAR dialect,
         Q931Pmes[dialect][mes] = Q931PmesFunc;
 }
 
-void Q931SetIEProc(L3UCHAR iec, L3UCHAR dialect, 
-                          L3INT (*Q931PieProc)(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet),
-                          L3INT (*Q931UieProc)(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff) 
-)
+void Q931SetIEProc(L3UCHAR iec, L3UCHAR dialect, q931pie_func_t *Q931PieProc, q931uie_func_t *Q931UieProc)
 {
     if(Q931PieProc != NULL)
         Q931Pie[dialect][iec] = Q931PieProc;
index 0e112675d2180e26060ab2c18b180b8232b8b08b..87069633c3749e43aaa36a35f8f5cdd32d950c99 100644 (file)
@@ -126,9 +126,10 @@ L3INT Q931ReadExt(L3UCHAR * IBuf, L3INT Off)
 
 *****************************************************************************/
 
-L3INT Q931Uie_BearerCap(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff) 
+L3INT Q931Uie_BearerCap(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff) 
 {
     Q931ie_BearerCap * pie = (Q931ie_BearerCap*)OBuf;
+       ie *pIE = &pMsg->BearerCap;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT IESize;
@@ -431,9 +432,10 @@ L3INT Q931Pie_BearerCap(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf,
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_CallID(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_CallID(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_CallID * pie = (Q931ie_CallID*)OBuf;
+       ie *pIE = &pMsg->CallID;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT x=0;
@@ -517,9 +519,10 @@ L3INT Q931Pie_CallID(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3I
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_CallState(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_CallState(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_CallState * pie = (Q931ie_CallState*)OBuf;
+       ie *pIE = &pMsg->CallState;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT IESize;
@@ -594,9 +597,10 @@ L3INT Q931Pie_CallState(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf,
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_CalledSub(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_CalledSub(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_CalledSub * pie = (Q931ie_CalledSub*)OBuf;
+       ie *pIE = &pMsg->CalledSub;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT x;
@@ -690,9 +694,10 @@ L3INT Q931Pie_CalledSub(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf,
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_CalledNum(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_CalledNum(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_CalledNum * pie = (Q931ie_CalledNum*)OBuf;
+       ie *pIE = &pMsg->CalledNum;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT x;
@@ -783,9 +788,10 @@ L3INT Q931Pie_CalledNum(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf,
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_CallingNum(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_CallingNum(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
-     Q931ie_CallingNum * pie = (Q931ie_CallingNum*)OBuf;
+       Q931ie_CallingNum * pie = (Q931ie_CallingNum*)OBuf;
+       ie *pIE = &pMsg->CallingNum;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT x;
@@ -897,9 +903,10 @@ L3INT Q931Pie_CallingNum(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf,
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_CallingSub(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_CallingSub(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_CallingSub * pie = (Q931ie_CallingSub*)OBuf;
+       ie *pIE = &pMsg->CallingSub;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT x;
@@ -993,9 +1000,10 @@ L3INT Q931Pie_CallingSub(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf,
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_Cause(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff) 
+L3INT Q931Uie_Cause(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff) 
 {
     Q931ie_Cause * pie = (Q931ie_Cause*)OBuf;
+       ie *pIE = &pMsg->Cause;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT IESize;
@@ -1085,9 +1093,10 @@ L3INT Q931Pie_Cause(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3IN
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_CongLevel(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff) 
+L3INT Q931Uie_CongLevel(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff) 
 {
     Q931ie_CongLevel *pie = (Q931ie_CongLevel*)OBuf;
+       ie *pIE = &pMsg->CongestionLevel;
     L3INT Off = 0;
     L3INT Octet = 0;
 
@@ -1143,9 +1152,10 @@ L3INT Q931Pie_CongLevel(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf,
   Return Value:    Error code, 0 = OK
 
 *****************************************************************************/
-L3INT Q931Uie_ChanID(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR *OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_ChanID(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR *OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_ChanID * pie = (Q931ie_ChanID*)OBuf;
+       ie *pIE = &pMsg->ChanID;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT IESize;
@@ -1336,9 +1346,10 @@ L3USHORT Q931Uie_CRV(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3I
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_DateTime(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_DateTime(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_DateTime * pie = (Q931ie_DateTime*)OBuf;
+       ie *pIE = &pMsg->DateTime;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT IESize=0;
@@ -1455,9 +1466,10 @@ L3INT Q931Pie_DateTime(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_Display(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_Display(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_Display * pie = (Q931ie_Display*)OBuf;
+       ie *pIE = &pMsg->Display;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT IESize;
@@ -1538,9 +1550,10 @@ L3INT Q931Pie_Display(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_HLComp(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff) 
+L3INT Q931Uie_HLComp(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff) 
 {
     Q931ie_HLComp * pie = (Q931ie_HLComp*)OBuf;
+       ie *pIE = &pMsg->HLComp;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT IESize;
@@ -1659,9 +1672,10 @@ L3INT Q931Pie_HLComp(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3I
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_KeypadFac(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_KeypadFac(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_KeypadFac * pie = (Q931ie_KeypadFac*)OBuf;
+       ie *pIE = &pMsg->KeypadFac;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT IESize;
@@ -1741,9 +1755,10 @@ L3INT Q931Pie_KeypadFac(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf,
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_LLComp(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_LLComp(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_LLComp * pie = (Q931ie_LLComp*)OBuf;
+       ie *pIE = &pMsg->LLComp;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT IESize;
@@ -2122,9 +2137,10 @@ L3INT Q931Pie_LLComp(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3I
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_NetFac(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_NetFac(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_NetFac * pie = (Q931ie_NetFac*)OBuf;
+       ie *pIE = &pMsg->NetFac;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT x=0;
@@ -2232,9 +2248,10 @@ L3INT Q931Pie_NetFac(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3I
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_NotifInd(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_NotifInd(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_NotifInd * pie = (Q931ie_NotifInd*)OBuf;
+       ie *pIE = &pMsg->NotifInd;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT IESize;
@@ -2308,9 +2325,10 @@ L3INT Q931Pie_NotifInd(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_ProgInd(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_ProgInd(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_ProgInd * pie = (Q931ie_ProgInd*)OBuf;
+       ie *pIE = &pMsg->ProgInd;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT IESize;
@@ -2393,9 +2411,10 @@ L3INT Q931Pie_ProgInd(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_RepeatInd(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_RepeatInd(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_RepeatInd *pie = (Q931ie_RepeatInd*)OBuf;
+       ie *pIE = &pMsg->RepeatInd;
     L3INT Off = 0;
     L3INT Octet = 0;
 
@@ -2452,9 +2471,10 @@ L3INT Q931Pie_RepeatInd(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf,
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_RevChargeInd(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_RevChargeInd(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     ie iE;
+       /* ie *pIE = &pMsg->RevChargeInd; */
     Q931SetIE(iE, *OOff);
 
     return iE;
@@ -2497,9 +2517,10 @@ L3INT Q931Pie_RevChargeInd(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBu
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_RestartInd(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_RestartInd(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_RestartInd * pie = (Q931ie_RestartInd*)OBuf;
+       ie *pIE = &pMsg->RestartInd;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT IESize;
@@ -2574,9 +2595,10 @@ L3INT Q931Pie_RestartInd(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf,
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_Segment(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_Segment(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_Segment * pie = (Q931ie_Segment*)OBuf;
+       ie *pIE = &pMsg->Segment;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT IESize;
@@ -2656,9 +2678,10 @@ L3INT Q931Pie_Segment(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_SendComplete(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_SendComplete(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_SendComplete *pie = (Q931ie_SendComplete*)OBuf;
+       ie *pIE = &pMsg->SendComplete;
     L3INT Off = 0;
     L3INT Octet = 0;
 
@@ -2713,9 +2736,10 @@ L3INT Q931Pie_SendComplete(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBu
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_Signal(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_Signal(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_Signal * pie = (Q931ie_Signal*)OBuf;
+       ie *pIE = &pMsg->Signal;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT IESize;
@@ -2787,9 +2811,10 @@ L3INT Q931Pie_Signal(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3I
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_TransNetSel(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_TransNetSel(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_TransNetSel * pie = (Q931ie_TransNetSel*)OBuf;
+       ie *pIE = &pMsg->TransNetSel;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT x=0;
@@ -2878,9 +2903,10 @@ L3INT Q931Pie_TransNetSel(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf
   Return Value: Error Message
 
 *****************************************************************************/
-L3INT Q931Uie_UserUser(Q931_TrunkInfo_t *pTrunk, ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
+L3INT Q931Uie_UserUser(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
 {
     Q931ie_UserUser * pie = (Q931ie_UserUser*)OBuf;
+       ie *pIE = &pMsg->UserUser;
     L3INT Off = 0;
     L3INT Octet = 0;
     L3INT x=0;
index 04ad6c4ffff60205601d7db13c4c8bb007df31e0..bc2facd7cb18265487472ec32d8c2631055adee9 100644 (file)
@@ -59,32 +59,12 @@ L3INT Q931Umes_Alerting(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic
                switch(IBuf[IOff])
                {
                case Q931ie_BEARER_CAPABILITY: 
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CHANNEL_IDENTIFICATION:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ChanID, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_HIGH_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -168,27 +148,11 @@ L3INT Q931Umes_CallProceeding(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_G
                switch(IBuf[IOff])
                {
                case Q931ie_BEARER_CAPABILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CHANNEL_IDENTIFICATION:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ChanID, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_HIGH_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -300,42 +264,14 @@ L3INT Q931Umes_Connect(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic
                switch(IBuf[IOff])
                {
                case Q931ie_BEARER_CAPABILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CHANNEL_IDENTIFICATION:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ChanID, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DATETIME:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->DateTime, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_LOW_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->LLComp, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_HIGH_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -429,13 +365,8 @@ L3INT Q931Umes_ConnectAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Gener
                switch(IBuf[IOff])
                {
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
-
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -498,22 +429,10 @@ L3INT Q931Umes_Disconnect(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Gener
                switch(IBuf[IOff])
                {
                case Q931ie_CAUSE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -585,29 +504,13 @@ L3INT Q931Umes_Information(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Gene
                switch(IBuf[IOff])
                {
                case Q931ie_SENDING_COMPLETE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->SendComplete, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
-
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
-
                case Q931ie_KEYPAD_FACILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->KeypadFac, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
-
                case Q931ie_CALLED_PARTY_NUMBER:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CalledNum, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
-
                default:
                        return Q931E_ILLEGAL_IE;
                        break;
@@ -680,19 +583,9 @@ L3INT Q931Umes_Notify(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *
                switch(IBuf[IOff])
                {
                case Q931ie_BEARER_CAPABILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
-
                case Q931ie_NOTIFICATION_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->NotifInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
-
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -753,27 +646,11 @@ L3INT Q931Umes_Progress(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic
                switch(IBuf[IOff])
                {
                case Q931ie_BEARER_CAPABILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CAUSE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_HIGH_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -849,17 +726,9 @@ L3INT Q931Umes_Release(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic
                switch(IBuf[IOff])
                {
                case Q931ie_CAUSE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -924,17 +793,9 @@ L3INT Q931Umes_ReleaseComplete(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_
                switch(IBuf[IOff])
                {
                case Q931ie_CAUSE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -999,17 +860,9 @@ L3INT Q931Umes_Restart(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic
         switch(IBuf[IOff])
         {
         case Q931ie_CHANNEL_IDENTIFICATION:
-            rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ChanID, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-            if(rc != Q931E_NO_ERROR) 
-                return rc;
-            break;
         case Q931ie_DISPLAY:
-            rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-            if(rc != Q931E_NO_ERROR) 
-                return rc;
-            break;
         case Q931ie_RESTART_INDICATOR:
-            rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->RestartInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+            rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
             if(rc != Q931E_NO_ERROR) 
                 return rc;
             break;
@@ -1074,17 +927,9 @@ L3INT Q931Umes_RestartAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Gener
         switch(IBuf[IOff])
         {
         case Q931ie_CHANNEL_IDENTIFICATION:
-            rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ChanID, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-            if(rc != Q931E_NO_ERROR) 
-                return rc;
-            break;
         case Q931ie_DISPLAY:
-            rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-            if(rc != Q931E_NO_ERROR) 
-                return rc;
-            break;
         case Q931ie_RESTART_INDICATOR:
-            rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->RestartInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+            rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
             if(rc != Q931E_NO_ERROR) 
                 return rc;
             break;
@@ -1149,7 +994,7 @@ L3INT Q931Umes_Resume(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *
                switch(IBuf[IOff])
                {
                case Q931ie_CALL_IDENTITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallID, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -1206,12 +1051,8 @@ L3INT Q931Umes_ResumeAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generi
                switch(IBuf[IOff])
                {
                case Q931ie_CHANNEL_IDENTIFICATION:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ChanID, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -1273,12 +1114,8 @@ L3INT Q931Umes_ResumeReject(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Gen
                switch(IBuf[IOff])
                {
                case Q931ie_CAUSE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -1357,101 +1194,33 @@ L3INT Q931Umes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *m
                switch(IBuf[IOff])
                {
                case Q931ie_SENDING_COMPLETE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->SendComplete, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
-               case Q931ie_REPEAT_INDICATOR:
-                       if(ir==0)
-                       {
-                               rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->RepeatInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                               ir++;
-                       }
-                       else if(ir==1)
-                       {
-                               rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->LLRepeatInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                               ir++;
-                       }
-                       else
-                       {
-                               return Q931E_ILLEGAL_IE;
-                       }
-                       break;
                case Q931ie_BEARER_CAPABILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CHANNEL_IDENTIFICATION:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ChanID, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_NETWORK_SPECIFIC_FACILITIES:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->NetFac, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DATETIME:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->DateTime, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_KEYPAD_FACILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->KeypadFac, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CALLING_PARTY_NUMBER:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallingNum, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CALLING_PARTY_SUBADDRESS:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallingSub, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CALLED_PARTY_NUMBER:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CalledSub, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CALLED_PARTY_SUBADDRESS:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CalledSub, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_TRANSIT_NETWORK_SELECTION:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->TransNetSel, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_LOW_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->LLComp, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_HIGH_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
+               case Q931ie_REPEAT_INDICATOR:
+                       if(ir < 2) {
+                               rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                               ir++;
+                       } else {
+                               return Q931E_ILLEGAL_IE;
+                       }
+                       break;
                default:
                        return Q931E_ILLEGAL_IE;
                        break;
@@ -1606,22 +1375,10 @@ L3INT Q931Umes_SetupAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic
                switch(IBuf[IOff])
                {
                case Q931ie_CHANNEL_IDENTIFICATION:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ChanID, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -1693,17 +1450,9 @@ L3INT Q931Umes_Status(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *
                switch(IBuf[IOff])
                {
                case Q931ie_CAUSE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CALL_STATE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallState, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -1769,7 +1518,7 @@ L3INT Q931Umes_StatusEnquiry(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Ge
                switch(IBuf[IOff])
                {
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -1826,7 +1575,7 @@ L3INT Q931Umes_Suspend(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic
                switch(IBuf[IOff])
                {
                case Q931ie_CALL_IDENTITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallID, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -1884,7 +1633,7 @@ L3INT Q931Umes_SuspendAck(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Gener
                switch(IBuf[IOff])
                {
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
@@ -1941,12 +1690,8 @@ L3INT Q931Umes_SuspendReject(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Ge
                switch(IBuf[IOff])
                {
                case Q931ie_CAUSE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Cause, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
index a14bf8585618b83f45d4484681002fa35e5bf175..6c580d8bb6383c3f24c9353b875a2eef1999d935 100644 (file)
@@ -371,6 +371,11 @@ typedef struct
     L3UCHAR         ProtDisc;       /* Protocol Discriminator               */
     L3UCHAR         MesType;        /* Message type                         */
     L3INT           CRV;            /* Call reference value                 */
+       L3UINT                  codeset;                /* Current Codeset - Temporary variable */
+                                                                       /* used for the Q931Uie functions               */
+                                                                       /* in a parsed message this will only   */
+                                                                       /* indicate the codeset of the last             */
+                                                                       /* ie parsed                                                    */
 
     ie              Shift;
     ie              MoreData;
@@ -588,15 +593,21 @@ typedef struct
   The proc tables are defined in Q931.c and initialized in Q931Initialize.
 
 *****************************************************************************/
-extern L3INT (*Q931Proc  [Q931MAXDLCT][Q931MAXMES])   (Q931_TrunkInfo_t *pTrunk, L3UCHAR *,L3INT);
+typedef L3INT (q931proc_func_t) (Q931_TrunkInfo_t *pTrunk, L3UCHAR *, L3INT);
 
-extern L3INT (*Q931Umes  [Q931MAXDLCT][Q931MAXMES])   (Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT IOff, L3INT Size);
-extern L3INT (*Q931Pmes  [Q931MAXDLCT][Q931MAXMES])   (Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
+typedef L3INT (q931umes_func_t) (Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT IOff, L3INT Size);
+typedef L3INT (q931pmes_func_t) (Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
 
-extern L3INT (*Q931Uie   [Q931MAXDLCT][Q931MAXIE] )   (Q931_TrunkInfo_t *pTrunk,ie *pIE,L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-extern L3INT (*Q931Pie   [Q931MAXDLCT][Q931MAXIE] )   (Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
+typedef L3INT (q931uie_func_t) (Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
+typedef L3INT (q931pie_func_t) (Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
 
-extern L3UINT Q931MsgieOffset[Q931MAXIE];
+extern q931proc_func_t *Q931Proc[Q931MAXDLCT][Q931MAXMES];
+
+extern q931umes_func_t *Q931Umes[Q931MAXDLCT][Q931MAXMES];
+extern q931pmes_func_t *Q931Pmes[Q931MAXDLCT][Q931MAXMES];
+
+extern q931uie_func_t *Q931Uie[Q931MAXDLCT][Q931MAXIE];
+extern q931pie_func_t *Q931Pie[Q931MAXDLCT][Q931MAXIE];
 
 /*****************************************************************************
     
@@ -705,8 +716,6 @@ extern L3UINT Q931MsgieOffset[Q931MAXIE];
 
 *****************************************************************************/
 
-extern Q931_TrunkInfo_t Q931Trunk[Q931MAXTRUNKS];
-
 #include "Q931ie.h"
 
 #include "Q932.h"
@@ -847,14 +856,9 @@ void    Q931CreateNT(L3UCHAR i);
 void    Q931SetMesCreateCB(L3INT (*callback)());
 void    Q931SetDialectCreateCB(L3INT (*callback)(L3INT));
 void    Q931SetHeaderSpace(L3INT space);
-void Q931SetMesProc(L3UCHAR mes, L3UCHAR dialect, 
-                L3INT (*Q931ProcFunc)(Q931_TrunkInfo_t *pTrunk, L3UCHAR * b, L3INT iFrom),
-                L3INT (*Q931UmesFunc)(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *OBuf, L3INT IOff, L3INT Size),
-                L3INT (*Q931PmesFunc)(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize));
 
-void Q931SetIEProc(L3UCHAR iec, L3UCHAR dialect, 
-                          L3INT (*Q931PieProc)(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet),
-                          L3INT (*Q931UieProc)(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)); 
+void Q931SetMesProc(L3UCHAR mes, L3UCHAR dialect, q931proc_func_t *Q931ProcFunc, q931umes_func_t *Q931UmesFunc, q931pmes_func_t *Q931PmesFunc);
+void Q931SetIEProc(L3UCHAR iec, L3UCHAR dialect, q931pie_func_t *Q931PieProc, q931uie_func_t *Q931UieProc);
 
 void Q931Initialize();
 void Q931AddDialect(L3UCHAR iDialect, void (*Q931CreateDialectCB)(L3UCHAR iDialect));
@@ -873,8 +877,6 @@ void Q931SetGetTimeCB(L3ULONG (*callback)());
 void   Q931AddStateEntry(L3UCHAR iD, L3INT iState, L3INT iMes, L3UCHAR cDir);
 L3BOOL Q931IsEventLegal(L3UCHAR iD, L3INT iState, L3INT iMes, L3UCHAR cDir);
 
-ie *Q931MegGetIE(Q931mes_Generic *msg, L3UINT ie_type);
-
 /*****************************************************************************
 
   Q.931 Low Level API Function Prototyping. Implemented in Q931API.c
index ad296951d055bf197db64417c9f8c5210caf8383..27e292d1f96fbe0d7560a4b42e46e8859b97ddba 100644 (file)
@@ -96,6 +96,9 @@ typedef enum {
 #define Q931ie_USER_USER                        0x7e /* 0111 1110       */
 #define Q931ie_ESCAPE_FOR_EX                    0x7f /* 0111 1111       */
 
+#define Q931ie_GENERIC_DIGITS               0x37 /* 0011 0111       */
+
+
 
 /*****************************************************************************
 
@@ -1061,6 +1064,19 @@ typedef struct
                                     /*  111 All interfaces                  */
 }Q931ie_RestartInd;
 
+/*****************************************************************************
+
+  Struct:       Q931ie_GenericDigits
+
+
+*****************************************************************************/
+
+typedef struct
+{
+    L3UCHAR IEId;                   /* 00110111                             */
+    L3UCHAR Size;                   /* Length of Information Element        */
+} Q931ie_GenericDigits;
+
 
 /*****************************************************************************
 
@@ -1068,56 +1084,61 @@ typedef struct
 
 *****************************************************************************/
 
-L3INT Q931Pie_BearerCap(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_ChanID(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_ProgInd(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_Display(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_Signal(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_HLComp(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_Segment(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_DateTime(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_Cause(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_SendComplete(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_KeypadFac(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_NotifInd(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_CallID(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_RepeatInd(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_NetFac(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_CallingNum(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_CallingSub(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_CalledNum(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_CalledSub(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_CalledNum(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_TransNetSel(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_LLComp(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_CallState(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_RestartInd(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT Q931Pie_UserUser(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-
-L3INT Q931Uie_BearerCap(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
+q931pie_func_t Q931Pie_BearerCap;
+q931pie_func_t Q931Pie_ChanID;
+q931pie_func_t Q931Pie_ProgInd;
+q931pie_func_t Q931Pie_Display;
+q931pie_func_t Q931Pie_Signal;
+q931pie_func_t Q931Pie_HLComp;
+q931pie_func_t Q931Pie_Segment;
+q931pie_func_t Q931Pie_DateTime;
+q931pie_func_t Q931Pie_Cause;
+q931pie_func_t Q931Pie_SendComplete;
+q931pie_func_t Q931Pie_KeypadFac;
+q931pie_func_t Q931Pie_NotifInd;
+q931pie_func_t Q931Pie_CallID;
+q931pie_func_t Q931Pie_RepeatInd;
+q931pie_func_t Q931Pie_NetFac;
+q931pie_func_t Q931Pie_CallingNum;
+q931pie_func_t Q931Pie_CallingSub;
+q931pie_func_t Q931Pie_CalledNum;
+q931pie_func_t Q931Pie_CalledSub;
+q931pie_func_t Q931Pie_CalledNum;
+q931pie_func_t Q931Pie_TransNetSel;
+q931pie_func_t Q931Pie_LLComp;
+q931pie_func_t Q931Pie_CallState;
+q931pie_func_t Q931Pie_RestartInd;
+q931pie_func_t Q931Pie_UserUser;
+
+q931pie_func_t Q931Pie_GenericDigits;
+
 L3USHORT Q931Uie_CRV(Q931_TrunkInfo_t *pTrunk,L3UCHAR * IBuf, L3UCHAR *OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_ChanID(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR *OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_ProgInd(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_Display(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_Signal(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_HLComp(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_Segment(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_DateTime(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_Cause(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_SendComplete(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_KeypadFac(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_NotifInd(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_CallID(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_RepeatInd(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_NetFac(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_CallingNum(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_CallingSub(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_CalledNum(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_CalledSub(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_TransNetSel(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_LLComp(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_CallState(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_RestartInd(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
-L3INT Q931Uie_UserUser(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff);
+
+q931uie_func_t Q931Uie_BearerCap;
+q931uie_func_t Q931Uie_ChanID;
+q931uie_func_t Q931Uie_ProgInd;
+q931uie_func_t Q931Uie_Display;
+q931uie_func_t Q931Uie_Signal;
+q931uie_func_t Q931Uie_HLComp;
+q931uie_func_t Q931Uie_Segment;
+q931uie_func_t Q931Uie_DateTime;
+q931uie_func_t Q931Uie_Cause;
+q931uie_func_t Q931Uie_SendComplete;
+q931uie_func_t Q931Uie_KeypadFac;
+q931uie_func_t Q931Uie_NotifInd;
+q931uie_func_t Q931Uie_CallID;
+q931uie_func_t Q931Uie_RepeatInd;
+q931uie_func_t Q931Uie_NetFac;
+q931uie_func_t Q931Uie_CallingNum;
+q931uie_func_t Q931Uie_CallingSub;
+q931uie_func_t Q931Uie_CalledNum;
+q931uie_func_t Q931Uie_CalledSub;
+q931uie_func_t Q931Uie_TransNetSel;
+q931uie_func_t Q931Uie_LLComp;
+q931uie_func_t Q931Uie_CallState;
+q931uie_func_t Q931Uie_RestartInd;
+q931uie_func_t Q931Uie_UserUser;
+
+q931uie_func_t Q931Uie_GenericDigits;
 
 #endif /* _Q931IE_NL */
index 1e9f5b1f8f3a517f11c285fedd3a373202f45bd0..f6c79ed4c93c33b6d7e02a63fbeb5d2aac4db1ce 100644 (file)
 *****************************************************************************/
 
 
-/* Single octet information elements                                */
-
-/* Variable Length Information Elements */
-#define nationalie_GENERIC_DIGITS               0x37 /* 0011 0111       */
-
-
-
-/*****************************************************************************
-
-  Struct:       nationalie_GenericDigits
-
-
-*****************************************************************************/
-
-typedef struct
-{
-    L3UCHAR IEId;                   /* 00110111                             */
-    L3UCHAR Size;                   /* Length of Information Element        */
-}nationalie_GenericDigits;
-
-
-/*****************************************************************************
-
-  Q.931 Information Element Pack/Unpack functions. Implemented in nationalie.c
-
-*****************************************************************************/
-
-L3INT nationalPie_GenericDigits(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet);
-L3INT nationalUie_GenericDigits(Q931_TrunkInfo_t *pTrunk,ie *pIE, L3UCHAR * IBuf, L3UCHAR *OBuf, L3INT *IOff, L3INT *OOff);
-
-
 /*****************************************************************************
 
   Q.931 Message Pack/Unpack functions. Implemented in nationalmes.c
index 2465853fe1498553f041024fc7d74ddeb432fb11..29f766e0734d3349d6e508188d0cd4f43ea4b462 100644 (file)
@@ -116,7 +116,7 @@ void nationalCreateNT(L3UCHAR i)
     Q931SetIEProc(Q931ie_LOW_LAYER_COMPATIBILITY,          i,Q931Pie_LLComp,                   Q931Uie_LLComp);
     Q931SetIEProc(Q931ie_HIGH_LAYER_COMPATIBILITY,         i,Q931Pie_HLComp,                   Q931Uie_HLComp);
     Q931SetIEProc(Q931ie_USER_USER,                        i,Q931Pie_UserUser,                 Q931Uie_UserUser);
-    Q931SetIEProc(nationalie_GENERIC_DIGITS,               i,nationalPie_GenericDigits,        nationalUie_GenericDigits);
+    Q931SetIEProc(Q931ie_GENERIC_DIGITS,                          i,Q931Pie_GenericDigits,             Q931Uie_GenericDigits);
 
        /* The following define a state machine. The point is that the Message  */
        /* procs can when search this to find out if the message/state                  */
index 0f3186e2887a5947921ba51fa5f57ff6382fca0e..fb2e7139c263f38d1e1647f2cf715dcf419e9854 100644 (file)
@@ -123,7 +123,7 @@ void nationalCreateTE(L3UCHAR i)
     Q931SetIEProc(Q931ie_LOW_LAYER_COMPATIBILITY,          i,Q931Pie_LLComp,                   Q931Uie_LLComp);
     Q931SetIEProc(Q931ie_HIGH_LAYER_COMPATIBILITY,         i,Q931Pie_HLComp,                   Q931Uie_HLComp);
     Q931SetIEProc(Q931ie_USER_USER,                        i,Q931Pie_UserUser,                 Q931Uie_UserUser);
-    Q931SetIEProc(nationalie_GENERIC_DIGITS,               i,nationalPie_GenericDigits,        nationalUie_GenericDigits);
+    Q931SetIEProc(Q931ie_GENERIC_DIGITS,                                  i,Q931Pie_GenericDigits,             Q931Uie_GenericDigits);
 
        /* The following define a state machine. The point is that the Message  */
        /* procs can when search this to find out if the message/state                  */
diff --git a/libs/openzap/src/isdn/nationalie.c b/libs/openzap/src/isdn/nationalie.c
deleted file mode 100644 (file)
index bf9afba..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/*****************************************************************************
-
-  FileName:     nationalie.c
-
-  Contents:     Information Element Pack/Unpack functions. 
-  
-                These functions will pack out a National ISDN message from the bit 
-                packed original format into structs that are easier to process 
-                and pack the same structs back into bit fields when sending
-                messages out.
-
-                The messages contains a short for each possible IE. The MSB 
-                bit flags the precense of an IE, while the remaining bits 
-                are the offset into a buffer to find the actual IE.
-
-                Each IE are supported by 3 functions:
-
-                nationalPie_XXX     Pack struct into Q.931 IE
-                nationalUie_XXX     Unpack Q.931 IE into struct
-                nationalInitIEXXX   Initialize IE (see nationalapi.c).
-
-  License/Copyright:
-
-  Copyright (c) 2007, Jan Vidar Berger, Case Labs, Ltd. All rights reserved.
-  email:janvb@caselaboratories.com  
-
-  Copyright (c) 2007, Michael Jerris. All rights reserved.
-  email:mike@jerris.com  
-
-  Redistribution and use in source and binary forms, with or without 
-  modification, are permitted provided that the following conditions are 
-  met:
-
-    * Redistributions of source code must retain the above copyright notice, 
-         this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice, 
-         this list of conditions and the following disclaimer in the documentation 
-         and/or other materials provided with the distribution.
-    * Neither the name of the Case Labs, Ltd nor the names of its contributors 
-         may be used to endorse or promote products derived from this software 
-         without specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
-  POSSIBILITY OF SUCH DAMAGE.
-*****************************************************************************/
-
-#include "national.h"
-
-/*****************************************************************************
-
-  Macro:        Q931MoreIE
-
-  Description:  Local helper macro detecting if there is more IE space left
-                based on the 3 standard parameters Octet, Off and IESpace.
-                This can be used to test if the IE is completed to avoid
-                that the header of the next IE is interpreted as a part of
-                the current IE.
-
-*****************************************************************************/
-#define Q931MoreIE() (Octet+Off - 2< IESize)
-
-#define Q931IESizeTest(x)   {\
-                            if(Octet + Off - 2!= IESize)\
-                            {\
-                                Q931SetError(pTrunk,x, Octet, Off);\
-                                return x;\
-                            }\
-                            }
-
-/*****************************************************************************
-
-  Function:     nationalUie_GenericDigits
-
-  Parameters:   pIE[OUT]        ptr to Information Element id.
-                IBuf[IN]        ptr to a packed ie.
-                OBuf[OUT]       ptr to buffer for Unpacked ie.
-                IOff[IN\OUT]    Input buffer offset
-                OOff[IN\OUT]    Output buffer offset
-
-
-                Ibuf and OBuf points directly to buffers. The IOff and OOff
-                must be updated, but are otherwise not used in the ie unpack.
-
-  Return Value: Error Message
-
-*****************************************************************************/
-L3INT nationalUie_GenericDigits(Q931_TrunkInfo_t *pTrunk, ie *pIE, L3UCHAR * IBuf, L3UCHAR * OBuf, L3INT *IOff, L3INT *OOff)
-{
-    nationalie_GenericDigits * pie = (nationalie_GenericDigits*)OBuf;
-    L3INT Off = 0;
-    L3INT Octet = 0;
-    L3INT x=0;
-    L3INT IESize;
-
-    *pIE=0;
-
-    /* Octet 1 */
-    pie->IEId        = IBuf[Octet++];
-
-    /* Octet 2 */
-    IESize = IBuf[Octet++]; 
-
-    Q931SetIE(*pIE, *OOff);
-
-       *IOff = (*IOff) + Octet + Off;
-    *OOff = (*OOff) + sizeof(nationalie_GenericDigits) + x -1;
-    
-       pie->Size = (L3UCHAR)(sizeof(nationalie_GenericDigits) + x -1);
-
-    return Q931E_NO_ERROR;
-}
-
-/*****************************************************************************
-
-  Function:     nationalPie_GenericDigits
-
-  Parameters:   IBuf[IN]        Ptr to struct.
-                OBuf[OUT]        Ptr tp packed output buffer.
-                Octet[IN/OUT]    Offset into OBuf.
-
-  Return Value:    Error code, 0 = OK
-
-*****************************************************************************/
-
-L3INT nationalPie_GenericDigits(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, L3UCHAR *OBuf, L3INT *Octet)
-{
-       OBuf[(*Octet)++] = nationalie_GENERIC_DIGITS ;
-    OBuf[(*Octet)++] = 2;
-
-    return Q931E_NO_ERROR;
-}
-
index 971016167f77a6572eb0f8fa925e257abaa0b396..b256a318d67fc8361e4c14236a873aa163c7de73 100644 (file)
@@ -62,102 +62,34 @@ L3INT nationalUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generi
                switch(IBuf[IOff])
                {
                case Q931ie_SENDING_COMPLETE:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->SendComplete, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
-               case Q931ie_REPEAT_INDICATOR:
-                       if(ir==0)
-                       {
-                               rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->RepeatInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                               ir++;
-                       }
-                       else if(ir==1)
-                       {
-                               rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->LLRepeatInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                               ir++;
-                       }
-                       else
-                       {
-                               return Q931E_ILLEGAL_IE;
-                       }
-                       break;
                case Q931ie_BEARER_CAPABILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->BearerCap, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CHANNEL_IDENTIFICATION:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ChanID, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_PROGRESS_INDICATOR:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->ProgInd, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_NETWORK_SPECIFIC_FACILITIES:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->NetFac, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DISPLAY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Display, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_DATETIME:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->DateTime, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_KEYPAD_FACILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->KeypadFac, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_SIGNAL:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->Signal, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CALLING_PARTY_NUMBER:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallingNum, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CALLING_PARTY_SUBADDRESS:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CallingSub, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CALLED_PARTY_NUMBER:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CalledSub, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_CALLED_PARTY_SUBADDRESS:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->CalledSub, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_TRANSIT_NETWORK_SELECTION:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->TransNetSel, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_LOW_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->LLComp, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
-                       if(rc != Q931E_NO_ERROR) 
-                               return rc;
-                       break;
                case Q931ie_HIGH_LAYER_COMPATIBILITY:
-                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, &mes->HLComp, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                       rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
                        if(rc != Q931E_NO_ERROR) 
                                return rc;
                        break;
-               case nationalie_GENERIC_DIGITS:
+               case Q931ie_REPEAT_INDICATOR:
+                       if(ir < 2) {
+                               rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
+                               ir++;
+                       } else {
+                               return Q931E_ILLEGAL_IE;
+                       }
+                       break;
+               case Q931ie_GENERIC_DIGITS:
                        /* TODO: Implement this ie */
                        IOff = IOff + 4;
                        break;