00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "buffer.h"
00019
00020
00021
00022
00023 void bufferInit(cBuffer* buffer, unsigned char *start, unsigned short size)
00024 {
00025
00026 buffer->dataptr = start;
00027 buffer->size = size;
00028
00029 buffer->dataindex = 0;
00030 buffer->datalength = 0;
00031 }
00032
00033 unsigned char bufferGetFromFront(cBuffer* buffer)
00034 {
00035 unsigned char data = 0;
00036
00037
00038 if(buffer->datalength)
00039 {
00040
00041 data = buffer->dataptr[buffer->dataindex];
00042
00043 buffer->dataindex++;
00044 if(buffer->dataindex >= buffer->size)
00045 {
00046 buffer->dataindex %= buffer->size;
00047 }
00048 buffer->datalength--;
00049 }
00050
00051 return data;
00052 }
00053
00054 unsigned char bufferGetAtIndex(cBuffer* buffer, unsigned short index)
00055 {
00056
00057 return buffer->dataptr[(buffer->dataindex+index)%(buffer->size)];
00058 }
00059
00060 unsigned char bufferAddToEnd(cBuffer* buffer, unsigned char data)
00061 {
00062
00063 if(buffer->datalength < buffer->size)
00064 {
00065
00066 buffer->dataptr[(buffer->dataindex + buffer->datalength) % buffer->size] = data;
00067
00068 buffer->datalength++;
00069
00070 return -1;
00071 }
00072 else return 0;
00073 }
00074
00075 unsigned char bufferIsNotFull(cBuffer* buffer)
00076 {
00077
00078
00079 return (buffer->datalength < buffer->size);
00080 }
00081
00082 void bufferFlush(cBuffer* buffer)
00083 {
00084
00085 buffer->datalength = 0;
00086 }
00087