#ifndef __MOD_GPIO_H #define __MOD_GPIO_H #include "modVer.h" #include "SpBase.h" #include "Gpio_server_g.h" #include "EventCode.h" #include "Gpio_UserErrorCode.h" #include "CommEntityUtil.hpp" #include "GpioFSM.h" using namespace std; using namespace Gpio; class CGpioEntity; class CGpioServiceSession : public GpioService_ServerSessionBase { public: CGpioServiceSession(CGpioEntity* pEntity):m_pEntity(pEntity){}; virtual void Handle_GetDevInfo(SpReqAnsContext::Pointer ctx); virtual void Handle_Exit(SpOnewayCallContext::Pointer ctx); private: CGpioEntity* m_pEntity; }; class CGpioEntity : public CDevAdptEntityBase, public ILogListener, ISysVarListener { public: CGpioEntity() { } virtual ~CGpioEntity(){} virtual const char* GetEntityName()const {return "Gpio";} const char* GetEntityVersion() const { return MODULE_VERSION_FULL; } virtual void OnPreStart(CAutoArray strArgs, CSmartPointer pTransactionContext); virtual void OnPrePause(CSmartPointer pTransactionContext) { pTransactionContext->SendAnswer(Error_Succeed); } virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer pTransactionContext) { pTransactionContext->SendAnswer(Error_Succeed); } virtual CServerSessionBase *OnNewSession(const char* /*pszRemoteEntityName*/, const char * pszClass) { return new CGpioServiceSession(this); } virtual bool IsService()const { return true; } virtual bool IsMultiThread()const { return false; } virtual void OnSysVarEvent(const char* pszKey, const char* pszValue, const char* pszOldValue, const char* pszEntityName); void GetDevInfo(SpReqAnsContext::Pointer ctx) { m_fsm.GetDevInfo(ctx); } void Exit(SpOnewayCallContext::Pointer ctx) { m_fsm.Exit(ctx); } virtual void OnLog(const CAutoArray &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel, const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID, const CAutoArray &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage, const linkContext& pLinkInfo); void OnSelfTest(EntityTestEnum eTestType, CSmartPointer pTransactionContext) { m_fsm.SelfTest(eTestType, pTransactionContext); } public: CUUID m_uuidHealth, m_uuidCR, m_uuidIDC, m_uuidFP, m_uuidKB, m_uuidCA, m_uuidCC, m_uuidCS; CUUID m_uuidHSPscanner; private: CGPIOFSM m_fsm; }; #endif //__MOD_GPIO_H