123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- #ifndef _SAPCOUNTER_H_
- #define _SAPCOUNTER_H_
- // SapCounter.h : header file
- //
- #include "SapClassBasicDef.h"
- // Forward declarations
- class SAPCLASSBASIC_CLASS SapCounterCallbackInfo;
- typedef void (*SapCounterCallback)(SapCounterCallbackInfo *);
- //
- // SapCounter class declaration
- //
- class SAPCLASSBASIC_CLASS SapCounter : public SapManager
- {
- public:
- // Base units
- typedef int BaseUnits;
- enum _BaseUnits
- {
- UnitsTime = CORCOUNTER_VAL_BASE_UNITS_TIME,
- UnitsHSync = CORCOUNTER_VAL_BASE_UNITS_HS,
- UnitsVSync = CORCOUNTER_VAL_BASE_UNITS_VS,
- UnitsExternal = CORCOUNTER_VAL_BASE_UNITS_EXTERNAL
- };
- // Counter detection types
- typedef int DetectType;
- enum _DetectType
- {
- DetectRisingEdge = CORCOUNTER_VAL_RISING_EDGE,
- DetectFallingEdge = CORCOUNTER_VAL_FALLING_EDGE
- };
- // Counter direction types
- typedef int Direction;
- enum _Direction
- {
- DirectionUp = CORCOUNTER_VAL_DIRECTION_UP,
- DirectionDown = CORCOUNTER_VAL_DIRECTION_DOWN
- };
- // Event types
- typedef int EventType;
- enum _EventType
- {
- EventNone = 0,
- EventElapsedTime = CORCOUNTER_VAL_EVENT_TYPE_ELAPSED_TIME
- };
- public:
- // Constructor/Destructor
- SapCounter(SapLocation loc = SapLocation::ServerSystem, SapCounterCallback pCallback = NULL, void *pContext = NULL);
- SapCounter(const SapCounter &counter);
- virtual ~SapCounter();
- SapCounter &operator=(const SapCounter &counter);
- // Module create/destroy
- virtual BOOL Create();
- virtual BOOL Destroy();
- // Access to implementation
- CORHANDLE GetHandle() const { return m_hCounter; }
- SapLocation GetLocation() const { return m_Location; }
- SapCounterCallback GetCallback() const { return m_pCallback; }
- void *GetContext() const { return m_pContext; }
- BaseUnits GetBaseUnits() const { return m_BaseUnits; }
- DetectType GetDetectType() const { return m_DetectType; }
- Direction GetDirection() const { return m_Direction; }
- virtual BOOL GetCount(int *pCount);
- virtual BOOL SetBaseUnits(BaseUnits baseUnits);
- virtual BOOL SetDetectType(DetectType detectType);
- virtual BOOL SetDirection(Direction direction);
- virtual BOOL SetCallbackInfo(SapCounterCallback pCallback, void *pContext = NULL);
- virtual BOOL GetCapability(int cap, void *pValue);
- virtual BOOL GetParameter(int param, void *pValue);
- virtual BOOL SetParameter(int param, int value);
- virtual BOOL SetParameter(int param, void *pValue);
- virtual BOOL Start();
- virtual BOOL Stop();
- // Callback management
- virtual BOOL EnableCallback(EventType eventType, int elapsedTime);
- virtual BOOL DisableCallback();
- protected:
- // Utility methods
- void Construct(SapLocation loc, SapCounterCallback pCallback, void *pContext);
- // Callback management
- static SAPSTATUS CounterCallback(void *context, UINT32 eventType, UINT32 eventCount);
- protected:
- SapLocation m_Location;
- CORCOUNTER m_hCounter;
- // Parameters
- BaseUnits m_BaseUnits;
- DetectType m_DetectType;
- Direction m_Direction;
- // Callback management
- SapCounterCallback m_pCallback; // Application callback function
- void *m_pContext; // Application context
- BOOL m_IsCallbackActive; // Callback status
- };
- //
- // SapCounterCallbackInfo class declaration
- //
- class SAPCLASSBASIC_CLASS SapCounterCallbackInfo
- {
- public:
- SapCounterCallbackInfo(SapCounter *pCounter, void *context, SapCounter::EventType eventType, int eventCount)
- { m_pCounter = pCounter; m_Context = context; m_EventType = eventType; m_EventCount = eventCount; }
- ~SapCounterCallbackInfo() {}
- SapCounter *GetCounter() const { return m_pCounter; }
- void *GetContext() const { return m_Context; }
- SapCounter::EventType GetEventType() const { return m_EventType; }
- int GetEventCount() const { return m_EventCount; }
- protected:
- SapCounter *m_pCounter;
- void *m_Context;
- SapCounter::EventType m_EventType;
- int m_EventCount;
- };
- #endif // _SAPCOUNTER_H_
|