Procyon AVRlib: bitbuf.h Source File Main Page | Modules | Data Structures | Directories | File List | Data Fields | Globals | Related Pages bitbuf.hGo to the documentation of this file.00001 /*! \file bitbuf.h \brief Multipurpose bit buffer structure and methods. */ 00002 //***************************************************************************** 00003 // 00004 // File Name : 'bitbuf.c' 00005 // Title : Multipurpose bit buffer structure and methods 00006 // Author : Pascal Stang - Copyright (C) 2001-2002 00007 // Created : 7/10/2002 00008 // Revised : 7/10/2002 00009 // Version : 0.5 00010 // Target MCU : any 00011 // Editor Tabs : 4 00012 // 00013 /// \ingroup general 00014 /// \defgroup bitbuf Generic Bit-Buffer Structure and Function Library (bitbuf.c) 00015 /// \code #include "bitbuf.h" \endcode 00016 /// \par Overview 00017 /// This bit-buffer structure provides an easy and efficient way to store and 00018 /// process bits. You can create as many bit buffers as you like (within 00019 /// memory limits), and then use this common set of functions to access each 00020 /// buffer. Supported functions include sequential getting and storing of 00021 /// bits, array-like get, buffer flush (dump data), and reset-to-beginning. 00022 /// This buffer is not dynamically allocated, it has a user-defined fixed 00023 /// maximum size. 00024 /// 00025 // This code is distributed under the GNU Public License 00026 // which can be found at http://www.gnu.org/licenses/gpl.txt 00027 // 00028 //***************************************************************************** 00029 //@{ 00030 00031 #ifndef BITBUF_H 00032 #define BITBUF_H 00033 00034 // structure/typdefs 00035 00036 // the BitBuffer structure 00037 typedef struct struct_BitBuf 00038 { 00039 unsigned char *dataptr; // the physical memory address where the buffer is stored 00040 unsigned short size; // the allocated byte size of the buffer 00041 unsigned short bytePos; // current byte position 00042 unsigned short bitPos; // current bit position 00043 unsigned short datalength; // the length of the data (in bits) currently in the buffer 00044 unsigned short dataindex; // the index (in bits) into the buffer where the data starts 00045 } BitBuf; 00046 00047 // function prototypes 00048 00049 //! initialize a buffer to start at a given address and have given size 00050 void bitbufInit(BitBuf* bitBuffer, unsigned char *start, unsigned short bytesize); 00051 00052 //! get the bit at the current position in the buffer 00053 unsigned char bitbufGet(BitBuf* bitBuffer); 00054 00055 //! get a bit at the specified index in the buffer (kind of like array access) 00056 // ** note: this does not remove/delete the bit that was read 00057 unsigned char bitbufGetAtIndex(BitBuf* bitBuffer, unsigned short bitIndex); 00058 00059 //! store a bit at the current position in the buffer 00060 void bitbufStore(BitBuf* bitBuffer, unsigned char bit); 00061 00062 //! return the number of bits in the buffer 00063 unsigned short bitbufGetDataLength(BitBuf* bitBuffer); 00064 00065 // check if the buffer is full/not full (returns non-zero value if not full) 00066 //unsigned char bitbufIsNotFull(cBuffer* buffer); 00067 00068 //! resets the read/write position of the buffer to beginning 00069 void bitbufReset(BitBuf* bitBuffer); 00070 00071 //! flush (clear) the contents of the buffer 00072 void bitbufFlush(BitBuf* bitBuffer); 00073 00074 #endif 00075 //@} Generated on Sun Oct 29 03:41:06 2006 for Procyon AVRlib by 1.4.2