Browse Source

Z991239-890 #comment feature: 迁移 HSPSCanner 完成

gifur 5 years ago
parent
commit
b3cb78ff02

+ 19 - 0
Module/mod_HSPScanner/CMakeLists.txt

@@ -0,0 +1,19 @@
+define_module("HSPScanner")
+
+file(GLOB ${MODULE_PREFIX}_SRCS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
+    "${CMAKE_CURRENT_SOURCE_DIR}/*.h" "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp"
+    "${CMAKE_CURRENT_SOURCE_DIR}/*.hpp")
+
+set(MOD_VERSION_STRING "0.0.1-dev1")
+add_module_libraries(${MODULE_PREFIX} ${MODULE_NAME} ${MOD_VERSION_STRING})
+
+target_include_directories(${MODULE_NAME} PRIVATE
+	${DevHeadPath}
+)
+
+set(${MODULE_PREFIX}_LIBS ${MODULE_BASE_LIBS})
+target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})  
+
+target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
+
+deploy_module(${MODULE_PREFIX} ${MODULE_NAME})

+ 3 - 0
Module/mod_HSPScanner/ChangeLog

@@ -0,0 +1,3 @@
+
+## V0.0.1-dev1
+* 首次适配跨平台版本(廖桂发,2020年10月12日)

+ 111 - 292
Module/mod_HSPScanner/HSPScannerFSM.cpp

@@ -1,8 +1,10 @@
-#include "StdAfx.h"
+#include "stdafx.h"
 #include "HSPScannerFSM.h"
 #include "EventCode.h"
 #include "GetDevInfoHelper.h"
 #include "CommDevEntityErrorCode.h"
+#include "fileutil.h"
+
 #define RESET_TIMER_ID 1
 #define CHECK_CONNECT_TIMER_ID 2
 const int MILLISECOND_TO_RESET = 30 * 1000;
@@ -73,7 +75,6 @@ const char* EvtTypeToString(int nEvtType)
 		return "Unknown EventType";
 		break;
 	}
-	return "Unknown EventType";
 }
 
 const char* ParamValToString(int nParamVal)
@@ -115,17 +116,12 @@ CHSPScannerFSM::CHSPScannerFSM(void)
 	:
 	m_version(0),
 	m_batch(0),
-	m_hVendorDll(NULL),
-	CreateDevComponent(NULL),
-	ReleaseDevComponent(NULL),
-	m_pHSPS(NULL),
 	m_ecSelfTest(Error_Succeed),
 	m_dwErroCode(0),
 	m_bOperating(FALSE),
 	m_nTickTimes(0),
 	m_nFatalTimes(0),
 	m_nSrcState(s0),
-	m_csDllName(""),
 	m_eDevStatus(DEVICE_STATUS_NOT_READY),
 	m_desiredAction(USER_EVT_QUIT),
 	m_bOpened(false)
@@ -135,109 +131,72 @@ CHSPScannerFSM::CHSPScannerFSM(void)
 
 CHSPScannerFSM::~CHSPScannerFSM(void)
 {
-	SAFE_FREE_LIBRARY(m_hVendorDll);
+
 }
 
 ErrorCodeEnum CHSPScannerFSM::OnInit()
 {
 	LOG_FUNCTION();
-	/*------2020-02-27------*/
-	//modify by LZM
-	VendorLogControler(this,"HSPScanner");
-	/*---------------------*/
+	GET_DEV_ENTITY_BASE_POINTER()->InitializeVendorLogSwitch();
 	ErrorCodeEnum erroCode = Error_Succeed;
 	Dbg("Source Code complied at: %s %s", __DATE__, __TIME__);
 
 	CSimpleStringA csDllName(true);
-	erroCode = FetchVendorDllName(csDllName);
-	if(FAILURED(erroCode))
-	{
+    auto pEntity = GET_DEV_ENTITY_BASE_POINTER();
+    auto result = pEntity->ExtractVendorLibFullPath(csDllName);
+	if(FAILURED(result)) {
 		Dbg("Fetch Vendor dllName failed %s.", (LPCTSTR)csDllName);
 		goto FAIL;
 	}
+	HARDWARE_ENTITY_SET_VENDOR_NAME(m_entCode, pEntity->vendorLibInfo.strVendor);
 	Dbg("VendorDllName: %s.", (LPCTSTR)csDllName);
-	erroCode = LoadDllAndGetAddress((const char*)csDllName);
-	if(FAILURED(erroCode))
-	{
-		if(!IsDevFurnished()) {
-			Dbg("%s - GLE=%u", (LPCTSTR)m_csDllName, GetLastError());
-			PostEventLIFO(new FSMEvent(USER_EVT_NOCFG));
-			return Error_Succeed;
-		}
-		goto FAIL;
-	}
-
-	Dbg("Get functions' addresses suc.");
-	bool bOpenFlag = false;
-	bool bCreateDevCom = false;
-	int initCount=0, initCountMax = 3;
-	int MilliSleepSec = 1000;
-	do 
-	{
-		if(!bCreateDevCom)
-		{
-			if(CreateDevComponent((DeviceBaseClass*&)m_pHSPS) != Error_Succeed)
-			{
-				LogError(Severity_High, Error_NotInit, UpdateDEC(MEC_DEV_OBJECT_CREATE_FAILED), "Create HSPScanner module failed.");
-				initCount++;
-				m_pHSPS = NULL;
-				if(initCount >= initCountMax)
-				{
-					//todo: SetCustLastErrorCode();
-					SAFE_FREE_LIBRARY(m_hVendorDll);
-					goto FAIL;
-				}
-				continue;
-			}
-			bCreateDevCom = true;
-			LOG_TRACE("Create HSPScanner module suc.");
-		}
-
-		erroCode = m_pHSPS->DevOpen();
-		if(FAILURED(erroCode))
-		{
-			LogErrMsg("HSPScanner open", erroCode, MEC_DEVAPI_HSPSCANNER_DevOpen, TRUE);
-			//LogWarn(Severity_Middle,Error_NotInit,LOG_ERR_HSPS_DEVOPEN_FAILED,"HSPScanner open failed.");
-			//GetAndDbgDevError();
-			SAFE_FREE_LIBRARY(m_hVendorDll);
-			goto FAIL;
-		}
-		m_bOpened = true;
+    result = m_hDevHelper.LoadUp(csDllName);
+    if (result != Error_Succeed) {
+        if (!IsDevFurnished()) {
+#ifdef RVC_OS_WIN
+            Dbg("%s - GLE=%u", (LPCTSTR)pEntity->GetVendorLibName(), GetLastError());
+#endif
+            PostEventLIFO(new FSMEvent(USER_EVT_NOCFG));
+            return Error_Succeed;
+        }
+        goto FAIL;
+    }
 
-	} while (0);
+	result = m_hDevHelper->DevOpen();
+    if (FAILURED(result)) {
+		LOG_WATCHDOG_ERROR_MSG_MACRO(result, DevOpen);
+        goto FAIL;
+    }
+    m_bOpened = true;
 
-	if(ISSUCCEEDED(erroCode))
+	if(ISSUCCEEDED(result))
 	{
 		m_nRecX = 1280;
 		m_nRecY = 0;
 		m_nRecW = 1920;
-		ErrorCodeEnum ecInit = m_pHSPS->SetViewPos(m_nRecX, m_nRecY, m_nRecW);
-		ErrorCodeEnum ecInitScan = m_pHSPS->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_FULL);
-		ErrorCodeEnum ecInitRotate = m_pHSPS->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_NOANGLE);
-		ErrorCodeEnum ecInitColor = m_pHSPS->SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_FULL);
-		Dbg("ViewPos: %d, Scan: %d, rotate: %d, color: %d.", 
-			ecInit, ecInitScan, ecInitRotate, ecInitColor);
+		ErrorCodeEnum ecInit = m_hDevHelper->SetViewPos(m_nRecX, m_nRecY, m_nRecW);
+		ErrorCodeEnum ecInitScan = m_hDevHelper->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_FULL);
+		ErrorCodeEnum ecInitRotate = m_hDevHelper->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_NOANGLE);
+		ErrorCodeEnum ecInitColor = m_hDevHelper->SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_FULL);
+		Dbg("ViewPos: %s, Scan: %s, rotate: %s, color: %s.",  SpStrError(ecInit), SpStrError(ecInitScan), SpStrError(ecInitRotate), SpStrError(ecInitColor));
 	}
 
 	m_eDevStatus = DEVICE_STATUS_NORMAL;
