aboutsummaryrefslogtreecommitdiff
path: root/SrcShared/Palm/Platform/Incs/Core/System/NetBitUtils.h
diff options
context:
space:
mode:
Diffstat (limited to 'SrcShared/Palm/Platform/Incs/Core/System/NetBitUtils.h')
-rw-r--r--SrcShared/Palm/Platform/Incs/Core/System/NetBitUtils.h135
1 files changed, 135 insertions, 0 deletions
diff --git a/SrcShared/Palm/Platform/Incs/Core/System/NetBitUtils.h b/SrcShared/Palm/Platform/Incs/Core/System/NetBitUtils.h
new file mode 100644
index 0000000..9eb9f15
--- /dev/null
+++ b/SrcShared/Palm/Platform/Incs/Core/System/NetBitUtils.h
@@ -0,0 +1,135 @@
+/******************************************************************************
+ *
+ * Copyright (c) 1997-1999 Palm Computing, Inc. or its subsidiaries.
+ * All rights reserved.
+ *
+ * File: NetBitUtils.h
+ *
+ * Description:
+ * Header file for bit manipulation routines used primarily
+ * by wireless network protocols.
+ *
+ * These routines live in the NetLib but are broken out here into
+ * a separate header so that they can be more easily used by source
+ * files that don't need access to the other NetLib functions.
+ *
+ * History:
+ * 6/11/97 Created by Ron Marianetti
+ * Name Date Description
+ * ---- ---- -----------
+ * vmk 8/25/98 Defined bitVarIntMaxBits and bitVarIntMaxBytes
+ *
+ *****************************************************************************/
+
+#ifndef __NETBITUTILS_H__
+#define __NETBITUTILS_H__
+
+#include <PalmTypes.h>
+#include <CoreTraps.h>
+
+#include <NetMgr.h>
+
+// # of bits in a byte
+#define bitsInByte 8
+
+
+// Maximum size of variable-size ints in # of bits and bytes. This is based on
+// the largest variable size int, which is encoded as follows: 1111 Bit[32]
+#define bitVarIntMaxBits 36
+#define bitVarIntMaxBytes ((bitVarIntMaxBits + bitsInByte - 1) / bitsInByte)
+
+
+//=====================================================
+// BitXXX Macros
+//
+// The following macros are handy because they don't require that
+// the source code pass in the NetLib library refnum to every
+// call.
+//
+// When building server code or other emulation code where th
+// library trap dispatcher is not used, the libRefNUm is unused
+// and can be 0.
+//
+// When building for the viewer, the libRefNum must be the refNum
+// of the NetLib. For applications, this libRefNum must be put
+// into an application global named 'AppNetRefnum'.
+//
+//====================================================
+#if USE_TRAPS == 0
+ #define netPrvRefnum 0
+#else
+ #define netPrvRefnum AppNetRefnum
+#endif
+
+
+#define BitMove( dstP, dstBitOffsetP, srcP, srcBitOffsetP, numBits) \
+ NetLibBitMove(netPrvRefnum, dstP, dstBitOffsetP, srcP, srcBitOffsetP, numBits)
+
+#define BitPutFixed( dstP, dstBitOffsetP, value, numBits) \
+ NetLibBitPutFixed(netPrvRefnum, dstP, dstBitOffsetP, value, numBits)
+
+#define BitGetFixed(srcP, srcBitOffsetP, numBits) \
+ NetLibBitGetFixed(netPrvRefnum, srcP, srcBitOffsetP, numBits)
+
+#define BitPutUIntV(dstP, dstBitOffsetP, value) \
+ NetLibBitPutUIntV(netPrvRefnum, dstP, dstBitOffsetP, value)
+
+#define BitGetUIntV(srcP, srcBitOffsetP) \
+ NetLibBitGetUIntV(netPrvRefnum, srcP, srcBitOffsetP)
+
+#define BitPutIntV(dstP, dstBitOffsetP, value) \
+ NetLibBitPutIntV(netPrvRefnum, dstP, dstBitOffsetP, value)
+
+#define BitGetIntV(srcP, srcBitOffsetP) \
+ NetLibBitGetIntV(netPrvRefnum, srcP, srcBitOffsetP)
+
+
+
+
+//=====================================================
+// Functions
+//====================================================
+#ifdef REMOVE_FOR_EMULATOR
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//--------------------------------------------------
+// Bit Moving functions. For "slim" bit packing protocols
+// used over wireless.
+//--------------------------------------------------
+void NetLibBitMove(UInt16 libRefNum, UInt8 *dstP, UInt32 *dstBitOffsetP,
+ UInt8 *srcP, UInt32 *srcBitOffsetP,
+ UInt32 numBits)
+ SYS_TRAP(netLibTrapBitMove);
+
+
+void NetLibBitPutFixed(UInt16 libRefNum, UInt8 *dstP, UInt32 *dstBitOffsetP,
+ UInt32 value, UInt16 numBits)
+ SYS_TRAP(netLibTrapBitPutFixed);
+
+UInt32 NetLibBitGetFixed(UInt16 libRefNum, UInt8 *dstP, UInt32 *dstBitOffsetP,
+ UInt16 numBits)
+ SYS_TRAP(netLibTrapBitGetFixed);
+
+void NetLibBitPutUIntV(UInt16 libRefNum, UInt8 *dstP, UInt32 *dstBitOffsetP,
+ UInt32 value)
+ SYS_TRAP(netLibTrapBitPutUIntV);
+
+UInt32 NetLibBitGetUIntV(UInt16 libRefNum, UInt8 *dstP, UInt32 *dstBitOffsetP)
+ SYS_TRAP(netLibTrapBitGetUIntV);
+
+void NetLibBitPutIntV(UInt16 libRefNum, UInt8 *dstP, UInt32 *dstBitOffsetP,
+ Int32 value)
+ SYS_TRAP(netLibTrapBitPutUIntV);
+
+Int32 NetLibBitGetIntV(UInt16 libRefNum, UInt8 *dstP, UInt32 *dstBitOffsetP)
+ SYS_TRAP(netLibTrapBitGetUIntV);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+#endif // __NETBITUTILS_H__