summaryrefslogtreecommitdiff
path: root/software/include/octmac.h
diff options
context:
space:
mode:
Diffstat (limited to 'software/include/octmac.h')
-rw-r--r--software/include/octmac.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/software/include/octmac.h b/software/include/octmac.h
new file mode 100644
index 0000000..53804c7
--- /dev/null
+++ b/software/include/octmac.h
@@ -0,0 +1,98 @@
+/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\
+
+File: octmac.h
+
+ Copyright (c) 2001-2005 Octasic Inc.
+
+Description:
+
+ Common macro definitions.
+
+This file is part of the Octasic OCT6100 GPL API . The OCT6100 GPL API is
+free software; you can redistribute it and/or modify it under the terms of
+the GNU General Public License as published by the Free Software Foundation;
+either version 2 of the License, or (at your option) any later version.
+
+The OCT6100 GPL API is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with the OCT6100 GPL API; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+$Octasic_Release: OCT612xAPI-01.00-PR38 $
+
+$Octasic_Revision: 14 $
+
+\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
+#ifndef __OCTMAC_H__
+#define __OCTMAC_H__
+
+/*--------------------------------------------------------------------------
+ C language
+----------------------------------------------------------------------------*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************** DEFINES *************************************/
+
+/* Combine l & h to form a 32 bit quantity. */
+#define mMAKEULONG(l, h) ((ULONG)(((USHORT)(l)) | (((ULONG)((USHORT)(h))) << 16)))
+
+#define mLOUCHAR(w) ((UCHAR)(w))
+#define mHIUCHAR(w) ((UCHAR)(((USHORT)(w) >> 8) & 0xff))
+#define mLOUSHORT(l) ((USHORT)((ULONG)l))
+#define mHIUSHORT(l) ((USHORT)(((ULONG)(l) >> 16) & 0xffff))
+#define mLOSHORT(l) ((SHORT)((ULONG)l))
+#define mHISHORT(l) ((SHORT)(((ULONG)(l) >> 16) & 0xffff))
+
+/* Combine l & h to form a 16 bit quantity. */
+#define mMAKEUSHORT(l, h) (((USHORT)(l)) | ((USHORT)(h)) << 8)
+#define mMAKESHORT(l, h) ((SHORT)mMAKEUSHORT(l, h))
+
+/* Extract high and low order parts of 16 and 32 bit quantity */
+#define mLOBYTE(w) mLOUCHAR(w)
+#define mHIBYTE(w) mHIUCHAR(w)
+#define mMAKELONG(l, h) ((LONG)mMAKEULONG(l, h))
+
+/*--------------------------------------------------------------------------
+ Bite conversion macro
+----------------------------------------------------------------------------*/
+#define mSWAP_INT16(x) mMAKEUSHORT( mHIBYTE(x), mLOBYTE(x) )
+#define mSWAP_INT32(x) mMAKEULONG( mSWAP_INT16(mHIUSHORT(x)), mSWAP_INT16(mLOUSHORT(x)) )
+
+
+/* Cast any variable to an instance of the specified type. */
+#define mMAKETYPE(v, type) (*((type *)&v))
+
+/* Calculate the byte offset of a field in a structure of type type. */
+#define mFIELDOFFSET(type, field) ((UINT32)&(((type *)0)->field))
+#define mCOUNTOF(array) (sizeof(array)/sizeof(array[0]))
+
+#define mMAX(a,b) (((a) > (b)) ? (a) : (b))
+#define mMIN(a,b) (((a) < (b)) ? (a) : (b))
+
+#define mDIM(x) (sizeof(x) / sizeof(x[0]))
+
+#define mFROMDIGIT(ch) ((ch) - 0x30) /* digit to char */
+#define mTODIGIT(ch) ((ch) + 0x30) /* int to char */
+
+#define mISLEAP(a) ( !( a % 400 ) || ( ( a % 100 ) && !( a % 4 ) ) )
+
+#define mFOREVER for( ;; )
+
+#define mROUND_TO_NEXT_4( a ) ( ((a) % 4) ? ( (a) + 4 - ((a)%4) ) : (a) )
+
+/*--------------------------------------------------------------------------
+ C language
+----------------------------------------------------------------------------*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OCTMAC_H__ */