-	return erroCode;
+	return result;
 
 FAIL:
+
 	PostEventLIFO(new FSMEvent(USER_EVT_GOTOHELL));
 	return Error_Succeed;
 }
 
 ErrorCodeEnum CHSPScannerFSM::OnExit()
 {
-	if(m_pHSPS)
+	if(m_hDevHelper)
 	{
-		ErrorCodeEnum erroCode = m_pHSPS->DevClose();
-		LOG_TRACE("Invoke 'DevClose' returned %d(0x%x).", erroCode, erroCode);
-		//if(FAILURED(erroCode))
-		//	GetAndDbgDevError();
-		erroCode = ReleaseDevComponent((DeviceBaseClass*&)m_pHSPS);
-		LOG_TRACE("Invoke 'ReleaseDevComponent' returned %d(0x%x).", erroCode, erroCode);
-		m_pHSPS = NULL;
+        ErrorCodeEnum errCode = Error_Succeed;
+        m_hDevHelper.TearDown();
+        return errCode;
 	}
 	return Error_Succeed;
 }
@@ -592,12 +551,12 @@ unsigned int CHSPScannerFSM::s3_on_event(FSMEvent* e)
 		break;
 	case USER_EVT_STOPPREVIEW:
 		{
-			if(m_pHSPS)
+			if(m_hDevHelper)
 			{
 				CancelTimer(RESET_TIMER_ID);
 				StopPreviewEvent* pEvt = dynamic_cast<StopPreviewEvent*>(e);
 				HspsDevStatus status = {0};
-				ErrorCodeEnum erroCode = m_pHSPS->GetDevStatus(status);
+				ErrorCodeEnum erroCode = m_hDevHelper->GetDevStatus(status);
 				if(status.inPreview == 1)
 				{
 					StopPreviewTask* pTask = new StopPreviewTask(this);
@@ -607,7 +566,7 @@ unsigned int CHSPScannerFSM::s3_on_event(FSMEvent* e)
 				else if(status.inShow == 1)
 				{
 					Dbg("Stay in show but not in preview status, thus try to hide it");
-					erroCode = m_pHSPS->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE);
+					erroCode = m_hDevHelper->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE);
 
 					pEvt->m_ctx->Answer(erroCode);
 
@@ -637,7 +596,7 @@ unsigned int CHSPScannerFSM::s3_on_event(FSMEvent* e)
 		break;
 	case USER_EVT_RESET:
 		{
-			ErrorCodeEnum erroCode = m_pHSPS->Reset();
+			ErrorCodeEnum erroCode = m_hDevHelper->Reset();
 			Dbg("Reset operation returned 0x%x.", erroCode);
 			if(FAILURED(erroCode))
 			{
@@ -647,7 +606,7 @@ unsigned int CHSPScannerFSM::s3_on_event(FSMEvent* e)
 			}
 			else
 			{
-				ErrorCodeEnum eXYW = m_pHSPS->SetViewPos(m_nRecX, m_nRecY, m_nRecW);
+				ErrorCodeEnum eXYW = m_hDevHelper->SetViewPos(m_nRecX, m_nRecY, m_nRecW);
 				if(FAILURED(eXYW))
 				{
 					LogErrMsg("s3_on_event::SetViewPos", erroCode, MEC_DEVAPI_HSPSCANNER_SetViewPos, TRUE);
@@ -659,21 +618,21 @@ unsigned int CHSPScannerFSM::s3_on_event(FSMEvent* e)
 				}
 				HspsDevStatus status = {0};
 				CSimpleStringA strFuncName(true);
-				erroCode = m_pHSPS->GetDevStatus(status);
+				erroCode = m_hDevHelper->GetDevStatus(status);
 				if(status.inPreview == 1 && status.inShow == 1)
 				{
 					if(m_desiredAction == USER_EVT_STOPPREVIEW)
 					{
-						erroCode = m_pHSPS->SetPreview(0);
+						erroCode = m_hDevHelper->SetPreview(0);
 						strFuncName = "SetPreview";
 						UpdateDEC(MEC_DEVAPI_HSPSCANNER_SetPreview_Close);
 						{
 							HspsDevStatus retryStatus = {0};
-							m_pHSPS->GetDevStatus(retryStatus);
+							m_hDevHelper->GetDevStatus(retryStatus);
 							if(retryStatus.inPreview == 1) 
 							{
 								Dbg("Still preview ?");
-								erroCode = m_pHSPS->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE);
+								erroCode = m_hDevHelper->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE);
 								UpdateDEC(MEC_DEVAPI_HSPSCANNER_SetParam);
 								strFuncName = "SetParam";
 							}
@@ -681,7 +640,7 @@ unsigned int CHSPScannerFSM::s3_on_event(FSMEvent* e)
 					}
 					else if(m_desiredAction == USER_EVT_HIDEPREVIEW)
 					{
-						erroCode = m_pHSPS->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE);
+						erroCode = m_hDevHelper->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE);
 						UpdateDEC(MEC_DEVAPI_HSPSCANNER_SetParam);
 						strFuncName = "SetParam";
 					}
@@ -829,7 +788,7 @@ unsigned int CHSPScannerFSM::s5_on_event(FSMEvent* e)
 			if(e->param1 == CHECK_CONNECT_TIMER_ID)
 			{
 				HspsDevStatus status = {0};
-				ErrorCodeEnum eResult = m_pHSPS->GetDevStatus(status);
+				ErrorCodeEnum eResult = m_hDevHelper->GetDevStatus(status);
 				if(ISSUCCEEDED(eResult))
 				{
 					if(status.isConnected == 0)
@@ -1020,10 +979,10 @@ void CHSPScannerFSM::s7_on_entry()
 
 void CHSPScannerFSM::s7_on_exit()
 {
-	if(m_pHSPS)
+	if(m_hDevHelper)
 	{
 		HspsDevStatus status = {0};
-		ErrorCodeEnum erroCode = m_pHSPS->GetDevStatus(status);
+		ErrorCodeEnum erroCode = m_hDevHelper->GetDevStatus(status);
 		Dbg("Get status(%d): Connected(%d), Preview(%d), Show(%d).",
 			erroCode, status.isConnected, status.inPreview, status.inShow);
 	}
@@ -1097,16 +1056,16 @@ int CHSPScannerFSM::StartPreview(SpReqAnsContext<HSPScannerService_StartPreview_
 	}
 
 	HspsDevStatus status = {0};
-	erroCode = m_pHSPS->GetDevStatus(status);
+	erroCode = m_hDevHelper->GetDevStatus(status);
 	if(ISSUCCEEDED(erroCode) && status.inPreview)
 	{// 用于s6状态 [Josephus in 9:33:48 2016/11/22]
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_SHOW);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_SHOW);
 		Dbg("SetPreview changeTo SetVisible and returned 0x%x.", erroCode);
 	}
 	else if(ISSUCCEEDED(erroCode))
 	{
 		Dbg("Start to SetPreview(1).");
-		erroCode = m_pHSPS->SetPreview(1);
+		erroCode = m_hDevHelper->SetPreview(1);
 		Dbg("End to SetPreview(1) returned %d(0x%x).", erroCode, erroCode);
 		if(FAILURED(erroCode)) {
 			LogErrMsg("StartPreview::SetPreview(1)", erroCode, MEC_DEVAPI_HSPSCANNER_SetPreview_Open, TRUE);
@@ -1137,7 +1096,7 @@ int CHSPScannerFSM::StopPreview(SpReqAnsContext<HSPScannerService_CancelPreview_
 	if(ctx->Req.bOnlyHide)
 	{
 		Dbg("Start to SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE).");
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE);
 		Dbg("End to SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE) returned %d(0x%x).", erroCode, erroCode);
 		if(ISSUCCEEDED(erroCode))
 		{
@@ -1152,7 +1111,7 @@ int CHSPScannerFSM::StopPreview(SpReqAnsContext<HSPScannerService_CancelPreview_
 	else
 	{
 		Dbg("Start to SetPreview(0).");
-		erroCode = m_pHSPS->SetPreview(0);
+		erroCode = m_hDevHelper->SetPreview(0);
 		Dbg("End to SetPreview(0) reuturned %d(0x%x).", erroCode, erroCode);
 		if(ISSUCCEEDED(erroCode))
 		{
@@ -1186,7 +1145,7 @@ int CHSPScannerFSM::ScanImage(SpReqAnsContext<HSPScannerService_ScanImage_Req,
 		return 1;
 	}
 	
-	erroCode = m_pHSPS->ScanImage((LPCTSTR)csImageFile);
+	erroCode = m_hDevHelper->ScanImage((LPCTSTR)csImageFile);
 	if(ISSUCCEEDED(erroCode))
 	{
 		Dbg("ScanImage suc.");
@@ -1226,7 +1185,7 @@ int CHSPScannerFSM::ScanImage(SpReqAnsContext<HSPScannerService_ScanImage_Req,
 			// Additional ChangeTo Hide --Josephus at 11:32:29 2016/11/22
 			if(true/*TODO: */)
 			{
-				ErrorCodeEnum eHide = m_pHSPS->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE);
+				ErrorCodeEnum eHide = m_hDevHelper->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE);
 				Dbg("SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE) returned 0x%x(%d).", eHide, eHide);
 				if(ISSUCCEEDED(eHide))
 				{
@@ -1281,7 +1240,7 @@ int CHSPScannerFSM::ScanImageEx(SpReqAnsContext<HSPScannerService_ScanImageEx_Re
 	BYTE* pBtImage = NULL;
 #endif
 	int nOldLen = len;
-	erroCode = m_pHSPS->ScanImageEx(pBtImage, len, (LPCTSTR)csImageFile);
+	erroCode = m_hDevHelper->ScanImageEx(pBtImage, len, (LPCTSTR)csImageFile);
 	if(erroCode == Error_TooSmallBuffer)
 	{
 		Dbg("ScanImageEx buffer is too small.[%d][%d]", nOldLen, len);
@@ -1300,7 +1259,7 @@ int CHSPScannerFSM::ScanImageEx(SpReqAnsContext<HSPScannerService_ScanImageEx_Re
 			return 3;
 		}
 		memset((void*)pBtImage, 0, len+1);
-		erroCode = m_pHSPS->ScanImageEx(pBtImage, len, (LPCTSTR)csImageFile);
+		erroCode = m_hDevHelper->ScanImageEx(pBtImage, len, (LPCTSTR)csImageFile);
 	}
 
 	if(ISSUCCEEDED(erroCode))
@@ -1354,7 +1313,7 @@ int CHSPScannerFSM::ScanImageEx(SpReqAnsContext<HSPScannerService_ScanImageEx_Re
 		// Additional ChangeTo Hide --Josephus at 11:29:03 2016/11/22
 		if(ISSUCCEEDED(erroCode))
 		{
-			ErrorCodeEnum eHide = m_pHSPS->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE);
+			ErrorCodeEnum eHide = m_hDevHelper->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE);
 			Dbg("SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE) returned 0x%x(%d).", eHide, eHide);
 			if(ISSUCCEEDED(eHide))
 			{
@@ -1388,18 +1347,16 @@ int CHSPScannerFSM::ShowProperty(SpReqAnsContext<HSPScannerService_ShowProperty_
 	ErrorCodeEnum erroCode = Error_Succeed;
 	// Return ahead. [Josephus in 15:24:15 2016/11/21]
 	Dbg("Drop the preview dialog from vice minitor to main minitor.");
-	ErrorCodeEnum ePos = m_pHSPS->SetViewPos(730, 100, 540);
+	ErrorCodeEnum ePos = m_hDevHelper->SetViewPos(730, 100, 540);
 	Dbg("Show Property returned context ahead closing. %d", ePos);
 	ctx->Answer(erroCode);
 	
-	DWORD dwStart = GetTickCount();
 	Dbg("Start to show Property dialog...");
-	erroCode = m_pHSPS->SetProperty();
-	DWORD dwEnd = GetTickCount();
-	Dbg("End to show Property dialog! used: %ums.", dwEnd - dwStart);
+	erroCode = m_hDevHelper->SetProperty();
+	Dbg("End to show Property dialog!");
 	if(ISSUCCEEDED(ePos))
 	{
-		erroCode = m_pHSPS->SetViewPos(m_nRecX, m_nRecY, m_nRecW);
+		erroCode = m_hDevHelper->SetViewPos(m_nRecX, m_nRecY, m_nRecW);
 		Dbg("Recover context position. %d", ePos);
 	}
 	return 0;
@@ -1414,12 +1371,12 @@ int CHSPScannerFSM::SetProperty(SpReqAnsContext<HSPScannerService_SetProperty_Re
 	//////////////////////////////////////////////////////////////////////////
 	if(ctx->Req.colorType == 1)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_FULL);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_FULL);
 		Dbg("SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_FULL) returned %d.", erroCode);
 	}
 	else if(ctx->Req.colorType == 2)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_GREY);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_GREY);
 		Dbg("SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_GREY) returned %d.", erroCode);
 	}
 	if(FAILURED(erroCode)) 
@@ -1432,22 +1389,22 @@ int CHSPScannerFSM::SetProperty(SpReqAnsContext<HSPScannerService_SetProperty_Re
 	//////////////////////////////////////////////////////////////////////////
 	if(ctx->Req.rotateType == 1)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_NOANGLE);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_NOANGLE);
 		Dbg("SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_NOANGLE) returned %d.", erroCode);
 	}
 	else if(ctx->Req.rotateType == 2)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_LEFT);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_LEFT);
 		Dbg("SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_LEFT) returned %d.", erroCode);
 	}
 	else if(ctx->Req.rotateType == 3)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_MIRROR);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_MIRROR);
 		Dbg("SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_MIRROR) returned %d.", erroCode);
 	}
 	else if(ctx->Req.rotateType == 4)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_RIGHT);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_RIGHT);
 		Dbg("SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_RIGHT) returned %d.", erroCode);
 	}
 	if(FAILURED(erroCode)) 
