#ifndef _MOD_HSPSCANNER_H_ #define _MOD_HSPSCANNER_H_ #pragma once #ifndef _WIN32 #include "modVer.h" #include "SpTest.h" #include "DevEntityCommBase.hpp" #endif //NOT _WIN32 #include "HSPScannerFSM.h" using namespace HSPScanner; class CHSPScannerEntity; class CHSPScannerServerSession: public HSPScannerService_ServerSessionBase { public: CHSPScannerServerSession(CHSPScannerEntity *pEntity):m_pEntity(pEntity){} virtual ~CHSPScannerServerSession(){} virtual void Handle_StartPreview(SpReqAnsContext::Pointer ctx); virtual void Handle_CancelPreview(SpReqAnsContext::Pointer ctx); virtual void Handle_ScanImage(SpReqAnsContext::Pointer ctx); virtual void Handle_ScanImageEx(SpReqAnsContext::Pointer ctx); virtual void Handle_SetProperty(SpReqAnsContext::Pointer ctx); virtual void Handle_SetWinPos(SpReqAnsContext::Pointer ctx); virtual void Handle_ShowProperty(SpReqAnsContext::Pointer ctx); virtual void Handle_GetDevStatus(SpReqAnsContext::Pointer ctx); virtual void Handle_GetDevInfo(SpReqAnsContext::Pointer ctx); virtual void Handle_Exit(SpOnewayCallContext::Pointer ctx); virtual void Handle_StartPreviewJS(SpReqAnsContext::Pointer ctx); virtual void Handle_CancelPreviewJS(SpReqAnsContext::Pointer ctx); virtual void Handle_ScanImageJS(SpReqAnsContext::Pointer ctx); virtual void Handle_SetParamJS(SpReqAnsContext::Pointer ctx); private: CHSPScannerEntity *m_pEntity; }; class CHSPScannerEntity : public CDevAdptEntityBase, public ISysVarListener { public: CHSPScannerEntity() {} virtual ~CHSPScannerEntity() {} virtual const char *GetEntityName() const { return "HSPScanner"; } #ifndef _WIN32 const char* GetEntityVersion() const { return MODULE_VERSION_FULL; } ON_ENTITYT_TEST() #endif //NOT _WIN32 virtual CServerSessionBase* OnNewSession(const char* , const char * ) { return new CHSPScannerServerSession(this); } virtual void OnPreStart(CAutoArray strArgs, CSmartPointer pTransactionContext) { ErrorCodeEnum erroCode = m_fsm.Init(this); GetFunction()->RegistSysVarEvent("UIState", this); pTransactionContext->SendAnswer(erroCode); } virtual void OnStarted() { } virtual void OnPrePause(CSmartPointer pTransactionContext) { ErrorCodeEnum ec = Error_Succeed; pTransactionContext->SendAnswer(ec); } virtual void OnPreContinue(CSmartPointer pTransactionContext) { pTransactionContext->SendAnswer(Error_Succeed); } virtual void OnPreClose(EntityCloseCauseEnum eCloseCause, CSmartPointer pTransactionContext) { ErrorCodeEnum erroCode = m_fsm.OnExit(); pTransactionContext->SendAnswer(erroCode); } virtual void OnSysVarEvent(const char* pszKey, const char* pszValue, const char* pszOldValue, const char* pszEntityName); void Preview(SpReqAnsContext::Pointer ctx) { StartPreviewEvent* pEvent = new StartPreviewEvent(&m_fsm); pEvent->m_ctx = ctx; m_fsm.PostEventFIFO(pEvent); } void CancelPreview(SpReqAnsContext::Pointer ctx) { StopPreviewEvent* pEvent = new StopPreviewEvent(&m_fsm); pEvent->m_ctx = ctx; m_fsm.PostEventFIFO(pEvent); } void ScanImage(SpReqAnsContext::Pointer ctx) { ScanImageEvent* pEvent = new ScanImageEvent(&m_fsm); pEvent->m_ctx = ctx; m_fsm.PostEventFIFO(pEvent); } void ScanImageEx(SpReqAnsContext::Pointer ctx) { ScanImageExEvent* pEvent = new ScanImageExEvent(&m_fsm); pEvent->m_ctx = ctx; m_fsm.PostEventFIFO(pEvent); } void Exit(SpOnewayCallContext::Pointer ctx) { m_fsm.PostEventFIFO(new FSMEvent(USER_EVT_EXIT)); } void GetDevInfo(SpReqAnsContext::Pointer ctx) { m_fsm.GetDevInfo(ctx); } void GetDevStatus(SpReqAnsContext::Pointer ctx) { GetDevStatusEvent* pEvent = new GetDevStatusEvent(&m_fsm); pEvent->m_ctx = ctx; m_fsm.PostEventFIFO(pEvent); } void SetWinPos(SpReqAnsContext::Pointer ctx) { SetWinPosEvent* pEvent = new SetWinPosEvent(&m_fsm); pEvent->m_ctx = ctx; m_fsm.PostEventFIFO(pEvent); } void ShowProperty(SpReqAnsContext::Pointer ctx) { ShowPropertyEvent* pEvent = new ShowPropertyEvent(&m_fsm); pEvent->m_ctx = ctx; m_fsm.PostEventFIFO(pEvent); } void SetProperty(SpReqAnsContext::Pointer ctx) { SetPropertyEvent* pEvent = new SetPropertyEvent(&m_fsm); pEvent->m_ctx = ctx; m_fsm.PostEventFIFO(pEvent); } void StartPreviewJS(SpReqAnsContext::Pointer ctx) { JS::StartPreviewEvent* pEvent = new JS::StartPreviewEvent(&m_fsm); pEvent->m_ctx = ctx; m_fsm.PostEventFIFO(pEvent); } void CancelPreviewJS(SpReqAnsContext::Pointer ctx) { JS::CancelPreviewEvent* pEvent = new JS::CancelPreviewEvent(&m_fsm); pEvent->m_ctx = ctx; m_fsm.PostEventFIFO(pEvent); } void ScanImageJS(SpReqAnsContext::Pointer ctx) { JS::ScanImageEvent* pEvent = new JS::ScanImageEvent(&m_fsm); pEvent->m_ctx = ctx; m_fsm.PostEventFIFO(pEvent); } void SetParamJS(SpReqAnsContext::Pointer ctx) { JS::SetParamEvent* pEvent = new JS::SetParamEvent(&m_fsm); pEvent->m_ctx = ctx; m_fsm.PostEventFIFO(pEvent); } void OnSelfTest(EntityTestEnum eTestType, CSmartPointer pTransactionContext) { m_fsm.SelfTest(eTestType, pTransactionContext); } virtual bool IsService() const { return true; } virtual bool IsMultiThread() const { return true; }; private: CHSPScannerFSM m_fsm; }; #endif