123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- // logvar.h :
- //
- #if !defined(AGD_LOGVAR_H__ED3E1EC3_3899_4602_A824_5B7A58880AAC__INCLUDED_)
- #define AGD_LOGVAR_H__ED3E1EC3_3899_4602_A824_5B7A58880AAC__INCLUDED_
- #include <stdlib.h>
- #include <stdio.h>
- #include <time.h>
- #include <string.h>
- #include <string>
- #include <pthread.h>
- #include <typeinfo>
- #include <vector>
- #include <map>
- #include <gfa/gfaipc.h>
- #include "datalogger.h"
- /////////////////////////////////////////////////////////////////////////////
- typedef union _CHECK_UPDATE_SHM_RETVAL
- {
- struct
- {
- unsigned int nChecked;
- unsigned int nUpdated;
- };
- unsigned long long nRetval;
- }CHECK_UPDATE_SHM_RETVAL, *LPCHECK_UPDATE_SHM_RETVAL;
- typedef const CHECK_UPDATE_SHM_RETVAL *LPCCHECK_UPDATE_SHM_RETVAL;
- /////////////////////////////////////////////////////////////////////////////
- // logvar.h - Declarations:
- class CLoggable
- {
- public:
- virtual void InitPath(CLoggable *pParent, const char *pszMemberName) = 0;
- virtual const char* GetPath(void) const = 0;
- virtual void InitTagID(CDataLogger &rdl) = 0;
- virtual void Sample(void) = 0;
- virtual void LogInterval(time_t nTimestamp, CDataLogger &rdl) = 0;
- virtual void LogValueChanged(time_t nTimestamp, CDataLogger &rdl, bool bStartup, bool bWriteNull) = 0;
- };
- /////////////////////////////////////////////////////////////////////////////
- class CLogVariable : public CLoggable
- {
- public:
- enum VT
- {
- VT_Invalid,
- VT_bool,
- VT_I1,
- VT_UI1,
- VT_I2,
- VT_UI2,
- VT_I4,
- VT_UI4,
- VT_I8,
- VT_UI8,
- VT_float,
- VT_double,
- VT_string
- };
- typedef union
- {
- void *pVoid;
- bool *pBool;
- signed char *pI1;
- unsigned char *pUI1;
- signed short *pI2;
- unsigned short *pUI2;
- signed int *pI4;
- unsigned int *pUI4;
- signed long long *pI8;
- unsigned long long *pUI8;
- float *pFloat;
- double *pDouble;
- }V_Ptr;
- typedef union
- {
- bool boolVal;
- signed char I1Val;
- unsigned char UI1Val;
- signed short I2Val;
- unsigned short UI2Val;
- signed int I4Val;
- unsigned int UI4Val;
- signed long long I8Val;
- unsigned long long UI8Val;
- float FloatVal;
- double DoubleVal;
- }V_Val;
- public:
- CLogVariable(LogTypes lt, void *pData, bool *pbLogCond, const std::type_info &rti, HSHM hShm, const char *pszName, int nIndex, CLoggable *pParent);
- CLogVariable(LogTypes lt, void *pData, void *pBase, size_t nCvOffset, unsigned int nCvBitNr, const std::type_info &rti, HSHM hShm, const char *pszName, int nIndex, CLoggable *pParent);
- virtual ~CLogVariable(void);
- public:
- virtual void InitPath(CLoggable *pParent, const char *pszMemberName);
- virtual const char* GetPath(void) const {
- return m_pszPath;}
- virtual void InitTagID(CDataLogger &rdl);
- virtual void Sample(void);
- virtual void LogInterval(time_t nTimestamp, CDataLogger &rdl);
- virtual void LogValueChanged(time_t nTimestamp, CDataLogger &rdl, bool bStartup, bool bWriteNull);
- private:
- void Lock(void);
- void Unlock(void);
- bool CanLog(bool fLock);
- private:
- LogTypes m_lt;
- bool *m_pbLogCond;
- bool m_bOldLogCond;
- std::string m_name;
- std::string m_path;
- const char *m_pszPath;
- int m_nIndex;
- enum VT m_vt;
- volatile V_Ptr m_data;
- V_Val m_cache;
- double m_fLastSample;
- double m_fSamples;
- double m_fMin;
- double m_fMax;
- HSHM m_hShm;
- CLoggable *m_pParent;
- unsigned long long m_nUpdates;
- unsigned long m_nTagID;
- unsigned int m_nSampleCount;
- bool m_bIsIntervalLog;
- bool m_bIsCondLog;
- uint8_t *m_pnCvByte;
- uint8_t m_nCvMask;
- bool m_bCvIsBit;
- bool m_bIsDbPersistant;
- };
- /////////////////////////////////////////////////////////////////////////////
- class CLogBitVariable : public CLoggable
- {
- public:
- CLogBitVariable(LogTypes lt, void *pData, size_t nOffset, unsigned int nBitNr, bool *pbLogCond, HSHM hShm, const char *pszName, CLoggable *pParent);
- CLogBitVariable(LogTypes lt, void *pData, size_t nOffset, unsigned int nBitNr, size_t nCvOffset, unsigned int nCvBitNr, HSHM hShm, const char *pszName, CLoggable *pParent);
- virtual ~CLogBitVariable(void);
- public:
- virtual void InitPath(CLoggable *pParent, const char *pszMemberName);
- virtual const char* GetPath(void) const {
- return m_pszPath;}
- virtual void InitTagID(CDataLogger &rdl);
- virtual void Sample(void);
- virtual void LogInterval(time_t nTimestamp, CDataLogger &rdl);
- virtual void LogValueChanged(time_t nTimestamp, CDataLogger &rdl, bool bStartup, bool bWriteNull);
- private:
- void Lock(void);
- void Unlock(void);
- bool CanLog(bool fLock);
- private:
- LogTypes m_lt;
- bool *m_pbLogCond;
- bool m_bOldLogCond;
- std::string m_name;
- std::string m_path;
- const char *m_pszPath;
- bool m_cacheVal;
- double m_fLastSample;
- double m_fSamples;
- double m_fMin;
- double m_fMax;
- HSHM m_hShm;
- CLoggable *m_pParent;
- unsigned long long m_nUpdates;
- unsigned long m_nTagID;
- unsigned int m_nSampleCount;
- bool m_bIsIntervalLog;
- bool m_bIsCondLog;
- uint8_t *m_pnByte;
- uint8_t m_nMask;
- uint8_t *m_pnCvByte;
- uint8_t m_nCvMask;
- bool m_bCvIsBit;
- bool m_bIsDbPersistant;
- };
- /////////////////////////////////////////////////////////////////////////////
- #endif // !defined(AGD_LOGVAR_H__ED3E1EC3_3899_4602_A824_5B7A58880AAC__INCLUDED_)
|