@@ -1460,17 +1417,17 @@ int CHSPScannerFSM::SetProperty(SpReqAnsContext<HSPScannerService_SetProperty_Re
 	//////////////////////////////////////////////////////////////////////////
 	if(ctx->Req.scanType == 1)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_FULL);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_FULL);
 		Dbg("SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_FULL) returned %d.", erroCode);
 	}
 	else if(ctx->Req.scanType == 2)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_A4);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_A4);
 		Dbg("SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_A4) returned %d.", erroCode);
 	}
 	else if(ctx->Req.scanType == 3)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_IDCARD);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_IDCARD);
 		Dbg("SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_IDCARD) returned %d.", erroCode);
 	}
 	if(FAILURED(erroCode)) 
@@ -1512,7 +1469,7 @@ int CHSPScannerFSM::SetWinPos(SpReqAnsContext<HSPScannerService_SetWinPos_Req,
 	{
 		Dbg("Start to SetViewPos x(%d), y(%d), w(%d), reserved(%d).", 
 			ctx->Req.pointX, ctx->Req.pointY, ctx->Req.nWidth, ctx->Req.reserved4);
-		erroCode = m_pHSPS->SetViewPos(ctx->Req.pointX, ctx->Req.pointY, ctx->Req.nWidth);
+		erroCode = m_hDevHelper->SetViewPos(ctx->Req.pointX, ctx->Req.pointY, ctx->Req.nWidth);
 		if(FAILURED(erroCode))
 		{
 			LogErrMsg("SetWinPos::SetViewPos", erroCode, MEC_DEVAPI_HSPSCANNER_SetViewPos, TRUE);
@@ -1530,7 +1487,7 @@ int CHSPScannerFSM::SetWinPos(SpReqAnsContext<HSPScannerService_SetWinPos_Req,
 	else
 	{
 		Dbg("Start to SetViewParam with param %d.", value);
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_VIEW, value);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_VIEW, value);
 		Dbg("End to SetViewParam returned 0x%x.", erroCode);
 		if(FAILURED(erroCode))
 		{
@@ -1548,7 +1505,7 @@ int CHSPScannerFSM::GetDevStatus(SpReqAnsContext<HSPScannerService_GetDevStatus_
 {
 	int nRes = 0;
 	HspsDevStatus status = {0};
-	ErrorCodeEnum erroCode = m_pHSPS->GetDevStatus(status);
+	ErrorCodeEnum erroCode = m_hDevHelper->GetDevStatus(status);
 	if(ISSUCCEEDED(erroCode))
 	{
 		Dbg("GetDevStatus suc.");
@@ -1572,7 +1529,7 @@ int CHSPScannerFSM::GetDevInfo(SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
 {
 	int nRes = 0;
 	DevCategoryInfo info = {0};
-	ErrorCodeEnum erroCode = m_pHSPS->GetDevCategory(info);
+	ErrorCodeEnum erroCode = m_hDevHelper->GetDevCategory(info);
 	if(ISSUCCEEDED(erroCode))
 	{
 		Dbg("GetDevCategory suc.");
@@ -1595,129 +1552,6 @@ int CHSPScannerFSM::GetDevInfo(SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
 	return nRes;
 }
 
-ErrorCodeEnum CHSPScannerFSM::FetchVendorDllName(CSimpleStringA& csDllPath)
-{
-	ErrorCodeEnum erroCode = Error_Unexpect;
-	CSmartPointer<IEntityFunction> spEntityFunction = GetEntityBase()->GetFunction();
-	CSmartPointer<IConfigInfo> spRootConfig;
-	erroCode = spEntityFunction->OpenConfig(Config_Root, spRootConfig);
-	m_csDllName = "";
-	if(ISSUCCEEDED(erroCode))
-	{
-		CSimpleStringA strSection = CSimpleStringA("Device.") + GetEntityBase()->GetEntityName();
-
-		csDllPath = GetEntityBase()->GetEntityName();
-		CSimpleStringA str;
-		spRootConfig->ReadConfigValue(strSection, "Vendor", str);
-		if(!str.IsNullOrEmpty())
-		{
-			csDllPath += ".";
-			csDllPath += str;
-		}
-		HARDWARE_ENTITY_SET_VENDOR_NAME(m_entCode, str);	
-		str.Clear();
-		spRootConfig->ReadConfigValue(strSection, "Version", str);
-		if(!str.IsNullOrEmpty())
-		{
-			csDllPath += ".";
-			csDllPath += str;
-			spRootConfig->ReadConfigValueInt(strSection, "Version", m_version);
-		}
-
-		str.Clear();
-		spRootConfig->ReadConfigValue(strSection, "Batch", str);
-		if(!str.IsNullOrEmpty())
-		{
-			csDllPath += ".";
-			csDllPath += str;
-			spRootConfig->ReadConfigValueInt(strSection, "Batch", m_batch);
-		}
-		m_csDllName = csDllPath;
-		CSimpleStringA strDepPath;
-		GetEntityBase()->GetFunction()->GetPath("Dep", strDepPath);
-		csDllPath = CSimpleStringA::Format("%s\\%s.dll", (LPCTSTR)strDepPath, (LPCTSTR)csDllPath);
-	
-		erroCode = Error_Succeed;
-	}
-	else
-	{
-		//TODO: SetCustLastErrorCode();
-	}
-	return erroCode;
-}
-
-ErrorCodeEnum CHSPScannerFSM::LoadDllAndGetAddress(const char* szDllName)
-{
-	ErrorCodeEnum erroCode = Error_Unexpect;
-	SAFE_FREE_LIBRARY(m_hVendorDll);
-	m_hVendorDll = LoadLibraryA(szDllName);
-	if (m_hVendorDll == NULL)
-	{
-		DWORD tmpError = GetLastError();
-		Dbg("LoadLibraryA[%s] failed with error %u.", szDllName, tmpError);
-		if(tmpError == 126)
-		{
-			Dbg("该问题是缺失某个DLL导致的错误。");
-		}
-		SetLastError(126);
-		LogError(Severity_High, Error_DevLoadFileFailed, UpdateDEC(MEC_DLL_LOAD_FAILED), "load library failed!");
-		return Error_DevLoadFileFailed;
-	}
-	if ((CreateDevComponent = (LpCreateDevCom)GetProcAddress(m_hVendorDll,
-		"CreateDevComponent")) == NULL)
-	{
-		Dbg("Get 'CreateDevComponent' Func address failed with code %d", GetLastError());
-		LogError(Severity_High, Error_DevLoadFileFailed, UpdateDEC(MEC_DEV_GET_CDC_ADDR_FAILED), "Get 'CreateDevComponent' Func address failed!");
-		return Error_DevLoadFileFailed;
-	}
-	if ((ReleaseDevComponent = (LpReleaseDevCom)GetProcAddress(m_hVendorDll,
-		"ReleaseDevComponent")) == NULL)
-	{
-		Dbg("Get 'ReleaseDevComponent' Func address failed with code %d", GetLastError());
-		LogError(Severity_High, Error_DevLoadFileFailed, UpdateDEC(MEC_DEV_GET_RDC_ADDR_FAILED), "Get 'ReleaseDevComponent' Func address failed!");
-		return Error_DevLoadFileFailed;
-	}
-
-	SetCustLastErrorCode();
-	return Error_Succeed;
-
-}
-
-//void CHSPScannerFSM::GetAndDbgDevError()
-//{
-//	if(m_pHSPS)
-//	{
-//		DevErrorInfo erroInfor = {0};
-//		if(ISSUCCEEDED(m_pHSPS->GetLastErr(erroInfor)))
-//		{
-//			Dbg("LastErrDesc: %s.", erroInfor.szErrMsg);
-//		}
-//		else
-//		{
-//			Dbg("GetLastErr failed.");
-//		}
-//	}
-//	return;
-//}
-
-void CHSPScannerFSM::LogErrMsg(const char *pMsgHead, ErrorCodeEnum eErrCode, DWORD defaultDevCode, BOOL bAlarm) 
-{
-	WORD wdErrCode = 0;
-	CSimpleStringA csErrMsg(true);
-	ErrorCodeEnum ec = DeviceBaseHelper::GetAndSplitDevErrInfo(m_pHSPS, csErrMsg, wdErrCode,
-		bAlarm ? NULL : pMsgHead);
-	if(ec == Error_Succeed && wdErrCode != 0) {
-		UpdateDEC(wdErrCode);
-	} else if(defaultDevCode != 0) {
-		UpdateDEC(defaultDevCode);
-	}
-	m_csAlarmMsg = CSimpleStringA::Format("%s failed EC= 0x%x : %s", pMsgHead, eErrCode, (LPCTSTR)csErrMsg);
-	if(bAlarm) {
-		LogWarn(Severity_High, eErrCode, AlarmDEC(), (LPCTSTR)m_csAlarmMsg);
-	}
-	return;
-}
-
 BOOL CHSPScannerFSM::GetCurImageName(CSimpleStringA& csImagName, bool bExt /*= false*/)
 {
 	//SYSTEMTIME st;
@@ -1749,28 +1583,20 @@ BOOL CHSPScannerFSM::DelAndGetNewFileName(CSimpleStringA& csfileName)
 	}
 	CSimpleStringA strPath, strAimPath;
 	ErrorCodeEnum erroCode = m_pEntity->GetFunction()->GetPath("Dep", strPath);
-	strAimPath = strPath + "\\" + fileName;
+	strAimPath = strPath + SPLIT_SLASH_STR + fileName;
 
 	// Add [Josephus in 17:04:27 2016/10/25]
 	csfileName = strAimPath;
-
-	WIN32_FIND_DATA  findData;
-	if(FindFirstFileA((LPCTSTR)strAimPath, &findData) != INVALID_HANDLE_VALUE)
-	{
-		if(DeleteFileA((LPCTSTR)strAimPath) != 0)
-		{
-			Dbg("DeleteFile(%s) suc.", (LPCTSTR)strAimPath);
-			return TRUE;
-		}
-		else
-		{
-			LogError(Severity_High, Error_Unexpect,UpdateDEC(MEC_CLEAR_RESOURCE_FAILED), CSimpleStringA::Format(
-				"DeleteFile(%s) failed LastError(%d).", (LPCTSTR)strAimPath, GetLastError()));
-			return FALSE;
-		}
-	}
-	if(GetLastError() == ERROR_FILE_NOT_FOUND)
-	{
+	if (ExistsFileA(csfileName)) {
+        if (RemoveFileA((LPCTSTR)strAimPath) != 0) {
+            Dbg("DeleteFile(%s) suc.", (LPCTSTR)strAimPath);
+            return TRUE;
+        } else {
+            LogError(Severity_High, Error_Unexpect, UpdateDEC(MEC_CLEAR_RESOURCE_FAILED), CSimpleStringA::Format(
+                "DeleteFile(%s) failed LastError(%d).", (LPCTSTR)strAimPath, GetLastError()));
+            return FALSE;
+        }
+	} else {
 		return TRUE;
 	}
 	Dbg("DeleteFile(%s) Unexpect GetLastError(%d).", (LPCTSTR)strAimPath, GetLastError());
@@ -1781,16 +1607,16 @@ ErrorCodeEnum CHSPScannerFSM::OnDevExit()
 {
 	LOG_FUNCTION();
 	ErrorCodeEnum erroCode = Error_Succeed;
-	if(m_pHSPS)
+	if(m_hDevHelper)
 	{
 		HspsDevStatus status = {0};
-		erroCode = m_pHSPS->GetDevStatus(status);
+		erroCode = m_hDevHelper->GetDevStatus(status);
 		if(ISSUCCEEDED(erroCode) && status.isConnected)
 		{
 			if(status.inPreview)
 			{
 				Dbg("Invoke cancelPreview...");
-				erroCode = m_pHSPS->SetPreview(0);
+				erroCode = m_hDevHelper->SetPreview(0);
 				Dbg("Close Preview OnDevExit returned 0x%x.", erroCode);
 				if(ISSUCCEEDED(erroCode))
 				{
@@ -1830,12 +1656,12 @@ ErrorCodeEnum CHSPScannerFSM::SetPreview(SpReqAnsContext<HSPScannerService_Start
 	//////////////////////////////////////////////////////////////////////////
 	if(ctx->Req.colorType == 1)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_FULL);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_FULL);
 		Dbg("SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_FULL) returned %d.", erroCode);
 	}
 	else if(ctx->Req.colorType == 2)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_GREY);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_GREY);
 		Dbg("SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_GREY) returned %d.", erroCode);
 	}
 	if(FAILURED(erroCode)) 
@@ -1847,22 +1673,22 @@ ErrorCodeEnum CHSPScannerFSM::SetPreview(SpReqAnsContext<HSPScannerService_Start
 	//////////////////////////////////////////////////////////////////////////
 	if(ctx->Req.rotateType == 1)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_NOANGLE);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_NOANGLE);
 		Dbg("SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_NOANGLE) returned %d.", erroCode);
 	}
 	else if(ctx->Req.rotateType == 2)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_LEFT);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_LEFT);
 		Dbg("SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_LEFT) returned %d.", erroCode);
 	}
 	else if(ctx->Req.rotateType == 3)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_MIRROR);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_MIRROR);
 		Dbg("SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_MIRROR) returned %d.", erroCode);
 	}
 	else if(ctx->Req.rotateType == 4)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_RIGHT);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_RIGHT);
 		Dbg("SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_RIGHT) returned %d.", erroCode);
 	}
 	if(FAILURED(erroCode)) 
