00001 #ifndef trkwsRING_BUFFER_H 00002 #define trkwsRING_BUFFER_H 00003 /******************************************************************************* 00004 * E.S.O. - VLT project 00005 00006 * 00007 * "@(#) $Id: trkwsRING_BUFFER.h,v 1.157 2003/10/17 14:00:42 vltsccm Exp $" 00008 * 00009 * who when what 00010 * -------- -------- ---------------------------------------------- 00011 * gchiozzi 20/08/96 Added posEncoder attribute 00012 * gchiozzi 20/08/96 Renamed posFrame as trkwsPOS_FRAME 00013 * mnastvog 02/06/95 created 00014 */ 00015 00016 /************************************************************************ 00017 * 00018 *---------------------------------------------------------------------- 00019 */ 00020 00021 00022 #ifndef __cplusplus 00023 #error This is a C++ include file and cannot be used from plain C 00024 #endif 00025 00026 // class to describe the data which should reside in a ring buffer element 00027 // This should be changed into a template! 00028 00029 class trkwsPOS_FRAME 00030 { 00031 public: 00032 trkwsPOS_FRAME(); 00033 trkwsPOS_FRAME(vltDOUBLE p,vltDOUBLE pe,vltDOUBLE t); 00034 // private: 00035 vltDOUBLE position; 00036 vltDOUBLE posEncoder; 00037 vltDOUBLE timeStamp; 00038 friend class trkwsRING_BUFFER; 00039 }; 00040 00041 inline trkwsPOS_FRAME::trkwsPOS_FRAME() 00042 { 00043 position = 0; 00044 posEncoder = 0; 00045 timeStamp = 0; 00046 } 00047 00048 inline trkwsPOS_FRAME::trkwsPOS_FRAME(vltDOUBLE p,vltDOUBLE pe,vltDOUBLE t) 00049 { 00050 position = p; 00051 posEncoder = pe; 00052 timeStamp = t; 00053 } 00054 00055 00056 #define bufEle trkwsPOS_FRAME 00057 00058 00059 00060 00061 00062 class trkwsRING_BUFFER 00063 { 00064 public: 00065 trkwsRING_BUFFER(int size); 00066 ~trkwsRING_BUFFER(); 00067 00068 bufEle * Read(); 00069 bufEle * Peek(int offset); 00070 ccsCOMPL_STAT Write(bufEle value); 00071 void Init(); 00072 00073 00074 protected: 00075 int writeIndex; 00076 int readIndex; 00077 int diff; 00078 int valCount; 00079 int bufferSize; 00080 bufEle * data; 00081 }; 00082 #endif 00083