NetBurner 3.1
datalog.h
1 /*NB_REVISION*/
2 
3 /*NB_COPYRIGHT*/
4 
5 #ifndef __DATALOG_H
6 #define __DATALOG_H
7 
8 #include <stdint.h>
9 
10 struct dataStruct
11 {
12  int sensorID = 0;
13  uint32_t timeStamp = 0;
14  float value = 0.0;
15 };
16 
17 typedef void( *RingLogSerializer )(dataStruct *item, void *args);
18 
19 class RingLog
20 {
21 private:
22  dataStruct *pHead = nullptr;
23  dataStruct *pTail = nullptr;
24  int32_t count = 0;
25 
26  const dataStruct *pStart = nullptr;
27  const dataStruct *pEnd = nullptr;
28  const int32_t maxSize = 0;
29 
30  void IncrementTail();
31  void IncrementHead();
32  void IncrementPtr( dataStruct *&ptr );
33 
34 public:
35  RingLog( dataStruct *buffer, uint32_t bufferSize );
36  ~RingLog();
37 
38  void Add( dataStruct *item );
39  void Remove( dataStruct *item );
40  void Clear();
41  int32_t GetCount();
42  void Dump();
43  void Serialize( RingLogSerializer serializer, void *args );
44 };
45 
46 #endif /* #ifndef __DATALOG_H */