@@ -1874,17 +1700,17 @@ ErrorCodeEnum CHSPScannerFSM::SetPreview(SpReqAnsContext<HSPScannerService_Start
 	//////////////////////////////////////////////////////////////////////////
 	if(ctx->Req.scanType == 1)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_FULL);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_FULL);
 		Dbg("SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_FULL) returned %d.", erroCode);
 	}
 	else if(ctx->Req.scanType == 2)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_A4);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_A4);
 		Dbg("SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_A4) returned %d.", erroCode);
 	}
 	else if(ctx->Req.scanType == 3)
 	{
-		erroCode = m_pHSPS->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_IDCARD);
+		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_IDCARD);
 		Dbg("SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_IDCARD) returned %d.", erroCode);
 	}
 	if(FAILURED(erroCode)) 
@@ -1908,23 +1734,16 @@ ErrorCodeEnum CHSPScannerFSM::SetPreview(SpReqAnsContext<HSPScannerService_Start
 ErrorCodeEnum CHSPScannerFSM::DeleteFileIfExisted(LPCTSTR fileName)
 {
 	ErrorCodeEnum erroCode = Error_Unexpect;
-	WIN32_FIND_DATA  findData;
-	if(FindFirstFileA(fileName, &findData) != INVALID_HANDLE_VALUE)
-	{
-		if(DeleteFileA(fileName) != 0)
-		{
-			Dbg("DeleteFile(%s) suc.", fileName);
-			return Error_Succeed;
-		}
-		else
-		{
-			LogError(Severity_High, Error_Unexpect, UpdateDEC(MEC_CLEAR_RESOURCE_FAILED), CSimpleStringA::Format(
-				"DeleteFile(%s) failed LastError(%d).", fileName, GetLastError()));
-			return Error_Unexpect;
-		}
-	}
-	if(GetLastError() == ERROR_FILE_NOT_FOUND)
-	{
+	if (ExistsFileA(fileName)) {
+        if (RemoveFileA(fileName) != 0) {
+            Dbg("DeleteFile(%s) suc.", fileName);
+            return Error_Succeed;
+        } else {
+            LogError(Severity_High, Error_Unexpect, UpdateDEC(MEC_CLEAR_RESOURCE_FAILED), CSimpleStringA::Format(
+                "DeleteFile(%s) failed LastError(%d).", fileName, GetLastError()));
+            return Error_Unexpect;
+        }
+	} else {
 		return Error_Succeed;
 	}
 	Dbg("DeleteFile(%s) Unexpect GetLastError(%d).", fileName, GetLastError());

+ 16 - 47
Module/mod_HSPScanner/HSPScannerFSM.h

@@ -7,13 +7,10 @@
 #include "HSPScannerClass.h"
 #include "HSPScanner_server_g.h"
 #include "DevErrorCode.h"
-#include "DeviceBaseHelper.h"
+#include "DevFSMCommBase.hpp"
 
 using namespace HSPScanner;
 
-typedef ErrorCodeEnum ( *LpCreateDevCom)(DeviceBaseClass *&baseObj);
-typedef ErrorCodeEnum ( *LpReleaseDevCom)(DeviceBaseClass *&pBaseObj);
-
 #define ISSUCCEEDED(hr) ((hr) == Error_Succeed)
 #define FAILURED(hr) (!(ISSUCCEEDED(hr)))
 
@@ -25,9 +22,6 @@ typedef ErrorCodeEnum ( *LpReleaseDevCom)(DeviceBaseClass *&pBaseObj);
 	}							\
 	}while(0)
 
-
-
-
 enum EvtType
 {
 	USER_EVT_STARTPREVIEW = (EVT_USER + 1),
@@ -211,7 +205,7 @@ public:
 
 
 
-class CHSPScannerFSM : public FSMImpl<CHSPScannerFSM>, public IFSMStateHooker
+class CHSPScannerFSM : public CCommDevFSM<CHSPScannerFSM, CHSPSClass>, public IFSMStateHooker
 {
 public:
 	CHSPScannerFSM(void);
@@ -383,11 +377,6 @@ public:
 
 private:
 	int m_version, m_batch;
-	HMODULE m_hVendorDll;
-	LpCreateDevCom CreateDevComponent;
-	LpReleaseDevCom ReleaseDevComponent;
-
-	CHSPSClass* m_pHSPS;
 	ErrorCodeEnum m_ecSelfTest;
 	DWORD m_dwErroCode;
 	BOOL m_bOperating;
@@ -397,52 +386,33 @@ private:
 
 	int m_nRecX, m_nRecY, m_nRecW;
 
-	CSimpleStringA m_csDllName;
 	DevStateEnum m_eDevStatus;
 	EvtType m_desiredAction;
 
 	bool m_bOpened;
 
-	HardwareEntityCode m_entCode;
-	CSimpleStringA m_csAlarmMsg;
 public:
-	ErrorCodeEnum FetchVendorDllName(CSimpleStringA& csDllPath);
-	ErrorCodeEnum LoadDllAndGetAddress(const char* szDllName);
-	// deprecate. [4/16/2020 16:30 @Gifur]
-	//void GetAndDbgDevError();
 
 	DWORD GetCustLastErrorCode() { return m_dwErroCode; }
 	void SetCustLastErrorCode(DWORD dwVal = 0) { m_dwErroCode = dwVal; }
 
-	bool IsDevFurnished() {
-		if(m_csDllName.IsNullOrEmpty() || m_csDllName.GetLength() == 0)
+	bool IsDevFurnished() 
+	{
+		CSimpleStringA strDllName = GET_DEV_ENTITY_BASE_POINTER()->GetVendorLibName();
+		if(strDllName.IsNullOrEmpty())
 			return false;
 		size_t len = strlen(GetEntityBase()->GetEntityName());
-		if(m_csDllName.GetLength() <= len)
+		if(strDllName.GetLength() <= len)
 			return false;
-		LPCTSTR lpszSuffix = (LPCTSTR)m_csDllName[len];
+		LPCTSTR lpszSuffix = (LPCTSTR)strDllName[len];
+#ifdef RVC_OS_WIN
 		return !!strnicmp(lpszSuffix, ".dll", strlen(".dll"));
+#else
+		return !!strnicmp(lpszSuffix, ".so", strlen(".so"));
+#endif // RVC_OS_WIN
+
+		
 	}
-	DWORD UpdateDEC(DWORD dwVal = 0)
-	{
-		int reserved = 0;
-		reserved = (dwVal & 0xFC000) >> 14;
-		HARDWARE_ENTITY_SET_DEVCODE(m_entCode, dwVal,reserved);
-		return GetDEC();
-	}
-	DWORD GetDEC() const
-	{
-		return HARDWARE_ENTITY_MAKE_ERRORCODE(m_entCode);
-	}
-	DWORD AlarmDEC() const {
-		return GetDEC();
-	}
-	void ClearRelatedDEC()
-	{
-		UpdateDEC();
-		m_csAlarmMsg = "NO more information";
-	}
-	void LogErrMsg(const char *pMsgHead, ErrorCodeEnum eErrCode, DWORD defaultDevCode = 0, BOOL bAlarm = FALSE);
 
 private:
 	BOOL GetCurImageName(CSimpleStringA& csImagName, bool bExt = false);
@@ -454,9 +424,9 @@ private:
 	// -1: invalid;
 	int IsDevConnected()
 	{
-		if(m_pHSPS == NULL  || !m_bOpened) return -1;
+		if(!m_hDevHelper || !m_bOpened) return -1;
 		HspsDevStatus status = {0};
-		if(m_pHSPS->GetDevStatus(status) == Error_Succeed)
+		if(m_hDevHelper->GetDevStatus(status) == Error_Succeed)
 		{
 			if(status.isConnected == 0)
 				return 0;
@@ -464,7 +434,6 @@ private:
 				return 1;
 		}
 		Dbg("GetDevStatus failed in IsDevConnect().");
-		//GetAndDbgDevError();
 		return -1;
 	}
 

+ 0 - 44
Module/mod_HSPScanner/ReadMe.txt

@@ -1,44 +0,0 @@
-========================================================================
-    动态链接库:mod_HSPScanner 项目概述
-========================================================================
-
-应用程序向导已为您创建了此 mod_HSPScanner DLL。
-
-本文件概要介绍组成 mod_HSPScanner 应用程序的每个文件的内容。
-
-
-mod_HSPScanner.vcxproj
-    这是使用应用程序向导生成的 VC++ 项目的主项目文件,
-    其中包含生成该文件的 Visual C++ 
-    的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。
-
-mod_HSPScanner.vcxproj.filters
-    这是使用“应用程序向导”生成的 VC++ 项目筛选器文件。 
-    它包含有关项目文件与筛选器之间的关联信息。 在 IDE 
-    中,通过这种关联,在特定节点下以分组形式显示具有相似扩展名的文件。
-    例如,“.cpp”文件与“源文件”筛选器关联。
-
-mod_HSPScanner.cpp
-    这是主 DLL 源文件。
-
-	此 DLL 在创建时不导出任何符号。 因此,在生成此 DLL 时
- 	生成时不会产生 .lib 文件。 如果希望此项目
- 	成为其他某个项目的项目依赖项,则需要
- 	添加代码以从 DLL 导出某些符号,
- 	以便产生一个导出库,或者,也可以在项目“属性页”对话框中的
- 	“链接器”文件夹中,将“常规”属性页上的
- 	“忽略输入库”属性设置为“是”。
-
-/////////////////////////////////////////////////////////////////////////////
-其他标准文件:
-
-StdAfx.h,StdAfx.cpp
-    这些文件用于生成名为 mod_HSPScanner.pch 的预编译头 (PCH) 文件和
-    名为 StdAfx.obj 的预编译类型文件。
-
-/////////////////////////////////////////////////////////////////////////////
-其他注释:
-
-应用程序向导使用“TODO:”注释来指示应添加或自定义的源代码部分。
-
-/////////////////////////////////////////////////////////////////////////////

+ 1 - 1
Module/mod_HSPScanner/mod_HSPScanner.cpp

@@ -77,4 +77,4 @@ void CHSPScannerServerSession::Handle_Exit(SpOnewayCallContext<HSPScannerService
 
 SP_BEGIN_ENTITY_MAP()
 	SP_ENTITY(CHSPScannerEntity)
-	SP_END_ENTITY_MAP()
+SP_END_ENTITY_MAP()

+ 7 - 17
Module/mod_HSPScanner/mod_HSPScanner.h

@@ -3,7 +3,10 @@
 
 #pragma once
 
+#include "modVer.h"
+#include "SpTest.h"
 #include "HSPScannerFSM.h"
+#include "DevEntityCommBase.hpp"
 
 using namespace HSPScanner;
 
@@ -50,13 +53,16 @@ private:
 };
 
 
-class CHSPScannerEntity : public CEntityBase
+class CHSPScannerEntity : public CDevAdptEntityBase
 {
 public:
 	CHSPScannerEntity() {}
 	virtual ~CHSPScannerEntity() {}
 	virtual const char *GetEntityName() const { return "HSPScanner"; }
 
+    const char* GetEntityVersion() const { return MODULE_VERSION_FULL; }
+
+    ON_ENTITYT_TEST()
 	virtual CServerSessionBase* OnNewSession(const char* , const char * )
 	{
 		//LOG_FUNCTION();
@@ -121,25 +127,11 @@ public:
 	{
 		LOG_FUNCTION();
 		m_fsm.PostEventFIFO(new FSMEvent(USER_EVT_EXIT));
-		//ErrorCodeEnum erroCode = m_fsm.OnDevExit();
 	}
 
 	void GetDevInfo(SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
 		HSPScannerService_GetDevInfo_Ans>::Pointer ctx)
 	{
-		//if(!m_fsm.IsDevFurnished()) {
-		//	Dbg("Josephus@note: no furnish yet");
-		//	ctx->Ans.model = "";
-		//	ctx->Ans.state = DEVICE_STATUS_NOCFG;
-		//	ctx->Ans.type = "";
-		//	ctx->Ans.version = "";
-		//	ctx->Answer(Error_Succeed);
-		//}
-		//else {
-		//	m_fsm.GetDevInfo(ctx);
-		//}
-		//return;
-
 		GetDevInfoEvent* pEvent = new GetDevInfoEvent();
 		pEvent->m_ctx = ctx;
 		m_fsm.PostEventFIFO(pEvent);
@@ -148,8 +140,6 @@ public:
 	void GetDevStatus(SpReqAnsContext<HSPScannerService_GetDevStatus_Req,
 		HSPScannerService_GetDevStatus_Ans>::Pointer ctx)
 	{
-		//m_fsm.GetDevStatus(ctx);
-		//return;
 		GetDevStatusEvent* pEvent = new GetDevStatusEvent();
 		pEvent->m_ctx = ctx;
 		m_fsm.PostEventFIFO(pEvent);

+ 0 - 98
Module/mod_HSPScanner/mod_HSPScanner.vcxproj

@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{47825F6E-76AA-4319-B23C-FCE312D1FCC8}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>mod_HSPScanner</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <Import Project="..\modmake.setting" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <LinkIncremental>true</LinkIncremental>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <LinkIncremental>false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>Create</PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_HSPSCANNER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(FrameworkHeadRoot)\Common;$(DevHeadPath);$(ModuleCommonHeadPath);..\..\DeviceAdapter\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>$(FrameworkLib)\SpBase.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>Use</PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_HSPSCANNER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <None Include="ReadMe.txt" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\DeviceAdapter\DevInc\HSPScannerClass.h" />
-    <ClInclude Include="HSPScannerFSM.h" />
-    <ClInclude Include="HSPScanner_def_g.h" />
-    <ClInclude Include="HSPScanner_server_g.h" />
-    <ClInclude Include="mod_HSPScanner.h" />
-    <ClInclude Include="targetver.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="HSPScannerFSM.cpp" />
-    <ClCompile Include="mod_HSPScanner.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\..\Version.rc" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>

+ 0 - 53
Module/mod_HSPScanner/mod_HSPScanner.vcxproj.filters

@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="源文件">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="头文件">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="资源文件">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="ReadMe.txt" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="targetver.h">
-      <Filter>头文件</Filter>
-    </ClInclude>
-    <ClInclude Include="HSPScannerFSM.h">
-      <Filter>头文件</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\DeviceAdapter\DevInc\HSPScannerClass.h">
-      <Filter>头文件</Filter>
-    </ClInclude>
-    <ClInclude Include="HSPScanner_def_g.h">
-      <Filter>头文件</Filter>
-    </ClInclude>
-    <ClInclude Include="HSPScanner_server_g.h">
-      <Filter>头文件</Filter>
-    </ClInclude>
-    <ClInclude Include="mod_HSPScanner.h">
-      <Filter>头文件</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="mod_HSPScanner.cpp">
-      <Filter>源文件</Filter>
-    </ClCompile>
-    <ClCompile Include="HSPScannerFSM.cpp">
-      <Filter>源文件</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\..\Version.rc">
-      <Filter>资源文件</Filter>
-    </ResourceCompile>
-  </ItemGroup>
-</Project>

+ 1 - 1
addin/cfg/shell.ini.in

@@ -38,7 +38,7 @@ Ups=0,@LIB_PREFIX@mod_Ups@LIB_SUFFIX@,0x20E
 ;DeviceControl=0,@LIB_PREFIX@mod_DeviceControl@LIB_SUFFIX@,0x214
 ;PrintSeal=0,@LIB_PREFIX@mod_printseal@LIB_SUFFIX@,0x215
 ;Print=0,@LIB_PREFIX@mod_print@LIB_SUFFIX@,0x216
-;HSPScanner=0,@LIB_PREFIX@mod_HSPScanner@LIB_SUFFIX@,0x217
+HSPScanner=0,@LIB_PREFIX@mod_HSPScanner@LIB_SUFFIX@,0x217
 ;ScannerSet=0,@LIB_PREFIX@mod_ScannerSet@LIB_SUFFIX@,0x218
 ;ThermalPrint=0,@LIB_PREFIX@mod_ThermalPrint@LIB_SUFFIX@,0x219
 ;SurveillanceRecorder=0,@LIB_PREFIX@mod_SurveillanceRecorder@LIB_SUFFIX@,0x21A

+ 6 - 6
addin/hardwarecfg/root.ini.unix

@@ -60,15 +60,15 @@ Number=6
 
 [Device.IDCertificate]
 # parameters such as port 
-Vendor=Channel
-Version=6
+Vendor=cmbsz
+Version=1
 Batch=1
 Port=1
 
 
 [Device.CardIssuer]
 # parameters such as port 
-Vendor=Sankyo
+Vendor=cmbsz
 Version=1
 Batch=1
 Port=2
@@ -90,7 +90,7 @@ Baudrate=115200
 
 [Device.DeviceControl]
 # parameters such as port 
-Vendor=cc
+Vendor=cmbsz
 Version=1
 Batch=1
 Port=0
@@ -99,7 +99,7 @@ Baudrate=0
 
 [Device.Gpio]
 # parameters such as port 
-Vendor=Hyosung
+Vendor=cmbsz
 Version=1
 Batch=1
 PortNum=4
@@ -131,7 +131,7 @@ Batch=1
 Port=
 
 [Device.HSPScanner]
-Vendor=keba
+Vendor=cmbsz
 Version=1
 Batch=1
 

+ 6 - 6
addin/hardwarecfg/root.ini.win32

@@ -60,15 +60,15 @@ Number=6
 
 [Device.IDCertificate]
 # parameters such as port 
-Vendor=Channel
-Version=6
+Vendor=cmbsz
+Version=1
 Batch=1
 Port=1
 
 
 [Device.CardIssuer]
 # parameters such as port 
-Vendor=Sankyo
+Vendor=cmbsz
 Version=1
 Batch=1
 Port=2
@@ -90,7 +90,7 @@ Baudrate=115200
 
 [Device.DeviceControl]
 # parameters such as port 
-Vendor=cc
+Vendor=cmbsz
 Version=1
 Batch=1
 Port=0
@@ -99,7 +99,7 @@ Baudrate=0
 
 [Device.Gpio]
 # parameters such as port 
-Vendor=Hyosung
+Vendor=cmbsz
 Version=1
 Batch=1
 PortNum=4
@@ -131,7 +131,7 @@ Batch=1
 Port=
 
 [Device.HSPScanner]
-Vendor=keba
+Vendor=cmbsz
 Version=1
 Batch=1