]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix some type overflow warnings in q921 caused by the math implicitly becoming int.
authorMichael Jerris <mike@jerris.com>
Mon, 21 May 2007 20:28:13 +0000 (20:28 +0000)
committerMichael Jerris <mike@jerris.com>
Mon, 21 May 2007 20:28:13 +0000 (20:28 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@80 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/openzap/src/isdn/Q921.c
libs/openzap/src/isdn/include/Q921.h

index bdac9b8416676f0a171bca41d88da62d65476fc4..b36c76965dc5446a7b2c070b7cf95a479689ca46 100644 (file)
 #include <stdlib.h>\r
 #include "mfifo.h"\r
 \r
-#ifdef _MSC_VER\r
-/* temporary disable */\r
-#pragma warning(disable: 4244)\r
-#endif\r
-\r
 /*****************************************************************************\r
   Global Tables & Variables.\r
 *****************************************************************************/\r
 Q921Data Q921DevSpace[Q921MAXTRUNK];\r
 int Q921HeaderSpace={0};\r
 \r
-int (*Q921Tx21Proc)(int dev, unsigned char *, int)={NULL};\r
-int (*Q921Tx23Proc)(int dev, unsigned char *, int)={NULL};\r
+int (*Q921Tx21Proc)(int dev, L2UCHAR *, int)={NULL};\r
+int (*Q921Tx23Proc)(int dev, L2UCHAR *, int)={NULL};\r
 \r
 /*****************************************************************************\r
 \r
@@ -87,12 +82,12 @@ void Q921SetHeaderSpace(int hspace)
     Q921HeaderSpace=hspace;\r
 }\r
 \r
-void Q921SetTx21CB(int (*callback)(int dev, unsigned char *, int))\r
+void Q921SetTx21CB(int (*callback)(int dev, L2UCHAR *, int))\r
 {\r
     Q921Tx21Proc = callback;\r
 }\r
 \r
-void Q921SetTx23CB(int (*callback)(int dev, unsigned char *, int))\r
+void Q921SetTx23CB(int (*callback)(int dev, L2UCHAR *, int))\r
 {\r
     Q921Tx23Proc = callback;\r
 }\r
@@ -116,7 +111,7 @@ void Q921SetTx23CB(int (*callback)(int dev, unsigned char *, int))
                 size    size of frame in bytes\r
 \r
 *****************************************************************************/\r
-int Q921QueueHDLCFrame(int trunk, unsigned char *b, int size)\r
+int Q921QueueHDLCFrame(int trunk, L2UCHAR *b, int size)\r
 {\r
     return MFIFOWriteMes(Q921DevSpace[trunk].HDLCInQueue, b, size);\r
 }\r
@@ -140,7 +135,7 @@ int Q921QueueHDLCFrame(int trunk, unsigned char *b, int size)
   Return Value: 0 if failed, 1 if Send.\r
 \r
 *****************************************************************************/\r
-int Q921SendI(int trunk, unsigned char Sapi, char cr, unsigned char Tei, char pf, unsigned char *mes, int size)\r
+int Q921SendI(int trunk, L2UCHAR Sapi, char cr, L2UCHAR Tei, char pf, L2UCHAR *mes, int size)\r
 {\r
     mes[Q921HeaderSpace+0] = (Sapi&0xfc) | ((cr<<1)&0x02);\r
     mes[Q921HeaderSpace+1] = (Tei<<1) | 0x01;\r
@@ -169,12 +164,12 @@ int Q921SendI(int trunk, unsigned char Sapi, char cr, unsigned char Tei, char pf
 \r
 int Q921SendRR(int trunk, int Sapi, int cr, int Tei, int pf)\r
 {\r
-    unsigned char mes[400];\r
+    L2UCHAR mes[400];\r
 \r
-    mes[Q921HeaderSpace+0] = (Sapi&0xfc) | ((cr<<1)&0x02);\r
-    mes[Q921HeaderSpace+1] = (Tei<<1) | 0x01;\r
-    mes[Q921HeaderSpace+2] = 0x01;\r
-    mes[Q921HeaderSpace+3] = (Q921DevSpace[trunk].vr<<1) | (pf & 0x01);\r
+    mes[Q921HeaderSpace+0] = (L2UCHAR)((Sapi&0xfc) | ((cr<<1)&0x02));\r
+    mes[Q921HeaderSpace+1] = (L2UCHAR)((Tei<<1) | 0x01);\r
+    mes[Q921HeaderSpace+2] = (L2UCHAR)0x01;\r
+    mes[Q921HeaderSpace+3] = (L2UCHAR)((Q921DevSpace[trunk].vr<<1) | (pf & 0x01));\r
 \r
     return Q921Tx21Proc(trunk, mes, Q921HeaderSpace+4);\r
 }\r
@@ -196,12 +191,12 @@ int Q921SendRR(int trunk, int Sapi, int cr, int Tei, int pf)
 *****************************************************************************/\r
 int Q921SendRNR(int trunk, int Sapi, int cr, int Tei, int pf)\r
 {\r
-    unsigned char mes[400];\r
+    L2UCHAR mes[400];\r
 \r
-    mes[Q921HeaderSpace+0] = (Sapi&0xfc) | ((cr<<1)&0x02);\r
-    mes[Q921HeaderSpace+1] = (Tei<<1) | 0x01;\r
-    mes[Q921HeaderSpace+2] = 0x05;\r
-    mes[Q921HeaderSpace+3] = (Q921DevSpace[trunk].vr<<1) | (pf & 0x01);\r
+    mes[Q921HeaderSpace+0] = (L2UCHAR)((Sapi&0xfc) | ((cr<<1)&0x02));\r
+    mes[Q921HeaderSpace+1] = (L2UCHAR)((Tei<<1) | 0x01);\r
+    mes[Q921HeaderSpace+2] = (L2UCHAR)0x05;\r
+    mes[Q921HeaderSpace+3] = (L2UCHAR)((Q921DevSpace[trunk].vr<<1) | (pf & 0x01));\r
 \r
     return Q921Tx21Proc(trunk, mes, Q921HeaderSpace+4);\r
 }\r
@@ -223,12 +218,12 @@ int Q921SendRNR(int trunk, int Sapi, int cr, int Tei, int pf)
 *****************************************************************************/\r
 int Q921SendREJ(int trunk, int Sapi, int cr, int Tei, int pf)\r
 {\r
-    unsigned char mes[400];\r
+    L2UCHAR mes[400];\r
 \r
-    mes[Q921HeaderSpace+0] = (Sapi&0xfc) | ((cr<<1)&0x02);\r
-    mes[Q921HeaderSpace+1] = (Tei<<1) | 0x01;\r
-    mes[Q921HeaderSpace+2] = 0x09;\r
-    mes[Q921HeaderSpace+3] = (Q921DevSpace[trunk].vr<<1) | (pf & 0x01);\r
+    mes[Q921HeaderSpace+0] = (L2UCHAR)((Sapi&0xfc) | ((cr<<1)&0x02));\r
+    mes[Q921HeaderSpace+1] = (L2UCHAR)((Tei<<1) | 0x01);\r
+    mes[Q921HeaderSpace+2] = (L2UCHAR)0x09;\r
+    mes[Q921HeaderSpace+3] = (L2UCHAR)((Q921DevSpace[trunk].vr<<1) | (pf & 0x01));\r
 \r
     return Q921Tx21Proc(trunk, mes, Q921HeaderSpace+4);\r
 }\r
@@ -250,11 +245,11 @@ int Q921SendREJ(int trunk, int Sapi, int cr, int Tei, int pf)
 *****************************************************************************/\r
 int Q921SendSABME(int trunk, int Sapi, int cr, int Tei, int pf)\r
 {\r
-    unsigned char mes[400];\r
+    L2UCHAR mes[400];\r
 \r
-    mes[Q921HeaderSpace+0] = (Sapi&0xfc) | ((cr<<1)&0x02);\r
-    mes[Q921HeaderSpace+1] = (Tei<<1) | 0x01;\r
-    mes[Q921HeaderSpace+2] = 0x6f | ((pf<<4)&0x10);\r
+    mes[Q921HeaderSpace+0] = (L2UCHAR)((Sapi&0xfc) | ((cr<<1)&0x02));\r
+    mes[Q921HeaderSpace+1] = (L2UCHAR)((Tei<<1) | 0x01);\r
+    mes[Q921HeaderSpace+2] = (L2UCHAR)(0x6f | ((pf<<4)&0x10));\r
 \r
     return Q921Tx21Proc(trunk, mes, Q921HeaderSpace+3);\r
 }\r
@@ -276,11 +271,11 @@ int Q921SendSABME(int trunk, int Sapi, int cr, int Tei, int pf)
 *****************************************************************************/\r
 int Q921SendDM(int trunk, int Sapi, int cr, int Tei, int pf)\r
 {\r
-    unsigned char mes[400];\r
+    L2UCHAR mes[400];\r
 \r
-    mes[Q921HeaderSpace+0] = (Sapi&0xfc) | ((cr<<1)&0x02);\r
-    mes[Q921HeaderSpace+1] = (Tei<<1) | 0x01;\r
-    mes[Q921HeaderSpace+2] = 0x0f | ((pf<<4)&0x10);\r
+    mes[Q921HeaderSpace+0] = (L2UCHAR)((Sapi&0xfc) | ((cr<<1)&0x02));\r
+    mes[Q921HeaderSpace+1] = (L2UCHAR)((Tei<<1) | 0x01);\r
+    mes[Q921HeaderSpace+2] = (L2UCHAR)(0x0f | ((pf<<4)&0x10));\r
 \r
     return Q921Tx21Proc(trunk, mes, Q921HeaderSpace+3);\r
 }\r
@@ -302,11 +297,11 @@ int Q921SendDM(int trunk, int Sapi, int cr, int Tei, int pf)
 *****************************************************************************/\r
 int Q921SendDISC(int trunk, int Sapi, int cr, int Tei, int pf)\r
 {\r
-    unsigned char mes[400];\r
+    L2UCHAR mes[400];\r
 \r
-    mes[Q921HeaderSpace+0] = (Sapi&0xfc) | ((cr<<1)&0x02);\r
-    mes[Q921HeaderSpace+1] = (Tei<<1) | 0x01;\r
-    mes[Q921HeaderSpace+2] = 0x43 | ((pf<<4)&0x10);\r
+    mes[Q921HeaderSpace+0] = (L2UCHAR)((Sapi&0xfc) | ((cr<<1)&0x02));\r
+    mes[Q921HeaderSpace+1] = (L2UCHAR)((Tei<<1) | 0x01);\r
+    mes[Q921HeaderSpace+2] = (L2UCHAR)(0x43 | ((pf<<4)&0x10));\r
 \r
     return Q921Tx21Proc(trunk, mes, Q921HeaderSpace+3);\r
 }\r
@@ -328,16 +323,16 @@ int Q921SendDISC(int trunk, int Sapi, int cr, int Tei, int pf)
 *****************************************************************************/\r
 int Q921SendUA(int trunk, int Sapi, int cr, int Tei, int pf)\r
 {\r
-    unsigned char mes[400];\r
+    L2UCHAR mes[400];\r
 \r
-    mes[Q921HeaderSpace+0] = (Sapi&0xfc) | ((cr<<1)&0x02);\r
-    mes[Q921HeaderSpace+1] = (Tei<<1) | 0x01;\r
-    mes[Q921HeaderSpace+2] = 0x63 | ((pf<<4)&0x10);\r
+    mes[Q921HeaderSpace+0] = (L2UCHAR)((Sapi&0xfc) | ((cr<<1)&0x02));\r
+    mes[Q921HeaderSpace+1] = (L2UCHAR)((Tei<<1) | 0x01);\r
+    mes[Q921HeaderSpace+2] = (L2UCHAR)(0x63 | ((pf<<4)&0x10));\r
 \r
     return Q921Tx21Proc(trunk, mes, Q921HeaderSpace+3);\r
 }\r
 \r
-int Q921ProcSABME(int trunk, unsigned char *mes, int size)\r
+int Q921ProcSABME(int trunk, L2UCHAR *mes, int size)\r
 {\r
        /* TODO:  Do we need these paramaters? */\r
        (void)mes;\r
@@ -369,9 +364,9 @@ int Q921ProcSABME(int trunk, unsigned char *mes, int size)
 *****************************************************************************/\r
 int Q921Rx12(long trunk)\r
 {\r
-    unsigned char *mes;\r
+    L2UCHAR *mes;\r
     int rs,size;     /* receive size & Q921 frame size*/\r
-    unsigned char *smes = MFIFOGetMesPtr(Q921DevSpace[trunk].HDLCInQueue, &size);\r
+    L2UCHAR *smes = MFIFOGetMesPtr(Q921DevSpace[trunk].HDLCInQueue, &size);\r
     if(smes != NULL)\r
     {\r
         rs = size - Q921HeaderSpace;\r
index 5537a17aebf3071d1b83da20c7cf63fff4f7fd2e..3a0e1b02ac79af22e1f13d3c3bee4a64345e23ea 100644 (file)
 #define Q921MAXTRUNK 4\r
 #define Q921MAXHDLCSPACE 3000\r
 \r
+/*****************************************************************************\r
+\r
+       Some speed optimization can be achieved by changing all variables to the \r
+       word size of your processor. A 32 bit processor have to do a lot of extra \r
+       work to read a packed 8 bit integer. Changing all fields to 32 bit integer \r
+       will ressult in usage of some extra space, but speed up the stack.\r
+\r
+       The stack have been designed to allow L3UCHAR etc. to be any size of 8 bit\r
+       or larger.\r
+\r
+*****************************************************************************/\r
+\r
+#define L2UCHAR                unsigned char           /* Min 8 bit                                            */\r
+#define L2INT       int                 /* Min 16 bit signed                */\r
+\r
 typedef struct\r
 {\r
-    unsigned char HDLCInQueue[Q921MAXHDLCSPACE];\r
-    unsigned char vs;\r
-    unsigned char vr;\r
+    L2UCHAR HDLCInQueue[Q921MAXHDLCSPACE];\r
+    L2UCHAR vs;\r
+    L2UCHAR vr;\r
     int state;\r
 }Q921Data;\r
 \r
 void Q921Init();\r
 void Q921SetHeaderSpace(int hspace);\r
-void Q921SetTx21CB(int (*callback)(int dev, unsigned char *, int));\r
-void Q921SetTx23CB(int (*callback)(int dev, unsigned char *, int));\r
-int Q921QueueHDLCFrame(int trunk, unsigned char *b, int size);\r
+void Q921SetTx21CB(int (*callback)(int dev, L2UCHAR *, int));\r
+void Q921SetTx23CB(int (*callback)(int dev, L2UCHAR *, int));\r
+int Q921QueueHDLCFrame(int trunk, L2UCHAR *b, int size);\r
 int Q921Rx12(long trunk);\r
 \r
 #endif\r