Bläddra i källkod

#IQRV #comment 应用日志改造上传

gifur 3 år sedan
förälder
incheckning
5351b2f7a0
36 ändrade filer med 415 tillägg och 2878 borttagningar
  1. 0 1
      Module/CMakeLists.txt
  2. 1 1
      Module/mod_CardReadAdapter/mod_CardReadAdapter.cpp
  3. 21 21
      Module/mod_CenterSetting/CenterSettingConn.cpp
  4. 1 1
      Module/mod_ContactlessCard/ContactlessFSM.cpp
  5. 1 1
      Module/mod_ContactlessCard/mod_ContactlessCard.cpp
  6. 122 148
      Module/mod_CustMngrAuth/CustMngrAuthFSM.cpp
  7. 31 31
      Module/mod_CustMngrAuth/CustMngrAuthFSM.h
  8. 0 1
      Module/mod_CustMngrAuth/CustMngrAuth_client_g.h
  9. 6 6
      Module/mod_CustMngrAuth/mod_CustMngrAuth.cpp
  10. 33 48
      Module/mod_DeviceControl/DeviceAdapterCheckerImpl.cpp
  11. 34 34
      Module/mod_DeviceControl/DeviceControlFSM.cpp
  12. 0 1
      Module/mod_DeviceControl/DeviceControl_client_g.h
  13. 90 101
      Module/mod_FingerPrint/FingerPrintFSM.cpp
  14. 8 8
      Module/mod_FingerPrint/FingerPrintFSM.h
  15. 0 1
      Module/mod_FingerPrint/FingerPrint_client_g.h
  16. 0 2
      Module/mod_HSPScanner/HSPScannerFSM.cpp
  17. BIN
      Module/mod_MobileDial/HWMobileDll.lib
  18. 29 29
      Module/mod_ResourceWatcher/FileInfo.h
  19. 33 36
      Module/mod_ResourceWatcher/FileSimpleComp.h
  20. 0 26
      Module/mod_ThermalPrint/CMakeLists.txt
  21. 0 4
      Module/mod_ThermalPrint/ChangeLog.md
  22. 0 63
      Module/mod_ThermalPrint/ThermalPrint.xml
  23. 0 173
      Module/mod_ThermalPrint/ThermalPrintClass.h
  24. 0 41
      Module/mod_ThermalPrint/ThermalPrintError.h
  25. 0 1123
      Module/mod_ThermalPrint/ThermalPrintFSM.cpp
  26. 0 244
      Module/mod_ThermalPrint/ThermalPrintFSM.h
  27. 0 174
      Module/mod_ThermalPrint/ThermalPrint_client_g.h
  28. 0 98
      Module/mod_ThermalPrint/ThermalPrint_def_g.h
  29. 0 33
      Module/mod_ThermalPrint/ThermalPrint_msg_g.h
  30. 0 161
      Module/mod_ThermalPrint/ThermalPrint_server_g.h
  31. 0 25
      Module/mod_ThermalPrint/mod_ThermalPrint.cpp
  32. 0 229
      Module/mod_ThermalPrint/mod_ThermalPrint.h
  33. 0 1
      Module/mod_gpio/mod_gpio.h
  34. 5 5
      Module/mod_healthmanager/EntityBootStruct.h
  35. 0 1
      addin/cfg/shell.ini.in
  36. 0 6
      addin/hardwarecfg/uos/root-RVC.Stand2S-NANTIAN-VTM-6200B17FQ.ini

+ 0 - 1
Module/CMakeLists.txt

@@ -199,7 +199,6 @@ add_subdirectory(mod_ContactlessCard)
 add_subdirectory(mod_gpio)
 add_subdirectory(mod_watchdog)
 add_subdirectory(mod_DeviceControl)
-add_subdirectory(mod_ThermalPrint)
 add_subdirectory(mod_facetracking)
 add_subdirectory(mod_initiativetransfer)
 add_subdirectory(mod_interactioncontext)

+ 1 - 1
Module/mod_CardReadAdapter/mod_CardReadAdapter.cpp

@@ -75,7 +75,7 @@ void CardReadAdapterServerSession::Handle_QueryCardInfo(SpReqAnsContext<CardRead
 void CardReadAdapterServerSession::Handle_WriteTrack(SpReqAnsContext<CardReadAdapterService_WriteTrack_Req, CardReadAdapterService_WriteTrack_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	//Dbg("oiltest %d,%d,t1[%S],t2[%S],t3[%S],[%S]",ctx->Req.co,ctx->Req.mode,(const wchar_t *)ctx->Req.track1,(const wchar_t *)ctx->Req.track2,(const wchar_t *)ctx->Req.track3,(const wchar_t *)ctx->Req.reserved);
+	//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("oiltest %d,%d,t1[%S],t2[%S],t3[%S],[%S]",ctx->Req.co,ctx->Req.mode,(const wchar_t *)ctx->Req.track1,(const wchar_t *)ctx->Req.track2,(const wchar_t *)ctx->Req.track3,(const wchar_t *)ctx->Req.reserved);
 	m_pEntity->WriteTrack(ctx);
 }
 void CardReadAdapterServerSession::Handle_SetSomeFlag(SpReqAnsContext<CardReadAdapterService_SetSomeFlag_Req, CardReadAdapterService_SetSomeFlag_Ans>::Pointer ctx)

+ 21 - 21
Module/mod_CenterSetting/CenterSettingConn.cpp

@@ -122,7 +122,7 @@ ErrorCodeEnum CenterSettingsMicroServiceHelper::GetCenterSetting(CSimpleStringA&
 
                     if ((mTerminalInfo.strSite.Compare("cmb.LIB", true) == 0 && getCenterSettingsAns.biz.lastUpdateTime == getCenterSettingsReqJson.lastUpdateTimie)
                         || (mTerminalInfo.strSite.Compare("cmb.FLB", true) == 0 && getCenterSettingsAns.dmz.lastUpdateTime == getCenterSettingsReqJson.lastUpdateTimie)) {//行内
-                        Dbg("Centersetting not changed.");
+                        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Centersetting not changed.");
 						strErrMsg.Clear();
                         return Error_Succeed;
                     }
@@ -131,7 +131,7 @@ ErrorCodeEnum CenterSettingsMicroServiceHelper::GetCenterSetting(CSimpleStringA&
                     if (mTerminalInfo.strSite.Compare("cmb.LIB", true) == 0) {
                         cur = getCenterSettingsAns.biz;
                     }
-                    Dbg("local last update time(%s) vs server last update time(%s)", getCenterSettingsReqJson.lastUpdateTimie.c_str(), cur.lastUpdateTime.c_str());
+                    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("local last update time(%s) vs server last update time(%s)", getCenterSettingsReqJson.lastUpdateTimie.c_str(), cur.lastUpdateTime.c_str());
                     SyncConfigAndRenameCenterFile(cur);
                     LogEvent(Severity_Middle, EVENT_MOD_CENTERSETTING_UPDATE,
                              CSimpleString::Format("Update CenterSetting.%s.ini.", cur.mapSiteName.c_str()));
@@ -149,7 +149,7 @@ ErrorCodeEnum CenterSettingsMicroServiceHelper::GetCenterSetting(CSimpleStringA&
     req.m_last_update_time = m_strLastTime;
     req.m_terminal_no = mTerminalInfo.strTerminalID;
 
-    Dbg("request url: %s", req.m_url.c_str());
+    DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("request url: %s", req.m_url.c_str());
 
     CenterSettingResponse response;
     IHttpFunc* pHttpFunc = create_http(HTTPLogCallback);
@@ -160,7 +160,7 @@ ErrorCodeEnum CenterSettingsMicroServiceHelper::GetCenterSetting(CSimpleStringA&
         if (response.bSuccess) {
             if ((mTerminalInfo.strSite.Compare("cmb.LIB", true) == 0 && response.centerSyncInfo.biz.lastUpdateTime == req.m_last_update_time)
                 || (mTerminalInfo.strSite.Compare("cmb.FLB", true) == 0 && response.centerSyncInfo.dmz.lastUpdateTime == req.m_last_update_time)) {//行内
-                Dbg("Centersetting not changed.");
+                DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Centersetting not changed.");
 				strErrMsg = "Centersetting not any changed";
                 return Error_Succeed;
             }
@@ -169,7 +169,7 @@ ErrorCodeEnum CenterSettingsMicroServiceHelper::GetCenterSetting(CSimpleStringA&
             if (mTerminalInfo.strSite.Compare("cmb.LIB", true) == 0) {
                 cur = response.centerSyncInfo.biz;
             }
-            Dbg("local last update time(%s) vs server last update time(%s)", cur.lastUpdateTime.c_str(), req.m_last_update_time.c_str());
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("local last update time(%s) vs server last update time(%s)", cur.lastUpdateTime.c_str(), req.m_last_update_time.c_str());
             SyncConfigAndRenameCenterFile(cur);
             LogEvent(Severity_Middle, EVENT_MOD_CENTERSETTING_UPDATE,
                      CSimpleString::Format("Update CenterSetting.%s.ini.", cur.mapSiteName.c_str()));
@@ -198,7 +198,7 @@ void CenterSettingsMicroServiceHelper::SyncConfigAndRenameCenterFile(const Cente
 
     ///**TODO(Gifur@9/16/2021): GetPath("CenterSetting") 通过此接口来获取集中配置路径地址 */
     CSimpleStringA fileName = CSimpleStringA::Format("CenterSetting.%s.ini", configOfOneBranch.mapSiteName.c_str());
-    Dbg("fileName:%s", fileName.GetData());
+    DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("fileName:%s", fileName.GetData());
     CSimpleStringA strCurFile = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s", (const char*)strPath, (const char*)fileName);
 
     CSimpleString strRunInfoPath;
@@ -225,7 +225,7 @@ void CenterSettingsMicroServiceHelper::SyncConfigAndRenameCenterFile(const Cente
     fileutil_copy_file(strCurFile, strNewFile);
     fileutil_delete_file(strNewFile);
 
-    Dbg("save config %s succ", fileName.GetData());
+    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("save config %s succ", fileName.GetData());
 }
 
 
@@ -243,7 +243,7 @@ CCenterSettingConn::~CCenterSettingConn(void)
 
 void CCenterSettingConn::OnDisconnect()
 {
-	Dbg("connection disconnected");
+	DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("connection disconnected");
 }
 
 void CCenterSettingConn::OnPkgAnswer(const CSmartPointer<IPackage> &pRecvPkg)
@@ -258,7 +258,7 @@ void CCenterSettingConn::OnPkgAnswer(const CSmartPointer<IPackage> &pRecvPkg)
 			CSimpleStringA strFilePath;
 			pEntity->GetFunction()->GetPath("CenterSetting", strFilePath);
 			if (ExistsFileA(strFilePath) && 0 < pEntity->m_SyncFileInfo.size()) {
-				Dbg("maybe local centersetting file is new as the server side one or there are no any centersettings files under server side");
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("maybe local centersetting file is new as the server side one or there are no any centersettings files under server side");
 				rc = Error_Succeed; // = Error_AlreadyExist;
 			}
 		}
@@ -383,7 +383,7 @@ ErrorCodeEnum CCenterSettingConn::OnEndPollConfig(const CSmartPointer<IPackage>
 	bool bInitMKSuc = false;
 	if (pRecvPkg->GetErrMsg(dwSysCode, dwUserCode, strErrMsg))
 	{
-		Dbg("poll center config fail, sysCode=%d, usrCode=%d, %s", dwSysCode, dwUserCode, strErrMsg.c_str());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("poll center config fail, sysCode=%d, usrCode=%d, %s", dwSysCode, dwUserCode, strErrMsg.c_str());
 		return Error_Unexpect;
 	}
 
@@ -395,7 +395,7 @@ ErrorCodeEnum CCenterSettingConn::OnEndPollConfig(const CSmartPointer<IPackage>
 		
 		int nRetLen = pRecvPkg->GetStructLen(strCurStructName);
         if (nRetLen == -1) {
-            Dbg("Get %s pkg struct failed !", strCurStructName.GetData());
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Get %s pkg struct failed !", strCurStructName.GetData());
             break;
         }
 		nIndex++;
@@ -409,12 +409,12 @@ ErrorCodeEnum CCenterSettingConn::OnEndPollConfig(const CSmartPointer<IPackage>
 		assert(bSuc && nRetLen == nBufLen);
 		PollSMA*pRet = (PollSMA*)pBuf;
 
-		Dbg("center config changed, hash: %s, file: %s", (const char*)pRet->FileHash, (const char*)pRet->FileName);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("center config changed, hash: %s, file: %s", (const char*)pRet->FileHash, (const char*)pRet->FileName);
 
 		// 2. 校验Hash是否匹配,以校验内容完整性
 		BYTE sm3[32] = {};
         if (!SM3Hash((BYTE*)pRet->FileContent, nRetLen - sizeof(PollSMA), sm3)) {
-            Dbg("compute sm3 hash fail");
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("compute sm3 hash fail");
             delete[] pBuf;
             return Error_CheckSum;
         }
@@ -423,7 +423,7 @@ ErrorCodeEnum CCenterSettingConn::OnEndPollConfig(const CSmartPointer<IPackage>
 			strHash += CSimpleStringA::Format("%02x", sm3[i]);
 		}
         if (stricmp(strHash, pRet->FileHash) != 0) {
-            Dbg("computed hash [%s] != return hash [%s]", (const char*)strHash, pRet->FileHash);
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("computed hash [%s] != return hash [%s]", (const char*)strHash, pRet->FileHash);
             delete[] pBuf;
             return Error_CheckSum;
         }
@@ -445,7 +445,7 @@ ErrorCodeEnum CCenterSettingConn::OnEndPollConfig(const CSmartPointer<IPackage>
 		fclose(hFile);
 
         if (nLen < nRetLen - sizeof(PollSMA)) {
-            Dbg("save %s fail, fwrite len: %d, act len: %d", pRet->FileName, nLen, nRetLen - sizeof(PollSMA));
+            DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("save %s fail, fwrite len: %d, act len: %d", pRet->FileName, nLen, nRetLen - sizeof(PollSMA));
             fileutil_delete_file(strNewFile);
             delete[] pBuf;
             return Error_IO;
@@ -455,13 +455,13 @@ ErrorCodeEnum CCenterSettingConn::OnEndPollConfig(const CSmartPointer<IPackage>
 		char tmp[32] = {};
 		if(inifile_read_str_s("CenterSetting", "Server", "", tmp, 32, strNewFile) < 10)
 		{
-			Dbg("read center setting service addr from new file %s fail", (const char*)strNewFile);
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("read center setting service addr from new file %s fail", (const char*)strNewFile);
 			fileutil_delete_file(strNewFile);
             delete[] pBuf;
             return Error_NotConfig;
 		}
         else if (!IsServiceAvailable(tmp)) {
-            Dbg("the new centersetting server ip[%s] cannot be connectable!!!", tmp);
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("the new centersetting server ip[%s] cannot be connectable!!!", tmp);
         }
 
 		// 5. 读出当前集中配置服务地址并写入到新的集中配置文件中
@@ -470,7 +470,7 @@ ErrorCodeEnum CCenterSettingConn::OnEndPollConfig(const CSmartPointer<IPackage>
         CSimpleStringA strCurFile = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s", (const char*)strPath, (const char*)pRet->FileName);
 		memset(tmp, 0, 32);
 		if (10 > inifile_read_str_s("CenterSetting", "Server", "", tmp, 32, strCurFile)) {
-			Dbg("read center setting service addr from exist file %s fail: (%d)", strCurFile.GetData(), GetLastError());
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("read center setting service addr from exist file %s fail: (%d)", strCurFile.GetData(), GetLastError());
 		}
 		// 写入同步信息
 		inifile_write_str(strNewFile, "Main", "LastServer", tmp);
@@ -499,7 +499,7 @@ ErrorCodeEnum CCenterSettingConn::OnEndPollConfig(const CSmartPointer<IPackage>
 		// 7.替换当前配置文件,并删除临时文件
 		fileutil_copy_file(strCurFile, strNewFile);
 		fileutil_delete_file(strNewFile);
-		Dbg("save config %s succ", (const char*)pRet->FileName);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("save config %s succ", (const char*)pRet->FileName);
 
 		// 8. 更新内存中的同步信息
 		CCenterSettingEntity::ConfigFileInfo  info;
@@ -530,7 +530,7 @@ ErrorCodeEnum CCenterSettingConn::OnEndPollConfig(const CSmartPointer<IPackage>
 		inifile_read_str_s("IEBrowser", "RvcWebVersion", "", szVersion, 64, strFilePath);
 		if (pEntity->m_strRvcWebVersion.IsNullOrEmpty() || strcmp(szVersion, pEntity->m_strRvcWebVersion) != 0)
 		{
-			Dbg("rvc web version changed, last: [%s], current: [%s]", (const char*)pEntity->m_strRvcWebVersion, szVersion);
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("rvc web version changed, last: [%s], current: [%s]", (const char*)pEntity->m_strRvcWebVersion, szVersion);
 			pEntity->m_strRvcWebVersion = szVersion;
 			LogEvent(Severity_Middle, EVENT_MOD_CENTERSETTING_RVCWEBVER_CHANGE, "RVCWeb version has updated !");
 		}
@@ -550,7 +550,7 @@ bool CCenterSettingConn::ClearillegalCenterSettingsFile(CSimpleStringA strCfgDir
 			char* path = (char*)ARRAY_IDX(arr, i, char*);
             regex reg("((DMZ)|(LAN))[^(\.ini)]");
 			if (regex_search(path, reg)) {
-                Dbg("delete: %s", path);
+                DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("delete: %s", path);
 				fileutil_delete_file(path);
 			}
         }

+ 1 - 1
Module/mod_ContactlessCard/ContactlessFSM.cpp

@@ -371,7 +371,7 @@ unsigned int CContactlessCardFSM::s7_on_event(FSMEvent* pEvt)
             //FetchCard evt;
             //evt.status = 1;
             //SpSendBroadcast(m_pEntity->GetFunction(),SP_MSG_OF(FetchCard),SP_MSG_SIG_OF(FetchCard),evt);
-            //Dbg("取卡时设备故障");
+            //DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("取卡时设备故障");
             //return 1;
         } else {
             FetchCard evt;

+ 1 - 1
Module/mod_ContactlessCard/mod_ContactlessCard.cpp

@@ -45,7 +45,7 @@ void ContactlessCardServerSession::Handle_Eject(SpReqAnsContext<ContactlessCardS
 	//FetchCard evt;
 	//evt.status = 0;
 	//SpSendBroadcast(m_pEntity->GetFunction(),SP_MSG_OF(FetchCard),SP_MSG_SIG_OF(FetchCard),evt);
-	//Dbg("客户取走卡片msg发送");
+	//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("客户取走卡片msg发送");
 	m_pEntity->Eject(ctx);
 }
 

+ 122 - 148
Module/mod_CustMngrAuth/CustMngrAuthFSM.cpp

@@ -43,7 +43,7 @@ void CCustMngrAuthFSM::s0_on_exit()
 unsigned int CCustMngrAuthFSM::s0_on_event(FSMEvent* pEvt)
 {
 	LOG_FUNCTION();
-	Dbg("s0 evt %d", pEvt->iEvt);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s0 evt %d", pEvt->iEvt);
 
 	switch (pEvt->iEvt)
 	{
@@ -74,7 +74,7 @@ void CCustMngrAuthFSM::s1_on_exit()
 unsigned int CCustMngrAuthFSM::s1_on_event(FSMEvent* pEvt)
 {
 	LOG_FUNCTION();
-	Dbg("s1 evt %d", pEvt->iEvt);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s1 evt %d", pEvt->iEvt);
 
 	switch (pEvt->iEvt)
 	{
@@ -100,7 +100,7 @@ void CCustMngrAuthFSM::s2_on_exit()
 unsigned int CCustMngrAuthFSM::s2_on_event(FSMEvent* pEvt)
 {
 	LOG_FUNCTION();
-	Dbg("s2 evt(%d)", pEvt->iEvt);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s2 evt(%d)", pEvt->iEvt);
 
 	switch (pEvt->iEvt)
 	{
@@ -120,14 +120,6 @@ unsigned int CCustMngrAuthFSM::s2_on_event(FSMEvent* pEvt)
 		m_TimeLimit = (authorEvt->ctx->Req.TimeLimit - 3) * 1000;
 		m_bCancelAuthorize = false;
 
-		/*ErrorCodeEnum errCode = SwitchUSB(true);
-		if (errCode != Error_Succeed)
-			Dbg("open usb failed with eErr(%s)", SpStrError(errCode));
-		else {
-			Dbg("open usb successfully.");
-			m_ctx = authorEvt->ctx;
-		}*/
-
 		MatchFingerPrintTask* matchTask = new MatchFingerPrintTask(this);
 		matchTask->ctx = authorEvt->ctx;
 		GetEntityBase()->GetFunction()->PostThreadPoolTask(matchTask);
@@ -137,9 +129,9 @@ unsigned int CCustMngrAuthFSM::s2_on_event(FSMEvent* pEvt)
 	{
 		pEvt->SetHandled();
 		QueryAuthorInfoEvent* queryEvt = dynamic_cast<QueryAuthorInfoEvent*>(pEvt);
-		Dbg("time = %d", queryEvt->ctx->Req.TimeLimit);
-		Dbg("wayOfKey = %d", queryEvt->ctx->Req.WayofKey);
-		Dbg("wayOfFinger = %d", queryEvt->ctx->Req.WayofFinger);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("time = %d", queryEvt->ctx->Req.TimeLimit);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("wayOfKey = %d", queryEvt->ctx->Req.WayofKey);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("wayOfFinger = %d", queryEvt->ctx->Req.WayofFinger);
 		if (queryEvt->ctx->Req.TimeLimit <= 0)
 		{
 			LOG_TRACE("ERROR: receive timelimit lessequal than zero. ctx->Answer(error_Param)");
@@ -153,17 +145,10 @@ unsigned int CCustMngrAuthFSM::s2_on_event(FSMEvent* pEvt)
 
 		ErrorCodeEnum eErr;
 		m_bCancelAuthorize = false;
-		Dbg("WayOfKey = %d, WayOfFinger = %d", queryEvt->ctx->Req.WayofKey, queryEvt->ctx->Req.WayofFinger);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("WayOfKey = %d, WayOfFinger = %d", queryEvt->ctx->Req.WayofKey, queryEvt->ctx->Req.WayofFinger);
 		if (queryEvt->ctx->Req.WayofKey == 1)
 		{
 			//打开USB
-			/*eErr = SwitchUSB(true);
-			if (eErr != Error_Succeed)
-				Dbg("open usb failed with eErr(0x%x)", eErr);
-			else {
-				Dbg("open usb successfully.");
-				qaInfoCtx = queryEvt->ctx;
-			}*/
 		}
 
 		if (queryEvt->ctx->Req.WayofFinger == 1)
@@ -209,7 +194,7 @@ unsigned int CCustMngrAuthFSM::s2_on_event(FSMEvent* pEvt)
 		GenerateTemplateTask* gtTask = new GenerateTemplateTask(this);
 		gtTask->ctx = gtEvt->ctx;
 		GetEntityBase()->GetFunction()->PostThreadPoolTask(gtTask);
-		Dbg("Generate Template task posted");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Generate Template task posted");
 	}
 	break;
 	case USER_EVT_SAVEFINGERPRINT_START:
@@ -237,20 +222,20 @@ void CCustMngrAuthFSM::s3_on_entry()
 {
 	LOG_FUNCTION();
 	ScheduleTimer(1, m_TimeLimit);
-	Dbg("set timer when match, %dms", m_TimeLimit);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("set timer when match, %dms", m_TimeLimit);
 }
 
 void CCustMngrAuthFSM::s3_on_exit()
 {
 	LOG_FUNCTION();
 	CancelTimer(1);
-	Dbg("exit match event, timer canceled");
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("exit match event, timer canceled");
 }
 
 unsigned int CCustMngrAuthFSM::s3_on_event(FSMEvent* pEvt)
 {
 	LOG_FUNCTION();
-	Dbg("s3 evt %d, %d", pEvt->iEvt, pEvt->param1);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s3 evt %d, %d", pEvt->iEvt, pEvt->param1);
 
 	switch (pEvt->iEvt)
 	{
@@ -260,8 +245,8 @@ unsigned int CCustMngrAuthFSM::s3_on_event(FSMEvent* pEvt)
 		CancelTimer(1);
 		HoldOnEvent* holdEvt = dynamic_cast<HoldOnEvent*>(pEvt);
 		if (holdEvt->ctx == NULL)
-			Dbg("HoldOnEvent->ctx is NULL");
-		Dbg("HoldOn with MoreTime: %d second", holdEvt->ctx->Req.MoreTime);
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("HoldOnEvent->ctx is NULL");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("HoldOn with MoreTime: %d second", holdEvt->ctx->Req.MoreTime);
 		int moreTime = holdEvt->ctx->Req.MoreTime * 1000;
 		ScheduleTimer(1, (moreTime > 0) ? moreTime : m_TimeLimit);
 	}
@@ -269,7 +254,7 @@ unsigned int CCustMngrAuthFSM::s3_on_event(FSMEvent* pEvt)
 	case EVT_TIMER:
 	{
 		pEvt->SetHandled();
-		Dbg("Hit Timer");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Hit Timer");
 		m_bAuthorizeTimeout = true;
 		m_bCancelAuthorize = true;
 		CancelAuthorize();
@@ -279,17 +264,15 @@ unsigned int CCustMngrAuthFSM::s3_on_event(FSMEvent* pEvt)
 	{
 		pEvt->SetHandled();
 		AuthorizeFinishedEvent* authorEvt = dynamic_cast<AuthorizeFinishedEvent*>(pEvt);
-		Dbg("Checking m_authCtx and answer ctx");
-		//SwitchUSB(false);
-
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Checking m_authCtx and answer ctx");
 		if (authorEvt->param1 == 0)
 		{
 			if (m_authCtx.eAuthByWhich == AuthByUkey)
 			{
-				Dbg("m_authCtx.eAuthByWhich == AuthByUkey");
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("m_authCtx.eAuthByWhich == AuthByUkey");
 				if (m_pFingerPrint != NULL && !m_pFingerPrint->QuerySessionClosed())
 				{
-					Dbg("Invoke cancel match.");
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Invoke cancel match.");
 					m_pFingerPrint->CancelMatch();
 				}
 				authorEvt->ctx->Ans.WayofAuth = AuthByUkey;
@@ -298,7 +281,7 @@ unsigned int CCustMngrAuthFSM::s3_on_event(FSMEvent* pEvt)
 			}
 			else if (m_authCtx.eAuthByWhich == AuthByFngPrnt)
 			{
-				Dbg("m_authCtx.eAuthByWhich == AuthByFngPrnt");
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("m_authCtx.eAuthByWhich == AuthByFngPrnt");
 				authorEvt->ctx->Ans.WayofAuth = AuthByFngPrnt;
 				authorEvt->ctx->Ans.CustomerID = m_authCtx.CustomerID;
 				authorEvt->ctx->Answer(Error_Succeed);
@@ -306,7 +289,7 @@ unsigned int CCustMngrAuthFSM::s3_on_event(FSMEvent* pEvt)
 		}
 		else
 		{
-			Dbg("authorize finished with param1 as %d", authorEvt->param1);
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("authorize finished with param1 as %d", authorEvt->param1);
 			authorEvt->ctx->Answer((ErrorCodeEnum)authorEvt->param1);
 		}
 
@@ -327,19 +310,16 @@ unsigned int CCustMngrAuthFSM::s3_on_event(FSMEvent* pEvt)
 	{
 		pEvt->SetHandled();
 		QueryAuthorInfoFinishedEvent* qafEvt = dynamic_cast<QueryAuthorInfoFinishedEvent*>(pEvt);
-		Dbg("Checking m_authCtx and answer qaInfoCtx");
-		//SwitchUSB(false);
-
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Checking m_authCtx and answer qaInfoCtx");
 		if (qafEvt->param1 == 0)
 		{
-			Dbg("authorize finished with param1 as 0"); //Error_Succeed
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("authorize finished with param1 as 0"); //Error_Succeed
 			if (m_authCtx.eAuthByWhich == AuthByUkey)
 			{
-				Dbg("m_authCtx.eAuthByWhich == AuthByUkey");
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("m_authCtx.eAuthByWhich == AuthByUkey");
 				if (m_pFingerPrint != NULL && !m_pFingerPrint->QuerySessionClosed())
 				{
-					Dbg("Invoke cancel collect.");
-					//m_pFingerPrint->CancelMatch();
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Invoke cancel collect.");
 					m_pFingerPrint->CancelRegister();
 				}
 				qafEvt->ctx->Ans.WayofAuth = AuthByUkey;
@@ -348,17 +328,16 @@ unsigned int CCustMngrAuthFSM::s3_on_event(FSMEvent* pEvt)
 			}
 			else if (m_authCtx.eAuthByWhich == AuthByFngPrnt)
 			{
-				Dbg("m_authCtx.eAuthByWhich == AuthByFngPrnt");
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("m_authCtx.eAuthByWhich == AuthByFngPrnt");
 				qafEvt->ctx->Ans.WayofAuth = AuthByFngPrnt;
 				qafEvt->ctx->Ans.Feature = m_authCtx.Feature;
 				qafEvt->ctx->Ans.FingerImg = m_authCtx.FingerImg;
-				//afe->ctx->Ans.CustomerID = m_authCtx.CustomerID;
 				qafEvt->ctx->Answer(Error_Succeed);
 			}
 		}
 		else
 		{
-			Dbg("authorize finished with param1 as %d", qafEvt->param1);
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("authorize finished with param1 as %d", qafEvt->param1);
 			qafEvt->ctx->Answer((ErrorCodeEnum)qafEvt->param1, qafEvt->param2);
 		}
 
@@ -366,9 +345,8 @@ unsigned int CCustMngrAuthFSM::s3_on_event(FSMEvent* pEvt)
 		{
 			m_bCancelAuthorize = true;
 			m_pFingerPrint->GetFunction()->CloseSession();
-			//m_pFingerPrint->SafeDelete();
 			m_pFingerPrint = NULL;
-			Dbg("M_pFingerPrint disconnected.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("M_pFingerPrint disconnected.");
 		}
 
 		m_authCtx.eAuthByWhich = AuthByNone;
@@ -392,7 +370,6 @@ unsigned int CCustMngrAuthFSM::s3_on_event(FSMEvent* pEvt)
 		pEvt->SetHandled();
 		m_bCancelAuthorize = true;
 		CancelCollect();
-		//SwitchUSB(false);
 	}
 	break;
 	default:
@@ -414,7 +391,7 @@ void CCustMngrAuthFSM::s4_on_exit()
 unsigned int CCustMngrAuthFSM::s4_on_event(FSMEvent* pEvt)
 {
 	LOG_FUNCTION();
-	Dbg("s4 evt %d, %d", pEvt->iEvt, pEvt->param1);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s4 evt %d, %d", pEvt->iEvt, pEvt->param1);
 
 	switch (pEvt->iEvt)
 	{
@@ -443,7 +420,6 @@ unsigned int CCustMngrAuthFSM::s4_on_event(FSMEvent* pEvt)
 	case USER_EVT_CHECKUKEY_FINISHED:
 	{
 		pEvt->SetHandled();
-		//SwitchUSB(false);
 	}
 	break;
 	default:
@@ -465,7 +441,7 @@ void CCustMngrAuthFSM::s5_on_exit()
 unsigned int CCustMngrAuthFSM::s5_on_event(FSMEvent* pEvt)
 {
 	LOG_FUNCTION();
-	Dbg("s5 evt %d, %d", pEvt->iEvt, pEvt->param1);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s5 evt %d, %d", pEvt->iEvt, pEvt->param1);
 	return 0;
 }
 
@@ -496,14 +472,14 @@ ErrorCodeEnum CCustMngrAuthFSM::WaitForUkey(ErrorCodeEnum eErr)
 
 void CCustMngrAuthFSM::CancelAuthorize()
 {
-	Dbg("Invoke m_pFingerPrint->CancelMatch()");
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Invoke m_pFingerPrint->CancelMatch()");
 	if (m_pFingerPrint != NULL && !m_pFingerPrint->QuerySessionClosed())
 		m_pFingerPrint->CancelMatch();
 }
 
 void CCustMngrAuthFSM::CancelCollect()
 {
-	Dbg("Invoke m_pFingerPrint->CancelRegister()");
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Invoke m_pFingerPrint->CancelRegister()");
 	if (m_pFingerPrint != NULL && !m_pFingerPrint->QuerySessionClosed())
 		m_pFingerPrint->CancelRegister();
 }
@@ -512,7 +488,7 @@ ErrorCodeEnum CCustMngrAuthFSM::SwitchUSB(bool bOpen)
 {
 	LOG_FUNCTION();
 
-	Dbg("connecting DeviceControl");
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("connecting DeviceControl");
 	ErrorCodeEnum errCode;
 	m_pDeviceControl = new DeviceControlService_ClientBase(GetEntityBase());
 
@@ -521,22 +497,22 @@ ErrorCodeEnum CCustMngrAuthFSM::SwitchUSB(bool bOpen)
 		errCode = m_pDeviceControl->Connect();
 		if (errCode != Error_Succeed)
 		{
-			Dbg("m_pDeviceControl connect failed with errCode(%s)", SpStrError(errCode));
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("m_pDeviceControl connect failed with errCode(%s)", SpStrError(errCode));
 			m_pDeviceControl->SafeDelete();
 		}else {
 			if (bOpen)
-				Dbg("Open USB");
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Open USB");
 			else
-				Dbg("Close USB");
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Close USB");
 
 			DeviceControlService_USB_Req usbReq;
 			DeviceControlService_USB_Ans usbAns;
 			usbReq.open = bOpen;//open or close usb
 			errCode = m_pDeviceControl->USB(usbReq, usbAns, 2000);
 			if (errCode != Error_Succeed)
-				Dbg("Open/Close usb failed.");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Open/Close usb failed.");
 			else
-				Dbg("Open/Close usb success.");
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Open/Close usb success.");
 
 			m_pDeviceControl->GetFunction()->CloseSession();
 		}
@@ -544,7 +520,7 @@ ErrorCodeEnum CCustMngrAuthFSM::SwitchUSB(bool bOpen)
 		return errCode;
 	}
 	else {
-		Dbg("DeviceControl is null.");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("DeviceControl is null.");
 		return Error_Unexpect;
 	}
 }
@@ -573,9 +549,6 @@ int CCustMngrAuthFSM::Initial()
 	if (errCode != Error_Succeed)
 		return 1;
 
-	//FeatureUpdateTask* pTask = new FeatureUpdateTask(this);
-	//GetEntityBase()->GetFunction()->PostThreadPoolTask(pTask);
-
 	return 0;
 }
 
@@ -590,7 +563,7 @@ ErrorCodeEnum CCustMngrAuthFSM::OpenRunInfoFile()
 			, "get runinfo path failed while init");
 		errCode =  Error_Unexpect;
 	}
-	Dbg("runinfo path: %s", m_RunInfoPath.GetData());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("runinfo path: %s", m_RunInfoPath.GetData());
 	
 	return errCode;
 }
@@ -652,7 +625,7 @@ void CCustMngrAuthFSM::FeatureUpdate()
 					break;
 			}else {
 				connectFailedTimes++;
-				Dbg("connect branchserver failed for %d times, try again in %d ms."
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("connect branchserver failed for %d times, try again in %d ms."
 					, connectFailedTimes, CONNECT_INTERNAL);
 
 				if (connectFailedTimes >= 60)
@@ -673,7 +646,7 @@ void CCustMngrAuthFSM::FeatureUpdate()
 			m_pConnection->DecRefCount();
 			m_pConnection = NULL;
 		}
-		Dbg("Feature-update processed, wait until next");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Feature-update processed, wait until next");
 		//wait for next query
 		if (WaitForSingleObject(hStopUpdate, waitInternal) == WAIT_OBJECT_0)
 			break;
@@ -689,13 +662,13 @@ void CCustMngrAuthFSM::InitBeforeUpdateData()
 	bool bReadResult = ReadDataIntoMemory(bHasData);
 	if (bReadResult && bHasData)
 	{
-		Dbg("Read feature data into memory success.");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Read feature data into memory success.");
 	}
 	else if (bReadResult && !bHasData) {
-		Dbg("Has no data in local file.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Has no data in local file.");
 	}
 	else {
-		Dbg("Read feature data into memory failed, wait next read.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Read feature data into memory failed, wait next read.");
 	}
 }
 
@@ -762,7 +735,7 @@ bool CCustMngrAuthFSM::ReadDataIntoMemory(bool& bHasData)
 			m_featureData[CSimpleStringA(keys.c_str())] = fd;
 		}
 		else {
-			Dbg("Error: parse jsonFingerInfo failed.");
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Error: parse jsonFingerInfo failed.");
 			LogWarn(Severity_Middle, Error_Unexpect
 				, LOG_ERR_CUSTMNGRAUTH_AUTHORIZATION_READFEAT_FAILED
 				, "Read fingerprint feature json failed.");
@@ -770,7 +743,7 @@ bool CCustMngrAuthFSM::ReadDataIntoMemory(bool& bHasData)
 		}
 	}
 
-	Dbg("Total CustomerNum:%d in local file.", customerNum);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Total CustomerNum:%d in local file.", customerNum);
 
 	endReadFile = RVCGetTickCount();
 	ULLINT duration = endReadFile - startReadFile;
@@ -832,7 +805,7 @@ ErrorCodeEnum CCustMngrAuthFSM::LoadRunConfig(CSmartPointer<IConfigInfo>& spConf
 
 	if (errCode != Error_Succeed)
 	{
-		Dbg("Open runcfg file failed before query data.");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Open runcfg file failed before query data.");
 		LogError(Severity_High, Error_Unexpect
 			, LOG_ERR_CUSTMNGRAUTH_OPEN_RUNINFO_FAILED_UPDATE
 			, "open runcfg failed before query data.");
@@ -880,6 +853,7 @@ CSimpleStringA CCustMngrAuthFSM::GetCurrentDate()
 	return curDate;
 }
 
+///**TODO(Gifur@9/23/2022): param */
 int CCustMngrAuthFSM::CompareTime(CSimpleStringA time1, CSimpleStringA time2)
 {
 	if (time1.GetLength() > 0 && time2.GetLength() > 0)
@@ -934,35 +908,35 @@ ErrorCodeEnum CCustMngrAuthFSM::ReceiveDataFromServer(CAutoArray<CSimpleStringA>
 		switch (dw)
 		{
 		case WAIT_FAILED:
-			Dbg("WAIT_FAILED!");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("WAIT_FAILED!");
 			break;
 		case WAIT_TIMEOUT:
-			Dbg("WAIT_TIMEOUT");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("WAIT_TIMEOUT");
 		case WAIT_OBJECT_0:
-			Dbg("WAIT_OBJECT_0");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("WAIT_OBJECT_0");
 			break;
 		}
 		ResetEvent(m_pConnection->m_hPkgAnswer);
 
 		if (m_pConnection->m_reply == NULL)
 		{
-			Dbg("m_reply still null after m_hPkgAnswer handled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("m_reply still null after m_hPkgAnswer handled");
 			break;
 		}
 		if (m_pConnection->m_GetErrMsg)
 		{
-			Dbg("get error message, check dbg log");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("get error message, check dbg log");
 			break;
 		}
 		if (m_pConnection->m_reply->ResultCode == 2)
 		{
-			Dbg("remote server uninitialized yet, unable to excute query");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("remote server uninitialized yet, unable to excute query");
 			break;
 		}
 		else {
 			if (m_pConnection->m_reply->ResultCode == 0)
 			{
-				Dbg("All package downloaded from branch server.");
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("All package downloaded from branch server.");
 				bResumeTrans = false;
 				errCode = Error_Succeed;
 			}
@@ -974,10 +948,10 @@ ErrorCodeEnum CCustMngrAuthFSM::ReceiveDataFromServer(CAutoArray<CSimpleStringA>
 	}
 
 	if (bResumeTrans)
-		Dbg("some errors happened, check the related log");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("some errors happened, check the related log");
 
 	if (dataArray.GetCount() <= 0)
-		Dbg("query no data from branchServer.");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("query no data from branchServer.");
 
 	return errCode;
 }
@@ -1000,7 +974,7 @@ ErrorCodeEnum CCustMngrAuthFSM::BackupBeforeWriteData(RunInfoParams& runInfoPara
 
 	EnterCriticalSection(&m_cs);
 	if (!BackupFile(runInfoParam.SrcFile, runInfoParam.BackupFile))
-		Dbg("Backup runinfo file failed.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Backup runinfo file failed.");
 
 	if (runInfoParam.IsFirstTimeQueryData)
 	{
@@ -1012,7 +986,7 @@ ErrorCodeEnum CCustMngrAuthFSM::BackupBeforeWriteData(RunInfoParams& runInfoPara
 	errCode = GetEntityBase()->GetFunction()->OpenConfig(Config_Run, spConfig);
 	if (errCode != Error_Succeed)
 	{
-		Dbg("error: open runcfg failed with errCode(%s)", SpStrError(errCode));
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("error: open runcfg failed with errCode(%s)", SpStrError(errCode));
 		BackupFile(runInfoParam.BackupFile, runInfoParam.SrcFile);// if backup fail, recover
 		LeaveCriticalSection(&m_cs);
 	}
@@ -1076,7 +1050,7 @@ ErrorCodeEnum CCustMngrAuthFSM::WriteData(RunInfoParams& runInfoParam
 			if (bExitLoop)
 				break;
 		}else {
-			Dbg("fail to parse transArray[%d]!", transTime);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("fail to parse transArray[%d]!", transTime);
 			LeaveCriticalSection(&m_cs);
 			bExitLoop = true;
 			break;
@@ -1090,7 +1064,7 @@ ErrorCodeEnum CCustMngrAuthFSM::WriteData(RunInfoParams& runInfoParam
 		spConfig->WriteConfigValue("LatestTime", "LatestTime"
 								, tmpFeatureData.MaxUpdateTime.GetData());
 	}
-	Dbg("updateNum=%d", tmpFeatureData.tmpFeatureMap.size());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("updateNum=%d", tmpFeatureData.tmpFeatureMap.size());
 
 	UpdateDataIntoMemory(tmpFeatureData.tmpFeatureMap, runInfoParam.IsFirstTimeQueryData);
 	LeaveCriticalSection(&m_cs);
@@ -1170,10 +1144,10 @@ ErrorCodeEnum CCustMngrAuthFSM::ProcessFeatureData(JsonParams& jsonParam, TempFe
 		}
 	}else if (fingerDataState == 2)
 	{
-		Dbg("state(2): customer %s is currently unavailable.", customerID.GetData());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("state(2): customer %s is currently unavailable.", customerID.GetData());
 		spConfig->WriteConfigValue((const char*)m_FingerSection, customerID.GetData(), "");
 	}else {
-		Dbg("unexpected customer(%s)'s state is either 0 or 2", customerID.GetData());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("unexpected customer(%s)'s state is either 0 or 2", customerID.GetData());
 	}
 
 	return errCode;
@@ -1262,11 +1236,11 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectFingerPrint(SpReqAnsContext<CustMngrAuthS
 
 	if (errCode == Error_Succeed)
 	{
-		Dbg("Register FingerPrint successfully.");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Register FingerPrint successfully.");
 		return Error_Succeed;
 	}
 	else {
-		Dbg("Register FingerPrint failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Register FingerPrint failed! %s", SpStrError(errCode));
 		return errCode;
 	}
 }
@@ -1277,7 +1251,7 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectFingerPrintInfo(SpReqAnsContext<CustMngrA
 
 	if (ctx == NULL || !(ctx->Req.FingerId > 0 && ctx->Req.FingerId < 10))
 	{
-		Dbg("CollectFingerPrintInfo, Invalid inParam, FingerId:%d", ctx->Req.FingerId);
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CollectFingerPrintInfo, Invalid inParam, FingerId:%d", ctx->Req.FingerId);
 		return Error_Param;
 	}
 	CSimpleStringA tmpParam = CSimpleStringA::Format("web invoke CollectFingerPrintInfo with inParam FingerId:%d", ctx->Req.FingerId);
@@ -1296,7 +1270,7 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectFingerPrintInfo(SpReqAnsContext<CustMngrA
 
 	if (m_pFingerPrint == NULL || m_pFingerPrint->QuerySessionClosed())
 	{
-		Dbg("m_pFingerPrint is NULL or connection closed.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("m_pFingerPrint is NULL or connection closed.");
 		return Error_Hardware;
 	}
 
@@ -1304,7 +1278,7 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectFingerPrintInfo(SpReqAnsContext<CustMngrA
 
 	if (errCode == Error_NotInit)
 	{
-		Dbg("FingerPrintEntity not ready or failed.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("FingerPrintEntity not ready or failed.");
 		return Error_DevNotAvailable;
 	}
 
@@ -1335,11 +1309,11 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectFingerPrintInfo(SpReqAnsContext<CustMngrA
 			ErrorCodeEnum imgErrCode = GetImgBlob(data, imgFullPath);
 			if (imgErrCode != Error_Succeed)
 			{
-				Dbg("Failed to load image(%s)", imgFullPath.GetData());
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Failed to load image(%s)", imgFullPath.GetData());
 				return Error_Unexpect;
 			}
 			ctx->Ans.fingerImg = data;
-			Dbg("CollectFingerPrintInfo return success.");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("CollectFingerPrintInfo return success.");
 		}
 	}
 	else
@@ -1356,7 +1330,7 @@ ErrorCodeEnum CCustMngrAuthFSM::GenerateTemplate(SpReqAnsContext<CustMngrAuthSer
 	int fingerNum = ctx->Req.FingerIDList.GetCount();
 	if (fingerNum != IMAGE_NUM)
 	{
-		Dbg("GenerateTemplate, Invalid inParam, fingerNum:%d", fingerNum);
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GenerateTemplate, Invalid inParam, fingerNum:%d", fingerNum);
 		return Error_Param;
 	}
 
@@ -1365,7 +1339,7 @@ ErrorCodeEnum CCustMngrAuthFSM::GenerateTemplate(SpReqAnsContext<CustMngrAuthSer
 	errCode = m_pFingerPrint->Connect();
 	if (errCode != Error_Succeed)
 	{
-		Dbg("ERROR: connect to fingerprint entity failed while GenerateTemplate");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("ERROR: connect to fingerprint entity failed while GenerateTemplate: %s", SpStrError(errCode));
 		m_pFingerPrint->SafeDelete();
 		m_pFingerPrint = NULL;
 		return Error_DevNotAvailable;	//TODO::give one other errCode
@@ -1380,12 +1354,12 @@ ErrorCodeEnum CCustMngrAuthFSM::GenerateTemplate(SpReqAnsContext<CustMngrAuthSer
 	for (int i = 0; i < generateReq.FingerIDList.GetCount(); ++i)
 	{
 		generateReq.FingerIDList[i] = ctx->Req.FingerIDList[i];
-		Dbg("fingerIDList = %d", generateReq.FingerIDList[i]);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("fingerIDList = %d", generateReq.FingerIDList[i]);
 	}
 
 	if (m_pFingerPrint == NULL || m_pFingerPrint->QuerySessionClosed())
 	{
-		Dbg("m_pFingerPrint is NULL or connection closed.");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("m_pFingerPrint is NULL or connection closed.");
 		return Error_DevNotAvailable;
 	}
 
@@ -1393,17 +1367,17 @@ ErrorCodeEnum CCustMngrAuthFSM::GenerateTemplate(SpReqAnsContext<CustMngrAuthSer
 
 	if (errCode == Error_NotInit)
 	{
-		Dbg("FingerPrintEntity not ready or failed.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("FingerPrintEntity not ready or failed.");
 		return Error_DevNotAvailable;
 	}
 
 	if (errCode == Error_Succeed)
 	{
 		ctx->Ans.templateFeature = generateAns.templateFeature;
-		Dbg("GenerateTemplate return success.");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("GenerateTemplate return success.");
 	}
 	else {
-		Dbg("Invoke GenerateTemplate returned %d", errCode);
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("Invoke GenerateTemplate returned %d", errCode);
 		errCode = Error_Unexpect;
 	}
 
@@ -1423,11 +1397,11 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectFingerPrintEx(SpReqAnsContext<CustMngrAut
 
 	if (errCode == Error_Succeed)
 	{
-		Dbg("Register FingerPrint successfully.");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Register FingerPrint successfully.");
 		return Error_Succeed;
 	}
 	else {
-		Dbg("Register FingerPrint failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Register FingerPrint failed: %s !", SpStrError(errCode));
 		return errCode;
 	}
 }
@@ -1447,7 +1421,7 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectProcess(SpReqAnsContext<CustMngrAuthServi
 
 		if (m_pFingerPrint == NULL || m_pFingerPrint->QuerySessionClosed())
 		{
-			Dbg("m_pFingerPrint is NULL or connection closed.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("m_pFingerPrint is NULL or connection closed.");
 			return Error_NoTarget;
 		}
 
@@ -1470,7 +1444,7 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectProcess(SpReqAnsContext<CustMngrAuthServi
 
 			if (errCode != Error_Succeed)
 			{
-				Dbg("Failed to load finger image, %s", imgFullPath.GetData());
+				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER)("Failed to load finger image, %s", imgFullPath.GetData());
 				errCode = Error_Unexpect;
 				break;
 			}
@@ -1490,11 +1464,11 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectProcess(SpReqAnsContext<CustMngrAuthServi
 
 			if (i == (COLLECT_TIMES - 1)) {
 				ctx->Ans.feature = collecetAns.feature;
-				Dbg("feature = %s", ctx->Ans.feature.GetData());
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("feature = %s", ctx->Ans.feature.GetData());
 			}
 		}
 		else {
-			Dbg("invoke GetImageAndFeature failed in %dth time, errCode(%s)", i + 1, SpStrError(errCode));
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("invoke GetImageAndFeature failed in %dth time, errCode(%s)", i + 1, SpStrError(errCode));
 			break;
 		}
 	}
@@ -1521,16 +1495,16 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectProcessEx(SpReqAnsContext<CustMngrAuthSer
 
 	if (m_pFingerPrint == NULL || m_pFingerPrint->QuerySessionClosed())
 	{
-		Dbg("m_pFingerPrint is NULL or connection closed.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("m_pFingerPrint is NULL or connection closed.");
 		return Error_NoTarget;
 	}
 
-	Dbg("Start %dth scan fingerprint", collectExReq.times);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Start %dth scan fingerprint", collectExReq.times);
 	errCode = m_pFingerPrint->GetImageAndFeatureEx(collectExReq, collectExAns, 30000, dwUserErrCode);//fingerprint entity loop duration is 15s
 
-	Dbg("reserverd1[0] = %d", collectExAns.reserved1[0]);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("reserverd1[0] = %d", collectExAns.reserved1[0]);
 	if (errCode == Error_NotExist) {
-		Dbg("cannot find finger img in dep!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("cannot find finger img in dep!");
 		return Error_NotExist;
 	}
 	if (errCode == Error_Succeed && collectExAns.reserved1[0] == 3) {
@@ -1546,7 +1520,7 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectProcessEx(SpReqAnsContext<CustMngrAuthSer
 	ErrorCodeEnum imgErrCode = GetImgBlob(data, imgFullPath);
 	if (imgErrCode != Error_Succeed)
 	{
-		Dbg("Failed to load image(%s)", imgFullPath.GetData());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("Failed to load image(%s)", imgFullPath.GetData());
 		return Error_NotExist;
 	}
 
@@ -1588,10 +1562,10 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectProcessEx(SpReqAnsContext<CustMngrAuthSer
 	}
 
 	if (errCode == Error_Succeed) {
-		Dbg("Register FingerPrint successfully.");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Register FingerPrint successfully.");
 	}
 	else {
-		Dbg("Register FingerPrint failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("Register FingerPrint failed! %s", SpStrError(errCode));
 	}
 	return errCode;
 }
@@ -1617,12 +1591,12 @@ void CCustMngrAuthFSM::BroadcastPressFinger(int times, bool bPressFinger)
 
 ErrorCodeEnum CCustMngrAuthFSM::GetImgBlob(CBlob& data, CSimpleStringA imgPath)
 {
-	Dbg("image full path: %s", imgPath.GetData());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("image full path: %s", imgPath.GetData());
 
 	FILE* fp = fopen(imgPath, "rb");
 	if (fp)
 	{
-		Dbg("fopen succeed.");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("fopen succeed.");
 		fseek(fp, 0, SEEK_END);
 		long flen = ftell(fp);
 		fseek(fp, 0, SEEK_SET);
@@ -1632,7 +1606,7 @@ ErrorCodeEnum CCustMngrAuthFSM::GetImgBlob(CBlob& data, CSimpleStringA imgPath)
 		return Error_Succeed;
 	}
 	else {
-		Dbg("fopen %s failed!", imgPath.GetData());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("fopen %s failed!", imgPath.GetData());
 		return Error_IO;
 	}
 }
@@ -1659,7 +1633,7 @@ ErrorCodeEnum CCustMngrAuthFSM::SaveFingerPrint(SpReqAnsContext<CustMngrAuthServ
 	if (ctx->Req.FPFeatureList == nullptr)
 		return Error_Param;
 	int fingerIDNum = ctx->Req.FingerIdList.GetCount();
-	Dbg("FingerIDNum=%d", fingerIDNum);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("FingerIDNum=%d", fingerIDNum);
 
 	FeatureData* fd = new FeatureData();
 	fd->FingerIDArray.Init(fingerIDNum);
@@ -1678,7 +1652,7 @@ ErrorCodeEnum CCustMngrAuthFSM::SaveFingerPrint(SpReqAnsContext<CustMngrAuthServ
 		snprintf(fingerID, 10, "FingerID%d", ctx->Req.FingerIdList[i]);
 #endif // RVC_OS_WIN
 
-		Dbg("writing %s", fingerID);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("writing %s", fingerID);
 		fingerInfo[fingerID] = ctx->Req.FPFeatureList[i].GetData();
 		fd->FingerIDArray[i] = ctx->Req.FPFeatureList[i];
 		fd->FingerIDLenArray[i] = fd->FingerIDArray[i].GetLength();
@@ -1705,7 +1679,7 @@ ErrorCodeEnum CCustMngrAuthFSM::SaveFingerPrint(SpReqAnsContext<CustMngrAuthServ
 		LeaveCriticalSection(&m_cs);
 		return Error_Unexpect;
 	}
-	Dbg("write data into runinfo success when commit.");
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("write data into runinfo success when commit.");
 	LeaveCriticalSection(&m_cs);
 	return errCode;
 }
@@ -1740,7 +1714,7 @@ ErrorCodeEnum CCustMngrAuthFSM::ConnectFingerPrintEntity()
 	errCode = m_pFingerPrint->Connect();
 	if (errCode != Error_Succeed)
 	{
-		Dbg("ERROR: connect to fingerprint entity failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ERROR: connect to fingerprint entity failed! %s", SpStrError(errCode));
 		m_pFingerPrint->SafeDelete();
 
 		errCode = Error_NoTarget;	//TODO::give one other errCode
@@ -1761,14 +1735,14 @@ ErrorCodeEnum CCustMngrAuthFSM::PrepareDataBeforeMatch(MatchParams* matchParam)
 
 	if (totalCustomerID <= 0)
 	{
-		Dbg("No FingerPrint data in local file or read local file failed.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("No FingerPrint data in local file or read local file failed.");
 		LeaveCriticalSection(&m_cs);
 		if (matchParam != NULL)
 			delete matchParam;
 		return Error_NoTarget;
 	}
 
-	Dbg("begin copy feature to reqParams");
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("begin copy feature to reqParams");
 	for (auto it = m_featureData.begin(); it != m_featureData.end(); ++it)
 	{
 		TemplateInfo ti;
@@ -1794,7 +1768,7 @@ ErrorCodeEnum CCustMngrAuthFSM::PrepareDataBeforeMatch(MatchParams* matchParam)
 			matchParam->sFingerCount.push_back(ti);
 	}
 	LeaveCriticalSection(&m_cs);
-	Dbg("num of template not empty:%d", matchParam->sTotalNumOfTemplate);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("num of template not empty:%d", matchParam->sTotalNumOfTemplate);
 
 	matchParam->sMatchReq.templateNum = matchParam->sTotalNumOfTemplate;
 	matchParam->sMatchReq.templates.Init(matchParam->sTotalNumOfTemplate);
@@ -1806,8 +1780,8 @@ ErrorCodeEnum CCustMngrAuthFSM::PrepareDataBeforeMatch(MatchParams* matchParam)
 		matchParam->sMatchReq.templateLen[i] = tempFeatureLenArray[i];
 	}
 
-	Dbg("end copy feature to reqParams");
-	Dbg("templateNum: %d", matchParam->sMatchReq.templateNum);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("end copy feature to reqParams");
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("templateNum: %d", matchParam->sMatchReq.templateNum);
 
 	return Error_Succeed;
 }
@@ -1820,18 +1794,18 @@ ErrorCodeEnum CCustMngrAuthFSM::MatchProcess(MatchParams* matchParam, bool& bSto
 	{
 		if (m_pFingerPrint == NULL || m_pFingerPrint->QuerySessionClosed())
 		{
-			Dbg("m_pFingerPrint is NULL or connection closed.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("m_pFingerPrint is NULL or connection closed.");
 			return Error_Unexpect;
 		}
 		//fingerprint entity may not return immediately
 		SLEEP(100);
 
-		Dbg("begin next invoke match.");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("begin next invoke match.");
 		errCode = m_pFingerPrint->Match(matchParam->sMatchReq, matchParam->sMatchAns, 20000);
 
 		if (m_bCancelAuthorize || errCode == Error_Cancel)
 		{
-			Dbg("cancel authorize task.");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("cancel authorize task.");
 			bStopAuthorize = true;
 			m_bCancelAuthorize = false;
 			if (m_bAuthorizeTimeout)
@@ -1843,18 +1817,18 @@ ErrorCodeEnum CCustMngrAuthFSM::MatchProcess(MatchParams* matchParam, bool& bSto
 		}
 		else if (errCode == Error_Unexpect || errCode == Error_TimeOut)
 		{
-			Dbg("invoke match error with errCode(%s)", SpStrError(errCode));
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("invoke match error with errCode(%s)", SpStrError(errCode));
 			BroadcastGetFinger(2);
 		}
 		else if (errCode == Error_Succeed)
 		{
-			Dbg("invoke match success, start analyze result.");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("invoke match success, start analyze result.");
 			errCode = AnalyzeMatchResult(matchParam, bStopAuthorize);
 			if (errCode == Error_Succeed)
 				return Error_Succeed; //continue if other errCode
 		}
 		else {
-			Dbg("invole match error(%s), stop authorize", SpStrError(errCode));
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("invole match error(%s), stop authorize", SpStrError(errCode));
 			return Error_Unexpect;
 		}
 	}
@@ -1874,7 +1848,7 @@ ErrorCodeEnum CCustMngrAuthFSM::AnalyzeMatchResult(MatchParams* matchParam, bool
 	int resTemplateNum = matchParam->sMatchAns.result.GetCount();
 	if (resTemplateNum != matchParam->sTotalNumOfTemplate)
 	{
-		Dbg("result templateNum(%d) is not equale to the Req's(%d)."
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("result templateNum(%d) is not equale to the Req's(%d)."
 			, resTemplateNum, matchParam->sTotalNumOfTemplate);
 		return Error_Unexpect;
 	}
@@ -1907,14 +1881,14 @@ ErrorCodeEnum CCustMngrAuthFSM::AnalyzeMatchResult(MatchParams* matchParam, bool
 	{
 	case 0:
 	{
-		Dbg("MatchResult: 0| no match");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MatchResult: 0| no match");
 		BroadcastGetFinger(0);
 	}
 	break;
 	case 1:
 	{
-		Dbg("MatchResult: 1| one and only one match, authorize done.");
-		Dbg("Match Finger(CustomerID=%s)", (const char*)tmpFingerCountInfo[matchIndex].CustomerID);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MatchResult: 1| one and only one match, authorize done.");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Match Finger(CustomerID=%s)", (const char*)tmpFingerCountInfo[matchIndex].CustomerID);
 		m_authCtx.eAuthByWhich = AuthByFngPrnt;
 		m_authCtx.CustomerID = tmpFingerCountInfo[matchIndex].CustomerID;
 		bStopAuthorize = true;
@@ -1923,7 +1897,7 @@ ErrorCodeEnum CCustMngrAuthFSM::AnalyzeMatchResult(MatchParams* matchParam, bool
 	break;
 	case 2:
 	{
-		Dbg("MatchResult: 2 | two and more matches. be alerted");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MatchResult: 2 | two and more matches. be alerted");
 		BroadcastGetFinger(1);
 	}
 	break;
@@ -1942,7 +1916,7 @@ ErrorCodeEnum CCustMngrAuthFSM::MatchFingerPrintEx(SpReqAnsContext<CustMngrAuthS
 	errCode = m_pFingerPrint->Connect();
 	if (errCode != Error_Succeed)
 	{
-		Dbg("ERROR: connect to fingerprint entity failed while match");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ERROR: connect to fingerprint entity failed while match %s", SpStrError(errCode));
 		m_pFingerPrint->SafeDelete();
 		m_pFingerPrint = NULL;
 		return Error_Hardware;	//TODO::give one other errCode
@@ -1957,7 +1931,7 @@ ErrorCodeEnum CCustMngrAuthFSM::MatchFingerPrintEx(SpReqAnsContext<CustMngrAuthS
 
 	if (m_pFingerPrint == NULL || m_pFingerPrint->QuerySessionClosed())
 	{
-		Dbg("m_pFingerPrint is NULL or connection closed.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("m_pFingerPrint is NULL or connection closed.");
 		return Error_Hardware;
 	}
 
@@ -1965,13 +1939,13 @@ ErrorCodeEnum CCustMngrAuthFSM::MatchFingerPrintEx(SpReqAnsContext<CustMngrAuthS
 
 	if (errCode == Error_NotInit)
 	{
-		Dbg("FingerPrintEntity not ready or failed.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("FingerPrintEntity not ready or failed.");
 		return Error_Hardware;
 	}
 
 	bStopAuthorize = true;
 	if (m_bCancelAuthorize || GetFingerAns.reserved1[0] == 3) {
-		Dbg("GetFingerPrint is canceled while match.");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("GetFingerPrint is canceled while match.");
 		m_bCancelAuthorize = false;
 		if (m_bAuthorizeTimeout) {
 			m_bAuthorizeTimeout = false;
@@ -2008,7 +1982,7 @@ ErrorCodeEnum CCustMngrAuthFSM::MatchFingerPrintEx(SpReqAnsContext<CustMngrAuthS
 			ErrorCodeEnum imgErrCode = GetImgBlob(data, imgFullPath);
 			if (imgErrCode != Error_Succeed)
 			{
-				Dbg("Failed to load image(%s)", imgFullPath.GetData());
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Failed to load image(%s)", imgFullPath.GetData());
 				return Error_Unexpect;
 			}
 			ctx->Ans.FingerImg = data;
@@ -2027,7 +2001,7 @@ void CCustMngrAuthFSM::DeleteBmp(int type)
 {
 	if ((type & BmpImage) == BmpImage)
 	{
-		Dbg("to delete fingerprint images...");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to delete fingerprint images...");
 		CSimpleStringA imageName;
 		DeleteFileIfExisted("finger.bmp");
 		for (int i = 1; i <= 10; ++i) {
@@ -2045,7 +2019,7 @@ ErrorCodeEnum CCustMngrAuthFSM::DeleteFileIfExisted(const char* fileName)
 {
 	if (strlen(fileName) == 0 || strchr(fileName, (int)'*') != NULL)
 	{
-		Dbg("Invalid or empty filename(%s)", fileName);
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Invalid or empty filename(%s)", fileName);
 		return Error_Param;
 	}
 	CSimpleStringA strPath, strObjPath;
@@ -2057,16 +2031,16 @@ ErrorCodeEnum CCustMngrAuthFSM::DeleteFileIfExisted(const char* fileName)
 	{
 		if (RemoveFileA(strObjPath))
 		{
-			Dbg("DeleteFile(%s) success.", strObjPath.GetData());
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("DeleteFile(%s) success.", strObjPath.GetData());
 			return Error_Succeed;
 		}
 		else {
-			Dbg("DeleteFile(%s) failed LastError(%s).", strObjPath.GetData(), GetLastError());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("DeleteFile(%s) failed LastError(%s).", strObjPath.GetData(), GetLastError());
 			return Error_Unexpect;
 		}
 	}
 	else {
-		Dbg("file %s not exist.", fileName);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("file %s not exist.", fileName);
 		return Error_Succeed;
 	}
 }

+ 31 - 31
Module/mod_CustMngrAuth/CustMngrAuthFSM.h

@@ -144,7 +144,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			Dbg("authorize_start unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("authorize_start unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -162,7 +162,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			Dbg("cancel QueryAuthorInfo unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("cancel QueryAuthorInfo unhandled");
 		}
 	}
 protected:
@@ -179,7 +179,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			Dbg("authorize_finished unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("authorize_finished unhandled");
 		}
 	}
 protected:
@@ -196,7 +196,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			Dbg("authorize_cancel unhandled");	
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("authorize_cancel unhandled");	
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -214,7 +214,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			Dbg("QueryAuthorInfo unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("QueryAuthorInfo unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -232,7 +232,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			Dbg("QueryAuthorInfo_finished unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("QueryAuthorInfo_finished unhandled");
 		}
 	}
 protected:
@@ -249,7 +249,7 @@ public:
 	{
 		if (ctx!=NULL)
 		{
-			Dbg("collect_finger_print unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("collect_finger_print unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -265,7 +265,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			Dbg("collect_fingerEx_print unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("collect_fingerEx_print unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -283,7 +283,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			Dbg("Collect FingerPrint info unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Collect FingerPrint info unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -301,7 +301,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			Dbg("Generate Template unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Generate Template unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -319,7 +319,7 @@ public:
 	{
 		if (ctx!=NULL)
 		{
-			Dbg("collect_finger_print_finished unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("collect_finger_print_finished unhandled");
 		}
 	}
 protected:
@@ -336,7 +336,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			Dbg("collect_finger_printEx_finished unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("collect_finger_printEx_finished unhandled");
 		}
 	}
 protected:
@@ -353,7 +353,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			Dbg("Collect FingerPrint Info finished unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Collect FingerPrint Info finished unhandled");
 		}
 	}
 protected:
@@ -370,7 +370,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			Dbg("Generate Template finished unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Generate Template finished unhandled");
 		}
 	}
 protected:
@@ -384,7 +384,7 @@ public:
 	~CancelCollectFingerPrintEvent(){}
 	virtual void OnUnhandled()
 	{
-		Dbg("cancel collect fingerprint unhandled");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("cancel collect fingerprint unhandled");
 	}
 };
 
@@ -395,7 +395,7 @@ public:
 	~CancelCollectFingerPrintExEvent() {}
 	virtual void OnUnhandled()
 	{
-		Dbg("cancel collect fingerprintEx unhandled");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("cancel collect fingerprintEx unhandled");
 	}
 };
 
@@ -408,7 +408,7 @@ public:
 	virtual void OnUnhandled(){
 		if (ctx!=NULL)
 		{
-			Dbg("save_finger_print_start unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("save_finger_print_start unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -423,7 +423,7 @@ public:
 	virtual void OnUnhandled(){
 		if (ctx!=NULL)
 		{
-			Dbg("save_finger_print_finished unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("save_finger_print_finished unhandled");
 		}
 	}
 };
@@ -434,7 +434,7 @@ public:
 	~CheckUkeyEvent(){}
 	virtual void OnUnhandled()
 	{
-		Dbg("check_ukey unhandled");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("check_ukey unhandled");
 	}
 };
 
@@ -445,7 +445,7 @@ public:
 	~CheckUkeyFinishedEvent(){}
 	virtual void OnUnhandled()
 	{
-		Dbg("check_ukey_finished unhandled");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("check_ukey_finished unhandled");
 	}
 };
 
@@ -458,7 +458,7 @@ public:
 	virtual void OnUnhandled(){
 		if (ctx!=NULL)
 		{
-			Dbg("holdon unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("holdon unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -626,7 +626,7 @@ public:
 
 	virtual void OnDisconnect()
 	{
-		Dbg("FeatureUpdateConnection disconnected");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("FeatureUpdateConnection disconnected");
 	}
 
 	void SendFeatReq(const char* currAgent, const char* branchID, const char* lastTime = NULL)
@@ -641,11 +641,11 @@ public:
 		if (lastTime != NULL)
 		{
 			memcpy(req.UpdateTime, lastTime, 20);
-			Dbg("req.UpdateTime:%s", req.UpdateTime);
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("req.UpdateTime:%s", req.UpdateTime);
 		}
 
 #ifdef RVC_OS_WIN
-		Dbg("req.TerminalID = %s, m_pFSM->m_TerminalID = %s", req.TerminalID, m_pFSM->m_TerminalID.GetData());
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("req.TerminalID = %s, m_pFSM->m_TerminalID = %s", req.TerminalID, m_pFSM->m_TerminalID.GetData());
 		strncpy_s(req.TerminalID, sizeof(req.TerminalID), m_pFSM->m_TerminalID, m_pFSM->m_TerminalID.GetLength());
 #else
 		strncpy(req.TerminalID, m_pFSM->m_TerminalID, m_pFSM->m_TerminalID.GetLength());
@@ -663,18 +663,18 @@ public:
 		if (pRecvPkg->GetErrMsg(dwSysCode, dwUserCode, errMsg))
 		{
 			string serviceCode = pRecvPkg->GetServiceCode();
-			Dbg("receive %s ans packet is error, errormsg is %s", serviceCode.c_str(), errMsg.c_str());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("receive %s ans packet is error, errormsg is %s", serviceCode.c_str(), errMsg.c_str());
 			m_GetErrMsg = true;
 			SetEvent(m_hPkgAnswer);
 		}else{
-			Dbg("success, no error message.");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("success, no error message.");
 			string serviceCode = pRecvPkg->GetServiceCode();
 			if (serviceCode == "FETQYREQ")
 			{
 				int dataLen = pRecvPkg->GetStructLen("FETQYANS");
 				if (dataLen > 0 )
 				{
-					Dbg("GetStructData structlen: %d", dataLen);
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("GetStructData structlen: %d", dataLen);
 					BYTE *pBuffer = new BYTE[dataLen];
 					memset(pBuffer, 0, dataLen);
 
@@ -689,16 +689,16 @@ public:
 							pData[dataLen] = 0;
 							m_jsonLen = dataLen - sizeof(FeatReply);
 						}else
-							Dbg("ERROR: m_reply is null!");
+							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ERROR: m_reply is null!");
 					}else
-						Dbg("ERROR: getstructdata(FETQYANS) failed!");
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ERROR: getstructdata(FETQYANS) failed!");
 					delete pBuffer;
 				}else
-					Dbg("ERROR: getstructlen(FETQYANS) = 0!");
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ERROR: getstructlen(FETQYANS) = 0!");
 
 				SetEvent(m_hPkgAnswer);
 			}else
-				Dbg("ERROR: wrong service code!");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ERROR: wrong service code!");
 		}
 	}
 

+ 0 - 1
Module/mod_CustMngrAuth/CustMngrAuth_client_g.h

@@ -32,7 +32,6 @@ public:
 	}
 	void OnClose(ErrorCodeEnum)
 	{
-		Dbg("session closed.");
 		bSessionClosed = true;
 	}
 	bool QuerySessionClosed()

+ 6 - 6
Module/mod_CustMngrAuth/mod_CustMngrAuth.cpp

@@ -23,7 +23,7 @@ ErrorCodeEnum CCustMngrAuthEntity::__OnStart(ErrorCodeEnum preOperationError)
 	ErrorCodeEnum eStart = m_fsm.Init(this);
 	if (eStart != Error_Succeed)
 	{
-		Dbg("m_fsm.Init failed");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("m_fsm.Init failed");
 	}
 	return eStart;
 }
@@ -55,7 +55,7 @@ void CCustMngrAuthEntity::OnBroadcastEvent(CUUID SubID, const char* pszEntityNam
 
 CServerSessionBase* CCustMngrAuthEntity::OnNewSession(const char*,const char*)
 {
-	Dbg("A new connecting request arrived.");
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("A new connecting request arrived.");
 	m_bNewSessionInit = true;
 	return new CustMngrAuthServerSession(this);
 }
@@ -174,7 +174,7 @@ void CCustMngrAuthEntity::HoldOn(SpReqAnsContext<CustMngrAuthService_HoldOn_Req,
 void CustMngrAuthServerSession::Handle_StartAuthorize(SpReqAnsContext<CustMngrAuthService_StartAuthorize_Req, CustMngrAuthService_StartAuthorize_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	Dbg("handle_authorize.");
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("handle_authorize.");
 	m_pEntity->StartAuthorize(ctx);
 }
 
@@ -187,9 +187,9 @@ void CustMngrAuthServerSession::Handle_StopAuthorize(SpReqAnsContext<CustMngrAut
 void CustMngrAuthServerSession::Handle_QueryAuthorInfo(SpReqAnsContext<CustMngrAuthService_QueryAuthorInfo_Req, CustMngrAuthService_QueryAuthorInfo_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	Dbg("TimeLimit = %d", ctx->Req.TimeLimit);
-	Dbg("WayofFinger = %d", ctx->Req.WayofFinger);
-	Dbg("WayofKey = %d", ctx->Req.WayofKey);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("TimeLimit = %d", ctx->Req.TimeLimit);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("WayofFinger = %d", ctx->Req.WayofFinger);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("WayofKey = %d", ctx->Req.WayofKey);
 	if (ctx->Req.WayofFinger != 1) {
 		ctx->Answer(Error_Param);//uos中只通过指纹授权
 		return;

+ 33 - 48
Module/mod_DeviceControl/DeviceAdapterCheckerImpl.cpp

@@ -21,7 +21,7 @@ ErrorCodeEnum CAdapterLoadChecker::EditLDLibraryPathForVendor(LPCTSTR filePath,
     size_t size = 1024;
     int result = toolkit_getenv(name, szOldValue, &size);
     if (result != 0) {
-        Dbg("getenv %s failed: %s", name, toolkit_strerror(result));
+        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("getenv %s failed: %s", name, toolkit_strerror(result));
         if (!fAdd) {
             return Error_Succeed;
         }
@@ -31,20 +31,20 @@ ErrorCodeEnum CAdapterLoadChecker::EditLDLibraryPathForVendor(LPCTSTR filePath,
             return Error_Unexpect;
         }
     }
-    Dbg("env(%s)=%s", name, szOldValue);
+    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("env(%s)=%s", name, szOldValue);
 
     CSimpleStringA strTmp(szOldValue);
     CSimpleStringA strNewPath(filePath);
 
     if (strTmp.IsStartWith(strNewPath)) {
-        Dbg("already exist at front!!!!");
+        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("already exist at front!!!!");
         if (fAdd) {
             return Error_AlreadyExist;
         } else {
             strNewPath = strTmp.SubString(strNewPath.GetLength() + 1, strTmp.GetLength() - 1);
         }
     } else if (strTmp.IndexOf(strNewPath) != -1) {
-        Dbg("already exist at inner!");
+        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("already exist at inner!");
         return Error_InvalidState;
     } else if (fAdd) {
         strNewPath += ":";
@@ -57,14 +57,14 @@ FINALLY:
 
     result = toolkit_setenv(name, strNewPath);
     if (result != 0) {
-        Dbg("setenv failed: %s", toolkit_strerror(result));
+        DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("setenv failed: %s", toolkit_strerror(result));
         return Error_Unexpect;
     }
 
     size = 1024;
     memset(szOldValue, '\0', sizeof(szOldValue));
     toolkit_getenv(name, szOldValue, &size);
-    Dbg("finally:{%s}", szOldValue);
+    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("finally:{%s}", szOldValue);
     return Error_Succeed;
 }
 
@@ -87,31 +87,16 @@ ErrorCodeEnum CAdapterLoadChecker::CheckDeviceAndAdapterAvailable(const VendorLi
         return Error_NotExist;
     }
 
-    //bool toClearEnv(false);
-    //CSimpleStringA strDepFullPath(libInfo.optCfg.strDepDirWithSlashOrFileName + libInfo.strVendor);
-    //if (ExistsDirA(strDepFullPath)) {
-    //    ErrorCodeEnum ec = EditLDLibraryPathForVendor(strDepFullPath, TRUE);
-    //    if (ec == Error_Succeed || ec == Error_AlreadyExist) {
-    //        toClearEnv = true;
-    //    } else {
-    //        strErrMsg = CSimpleStringA::Format("设置适配器库加载路径失败:%s", SpStrError(ec));
-    //        return ec;
-    //    }
-    //} else {
-    //    Dbg("{%s} dir not exists!", strDepFullPath.GetData());
-    //}
-    
-
     switch (select) {
     case 0: //PinPad
     {
         DevAdptLibHelper<PinPadClass> devImpl;
         result = devImpl.LoadUp(strLibFullPath);
-        Dbg("Load returned: %s", SpStrError(result));
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Load returned: %s", SpStrError(result));
         if (Error_Succeed == result) {
-            Dbg("%s: to open %p, %d, %d", __FUNCTION__, devImpl.GetDevPointer(), libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s: to open %p, %d, %d", __FUNCTION__, devImpl.GetDevPointer(), libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
             result = devImpl->DevOpen(libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
-            Dbg("open result: %s", SpStrError(result));
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open result: %s", SpStrError(result));
             if (result != Error_Succeed) {
                 DevErrorInfo devErrInfo;
                 memset(&devErrInfo, 0, sizeof(DevErrorInfo));
@@ -128,12 +113,12 @@ ErrorCodeEnum CAdapterLoadChecker::CheckDeviceAndAdapterAvailable(const VendorLi
     {
         DevAdptLibHelper<CardIssuerClass> devImpl;
         result = devImpl.LoadUp(strLibFullPath);
-        Dbg("Load returned: %s", SpStrError(result));
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Load returned: %s", SpStrError(result));
         if (Error_Succeed == result) {
-            Dbg("%s: to open %p, %d, %d", __FUNCTION__, devImpl.GetDevPointer(), libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s: to open %p, %d, %d", __FUNCTION__, devImpl.GetDevPointer(), libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
             BYTE noUse;
             result = devImpl->DevOpenEx(libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate, DEV_OPEN_TYPE_COM, "", noUse);
-            Dbg("open result: %s", SpStrError(result));
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open result: %s", SpStrError(result));
             if (result != Error_Succeed) {
                 DevErrorInfo devErrInfo;
                 memset(&devErrInfo, 0, sizeof(DevErrorInfo));
@@ -151,11 +136,11 @@ ErrorCodeEnum CAdapterLoadChecker::CheckDeviceAndAdapterAvailable(const VendorLi
     {
         DevAdptLibHelper<IDCerClass> devImpl;
         result = devImpl.LoadUp(strLibFullPath);
-        Dbg("Load returned: %s", SpStrError(result));
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Load returned: %s", SpStrError(result));
         if (Error_Succeed == result) {
-            Dbg("%s: to open %p, %d", __FUNCTION__, devImpl.GetDevPointer(), libInfo.optCfg.dwPort);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s: to open %p, %d", __FUNCTION__, devImpl.GetDevPointer(), libInfo.optCfg.dwPort);
             result = devImpl->DevOpen(libInfo.optCfg.dwPort);
-            Dbg("open result: %s", SpStrError(result));
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open result: %s", SpStrError(result));
             if (result != Error_Succeed) {
                 DevErrorInfo devErrInfo;
                 memset(&devErrInfo, 0, sizeof(DevErrorInfo));
@@ -172,11 +157,11 @@ ErrorCodeEnum CAdapterLoadChecker::CheckDeviceAndAdapterAvailable(const VendorLi
     {
         DevAdptLibHelper<RFICClass> devImpl;
         result = devImpl.LoadUp(strLibFullPath);
-        Dbg("Load returned: %s", SpStrError(result));
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Load returned: %s", SpStrError(result));
         if (Error_Succeed == result) {
-            Dbg("%s: to open %p, %d, %d", __FUNCTION__, devImpl.GetDevPointer(), libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s: to open %p, %d, %d", __FUNCTION__, devImpl.GetDevPointer(), libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
             result = devImpl->DevOpen(libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
-            Dbg("open result: %s", SpStrError(result));
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open result: %s", SpStrError(result));
             if (result != Error_Succeed) {
                 DevErrorInfo devErrInfo;
                 memset(&devErrInfo, 0, sizeof(DevErrorInfo));
@@ -193,11 +178,11 @@ ErrorCodeEnum CAdapterLoadChecker::CheckDeviceAndAdapterAvailable(const VendorLi
     {
         DevAdptLibHelper<CHSPSClass> devImpl;
         result = devImpl.LoadUp(strLibFullPath);
-        Dbg("Load returned: %s", SpStrError(result));
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Load returned: %s", SpStrError(result));
         if (Error_Succeed == result) {
-            Dbg("%s: to open %p", __FUNCTION__, devImpl.GetDevPointer());
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s: to open %p", __FUNCTION__, devImpl.GetDevPointer());
             result = devImpl->DevOpen();
-            Dbg("open result: %s", SpStrError(result));
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open result: %s", SpStrError(result));
             if (result != Error_Succeed) {
                 DevErrorInfo devErrInfo;
                 memset(&devErrInfo, 0, sizeof(DevErrorInfo));
@@ -214,11 +199,11 @@ ErrorCodeEnum CAdapterLoadChecker::CheckDeviceAndAdapterAvailable(const VendorLi
     {
         DevAdptLibHelper<FingerPrintClass> devImpl;
         result = devImpl.LoadUp(strLibFullPath);
-        Dbg("Load returned: %s", SpStrError(result));
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Load returned: %s", SpStrError(result));
         if (Error_Succeed == result) {
-            Dbg("%s: to open %p, %d, %d", __FUNCTION__, devImpl.GetDevPointer(), libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s: to open %p, %d, %d", __FUNCTION__, devImpl.GetDevPointer(), libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
             result = devImpl->DevOpen(libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
-            Dbg("open result: %s", SpStrError(result));
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open result: %s", SpStrError(result));
             if (result != Error_Succeed) {
                 DevErrorInfo devErrInfo;
                 memset(&devErrInfo, 0, sizeof(DevErrorInfo));
@@ -235,11 +220,11 @@ ErrorCodeEnum CAdapterLoadChecker::CheckDeviceAndAdapterAvailable(const VendorLi
     {
         DevAdptLibHelper<WatchDogClass> devImpl;
         result = devImpl.LoadUp(strLibFullPath);
-        Dbg("Load returned: %s", SpStrError(result));
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Load returned: %s", SpStrError(result));
         if (Error_Succeed == result) {
-            Dbg("%s: to open %p", __FUNCTION__, devImpl.GetDevPointer());
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s: to open %p", __FUNCTION__, devImpl.GetDevPointer());
             result = devImpl->DevOpen();
-            Dbg("open result: %s", SpStrError(result));
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open result: %s", SpStrError(result));
             if (result != Error_Succeed) {
                 DevErrorInfo devErrInfo;
                 memset(&devErrInfo, 0, sizeof(DevErrorInfo));
@@ -256,13 +241,13 @@ ErrorCodeEnum CAdapterLoadChecker::CheckDeviceAndAdapterAvailable(const VendorLi
     {
         DevAdptLibHelper<GpioClass> devImpl;
         result = devImpl.LoadUp(strLibFullPath);
-        Dbg("Load returned: %s", SpStrError(result));
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Load returned: %s", SpStrError(result));
         if (Error_Succeed == result) {
             ///**TODO(Gifur@10/20/2021): 这里只针对UOS和新款Win大机 */
             GpioInitParam param = { libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate, 4, {true, true, false, true} };
-            Dbg("%s: to open %p, %d, %d", __FUNCTION__, devImpl.GetDevPointer(), libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s: to open %p, %d, %d", __FUNCTION__, devImpl.GetDevPointer(), libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
             result = devImpl->DevOpen(param);
-            Dbg("open result: %s", SpStrError(result));
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open result: %s", SpStrError(result));
             if (result != Error_Succeed) {
                 DevErrorInfo devErrInfo;
                 memset(&devErrInfo, 0, sizeof(DevErrorInfo));
@@ -279,11 +264,11 @@ ErrorCodeEnum CAdapterLoadChecker::CheckDeviceAndAdapterAvailable(const VendorLi
     {
         DevAdptLibHelper<UpsClass> devImpl;
         result = devImpl.LoadUp(strLibFullPath);
-        Dbg("Load returned: %s", SpStrError(result));
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Load returned: %s", SpStrError(result));
         if (Error_Succeed == result) {
-            Dbg("%s: to open %p, %d, %d", __FUNCTION__, devImpl.GetDevPointer(), libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s: to open %p, %d, %d", __FUNCTION__, devImpl.GetDevPointer(), libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
             result = devImpl->DevOpen(libInfo.optCfg.dwPort, libInfo.optCfg.dwBaudRate);
-            Dbg("open result: %s", SpStrError(result));
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open result: %s", SpStrError(result));
             if (result != Error_Succeed) {
                 DevErrorInfo devErrInfo;
                 memset(&devErrInfo, 0, sizeof(DevErrorInfo));

+ 34 - 34
Module/mod_DeviceControl/DeviceControlFSM.cpp

@@ -30,7 +30,7 @@ bool IsNeedOpenUsb(CEntityBase* pCallerEntity)
     WORD majorVersion = sysDevInfo.MachineVersion.GetMajor();
     WORD minorVersion = sysDevInfo.MachineVersion.GetMinor();
     CSimpleStringA machineVersion = CSimpleStringA::Format("%d.%d", majorVersion, minorVersion);
-    Dbg("MachineType:%s, machineVersion:%s", strMachineType.GetData(), machineVersion.GetData());
+    DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("MachineType:%s, machineVersion:%s", strMachineType.GetData(), machineVersion.GetData());
 
     if (!strMachineType.Compare("RVC.PAD", true)
         || (!strMachineType.Compare("RVC.Desk2S", true) && !machineVersion.Compare("1.0"))) {
@@ -59,12 +59,12 @@ ErrorCodeEnum CDeviceControlFSM::OnInit()
     CSmartPointer<IEntityFunction> spEntityFunction = GetEntityBase()->GetFunction();
     eErr = spEntityFunction->GetSystemStaticInfo(sysInfo);
     if (eErr != Error_Succeed) {
-        Dbg("Get System Static info failed: %s.", SpStrError(eErr));
+        DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Get System Static info failed: %s.", SpStrError(eErr));
         return eErr;
     }
     spEntityFunction->OpenConfig(Config_Root, spConfig);
     m_csMachineType = sysInfo.strMachineType;
-    Dbg("machine type:%s", (LPCTSTR)m_csMachineType);
+    DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("machine type:%s", (LPCTSTR)m_csMachineType);
     CSimpleStringA dllName, tmpDevSN("");
 
     const bool IsNotPadType =  (m_csMachineType.IsNullOrEmpty() || m_csMachineType.Compare("RVC.PAD", true) != 0 || m_bFWB);
@@ -73,7 +73,7 @@ ErrorCodeEnum CDeviceControlFSM::OnInit()
         CSimpleStringA csDepPath("");
         eErr = spEntityFunction->GetPath("Dep", csDepPath);
         if (eErr == Error_Succeed) {
-            Dbg("not RVC.PAD or is FWB(%d),to use default dll.", m_bFWB);
+            DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("not RVC.PAD or is FWB(%d),to use default dll.", m_bFWB);
             dllName = csDepPath + SPLIT_SLASH_STR;
             dllName += DEFAULT_ADAPTER_LIBRARY_NAME;
         }
@@ -81,17 +81,17 @@ ErrorCodeEnum CDeviceControlFSM::OnInit()
         auto pEntity = GET_DEV_ENTITY_BASE_POINTER();
         eErr = pEntity->ExtractVendorLibFullPath(dllName);
         if (eErr != Error_Succeed) {
-            Dbg("ExtractVendorLibFullPath(%s) failed.", (LPCTSTR)dllName);
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ExtractVendorLibFullPath(%s) failed.", (LPCTSTR)dllName);
             return Error_DevLoadFileFailed;
         }
-        Dbg("%s", (LPCTSTR)dllName);
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s", (LPCTSTR)dllName);
     }
     eErr = m_hDevHelper.LoadUp(dllName);
     if (eErr != Error_Succeed) {
-        Dbg("LoadUp failed.%s", SpStrError(eErr));
+        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("LoadUp failed.%s", SpStrError(eErr));
         return Error_DevLoadFileFailed;
     } else {
-        Dbg("load vendor dll and pointer suc.");
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("load vendor dll and pointer suc.");
     }
 
     InitializeTokenLib();
@@ -106,7 +106,7 @@ ErrorCodeEnum CDeviceControlFSM::OnInit()
             LOG_DEVCONTROL_ERROR_MSG_MACRO(eErr, DevOpen);
             return Error_DevConnFailed;
         } else {
-            Dbg("Open device succ.");
+            DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Open device succ.");
         }
         eErr = m_hDevHelper->PortControl(USB_PORT_ENABLE);
         if (eErr != Error_Succeed) {
@@ -129,18 +129,18 @@ ErrorCodeEnum CDeviceControlFSM::InitializeTokenLib()
         csAQUkeyDll = csDepPath + csBackslash + "token.dll";
         m_hTokenDll = LoadLibraryA(csAQUkeyDll);
         if (m_hTokenDll == NULL) {
-            Dbg("Load aq dll failed.%d", GetLastError());
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Load aq dll failed.%d", GetLastError());
             return Error_DevLoadFileFailed;
         } else {
             if ((AQGetUKeyID = (lpGetUKeyID)GetProcAddress(m_hTokenDll, "GetUKeyID")) == NULL) {
-                Dbg("Get GetUKeyID failed.");
+                DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Get GetUKeyID failed.");
                 return Error_DevLoadFileFailed;
             }
             if ((AQInitToken = (lpInitToken)GetProcAddress(m_hTokenDll, "InitToken")) == NULL) {
-                Dbg("Get InitToken failed.");
+                DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Get InitToken failed.");
                 return Error_DevLoadFileFailed;
             }
-            Dbg("Load aq suc.");
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Load aq suc.");
         }
     }
     return eErr;
@@ -187,7 +187,7 @@ ErrorCodeEnum CDeviceControlFSM::RestartSogouServices()
     const BOOL s3 = ExistsFileA(shutdown_service_without_monitor.c_str());
 
     if (s3) {
-        Dbg("to shutdown sogou service except monitor...");
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to shutdown sogou service except monitor...");
         char* relate_processes[3] = { "sogouImeWebSrv", "sogouImeService", "sogoumonitor.sh" };
         int count = 4;
         alive_process_info old_processes[4];
@@ -228,7 +228,7 @@ ErrorCodeEnum CDeviceControlFSM::RestartSogouServices()
                         CSimpleStringA::Format("%s: %s, %s", shutdown_service_without_monitor.c_str(), succStr.c_str(), errStr.c_str()));
                 return Error_Unexpect;
             } else {
-                Dbg("execute {%s} suc: %s", shutdown_service_without_monitor.c_str(), succStr.c_str());
+                DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("execute {%s} suc: %s", shutdown_service_without_monitor.c_str(), succStr.c_str());
 
                 /**µÈ´ý·þÎñ½ø³ÌÍ˳ö */
                 Sleep(300);
@@ -302,7 +302,7 @@ ErrorCodeEnum CDeviceControlFSM::RestartSogouServices()
                         CSimpleStringA::Format("%s: %s, %s", shutdown_service.c_str(), succStr.c_str(), errStr.c_str()));
                 return Error_Unexpect;
             } else {
-                Dbg("execute {%s} suc: %s", shutdown_service.c_str(), succStr.c_str());
+                DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("execute {%s} suc: %s", shutdown_service.c_str(), succStr.c_str());
             }
         } while (false);
 
@@ -322,7 +322,7 @@ ErrorCodeEnum CDeviceControlFSM::RestartSogouServices()
             const int res = process_spawn(&option, &process);
             if (0 == res) {
                 FREE(process);
-                Dbg("execute {%s} suc", startup_service.c_str());
+                DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("execute {%s} suc", startup_service.c_str());
             } else {
                 LogWarn(Severity_Middle, Error_Unexpect, LOG_DEVICECONTROL_SOGOU_SCRIPTS_EXECUTE_FAILED,
                         CSimpleStringA::Format("%s: %d", startup_service.c_str(), res));
@@ -350,7 +350,7 @@ ErrorCodeEnum CDeviceControlFSM::OnExit()
 
 unsigned int CDeviceControlFSM::s0_on_event(FSMEvent* pEvt)
 {
-    Dbg("s0 event %d,%d", pEvt->iEvt, pEvt->param1);
+    DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s0 event %d,%d", pEvt->iEvt, pEvt->param1);
     switch (pEvt->iEvt) {
     case USER_EVT_USB:
     {
@@ -406,7 +406,7 @@ unsigned int CDeviceControlFSM::s0_on_event(FSMEvent* pEvt)
 
 unsigned int CDeviceControlFSM::s1_on_event(FSMEvent* pEvt)
 {
-    Dbg("s1 %d,%d", pEvt->iEvt, pEvt->param1);
+    DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s1 %d,%d", pEvt->iEvt, pEvt->param1);
     switch (pEvt->iEvt) {
     case USER_EVT_USB_FINISHED:
         pEvt->SetHandled();
@@ -422,7 +422,7 @@ unsigned int CDeviceControlFSM::s1_on_event(FSMEvent* pEvt)
 
 unsigned int CDeviceControlFSM::s3_on_event(FSMEvent* pEvt)
 {
-    Dbg("s3 %d,%d", pEvt->iEvt, pEvt->param1);
+    DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s3 %d,%d", pEvt->iEvt, pEvt->param1);
     switch (pEvt->iEvt) {
     case USER_EVT_GET_UKEYID_FINISHED:
         pEvt->SetHandled();
@@ -435,7 +435,7 @@ unsigned int CDeviceControlFSM::s3_on_event(FSMEvent* pEvt)
 
 unsigned int CDeviceControlFSM::s4_on_event(FSMEvent* pEvt)
 {
-    Dbg("s4 %d,%d", pEvt->iEvt, pEvt->param1);
+    DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s4 %d,%d", pEvt->iEvt, pEvt->param1);
     switch (pEvt->iEvt) {
     case USER_EVT_INIT_TOKEN_FINISHED:
         pEvt->SetHandled();
@@ -447,7 +447,7 @@ unsigned int CDeviceControlFSM::s4_on_event(FSMEvent* pEvt)
 }
 int CDeviceControlFSM::UsbControl(SpReqAnsContext<DeviceControlService_USB_Req, DeviceControlService_USB_Ans>::Pointer ctx)
 {
-    Dbg("open %d", ctx->Req.open);
+    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("open %d", ctx->Req.open);
     if (IsNeedOpenUsb(m_pEntity)) {
         ControlType eType;
         if (ctx->Req.open) {
@@ -460,7 +460,7 @@ int CDeviceControlFSM::UsbControl(SpReqAnsContext<DeviceControlService_USB_Req,
             LogEvent(Severity_Middle, LOG_EVT_USB_LIGHT_OFF, "usb off");//control by gpio
         }
     } else {
-        Dbg("no need open/close usb, this machine's usb is always open.");
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("no need open/close usb, this machine's usb is always open.");
     }
     ctx->Answer(Error_Succeed);
     return 0;
@@ -470,7 +470,7 @@ int CDeviceControlFSM::GetUkeyIDx(SpReqAnsContext<DeviceControlService_GetUkeyID
 {
     LOG_FUNCTION();
     if (ctx == NULL) {
-        Dbg("ctx is null.");
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ctx is null.");
         return 1;
     }
 #if defined(RVC_OS_WIN)
@@ -482,12 +482,12 @@ int CDeviceControlFSM::GetUkeyIDx(SpReqAnsContext<DeviceControlService_GetUkeyID
     if (ret == 0) {
         ctx->Ans.UkeyID = pID;
         ctx->Ans.UkeyIDLen = strlen(pID);
-        Dbg("oiltest ukey id [%d][%s][%d]", tmp, (LPCTSTR)ctx->Ans.UkeyID, ctx->Ans.UkeyIDLen);
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("oiltest ukey id [%d][%s][%d]", tmp, (LPCTSTR)ctx->Ans.UkeyID, ctx->Ans.UkeyIDLen);
         ctx->Ans.reserved1 = 999;
         ctx->Answer(Error_Succeed);
         return 0;
     } else {
-        Dbg("GetUKey failed.%d,%d", ret, GetLastError());
+        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetUKey failed.%d,%d", ret, GetLastError());
         ctx->Ans.reserved1 = ret;
         ctx->Answer(Error_Succeed);
         return 1;
@@ -501,7 +501,7 @@ int CDeviceControlFSM::InitTokenx(SpReqAnsContext<DeviceControlService_InitToken
 {
     LOG_FUNCTION();
     if (ctx == NULL) {
-        Dbg("ctx is null.");
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ctx is null.");
         return 1;
     }
 #if defined(RVC_OS_WIN)
@@ -523,7 +523,7 @@ int CDeviceControlFSM::InitTokenx(SpReqAnsContext<DeviceControlService_InitToken
                           , tokensnlen, pkcs10, pkcs10len, msg, msglen);
     m_bWorkingOp = false;
     if (ret == 0) {
-        Dbg("[%d][%s][%d][%s][%d]", tokensnlen, tokenSn, msglen, msg, pkcs10len);
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("[%d][%s][%d][%s][%d]", tokensnlen, tokenSn, msglen, msg, pkcs10len);
         char xx1[768], xx2[768];
         ZeroMemory(xx1, 768);
         ZeroMemory(xx2, 768);
@@ -533,8 +533,8 @@ int CDeviceControlFSM::InitTokenx(SpReqAnsContext<DeviceControlService_InitToken
         } else
             strncpy(xx1, pkcs10, pkcs10len);
 
-        Dbg("[%s]", xx1);
-        Dbg("[%s]", xx2);
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("[%s]", xx1);
+        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("[%s]", xx2);
         ctx->Ans.TokenSn = tokenSn;
         ctx->Ans.PKCS10 = pkcs10;
         ctx->Ans.Msg = msg;
@@ -545,7 +545,7 @@ int CDeviceControlFSM::InitTokenx(SpReqAnsContext<DeviceControlService_InitToken
         ctx->Answer(Error_Succeed);
         return 0;
     } else {
-        Dbg("InitToken failed.%d,%d", ret, GetLastError());
+        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("InitToken failed.%d,%d", ret, GetLastError());
         ctx->Ans.reserved1 = ret;
         ctx->Answer(Error_Succeed);
         return 1;
@@ -564,7 +564,7 @@ int CDeviceControlFSM::QueryUSB(SpReqAnsContext<DeviceControlService_QueryUSBSta
     if (pGpio != NULL) {
         eErr = pGpio->Connect();
         if (eErr != Error_Succeed) {
-            Dbg("connect to gpio failed.");
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("connect to gpio failed.");
             pGpio->SafeDelete();
             pGpio = NULL;
             ctx->Answer(eErr);
@@ -575,10 +575,10 @@ int CDeviceControlFSM::QueryUSB(SpReqAnsContext<DeviceControlService_QueryUSBSta
         eErr = pGpio->QueryCurrSet(req, ans, 10000);
         if (eErr == Error_Succeed) {
             ctx->Ans.flag = ((ans.output & 0x2) == 0x2);
-            Dbg("%d,%d", ans.output, ctx->Ans.flag);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%d,%d", ans.output, ctx->Ans.flag);
             ctx->Answer(Error_Succeed);
         } else {
-            Dbg("Query usb failed: %s", SpStrError(eErr));
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Query usb failed: %s", SpStrError(eErr));
             ctx->Answer(eErr);
         }
         pGpio->GetFunction()->CloseSession();

+ 0 - 1
Module/mod_DeviceControl/DeviceControl_client_g.h

@@ -32,7 +32,6 @@ public:
 	}
 	void OnClose(ErrorCodeEnum)
 	{
-		Dbg("session closed.");
 		bSessionClosed = true;
 	}
 	bool QuerySessionClosed()

+ 90 - 101
Module/mod_FingerPrint/FingerPrintFSM.cpp

@@ -42,7 +42,7 @@ void CFingerPrintFSM::s0_on_exit()
 unsigned int CFingerPrintFSM::s0_on_event(FSMEvent* e)
 {
 	LOG_FUNCTION();
-	Dbg("s0 evt %d", e->iEvt);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s0 evt %d", e->iEvt);
 
 	switch (e->iEvt)
 	{
@@ -126,7 +126,7 @@ void CFingerPrintFSM::s1_on_exit()
 unsigned int CFingerPrintFSM::s1_on_event(FSMEvent* e)
 {
 	LOG_FUNCTION();
-	Dbg("s1 evt(%d)", e->iEvt);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s1 evt(%d)", e->iEvt);
 
 	int ret = 0;
 	switch (e->iEvt)
@@ -149,7 +149,7 @@ unsigned int CFingerPrintFSM::s1_on_event(FSMEvent* e)
 		break;
 	case USER_EVT_CANCEL_SCAN:
 		e->SetHandled();
-		Dbg("Set cancel scan flag");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Set cancel scan flag");
 		m_bCancelRegister = true;
 		break;
 	case USER_EVT_EXIT:
@@ -200,7 +200,7 @@ void CFingerPrintFSM::s3_on_exit()
 unsigned CFingerPrintFSM::s3_on_event(FSMEvent* e)
 {
 	LOG_FUNCTION();
-	Dbg("s3 evt %d,%d", e->iEvt, e->param1);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s3 evt %d,%d", e->iEvt, e->param1);
 
 	switch (e->iEvt)
 	{
@@ -261,7 +261,7 @@ ErrorCodeEnum CFingerPrintFSM::OnInit()
 		tmpDLLVersion = "8.1";
 	if (tmpDevSN.GetLength() > 12 && tmpDevSN.IndexOf("FWB") > 2)
 	{
-		Dbg("This is fwb device.");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("This is fwb device.");
 		isFWB = true;
 		m_csDevSN = tmpDevSN;
 
@@ -331,11 +331,11 @@ ErrorCodeEnum CFingerPrintFSM::ExtractVendorLib(CSimpleStringA& strLibFullPath)
 
 	CDevAdptEntityBase* pEntity = GET_DEV_ENTITY_BASE_POINTER();
 	errCode = pEntity->ExtractVendorLibFullPath(strLibFullPath);
-	Dbg("Extract Vendor lib name: %s", strLibFullPath.GetData());
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Extract Vendor lib name: %s", strLibFullPath.GetData());
 
 	if (errCode != Error_Succeed)
 	{
-		Dbg("Get vendor libname(%s) failed.", strLibFullPath.GetData());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Get vendor libname(%s) failed.", strLibFullPath.GetData());
 		LogWarn(Severity_High, Error_DevLoadFileFailed
 			, FingerPrint_UserErrorCode_GET_DLLNAME_FAILED_ONINIT
 			, "get dllname failed while init");
@@ -353,7 +353,7 @@ ErrorCodeEnum CFingerPrintFSM::QueryRootConfigObj(CSmartPointer<IConfigInfo>& sp
 
 	if (errDev != Error_Succeed)
 	{
-		Dbg("open cfg file failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("open cfg file failed!");
 		LogWarn(Severity_High, Error_DevLoadFileFailed
 			, FingerPrint_UserErrorCode_OPEN_ROOT_FAILED_ONINIT
 			, "get root config file pointer failed while init");
@@ -373,19 +373,19 @@ ErrorCodeEnum CFingerPrintFSM::DoDevOpen(CSmartPointer<IConfigInfo> spConfig)
 		CSimpleStringA tmpVendor(true);
 		spConfig->ReadConfigValueInt("Device.FingerPrint", "Port", tmpPort);
 		spConfig->ReadConfigValueInt("Device.FingerPrint", "Baudrate", baudrate);
-		Dbg("port: %d, baudrate: %d", tmpPort, baudrate);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("port: %d, baudrate: %d", tmpPort, baudrate);
 
 		if (IsFWBDevice(tmpVendor))
 		{
 			errDev = CheckCardSwiperStatus();
 			if (Error_Succeed != errDev)
 			{
-				Dbg("this is FWB, device status is not normal now.(%s)", SpStrError(errDev));
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("this is FWB, device status is not normal now.(%s)", SpStrError(errDev));
 				errDev = Error_DevCommFailed;
 				break;
 			}
 			else {
-				Dbg("this is FWB, device status is normal now.");
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("this is FWB, device status is normal now.");
 			}
 		}
 
@@ -411,9 +411,9 @@ ErrorCodeEnum CFingerPrintFSM::DoGetDevInfo()
 	errDev = m_hDevHelper->GetDevCategory(m_devCatInfo);
 	if (errDev == Error_Succeed)
 	{
-		Dbg("szModel = %s", m_devCatInfo.szModel);
-		Dbg("szType = %s", m_devCatInfo.szType);
-		Dbg("szVendor = %s", m_devCatInfo.szVendor);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("szModel = %s", m_devCatInfo.szModel);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("szType = %s", m_devCatInfo.szType);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("szVendor = %s", m_devCatInfo.szVendor);
 		m_adapterInfo.devCatInfo = m_devCatInfo;
 		m_devInit = true;
 		errDev = Error_Succeed;
@@ -508,7 +508,7 @@ ErrorCodeEnum CFingerPrintFSM::InitParamBeforeScan(ScanParam* initParam, int sca
 		, initParam->m_DepPath.GetData()
 		, initParam->m_BmpFileName.GetData());
 
-	Dbg("get imageName success: %s", initParam->m_FullFilePath.GetData());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("get imageName success: %s", initParam->m_FullFilePath.GetData());
 
 	return errCode;
 }
@@ -523,7 +523,7 @@ void CFingerPrintFSM::ScanProcess(ScanParam* pScanParam, SpReqAnsContext<FingerP
 	{
 		if (m_bExit)
 		{
-			Dbg("Exit");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Exit");
 			pScanParam->m_Quit = true;
 			break;
 		}
@@ -536,20 +536,20 @@ void CFingerPrintFSM::ScanProcess(ScanParam* pScanParam, SpReqAnsContext<FingerP
 			, pScanParam->m_FeatureLen);
 		if (errCode == Error_Succeed)
 		{
-			Dbg("Invoke routine 'Image2Feature' success.'");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Invoke routine 'Image2Feature' success.'");
 			SLEEP(200);
 
 			if (ExistsFile(pScanParam->m_FullFilePath)
 				&& pScanParam->m_Feature != NULL
 				&& pScanParam->m_FeatureLen > 0)
 			{
-				Dbg("fingerprint feature length is %d", pScanParam->m_FeatureLen);
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("fingerprint feature length is %d", pScanParam->m_FeatureLen);
 				ctx->Ans.imageName = pScanParam->m_BmpFileName;
 
 				if (ctx->Req.times == 3) {
-					Dbg("m_strPath1 = %s", m_BmpFileFullPath1.GetData());
-					Dbg("m_strPath2 = %s", m_BmpFileFullPath2.GetData());
-					Dbg("m_strPath3 = %s", m_BmpFileFullPath3.GetData());
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("m_strPath1 = %s", m_BmpFileFullPath1.GetData());
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("m_strPath2 = %s", m_BmpFileFullPath2.GetData());
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("m_strPath3 = %s", m_BmpFileFullPath3.GetData());
 
 					errCode = m_hDevHelper->Image2Template(m_BmpFileFullPath1, m_BmpFileFullPath2
 						, m_BmpFileFullPath3, pScanParam->m_Template
@@ -557,15 +557,15 @@ void CFingerPrintFSM::ScanProcess(ScanParam* pScanParam, SpReqAnsContext<FingerP
 
 					if (Error_Succeed == errCode)
 					{
-						Dbg("Invoke routine 'Image2Template' success");
+						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("Invoke routine 'Image2Template' success");
 
 						if (pScanParam->m_Template != NULL && pScanParam->m_FeatureLen == 684)
 						{
 							ctx->Ans.feature = (LPCTSTR)pScanParam->m_Template;
-							Dbg("Ans.feature = %s", ctx->Ans.feature.GetData());
+							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("Ans.feature = %s", ctx->Ans.feature.GetData());
 						}
 						else {
-							Dbg("template len is: %d, or template is NULL", pScanParam->m_FeatureLen);
+							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("template len is: %d, or template is NULL", pScanParam->m_FeatureLen);
 							pScanParam->m_GetTemplateSuc = false;
 							break;
 						}
@@ -574,7 +574,7 @@ void CFingerPrintFSM::ScanProcess(ScanParam* pScanParam, SpReqAnsContext<FingerP
 						pScanParam->m_GetTemplateSuc = false;
 						DevErrorInfo devErrorInfo;
 						m_hDevHelper->GetLastErr(devErrorInfo);
-						Dbg("Invoke routine 'Image2Template' failed which returned %s(%s)"
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Invoke routine 'Image2Template' failed which returned %s(%s)"
 							, SpStrError(errCode), devErrorInfo.szErrMsg);
 						break;
 					}
@@ -583,12 +583,12 @@ void CFingerPrintFSM::ScanProcess(ScanParam* pScanParam, SpReqAnsContext<FingerP
 				break;
 			}
 			else if (!ExistsFile(pScanParam->m_FullFilePath)) {
-				Dbg("Cannot find the fingerprint image %s", pScanParam->m_BmpFileName.GetData());
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Cannot find the fingerprint image %s", pScanParam->m_BmpFileName.GetData());
 				pScanParam->m_NotFindImage = true;
 				break;
 			}
 			else {
-				Dbg("Fingerprint feature is NULL.");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Fingerprint feature is NULL.");
 				pScanParam->m_FeatureIsNull = true;
 				break;
 			}
@@ -596,7 +596,7 @@ void CFingerPrintFSM::ScanProcess(ScanParam* pScanParam, SpReqAnsContext<FingerP
 		else {
 			DevErrorInfo devErrInfo;
 			m_hDevHelper->GetLastErr(devErrInfo);
-			Dbg("Invoke routine 'Image2Feature' failed which returned %s(%s) while register."
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Invoke routine 'Image2Feature' failed which returned %s(%s) while register."
 				, SpStrError(errCode), devErrInfo.szErrMsg);
 		}
 		pScanParam->m_TimeEnd = RVCGetTickCount();
@@ -695,7 +695,7 @@ void CFingerPrintFSM::ScanProcessEx(ScanParam* pScanParam, SpReqAnsContext<Finge
 	{
 		if (m_bExit)
 		{
-			Dbg("Exit");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("Exit");
 			pScanParam->m_Quit = true;
 			break;
 		}
@@ -708,8 +708,8 @@ void CFingerPrintFSM::ScanProcessEx(ScanParam* pScanParam, SpReqAnsContext<Finge
 			, pScanParam->m_FeatureLen);
 		if (errCode == Error_Succeed)
 		{
-			Dbg("Invoke routine 'Image2Feature' success.'");
-			Dbg("FingerPrint feature length is %d", pScanParam->m_FeatureLen);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Invoke routine 'Image2Feature' success.'");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("FingerPrint feature length is %d", pScanParam->m_FeatureLen);
 			SLEEP(200);
 
 			if (ExistsFile(pScanParam->m_FullFilePath)
@@ -718,12 +718,12 @@ void CFingerPrintFSM::ScanProcessEx(ScanParam* pScanParam, SpReqAnsContext<Finge
 			{
 				ctx->Ans.imageName = pScanParam->m_BmpFileName;
 				pScanParam->m_Feature[STANDARD_FEATURE_LEN] = '\0';
-				Dbg("after add eof, feature = %s", (LPCTSTR)pScanParam->m_Feature);
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("after add eof, feature = %s", (LPCTSTR)pScanParam->m_Feature);
 
 				if (ctx->Req.times == 3) {
-					Dbg("m_strPath1 = %s", m_BmpFileFullPath1.GetData());
-					Dbg("m_strPath2 = %s", m_BmpFileFullPath2.GetData());
-					Dbg("m_strPath3 = %s", m_BmpFileFullPath3.GetData());
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("m_strPath1 = %s", m_BmpFileFullPath1.GetData());
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("m_strPath2 = %s", m_BmpFileFullPath2.GetData());
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("m_strPath3 = %s", m_BmpFileFullPath3.GetData());
 
 					pScanParam->m_FeatureLen = MAX_FEATURE_LEN;
 					errCode = m_hDevHelper->Image2Template(m_BmpFileFullPath1, m_BmpFileFullPath2
@@ -732,17 +732,17 @@ void CFingerPrintFSM::ScanProcessEx(ScanParam* pScanParam, SpReqAnsContext<Finge
 
 					if (Error_Succeed == errCode)
 					{
-						Dbg("Invoke routine 'Image2Template' success");
-						Dbg("template length is %d", pScanParam->m_FeatureLen);
+						DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_USER)("Invoke routine 'Image2Template' success");
+						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("template length is %d", pScanParam->m_FeatureLen);
 
 						if (pScanParam->m_Template != NULL && pScanParam->m_FeatureLen == STANDARD_FEATURE_LEN)
 						{
 							pScanParam->m_Template[STANDARD_FEATURE_LEN] = '\0';
 							ctx->Ans.feature = (LPCTSTR)pScanParam->m_Template;
-							Dbg("Ans.feature = %s", ctx->Ans.feature.GetData());
+							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("Ans.feature = %s", ctx->Ans.feature.GetData());
 						}
 						else {
-							Dbg("template len is: %d, or template is NULL", pScanParam->m_FeatureLen);
+							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("template len is: %d, or template is NULL", pScanParam->m_FeatureLen);
 							pScanParam->m_GetTemplateSuc = false;
 							break;
 						}
@@ -751,7 +751,7 @@ void CFingerPrintFSM::ScanProcessEx(ScanParam* pScanParam, SpReqAnsContext<Finge
 						pScanParam->m_GetTemplateSuc = false;
 						DevErrorInfo devErrorInfo;
 						m_hDevHelper->GetLastErr(devErrorInfo);
-						Dbg("Invoke routine 'Image2Template' failed which returned %s(%s)"
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("Invoke routine 'Image2Template' failed which returned %s(%s)"
 							, SpStrError(errCode), devErrorInfo.szErrMsg);
 						break;
 					}
@@ -760,12 +760,12 @@ void CFingerPrintFSM::ScanProcessEx(ScanParam* pScanParam, SpReqAnsContext<Finge
 				break;
 			}
 			else if (!ExistsFile(pScanParam->m_FullFilePath)) {
-				Dbg("Cannot find the fingerprint image %s", pScanParam->m_BmpFileName.GetData());
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("Cannot find the fingerprint image %s", pScanParam->m_BmpFileName.GetData());
 				pScanParam->m_NotFindImage = true;
 				break;
 			}
 			else {
-				Dbg("Fingerprint feature is NULL.");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("Fingerprint feature is NULL.");
 				pScanParam->m_FeatureIsNull = true;
 				break;
 			}
@@ -773,7 +773,7 @@ void CFingerPrintFSM::ScanProcessEx(ScanParam* pScanParam, SpReqAnsContext<Finge
 		else {
 			DevErrorInfo devErrInfo;
 			m_hDevHelper->GetLastErr(devErrInfo);
-			Dbg("Invoke routine 'Image2Feature' failed which returned %s(%s) while register."
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("Invoke routine 'Image2Feature' failed which returned %s(%s) while register."
 				, SpStrError(errCode), devErrInfo.szErrMsg);
 		}
 		pScanParam->m_TimeEnd = RVCGetTickCount();
@@ -854,12 +854,12 @@ int CFingerPrintFSM::GetFingerPrint(SpReqAnsContext<FingerPrintService_GetFinger
 {
 	LOG_FUNCTION();
 	if (!m_devInit) {
-		Dbg("GetFingerPrint return failed for device isn't init suc.");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER)("GetFingerPrint return failed for device isn't init suc.");
 		ctx->Answer(Error_NotInit);  //maybe no vendor adapter
 		return 0;
 	}
 
-	Dbg("ctx->Req.times = %d", ctx->Req.times);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("ctx->Req.times = %d", ctx->Req.times);
 	if (ctx->Req.times <= 0 || ctx->Req.times > 10)
 	{
 		ctx->Answer(Error_Param);
@@ -872,7 +872,7 @@ int CFingerPrintFSM::GetFingerPrint(SpReqAnsContext<FingerPrintService_GetFinger
 	errCode = InitCommParam(pScanParam, RegisterType, ctx->Req.times);
 
 	if (errCode != Error_Succeed) {
-		Dbg("InitCommParam with EC = 0x%x(%s)", errCode, SpStrError(errCode));
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("InitCommParam with EC = 0x%x(%s)", errCode, SpStrError(errCode));
 		ctx->Answer(errCode);
 	}
 	else {
@@ -894,14 +894,14 @@ void CFingerPrintFSM::CollectProcess(ScanParam* pScanParam, SpReqAnsContext<Fing
 
 	CSimpleStringA fileName = CSimpleStringA::Format("finger%d.bmp", ctx->Req.times);
 	pScanParam->m_FullFilePath = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s", pScanParam->m_DepPath.GetData(), fileName.GetData());
-	Dbg("<GetFingerPrint> imageName = %s", fileName.GetData());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_USER)("<GetFingerPrint> imageName = %s", fileName.GetData());
 
 	while (pScanParam->m_TimeLeft < GET_FINGERPRINT_TIMEOUT
 		&& !m_bCancelRegister && !m_bCancelMatch && !pScanParam->m_bGetFingerPrintSuc)
 	{
 		if (m_bExit)
 		{
-			Dbg("Exit");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("Exit");
 			pScanParam->m_Quit = true;
 			break;
 		}
@@ -923,22 +923,22 @@ void CFingerPrintFSM::CollectProcess(ScanParam* pScanParam, SpReqAnsContext<Fing
 				pScanParam->m_Feature[STANDARD_FEATURE_LEN] = '\0';
 				ctx->Ans.feature = (LPCTSTR)pScanParam->m_Feature;
 				pScanParam->m_bGetFingerPrintSuc = true;
-				Dbg("Image2Feature success.");
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("Image2Feature success.");
 				break;
 			}
 			else if (!ExistsFile(pScanParam->m_FullFilePath))
 			{
-				Dbg("Cannot find the fingerprint image %s", fileName.GetData());
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("Cannot find the fingerprint image %s", fileName.GetData());
 				pScanParam->m_NotFindImage = true;
 				break;
 			}
 			else if (pScanParam->m_FeatureLen != STANDARD_FEATURE_LEN) {
-				Dbg("vendor returned feature length is not right.");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("vendor returned feature length is not right.");
 				pScanParam->m_bLenIsNotRight = true;
 				break;
 			}
 			else {
-				Dbg("Fingerprint feature is NULL.");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("Fingerprint feature is NULL.");
 				pScanParam->m_FeatureIsNull = true;
 				break;
 			}
@@ -946,7 +946,7 @@ void CFingerPrintFSM::CollectProcess(ScanParam* pScanParam, SpReqAnsContext<Fing
 		else {
 			DevErrorInfo devErrInfo;
 			m_hDevHelper->GetLastErr(devErrInfo);
-			Dbg("Invoke routine 'Image2Feature' failed which returned %s(%s) while register."
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("Invoke routine 'Image2Feature' failed which returned %s(%s) while register."
 				, SpStrError(errCode), devErrInfo.szErrMsg);
 		}
 		pScanParam->m_TimeEnd = RVCGetTickCount();
@@ -1020,7 +1020,7 @@ int CFingerPrintFSM::GenerateTemplate(SpReqAnsContext<FingerPrintService_Generat
 	LOG_FUNCTION();
 
 	if (!m_devInit) {
-		Dbg("GenerateTemplate return failed for device isn't init suc.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GenerateTemplate return failed for device isn't init suc.");
 		ctx->Answer(Error_NotInit);
 		return 0;
 	}
@@ -1046,10 +1046,10 @@ int CFingerPrintFSM::GenerateTemplate(SpReqAnsContext<FingerPrintService_Generat
 		_itoa(ctx->Req.FingerIDList[i], buf, 10);
 		CSimpleStringA tempStr = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "finger%d.bmp", strPath.GetData(), ctx->Req.FingerIDList[i]);
 		imagePaths.push_back(tempStr);
-		Dbg("imageName:%s", imagePaths[i].GetData());
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("imageName:%s", imagePaths[i].GetData());
 		if (!ExistsFile(imagePaths[i]))
 		{
-			Dbg("image <%s> not exist.", imagePaths[i].GetData());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("image <%s> not exist.", imagePaths[i].GetData());
 			DeleteBmp(BmpImage);
 			ctx->Answer(Error_NoTarget);
 			return 0;
@@ -1060,16 +1060,14 @@ int CFingerPrintFSM::GenerateTemplate(SpReqAnsContext<FingerPrintService_Generat
 
 	if (Error_Succeed == errCode)
 	{
-		Dbg("Invoke routine 'Image2Template' success");
-		Dbg("template length is %d", lpbLength);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_USER)("Invoke routine 'Image2Template' success");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("template length is %d", lpbLength);
 		if (lpbTemplate != NULL && lpbLength == STANDARD_FEATURE_LEN) {
-			//Dbg("before add eof, template = %s", (LPCTSTR)lpbTemplate);
 			lpbTemplate[lpbLength] = '\0';
-			//Dbg("after add eof, template = %s", (LPCTSTR)lpbTemplate);
 			ctx->Ans.templateFeature = (LPCTSTR)lpbTemplate;
 		}
 		else {
-			Dbg("template is NULL or template length is not right.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("template is NULL or template length is not right.");
 			errCode = Error_Unexpect;
 		}
 	}
@@ -1123,7 +1121,7 @@ ErrorCodeEnum CFingerPrintFSM::InitParamBeforeMatch(ScanParam* initParam, int te
 	initParam->m_FullFilePath = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s"
 		, initParam->m_DepPath.GetData()
 		, initParam->m_BmpFileName.GetData());
-	Dbg("get imageName success: %s", initParam->m_FullFilePath.GetData());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("get imageName success: %s", initParam->m_FullFilePath.GetData());
 
 	return Error_Succeed;
 }
@@ -1138,7 +1136,7 @@ void CFingerPrintFSM::ScanBeforeMatch(ScanParam* initParam)
 	{
 		if (m_bExit)
 		{
-			Dbg("Exit");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("Exit");
 			initParam->m_Quit = true;
 			break;
 		}
@@ -1150,23 +1148,23 @@ void CFingerPrintFSM::ScanBeforeMatch(ScanParam* initParam)
 			, initParam->m_FeatureLen);
 		if (errCode == Error_Succeed)
 		{
-			Dbg("Invoke routine 'Image2Feature' success.");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_USER)("Invoke routine 'Image2Feature' success.");
 			SLEEP(200);
 
 			if (ExistsFile(initParam->m_FullFilePath) && initParam->m_Feature != NULL && initParam->m_FeatureLen > 0)
 			{
-				Dbg("fingerprint feature length is %d", initParam->m_FeatureLen);
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("fingerprint feature length is %d", initParam->m_FeatureLen);
 				initParam->m_ScanSuc = true;
 				break;
 			}
 			else if (!ExistsFile(initParam->m_FullFilePath))
 			{
-				Dbg("Cannot find the fingerprint image finger.bmp");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("Cannot find the fingerprint image finger.bmp");
 				initParam->m_NotFindImage = true;
 				break;
 			}
 			else {
-				Dbg("Fingerprint feature is NULL.");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("Fingerprint feature is NULL.");
 				initParam->m_FeatureIsNull = true;
 				break;
 			}
@@ -1174,7 +1172,7 @@ void CFingerPrintFSM::ScanBeforeMatch(ScanParam* initParam)
 		else {
 			DevErrorInfo devErrInfo;
 			m_hDevHelper->GetLastErr(devErrInfo);
-			Dbg("Invoke routine 'Image2Feature' failed which returned %s(%s)"
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER)("Invoke routine 'Image2Feature' failed which returned %s(%s)"
 				, SpStrError(errCode), devErrInfo.szErrMsg);
 		}
 		initParam->m_TimeEnd = RVCGetTickCount();
@@ -1183,7 +1181,7 @@ void CFingerPrintFSM::ScanBeforeMatch(ScanParam* initParam)
 	LogEvent(Severity_Middle, LOG_EVT_FINGERPRINT_GREEN_OFF, "FingerPrint warning off");
 	m_bExit = false;
 
-	Dbg("after match, clear bmp file");
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_USER)("after match, clear bmp file");
 	DeleteBmp(BmpImage);
 }
 
@@ -1193,7 +1191,7 @@ ErrorCodeEnum CFingerPrintFSM::MatchProcess(ScanParam* initParam, SpReqAnsContex
 
 	if (initParam->m_ScanSuc)
 	{
-		Dbg("templateNum=%d", ctx->Req.templateNum);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("templateNum=%d", ctx->Req.templateNum);
 
 		int templateNum = ctx->Req.templateNum;
 		LPBYTE* lpbTemplates = new LPBYTE[templateNum];
@@ -1217,7 +1215,7 @@ ErrorCodeEnum CFingerPrintFSM::MatchProcess(ScanParam* initParam, SpReqAnsContex
 
 		if (errCode == Error_Succeed) //always true
 		{
-			Dbg("Invoke routine 'Match' success");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("Invoke routine 'Match' success");
 			ctx->Ans.result.Init(templateNum);
 			for (int i = 0; i < templateNum; ++i)
 				ctx->Ans.result[i] = lpbTemplateLen[i];
@@ -1228,7 +1226,7 @@ ErrorCodeEnum CFingerPrintFSM::MatchProcess(ScanParam* initParam, SpReqAnsContex
 			LogError(Severity_High, Error_Hardware
 				, FingerPrint_UserErrorCode_INVOKE_MATCH_FAILED
 				, "Invoke routine 'Match' failed.");//no this situation
-			Dbg("Invoke routine 'Match' failed which returned %s(%s)"
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER)("Invoke routine 'Match' failed which returned %s(%s)"
 				, SpStrError(errCode), devErrInfo.szErrMsg);
 			errCode = Error_Unexpect;
 		}
@@ -1244,7 +1242,7 @@ ErrorCodeEnum CFingerPrintFSM::MatchProcess(ScanParam* initParam, SpReqAnsContex
 	}
 	else if (initParam->m_TimeLeft >= FINGERPRINT_MATCH_TIMEOUT)
 	{
-		Dbg("Match timeout(Invoke vendor failed or not press finger)");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("Match timeout(Invoke vendor failed or not press finger)");
 		errCode = Error_TimeOut;
 	}
 	else if (m_bCancelMatch)
@@ -1296,15 +1294,6 @@ ErrorCodeEnum CFingerPrintFSM::InitCommParam(ScanParam* initParam, int operateTy
 	if (!m_devInit)
 		errCode = Error_NotInit; //maybe no vendor adapter
 
-	//if ((operateType & RegisterType) == RegisterType)
-	//{
-	//	if (m_bCancelRegister) //no cancel button anymore while register
-	//	{
-	//		Dbg("cancel flag");
-	//		m_bCancelRegister = false;
-	//		errCode = Error_Cancel;
-	//	}
-	//}
 	if ((operateType & MatchType) == MatchType && templateNum <= 0)
 		errCode = Error_Param;
 
@@ -1334,9 +1323,9 @@ ErrorCodeEnum CFingerPrintFSM::InitCommParam(ScanParam* initParam, int operateTy
 		m_BmpFileFullPath1 = "";
 		m_BmpFileFullPath2 = "";
 		m_BmpFileFullPath3 = "";
-		Dbg("before scan fingerprint, clear bmp file");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("before scan fingerprint, clear bmp file");
 		DeleteBmp(BmpImage);
-		Dbg("before scan fingerprint, finish doing clear job");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("before scan fingerprint, finish doing clear job");
 	} 
 
 	if ((operateType & RegisterType) == RegisterType)
@@ -1355,7 +1344,7 @@ ErrorCodeEnum CFingerPrintFSM::InitCommParam(ScanParam* initParam, int operateTy
 	errCode = m_pEntity->GetFunction()->GetPath("Dep", initParam->m_DepPath);
 	if (errCode != Error_Succeed)
 	{
-		Dbg("operateType = %d", RegisterType);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("operateType = %d", RegisterType);
 		delete[] initParam->m_Feature;
 		initParam->m_Feature = NULL;
 
@@ -1364,13 +1353,13 @@ ErrorCodeEnum CFingerPrintFSM::InitCommParam(ScanParam* initParam, int operateTy
 			delete[] initParam->m_Template;
 			initParam->m_Template = NULL;
 
-			Dbg("Get dep path failed while register.");
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER)("Get dep path failed while register.");
 			LogError(Severity_High, Error_DevLoadFileFailed
 				, FingerPrint_UserErrorCode_GET_DEP_PATH_FAILED_REGISTER
 				, "Get dep path failed while register.");
 		}
 		else {
-			Dbg("Get dep path failed while match.");
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER)("Get dep path failed while match.");
 			LogError(Severity_High, Error_DevLoadFileFailed
 				, FingerPrint_UserErrorCode_GET_DEP_PATH_FAILED_MATCH
 				, "get dep path failed while match.");
@@ -1386,9 +1375,9 @@ ErrorCodeEnum CFingerPrintFSM::InitCommParam(ScanParam* initParam, int operateTy
 
 ErrorCodeEnum CFingerPrintFSM::GetDevCatInfo(DevCategoryInfo& devInfo)
 {
-	Dbg("m_devCatInfo.szModel:%s, len:%d", m_devCatInfo.szModel, strlen(m_devCatInfo.szModel));
-	Dbg("m_devCatInfo.szType:%s, len:%d", m_devCatInfo.szType, strlen(m_devCatInfo.szType));
-	Dbg("m_devCatInfo.szVendor:%s, len:%d", m_devCatInfo.szVendor, strlen(m_devCatInfo.szVendor));
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("m_devCatInfo.szModel:%s, len:%d", m_devCatInfo.szModel, strlen(m_devCatInfo.szModel));
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("m_devCatInfo.szType:%s, len:%d", m_devCatInfo.szType, strlen(m_devCatInfo.szType));
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("m_devCatInfo.szVendor:%s, len:%d", m_devCatInfo.szVendor, strlen(m_devCatInfo.szVendor));
 
 #ifdef RVC_OS_WIN
 	strncpy_s(devInfo.szModel, MAX_DEV_MODEL_LEN, m_devCatInfo.szModel, strlen(m_devCatInfo.szModel));
@@ -1437,7 +1426,7 @@ bool CFingerPrintFSM::IsFWBDevice(CSimpleString& vendorName)
 	GetEntityBase()->GetFunction()->GetSysVar("FWBDevSN", tmpDevSN);
 	if (tmpDevSN.GetLength() > 12 && tmpDevSN.IndexOf("FWB") > 2)
 	{
-		Dbg("This is fwb device.");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("This is fwb device.");
 		GetEntityBase()->GetFunction()->GetSysVar("FWBVendor", vendorName);
 		isFWB = true;
 	}
@@ -1451,7 +1440,7 @@ ErrorCodeEnum CFingerPrintFSM::CheckCardSwiperStatus()
 	errCode = pCardSwiperClient->Connect();
 	if (errCode != Error_Succeed)
 	{
-		Dbg("connect CardSwiper fail %s.", SpStrError(errCode));
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("connect CardSwiper fail %s.", SpStrError(errCode));
 		pCardSwiperClient->SafeDelete();
 	}
 	else {
@@ -1461,10 +1450,10 @@ ErrorCodeEnum CFingerPrintFSM::CheckCardSwiperStatus()
 
 		if (errCode != Error_Succeed)
 		{
-			Dbg("CardSwiper::GetDevInfo() fail: 0x%x", errCode);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardSwiper::GetDevInfo() fail: 0x%x", errCode);
 		}
 		else {
-			Dbg("CardSwiper::GetDevInfo() return state: %d", ans.state);
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardSwiper::GetDevInfo() return state: %d", ans.state);
 			if (ans.state == DEVICE_STATUS_NOT_READY)
 			{
 				SLEEP(500);
@@ -1473,10 +1462,10 @@ ErrorCodeEnum CFingerPrintFSM::CheckCardSwiperStatus()
 				errCode = pCardSwiperClient->GetDevInfo(req2, ans2, 3000);
 				if (errCode != Error_Succeed)
 				{
-					Dbg("CardSwiper::GetDevInfo() again fail with err(%s)", SpStrError(errCode));
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardSwiper::GetDevInfo() again fail with err(%s)", SpStrError(errCode));
 				}
 				else {
-					Dbg("CardSwiper::GetDevInfo() again return state: %d", ans2.state);
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("CardSwiper::GetDevInfo() again return state: %d", ans2.state);
 					if (ans2.state != DEVICE_STATUS_NORMAL)
 						errCode = Error_DevNotAvailable;
 				}
@@ -1494,7 +1483,7 @@ void CFingerPrintFSM::DeleteBmp(int type)
 {
 	if ((type & BmpImage) == BmpImage)
 	{
-		Dbg("to delete fingerprint images...");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to delete fingerprint images...");
 		CSimpleStringA imageName;
 		DeleteFileIfExisted("finger.bmp");
 		for (int i = 1; i <= 10; ++i) {
@@ -1512,7 +1501,7 @@ ErrorCodeEnum CFingerPrintFSM::DeleteFileIfExisted(const char* fileName)
 {
 	if (strlen(fileName) == 0 || strchr(fileName, (int)'*') != NULL)
 	{
-		Dbg("Invalid or empty filename(%s)", fileName);
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Invalid or empty filename(%s)", fileName);
 		return Error_Param;
 	}
 	CSimpleStringA strPath, strObjPath;
@@ -1524,16 +1513,16 @@ ErrorCodeEnum CFingerPrintFSM::DeleteFileIfExisted(const char* fileName)
 	{
 		if (RemoveFileA(strObjPath))
 		{
-			Dbg("DeleteFile(%s) success.", strObjPath.GetData());
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("DeleteFile(%s) success.", strObjPath.GetData());
 			return Error_Succeed;
 		}
 		else {
-			Dbg("DeleteFile(%s) failed LastError(%s).", strObjPath.GetData(), GetLastError());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("DeleteFile(%s) failed LastError(%s).", strObjPath.GetData(), GetLastError());
 			return Error_Unexpect;
 		}
 	}
 	else {
-		Dbg("file %s not exist.", fileName);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("file %s not exist.", fileName);
 		return Error_Succeed;
 	}
 }

+ 8 - 8
Module/mod_FingerPrint/FingerPrintFSM.h

@@ -81,7 +81,7 @@ public:
 	virtual void OnUnhandled()
 	{
 		if (ctx != NULL) {
-			Dbg("ScanEvent unhandled.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ScanEvent unhandled.");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -97,7 +97,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			Dbg("ScanEx unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ScanEx unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -114,7 +114,7 @@ public:
 		if (ctx != NULL)
 		{
 			ctx->Answer(Error_InvalidState);
-			Dbg("GetFinger unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetFinger unhandled");
 		}
 	}
 };
@@ -130,7 +130,7 @@ public:
 		if (ctx != NULL)
 		{
 			ctx->Answer(Error_InvalidState);
-			Dbg("GenerateTemplate unhandled.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GenerateTemplate unhandled.");
 		}
 	}
 };
@@ -157,7 +157,7 @@ public:
 		if (ctx != NULL)
 		{
 			ctx->Answer(Error_InvalidState);
-			Dbg("match unhandled.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("match unhandled.");
 		}
 	}
 };
@@ -170,7 +170,7 @@ public:
 	SpReqAnsContext<FingerPrintService_Match_Req, FingerPrintService_Match_Ans>::Pointer ctx;
 	virtual void OnUnhandled()
 	{
-		Dbg("Match finished unhandled.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Match finished unhandled.");
 	}
 };
 
@@ -183,7 +183,7 @@ public:
 	virtual void OnUnhandled()
 	{
 		if (ctx != NULL)
-			Dbg("GetFingerFinished unhandled.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetFingerFinished unhandled.");
 	}
 };
 
@@ -194,7 +194,7 @@ public:
 	virtual ~CancelMatchEvent(){}
 	virtual void OnUnhandled()
 	{
-		Dbg("Cancel match not handled");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Cancel match not handled");
 	}
 };
 

+ 0 - 1
Module/mod_FingerPrint/FingerPrint_client_g.h

@@ -32,7 +32,6 @@ public:
 	}
 	void OnClose(ErrorCodeEnum)
 	{
-		Dbg("session closed.");
 		bSessionClosed = true;
 	}
 	bool QuerySessionClosed()

+ 0 - 2
Module/mod_HSPScanner/HSPScannerFSM.cpp

@@ -185,8 +185,6 @@ void CHSPScannerFSM::s0_on_entry()
 	if (m_FirstStart) {
 		m_FirstStart = FALSE;
 		ToLogWarnInfoAboutTerm(this, m_adapterInfo);
-	} else {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("s0: do not need to upload adapter information.");
 	}
 }
 

BIN
Module/mod_MobileDial/HWMobileDll.lib


+ 29 - 29
Module/mod_ResourceWatcher/FileInfo.h

@@ -135,7 +135,7 @@ static void PrintDiskStatus(LPCTSTR dir, const unsigned long long& uiDiskFreeSiz
     ByteSprintf(szResult, (double)uiDiskFreeSize);
     ByteSprintf(szResult2, (double)uiDiskOverallSize);
     double dFreeRate = (uiDiskFreeSize * kConversion[3]) / (uiDiskOverallSize * kConversion[3]);
-    Dbg("[Disk(%s)] total: %s, free: %s, rate: %.1lf%%.", dir, szResult2, szResult, dFreeRate * 100);
+    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("[Disk(%s)] total: %s, free: %s, rate: %.1lf%%.", dir, szResult2, szResult, dFreeRate * 100);
 }
 
 struct TmpFileInfo
@@ -260,16 +260,16 @@ struct DiskInfo
 	{
 		if(lpszVideoPath == NULL || strlen(lpszVideoPath) == 0)
 			return FALSE;
-		Dbg("当前录像文件夹所在的磁盘: %c", lpszVideoPath[0]);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("当前录像文件夹所在的磁盘: %c", lpszVideoPath[0]);
 #if defined(_MSC_VER)
         BOOL bRet = GetDiskSpace(lpszVideoPath, mUliDiskOverallSize, mUliDiskFreeSize);
         if (bRet) {
             char szResult[DEFAULT_OUTPUT_FORMAT_SIZE];
             ByteSprintf(szResult, (double)mUliDiskOverallSize.QuadPart);
-            Dbg("录像文件所在磁盘的空间大小 : %s", szResult);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("录像文件所在磁盘的空间大小 : %s", szResult);
 
             ByteSprintf(szResult, (double)mUliDiskFreeSize.QuadPart);
-            Dbg("录像文件夹所在磁盘的剩余空间大小 : %s", szResult);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("录像文件夹所在磁盘的剩余空间大小 : %s", szResult);
         }
         return bRet;
 #else
@@ -277,10 +277,10 @@ struct DiskInfo
         if (bRet) {
             char szResult[DEFAULT_OUTPUT_FORMAT_SIZE];
             ByteSprintf(szResult, (double)mUliDiskOverallSize);
-            Dbg("录像文件所在磁盘的空间大小 : %s", szResult);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("录像文件所在磁盘的空间大小 : %s", szResult);
 
             ByteSprintf(szResult, (double)mUliDiskFreeSize);
-            Dbg("录像文件夹所在磁盘的剩余空间大小 : %s", szResult);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("录像文件夹所在磁盘的剩余空间大小 : %s", szResult);
         }
         return bRet;
 #endif //_MSC_VER
@@ -311,8 +311,8 @@ struct DiskInfo
 
         char szResult[DEFAULT_OUTPUT_FORMAT_SIZE];
         ByteSprintf(szResult, (double)mUiAllVideoFilesBytes.QuadPart);
-        Dbg("录像文件夹的大小 : %s", szResult);
-        Dbg("已上传录像文件数量 : %u", mUVideoFileCount);
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("录像文件夹的大小 : %s", szResult);
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("已上传录像文件数量 : %u", mUVideoFileCount);
 
         //平均每天的录像数目
         mUAverageFileCreated = DEFAULT_VIDEOFILE_CREATE_COUNT;
@@ -327,8 +327,8 @@ struct DiskInfo
         }
 
         ByteSprintf(szResult, (double)mUliAverageFileSize.QuadPart);
-        Dbg("平均录像文件的大小 : %s", szResult);
-        Dbg("平均每天录像的数目 : %u", mUAverageFileCreated);
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("平均录像文件的大小 : %s", szResult);
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("平均每天录像的数目 : %u", mUAverageFileCreated);
 
         //预估每天需要提供的空间大小
         ULARGE_INTEGER uiForecastDailySpace;
@@ -338,7 +338,7 @@ struct DiskInfo
         ULARGE_INTEGER uiForecastSpaceAvail;
         uiForecastSpaceAvail.QuadPart = uiForecastDailySpace.QuadPart * uRequredDays;
         ByteSprintf(szResult, (double)uiForecastSpaceAvail.QuadPart);
-        Dbg("需预留的磁盘空间大小 : %s", szResult);
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("需预留的磁盘空间大小 : %s", szResult);
 
         mUiFreeBytesRequired = uiForecastSpaceAvail;
         uiRequireBytes = uiForecastSpaceAvail;
@@ -365,14 +365,14 @@ struct DiskInfo
             char szResult2[DEFAULT_OUTPUT_FORMAT_SIZE];
             ByteSprintf(szResult, (double)uiDiskFreeSize.QuadPart);
             ByteSprintf(szResult2, (double)uiDiskOverallSize.QuadPart);
-            Dbg("Current operated disk(%s) : %s / %s", lpszDiskPath, szResult, szResult2);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Current operated disk(%s) : %s / %s", lpszDiskPath, szResult, szResult2);
             ULARGE_INTEGER uiForecastSpaceAvail;
             uiForecastSpaceAvail.QuadPart = uiRequiredByts.QuadPart + uiAdjustmentFactor.QuadPart;
             if (uiForecastSpaceAvail.QuadPart > uiDiskFreeSize.QuadPart) {
                 ULARGE_INTEGER uiTemp;
                 uiTemp.QuadPart = uiForecastSpaceAvail.QuadPart - uiDiskFreeSize.QuadPart;
                 ByteSprintf(szResult, (double)uiTemp.QuadPart);
-                Dbg("More space required : %s", szResult);
+                DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("More space required : %s", szResult);
                 if (pUiRealRequiredByts != NULL) {
                     pUiRealRequiredByts->QuadPart = uiTemp.QuadPart;
                 }
@@ -389,7 +389,7 @@ struct DiskInfo
         //ByteSprintf(szResult, ULONGLONG_ERROR);
         if (mUiUploadVideoFileBytes.QuadPart != ULONGLONG_ERROR) {
             ByteSprintf(szResult, (double)mUiUploadVideoFileBytes.QuadPart);
-            Dbg("未上传录像文件夹的大小 : %s", szResult);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("未上传录像文件夹的大小 : %s", szResult);
         }
 
 #if JUS_A_TEST
@@ -402,7 +402,7 @@ struct DiskInfo
         ULARGE_INTEGER uiForecastSpaceAvail;
 
         if (!mBAverageAvailable) {
-            Dbg("mBAverageAvailable == FALSE");
+            DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("mBAverageAvailable == FALSE");
             return FALSE;
         }
 
@@ -415,13 +415,13 @@ struct DiskInfo
             ULARGE_INTEGER uiTemp;
             uiTemp.QuadPart = uiForecastSpaceAvail.QuadPart - mUliDiskFreeSize.QuadPart;
             ByteSprintf(szResult, (double)uiTemp.QuadPart);
-            Dbg("需要待清理的空间大小 : %s", szResult);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("需要待清理的空间大小 : %s", szResult);
             if (pUiRealRequiredByts != NULL) {
                 pUiRealRequiredByts->QuadPart = uiTemp.QuadPart;
             }
             bResult = TRUE;
         } else {
-            Dbg("当前无需对磁盘空间进行清理。");
+            DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("当前无需对磁盘空间进行清理。");
         }
         return bResult;
     }
@@ -444,7 +444,7 @@ struct DiskInfo
                                         &uiTotalNumberOfBytes,
                                         &uiTotalNumberOfFreeBytes);
         if (!bRet) {
-            Dbg("GetDiskFreeSpaceEx(%s) failed, GLE=%u", szDisk, GetLastError());
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetDiskFreeSpaceEx(%s) failed, GLE=%u", szDisk, GetLastError());
             return FALSE;
         }
         uiTotalByteNumber = uiTotalNumberOfBytes;
@@ -477,15 +477,15 @@ struct DiskInfo
 
         char szResult[DEFAULT_OUTPUT_FORMAT_SIZE];
         ByteSprintf(szResult, (double)mUiAllVideoFilesBytes);
-        Dbg("录像文件夹的大小 : %s", szResult);
-        Dbg("录像文件数量(已上传+未上传) : %u", mUVideoFileCount);
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("录像文件夹的大小 : %s", szResult);
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("录像文件数量(已上传+未上传) : %u", mUVideoFileCount);
 
         //平均每天的录像数目
         mUAverageFileCreated = DEFAULT_VIDEOFILE_CREATE_COUNT;
         if (mUVideoCreateDayCount != 0) {
             mUAverageFileCreated = mUVideoFileCount / mUVideoCreateDayCount;
         }
-        Dbg("平均每天录像的数目 : %u", mUAverageFileCreated);
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("平均每天录像的数目 : %u", mUAverageFileCreated);
 
         //平均录像文件的大小 TODO: 
         if (mUVideoFileCount != 0) {
@@ -494,7 +494,7 @@ struct DiskInfo
             mUliAverageFileSize = mUiAllVideoFilesBytes;
         }
         ByteSprintf(szResult, (double)mUliAverageFileSize);
-        Dbg("平均录像文件的大小 : %s", szResult);
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("平均录像文件的大小 : %s", szResult);
         
         //预估每天需要提供的空间大小 = 平均每个文件大小 * 平均每天文件数量
         const unsigned long long uiForecastDailySpace = mUliAverageFileSize * mUAverageFileCreated;
@@ -502,7 +502,7 @@ struct DiskInfo
         //至少需预留的磁盘空间大小 = 平均每天需要的大小*要求留存的天数
         const unsigned long long uiForecastSpaceAvail = uiForecastDailySpace * uRequredDays;
         ByteSprintf(szResult, (double)uiForecastSpaceAvail);
-        Dbg("需预留的磁盘空间大小(平均每个文件大小 * 平均每天文件数量 * 要求留存的天数#%u) : %s", uRequredDays, szResult);
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("需预留的磁盘空间大小(平均每个文件大小 * 平均每天文件数量 * 要求留存的天数#%u) : %s", uRequredDays, szResult);
         mUiFreeBytesRequired = uiForecastSpaceAvail;
 
         uiRequireBytes = uiForecastSpaceAvail;
@@ -535,7 +535,7 @@ struct DiskInfo
                 uiTemp = uiForecastSpaceAvail - uiDiskFreeSize;
                 char szResult[DEFAULT_OUTPUT_FORMAT_SIZE];
                 ByteSprintf(szResult, (double)uiTemp);
-                Dbg("More space required : %s", szResult);
+                DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("More space required : %s", szResult);
                 if (pUiRealRequiredByts != NULL) {
                     *pUiRealRequiredByts = uiTemp;
                 }
@@ -552,7 +552,7 @@ struct DiskInfo
         char szResult[DEFAULT_OUTPUT_FORMAT_SIZE];
         if (mUiUploadVideoFileBytes != ULONGLONG_ERROR) {
             ByteSprintf(szResult, (double)mUiUploadVideoFileBytes);
-            Dbg("未上传录像文件夹的大小 : %s", szResult);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("未上传录像文件夹的大小 : %s", szResult);
         }
 
         if (pUiRealRequiredByts != NULL) {
@@ -562,7 +562,7 @@ struct DiskInfo
         unsigned long long uiForecastSpaceAvail;
 
         if (!mBAverageAvailable) {
-            Dbg("mBAverageAvailable == FALSE");
+            DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("mBAverageAvailable == FALSE");
             return FALSE;
         }
 
@@ -575,13 +575,13 @@ struct DiskInfo
             unsigned long long uiTemp;
             uiTemp = uiForecastSpaceAvail - mUliDiskFreeSize;
             ByteSprintf(szResult, (double)uiTemp);
-            Dbg("需要待清理的空间大小 : %s", szResult);
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("需要待清理的空间大小 : %s", szResult);
             if (pUiRealRequiredByts != NULL) {
                 *pUiRealRequiredByts = uiTemp;
             }
             bResult = TRUE;
         } else {
-            Dbg("当前无需对磁盘空间进行清理。");
+            DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("当前无需对磁盘空间进行清理。");
         }
         return bResult;
     }
@@ -591,7 +591,7 @@ struct DiskInfo
         struct statfs buf;
         int result = statfs(lpszVideoPath, &buf);
         if (result < 0) {
-            Dbg("statfs failed: %d", errno);
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("statfs failed: %d", errno);
             return FALSE;
         }
         /** 

+ 33 - 36
Module/mod_ResourceWatcher/FileSimpleComp.h

@@ -203,7 +203,7 @@ DWORD GetDirectoryItemCount(LPCTSTR dirPath, int nDepth)
 	DWORD result = 0;
 
     if ((d = opendir(dirPath)) == NULL) {
-        Dbg("opendir %s failed: %s", dirPath, strerror(errno));
+        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("opendir %s failed: %s", dirPath, strerror(errno));
         return 0;
     }
 
@@ -219,20 +219,20 @@ DWORD GetDirectoryItemCount(LPCTSTR dirPath, int nDepth)
         char tempFilePath[MAX_PATH * 2] = { 0 };
         strcpy(tempFilePath, dirPath);
         if (strlen(tempFilePath) + strlen(dp->d_name) + 3 >= MAX_PATH * 2) {
-            Dbg("filePath is too long for current.");
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("filePath is too long for current.");
             continue;
         }
         strcat(tempFilePath, "/");
         strcat(tempFilePath, dp->d_name);
         struct stat fileStat;
         if (stat(tempFilePath, &fileStat) < 0) {
-            Dbg("stat dir for %s failed: %d ", tempFilePath, errno);
+            DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("stat dir for %s failed: %d ", tempFilePath, errno);
             continue;
         }
 
         if (S_ISDIR(fileStat.st_mode)) {
             if (nDepth + 1 >= 0) {
-                Dbg("exceed the deepest dir, do not recursive at all: %s", tempFilePath);
+                DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("exceed the deepest dir, do not recursive at all: %s", tempFilePath);
             } else {
                 result += GetDirectoryItemCount(tempFilePath, nDepth + 1);
             }
@@ -256,7 +256,7 @@ unsigned long long GetDirectorySize(LPCTSTR dirPath, int nDepth)
 	unsigned long long result = 0;
 
 	if ((d = opendir(dirPath)) == NULL) {
-		Dbg("opendir %s failed: %s", dirPath, strerror(errno));
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("opendir %s failed: %s", dirPath, strerror(errno));
 		return 0;
 	}
 
@@ -271,20 +271,20 @@ unsigned long long GetDirectorySize(LPCTSTR dirPath, int nDepth)
         char tempFilePath[MAX_PATH * 2] = { 0 };
         strcpy(tempFilePath, dirPath);
         if (strlen(tempFilePath) + strlen(dp->d_name) + 3 >= MAX_PATH * 2) {
-            Dbg("filePath is too long for current.");
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("filePath is too long for current.");
             continue;
         }
         strcat(tempFilePath, "/");
         strcat(tempFilePath, dp->d_name);
 		struct stat fileStat;
         if (stat(tempFilePath, &fileStat) < 0) {
-            Dbg("stat dir for %s failed: %d ", tempFilePath, errno);
+            DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("stat dir for %s failed: %d ", tempFilePath, errno);
             continue;
         }
 
 		if (S_ISDIR(fileStat.st_mode)) {
 			if (nDepth + 1 >= 0) {
-				Dbg("exceed the deepest dir, do not recursive at all: %s", tempFilePath);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("exceed the deepest dir, do not recursive at all: %s", tempFilePath);
 			} else {
 				result += GetDirectorySize(tempFilePath, nDepth + 1);
 			}
@@ -369,7 +369,6 @@ static BOOL GetSubFileName(const BYTE* btBuffer, const DWORD bufSize, CSimpleStr
 	if(pUliOffsetLength == NULL) return FALSE;
 	if(bufSize < pUliOffsetLength->u.LowPart + pUliOffsetLength->u.HighPart) return FALSE;
 	CSimpleStringA tmpPath((LPCTSTR)btBuffer+pUliOffsetLength->u.LowPart, pUliOffsetLength->u.HighPart);
-	//Dbg("GetSubFileName::tmpPath: %d", tmpPath.GetLength());
 	filePath = tmpPath;
 	return !filePath.IsNullOrEmpty();
 }
@@ -475,7 +474,7 @@ static BOOL GetFullFilePath(const CSimpleStringA& parentPath, const BYTE* btBuff
 	CSimpleStringA& fullFilePath, PULARGE_INTEGER pUliOffsetLength)
 {
 	CSimpleStringA csFileName;
-	Dbg("parentPath: %s", (LPCTSTR)csFileName);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("parentPath: %s", (LPCTSTR)csFileName);
 	if(GetSubFileName(btBuffer, bufSize, csFileName, pUliOffsetLength))
 	{
 		if(!parentPath.IsNullOrEmpty() 
@@ -555,13 +554,12 @@ static int GetPathDepth(LPCTSTR lpszPath)
 	const char* pch = NULL;
 	while(pos != -1)
 	{
-		//Dbg("Test: %d", pos);
 		pch = lpszPath + pos;
 		count++;
 		if(pos+1 >= len) break;
 		tmp = _GetDirSplitMarkPos(pch+1);
 		if(tmp == 0) {
-			Dbg("Test: %d [%s]", pos, lpszPath);
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Test: %d [%s]", pos, lpszPath);
 			return -4;
 		}
 		pos = tmp > 0 ? tmp + pos + 1 : tmp;
@@ -586,7 +584,7 @@ static DWORD InitialFileEntity(PFILE_LAYOUT_ENTRY Entry, LPCTSTR lpszPath)
 
 	DWORD dwDir, dwFile;
 	GetSubFileInfors(Entry, dwDir, dwFile);
-	Dbg("dwDir:%u,dwFile:%u", dwDir, dwFile);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("dwDir:%u,dwFile:%u", dwDir, dwFile);
 	DisplayFileEntities(Entry);
 	return dwFile+dwFile;
 }
@@ -610,7 +608,7 @@ static UINT GetDirSplitPath(LPCTSTR lpszPath, const int back_num, LPTSTR lpszRet
 		pPath[pos+1] = '\0';
 
 		int len = strlen(pPath);
-		Dbg("PathLen(%d) VS RealLen(%d)", pathLen, len);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("PathLen(%d) VS RealLen(%d)", pathLen, len);
 		int schedule = 0, aim = back_num, maxi = depth + 1;
 		char* pch = NULL;
 		pos = 0;
@@ -644,7 +642,7 @@ static BOOL TraceExtend(PFILE_LAYOUT_ENTRY Entry, int UpLevel)
 	if(GetSubFileName(Entry->FileNamesBuffer, 
 		Entry->FileNamesBuffer.GetCount(), strParentPath, &uliOffsetLength))
 	{
-		Dbg("TraceExtend::GetSubFileName suc: %d", UpLevel);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("TraceExtend::GetSubFileName suc: %d", UpLevel);
 		if(UpLevel < 0)
 		{
 			UpLevel = 0-UpLevel;
@@ -685,13 +683,13 @@ static BOOL TraceExtend(PFILE_LAYOUT_ENTRY Entry, int UpLevel)
 		DWORD dwLocate;
 		Append(Entry->FileNamesBuffer, (PBYTE)(LPCTSTR)strPath, strPath.GetLength(), dwLocate);
 		assert(dwLocate == 0);
-		Dbg("TraceExtend::dwLocate %d", dwLocate);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("TraceExtend::dwLocate %d", dwLocate);
 		Entry->Current.mNameOffset = dwLocate;
 		Entry->Current.mNameLength = strPath.GetLength();
 		bRet = TRUE;
 		DWORD dwDir, dwFile;
 		GetSubFileInfors(Entry, dwDir, dwFile);
-		Dbg("dwDir:%u,dwFile:%u", dwDir, dwFile);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("dwDir:%u,dwFile:%u", dwDir, dwFile);
 		DisplayFileEntities(Entry);
 	}
 	return bRet;
@@ -704,7 +702,7 @@ ULONGLONG GetSubFileInfors(PFILE_LAYOUT_ENTRY Entry, DWORD& dwDirCount, DWORD& d
 	if(Entry == NULL) {
 		return 0;
 	}
-	Dbg("dwFilter: 0x%08X", dwFilterMask);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("dwFilter: 0x%08X", dwFilterMask);
 	const BYTE* buffer = (const BYTE*)Entry->FileNamesBuffer;
 	int nLength = Entry->Current.mNameLength;
 	int nLengthSuffix = nLength + 3;
@@ -725,7 +723,7 @@ ULONGLONG GetSubFileInfors(PFILE_LAYOUT_ENTRY Entry, DWORD& dwDirCount, DWORD& d
     HANDLE hFind;
     hFind = FindFirstFileA(csPath, &wfd);
     if (hFind == INVALID_HANDLE_VALUE) {
-        Dbg("FindFirstFile failed GLE = %u.", GetLastError());
+        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("FindFirstFile failed GLE = %u.", GetLastError());
         delete[] pszParentPah;
         return 0;
     }
@@ -733,7 +731,6 @@ ULONGLONG GetSubFileInfors(PFILE_LAYOUT_ENTRY Entry, DWORD& dwDirCount, DWORD& d
         if (((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY
              && wfd.cFileName[0] != '.')
             || !(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
-            //Dbg("%s", wfd.cFileName);
             if ((wfd.dwFileAttributes & dwFilterMask) == 0) {
                 CSimpleFileComponent folder;
                 ULARGE_INTEGER ulTmpValue;
@@ -763,10 +760,10 @@ ULONGLONG GetSubFileInfors(PFILE_LAYOUT_ENTRY Entry, DWORD& dwDirCount, DWORD& d
                 if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) dwDirCount++;
                 else dwFileCount++;
             } else {
-                Dbg("flag1:%s - 0x%08X", wfd.cFileName, wfd.dwFileAttributes);
+                DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("flag1:%s - 0x%08X", wfd.cFileName, wfd.dwFileAttributes);
             }
         } else {
-            Dbg("flag2:%s - 0x%08X", wfd.cFileName, wfd.dwFileAttributes);
+            DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("flag2:%s - 0x%08X", wfd.cFileName, wfd.dwFileAttributes);
         }
     } while (FindNextFileA(hFind, &wfd));
     FindClose(hFind);
@@ -775,13 +772,13 @@ ULONGLONG GetSubFileInfors(PFILE_LAYOUT_ENTRY Entry, DWORD& dwDirCount, DWORD& d
     CSimpleStringA csPath(pszParentPah);
     struct stat fileStat;
     if (stat(csPath, &fileStat) < 0 || !S_ISDIR(fileStat.st_mode)) {
-		Dbg("stat for %s failed or is not dir", csPath.GetData());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("stat for %s failed or is not dir", csPath.GetData());
 		delete[] pszParentPah;
         return 0;
     }
     DIR* d = opendir(csPath);
     if (!d) {
-		Dbg("opendir %s failed: %s", (LPCTSTR)csPath, strerror(errno));
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("opendir %s failed: %s", (LPCTSTR)csPath, strerror(errno));
 		delete[] pszParentPah;
         return 0;
     }
@@ -794,7 +791,7 @@ ULONGLONG GetSubFileInfors(PFILE_LAYOUT_ENTRY Entry, DWORD& dwDirCount, DWORD& d
 		char tempFilePath[MAX_PATH*2] = { 0 };
         strcpy(tempFilePath, pszParentPah);
         if (strlen(tempFilePath) + strlen(dp->d_name) + 3 >= MAX_PATH * 2) {
-            Dbg("filePath is too long for current.");
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("filePath is too long for current.");
             continue;
         }
 		strcat(tempFilePath, "/");
@@ -841,32 +838,32 @@ void DisplayFileEntities(const PFILE_LAYOUT_ENTRY Entry)
 	GetSubFileName(Entry->FileNamesBuffer, Entry->FileNamesBuffer.GetCount(),
 		csParentName, &uliOffsetLength);
 	char szFormat[128] = {0};
-	Dbg("FileCount under [%s]: (%d)", (LPCTSTR)csParentName, Entry->SubFiles.GetCount());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("FileCount under [%s]: (%d)", (LPCTSTR)csParentName, Entry->SubFiles.GetCount());
 #if 0
 	for(int i=0; i<Entry->SubFiles.GetCount(); ++i)
 	{
-		Dbg("***********************************************");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("***********************************************");
 		const CSimpleFileComponent& cur = Entry->SubFiles[i];
 		uliOffsetLength.LowPart = cur.mNameOffset;
 		uliOffsetLength.HighPart = cur.mNameLength;
-		Dbg("mNameOffset: %u, mNameLength: %u.", cur.mNameOffset, cur.mNameLength);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("mNameOffset: %u, mNameLength: %u.", cur.mNameOffset, cur.mNameLength);
 		GetSubFileName(Entry->FileNamesBuffer, Entry->FileNamesBuffer.GetCount(),
 			csFileName, &uliOffsetLength);
-		Dbg("[%d] %s =>", i, (LPCTSTR)csFileName);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("[%d] %s =>", i, (LPCTSTR)csFileName);
 		GetTimeFormatStr(szFormat, 128, (FILETIME*)&cur.mftCreate);
-		Dbg("Create: %s", szFormat);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Create: %s", szFormat);
 		//GetTimeFormatStr(szFormat, 128, (FILETIME*)&cur.mftModified);
-		//Dbg("Modifi: %s", szFormat);
+		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Modifi: %s", szFormat);
 		//GetTimeFormatStr(szFormat, 128, (FILETIME*)&cur.mftAccess);
-		//Dbg("Access: %s", szFormat);
+		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Access: %s", szFormat);
 		GetAttributeFormat(cur.mAttributes, csAttributes);
-		Dbg("Attributes(0x%X): %s", cur.mAttributes, (LPCTSTR)csAttributes);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Attributes(0x%X): %s", cur.mAttributes, (LPCTSTR)csAttributes);
 		GetFullFilePath(Entry, i, csFilePath);
-		Dbg("FullPath1: %s", (LPCTSTR)csFilePath);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("FullPath1: %s", (LPCTSTR)csFilePath);
 		//GetFullFilePath(csParentName, Entry->FileNamesBuffer, Entry->FileNamesBuffer.GetCount(),
 		//	csFilePath, &uliOffsetLength);
-		//Dbg("FullPath2: %s", (LPCTSTR)csFilePath);
-		//Dbg("PathDepth: %d", GetPathDepth(csFilePath));
+		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("FullPath2: %s", (LPCTSTR)csFilePath);
+		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("PathDepth: %d", GetPathDepth(csFilePath));
 	}
 #endif
 }

+ 0 - 26
Module/mod_ThermalPrint/CMakeLists.txt

@@ -1,26 +0,0 @@
-define_module("ThermalPrint")
-
-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}
-	${CONAN_INCLUDE_DIRS_SCEW}
-	${CONAN_INCLUDE_DIRS_EXPAT}
-)
-
-target_link_directories(${MODULE_NAME} PRIVATE
-	${CONAN_LIB_DIRS_SCEW}
-	${CONAN_LIB_DIRS_EXPAT}
-)
-
-set(${MODULE_PREFIX}_LIBS ${MODULE_BASE_LIBS} ${CONAN_LIBS_SCEW} ${CONAN_LIBS_EXPAT})
-target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})  
-
-target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
-
-deploy_module(${MODULE_PREFIX} ${MODULE_NAME})

+ 0 - 4
Module/mod_ThermalPrint/ChangeLog.md

@@ -1,4 +0,0 @@
-
-## 0.0.1-dev1
-* Windows 下编译通过 (2021年1月5日,廖桂发)
-

+ 0 - 63
Module/mod_ThermalPrint/ThermalPrint.xml

@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="gb2312" ?>
-<entity name="ThermalPrint">
-	
-	<!-- 热敏打印服务 -->
-	<class name="ThermalPrintService" overlap="true"  exclusive="false">
-		<!-- 打印 -->
-		<twoway name="DoPrint" overlap="true">
-			<req>
-				<!-- 打印任务uuid 16位 -->
-				<param name="uuid" type="wstring"/>
-				<!-- 打印内容-->
-				<param name="print_data" type="wstring"/>
-				<!-- 纸张类型(0 连续纸 1 标记纸)-->
-				<param name="paper_type" type="int"/>
-				<!-- 纸张宽度(单位毫米)-->
-				<param name="paper_width" type="int"/>
-				<!-- 备用字段1 -->
-				<param name="reserve1" type="int"/>
-				<!-- 备用字段2 -->
-				<param name="reserve2" type="wstring"/>
-			</req>
-			<res>
-				<!-- 错误码 -->
-				<param name="error_code" type="wstring"/>
-				<!-- 错误消息 -->
-				<param name="error_msg" type="wstring"/>
-			</res>
-		</twoway>
-		<!--打印机状态-->
-		<twoway name="PrinterStatus" overlap="true">
-			<res>
-				<!--打印机状态: 0 正常 1少纸 2缺纸 3卡纸 4硬件故障 5厂商接口调用失败-->
-				<param name="print_status" type="int"/>
-				<!--状态具体信息-->
-				<param name="status_msg" type="wstring"/>
-			</res>
-		</twoway>
-		<!--打印实体状态-->
-		<twoway name="PrintEntityStatus" overlap="true">
-			<req>
-			</req>
-			<res>
-				<!--是否支持打印:false 不支持 true 支持-->
-				<param name="isSupportPrint" type="bool"/>
-				<!--实体当前状态:false 未打印 true 打印中-->
-				<param name="isPrinting" type="bool"/>
-			</res>
-		</twoway>
-	</class>
-	
-	<!-- 打印结果返回 -->
-	<message name="PrintResult">
-		<!-- 打印任务uuid 16位 -->
-		<param name="uuid" type="wstring"/>
-		<!-- 打印结果:0 成功 1 失败 -->
-		<param name="print_Result" type="int"/>
-		<!-- 错误码 -->
-		<param name="error_code" type="wstring"/>
-		<!-- 错误消息-->
-		<param name="error_msg" type="wstring"/>
-	</message>
-	
-</entity>

+ 0 - 173
Module/mod_ThermalPrint/ThermalPrintClass.h

@@ -1,173 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////////
-///	Copyright (c) 2013 China Merchants Bank, all rights reserved	       	  ///
-///	  Adapter Interface for Printer.	                          	       	  ///
-///							                                       	       	  ///
-///	                                                             	       	  ///
-/////////////////////////////////////////////////////////////////////////////////
-#ifndef __THERMAL_PRINT_CLASS_H
-#define __THERMAL_PRINT_CLASS_H
-#pragma once
-
-#include "DeviceBaseClass.h"
-
-
-//the paper state of printer
-enum ThermalPaperState
-{
-	PAPER_FULL=0,   //纸量充足
-	PAPER_LOW,	  //少纸,纸将尽
-	PAPER_EMPTY,  //缺纸
-	PAPER_JAMMED  //卡纸
-};
-
-enum ThermalHardwareState
-{
-	STATE_OK=0,		//状态正常
-	STATE_OTHER_ERROR //其他硬件错误(如切刀错,上盖打开) 具体原因写入DevErrorInfo
-	//to be added
-};
-//state of printer
-struct ThermalState
-{
-	ThermalPaperState paperState;
-	ThermalHardwareState hardwareState;
-	//to be added
-};
-
-
-enum PrintAction
-{
-	ACTION_PRINT_ONE_LINE =0,//打印走纸一行
-	ACTION_PRINT_MOVEFORWRAD_LINES,//打印并走纸n行(单位:字符行)
-	ACTION_PRINT_MOVEBACKWRAD_LINES,//回纸n行(单位:字符行)不实现
-	ACTION_CUT_ALL,//全切纸
-	ACTION_CUT_HALF,//半切纸
-	ACTION_MOVE_TO_POSITION_RELATIVE,//把打印光标移动相对当前位置一段距离(横向),单位mm
-	ACTION_MOVE_TO_FORWRAD_LENGTH,//移动向前走纸一段距离(距离包括本行高度在内) 单位:mm
-	ACTION_MOVE_TO_BLACKMARK,//移动到黑标位置,把打印位置设置在行首(标记纸有效)
-	ACTION_PRINT_MOVEBACK_TO_LINE//设置起始位置在行首,取值(0:打印内容返回行首,1:清空要打印的内容返回行首) 不需要实现
-	//to be added
-};
-
-enum CommandType{
-	COMMON_ROW_SPACE=0,//行高 单位mm(修改为行高,默认行高是4.23mm,当字体超过行高,一行高度为最高的字体高度)
-	COMMON_ALIGN,		//字符对齐模式 单位是"AlignStyle"的值
-	COMMON_REVERSE,//颠倒打印(注意需要设置退出或者切纸才行,并在行首) 取值(0:正常打印 1:颠倒打印)
-	COMMON_LEFT_MARGIN,//左边距 单位mm
-	COMMON_PRINTABLE_AREA//可打印区域 单位mm
-	//to be added
-};
-
-enum FontStyle
-{
-	FONT_UNDERLINE = 0,//下划线 取值(0:否 1:是)
-	FONT_BOLD,//粗体 取值(0:否 1:是)
-	FONT_INVERSE, //反白 取值(0:否 1:是)
-	FONT_DOUBLEHEIGHT,//纵翻倍放大 取值(0:否 1:是)
-	FONT_DOUBLEWIDE,//横翻倍向放大 取值(0:否 1:是)
-	FONT_CUSTOM_SIZE,//字体宽高自定义,取值(宽 {1..6} ,长 {1..6})
-	FONT_ROTATE,//字体旋转 取值(0,90,180,270) 只实现90
-	FONT_LEFT_RIGHT_SPACE//字符左右边距设置 单位mm 取值(左边距 {0..36},右边距 {0..36}) 只设置右边距,左边距设置为0
-	//to be added
-};
-
-
-enum AlignStyle
-{
-	ALIGN_LEFT=0,
-	ALIGN_MIDDLE,
-	ALIGN_RIGHT
-};
-
-enum BarCodeType{
-	CONTENT_BARCODE_UPC_A =0,
-	CONTENT_BARCODE_UPC_E,
-	CONTENT_BARCODE_EAN8,
-	CONTENT_BARCODE_EAN13,
-	CONTENT_BARCODE_39,
-	CONTENT_BARCODE_128
-	//to be added...
-};
-
-enum QRCodeType{
-	CONTENT_TWODIM_QRCODE=0,
-	CONTENT_TWODIM_PDF417
-	//to be added...
-};
-
-enum HriPosition{
-	HRI_POSITION_NONE =0,
-	HRI_POSITION_ABOVE,
-	HRI_POSITION_BELOW,
-	HRI_POSITION_BOTH
-};
-enum ThermalPaperType{
-	PAPER_CONTINUOUS=0,//连续纸
-	PAPER_LABEL //标记纸
-};
-
-
-class ThermalPrintClass : public DeviceBaseClass
-{
-public:
-
-	//	打开打印机
-	virtual ErrorCodeEnum DevOpen(BYTE btPort,DWORD dwBaudRate) = 0;
-
-	//	获取打印机实时状态
-	virtual ErrorCodeEnum GetDevState(ThermalState &devState) = 0;
-	
-	//开始打印初始设置:paperWidth一般为80mm和57mm
-	virtual ErrorCodeEnum BeginPrint(ThermalPaperType eType,int paperWidth)=0;
-
-	//打印控制指令函数:主要是打印,切纸和控制打印光标指令函数
-	//第三个参数是预留参数 暂时无用到
-	virtual ErrorCodeEnum ControlAction(PrintAction eAction,DWORD dwValue1,DWORD dwValue2=0) = 0;
-	
-	//打印参数指令函数:
-	//第三个参数是预留参数 暂时无用到
-	virtual ErrorCodeEnum SetParam(CommandType eType,DWORD dwValue1,DWORD dwValue2=0) = 0;
-	
-	//打印字体指令函数:主要是字体相关饿指令函数
-	//第三个参数是预留参数 设置FONT_CUSTOM_SIZE用到,dwValue1表示宽,dwValue2表示长
-	//					设置FONT_LEFT_RIGHT_SPACE用到 dwValue1表示左边距 dwValue2表示右边距
-	virtual ErrorCodeEnum SetFont(FontStyle eType,DWORD dwValue1,DWORD dwValue2=0) = 0;
-
-	//打印文本数据函数
-	virtual ErrorCodeEnum PrintText(BYTE *pData,DWORD dwDataLen)=0;
-
-	//打印条形码函数
-	//dwUnitWidth 条形码基本模块宽度 取值{2..6} 默认2
-	//dwHeight 条形码高度 单位mm
-	//iHRIPosition hri字符打印位置 见枚举类型HriPosition
-	virtual ErrorCodeEnum PrintBarCode(BarCodeType eType, BYTE *pData,DWORD dwDataLen,DWORD dwUnitWidth,DWORD dwHeight,HriPosition eHRIPosition)=0;
-
-	//打印二维码QRCode函数
-	//dwUnitWidth 二维码基本元素宽度 取值{1..255} 默认3
-	virtual ErrorCodeEnum PrintQRCode(BYTE *pData,DWORD dwDataLen,DWORD dwUnitWidth)=0;
-	
-	//打印二维码QRCode函数
-	//dwWidth 二维码长度 ,单位mm
-	virtual ErrorCodeEnum PrintQRCodeByArea(BYTE *pData,DWORD dwDataLen,DWORD dwUnitWidth,DWORD dwWidth)=0;
-	
-	//打印二维码PDF417函数
-	//errorLevel pdf417纠错级别 取值{0..8}
-	//dwUnitWidth  基本元素宽度 取值{3..90}
-	//dwUnitHeight 基本元素长度 取值{1..30}
-	//row  pdf417 行数 取值{1..7}
-	//lines pdf417 列数 取值{2..25}
-	virtual ErrorCodeEnum PrintPDF417code(BYTE *pData,DWORD dwDataLen,int errorLevel,DWORD dwUnitWidth,DWORD dwUnitHeight,int rows,int lines)=0;
-
-	//打印二维码PDF417函数
-	//errorLevel pdf417纠错级别 取值{0..8}
-	//dwWidth  pdf417宽度 单位mm
-	//dwHeight pdf417长度 单位mm
-	virtual ErrorCodeEnum PrintPDF417codeByArea(BYTE *pData,DWORD dwDataLen,int errorLevel,DWORD dwWidth,DWORD dwHeight)=0;
-	
-	//打印图像函数:pData是base64编码的数据
-	virtual ErrorCodeEnum PrintImage(BYTE *pData,DWORD dwDataLen)=0;
-
-	//获取打印失败后错误信息和错误状态
-	virtual ErrorCodeEnum GetLastErrState(ThermalState &devState , DevErrorInfo &devErrInfo) = 0;
-};
-#endif //__THERMAL_PRINT_CLASS_H

+ 0 - 41
Module/mod_ThermalPrint/ThermalPrintError.h

@@ -1,41 +0,0 @@
-
-#ifndef _THERMALPRINTERROR_
-#define _THERMALPRINTERROR_
-
-#pragma once
-
-/************************************************************************/
-/* 接收任务阶段                                                           */
-/************************************************************************/
-// 传入参数错误
-#define Error_Param					"21980000"
-// xml解析错误
-#define Error_Parse					"21980001"
-// 任务未完成
-#define Error_Printing				"21980FFF"
-//设备未打开
-#define Error_DevNotOpen			"21980002"
-
-/************************************************************************/
-/* 预检查阶段                                                             */
-/************************************************************************/
-// 少纸
-#define Error_Paper_low				"21981000"
-// 缺纸
-#define Error_Paper_empty			"21981001"
-// 卡纸
-#define Error_Paper_jammed			"21981002"
-//其他硬件故障
-#define Error_OtherDevFault			"21981003"
-//预检查失败
-#define Error_PreCheckPrint			"21981FFF"
-
-/************************************************************************/
-/* 打印阶段                                                    */
-/************************************************************************/
-//打印失败
-#define Error_Print					"21982000"
-
-
-
-#endif

+ 0 - 1123
Module/mod_ThermalPrint/ThermalPrintFSM.cpp

@@ -1,1123 +0,0 @@
-#include "stdafx.h"
-#include "SpHelper.h"
-#include "ThermalPrintFSM.h"
-#include "mod_ThermalPrint.h"
-#include "base64.h"
-#include "GetDevInfoHelper.h"
-#include "SpUtility.h"
-
-
-ErrorCodeEnum CThermalPrintFSM::OnInit()
-{
-	LOG_FUNCTION();
-	GET_DEV_ENTITY_BASE_POINTER()->InitializeVendorLogSwitch();
-	ErrorCodeEnum eErrDev = Error_Succeed;
-	CSimpleStringA csDllName(true);
-    auto pEntity = GET_DEV_ENTITY_BASE_POINTER();
-	eErrDev = pEntity->ExtractVendorLibFullPath(csDllName);
-
-	//root.ini文件未配置则置热敏打印机不可用,但是实体依然启动
-	if(eErrDev== Error_NotConfig) {
-		m_bSupportPrint=false;//表示不支持打印
-		m_bDevOpen=false;//表示dev打开失败
-		m_pCommandList=NULL;
-		Dbg("Open device failed , thermalPrint is not support print: root.ini param is null");
-		return Error_Succeed;
-	}
-
-	if(eErrDev!=Error_Succeed){
-		Dbg("Fetch Vendor dllName failed %s.", (LPCTSTR)csDllName);
-		return eErrDev;
-	}
-	Dbg("VendorDllName: %s.", (LPCTSTR)csDllName);
-	eErrDev = m_hDevHelper.LoadUp(csDllName);
-	if(eErrDev!=Error_Succeed)
-	{
-		Dbg("LoadUp failed %s.", (LPCTSTR)csDllName);
-		return eErrDev;
-	}
-	Dbg("Get functions' addresses succed.");
-
-	//获取端口和波特率
-	eErrDev = FetchOtherParam();
-	if(eErrDev!=Error_Succeed)
-	{
-		Dbg("FetchOtherParam failed.");
-		m_hDevHelper.TearDown();
-		return eErrDev;
-	}
-	Dbg("m_port is %d,m_baudrate is %d",m_port,m_baudrate);
-
-	bool bOpenFlag = false;
-	bool bCreateDevCom = false;
-	int initCount=0, initCountMax = 3;
-	int MilliSleepSec = 1000;
-	do 
-	{
-		eErrDev = m_hDevHelper->DevOpen(m_port,m_baudrate);
-		if(eErrDev!=Error_Succeed)
-		{
-			LOG_THERMALPRINT_ERROR_MSG_MACRO(eErrDev, DevOpen);
-			m_hDevHelper.TearDown();
-			return Error_DevConnFailed;
-		}else{
-			m_bSupportPrint=true;//表示支持打印
-			m_bDevOpen=true;//表示dev打开成功
-			m_pCommandList = new list<PrintCommand*>(); //初始化指令集合
-			Dbg("Open device succeeded.");
-			eErrDev = Error_Succeed;
-		}
-	} while (0);
-
-	return eErrDev;
-}
-
-ErrorCodeEnum CThermalPrintFSM::FetchOtherParam() 
-{
-	ErrorCodeEnum erroCode = Error_Unexpect;
-	CSmartPointer<IEntityFunction> spEntityFunction = GetEntityBase()->GetFunction();
-	CSmartPointer<IConfigInfo> spRootConfig;
-	erroCode = spEntityFunction->OpenConfig(Config_Root, spRootConfig);
-	if(erroCode==Error_Succeed)
-	{
-		CSimpleStringA strSection = CSimpleStringA("Device.") + GetEntityBase()->GetEntityName();
-		CSimpleStringA str;
-		spRootConfig->ReadConfigValue(strSection, "Port", str);
-		if(!str.IsNullOrEmpty()){
-			spRootConfig->ReadConfigValueInt(strSection, "Port", m_port);
-		}
-		str.Clear();
-		spRootConfig->ReadConfigValue(strSection, "Baudrate", str);
-		if(!str.IsNullOrEmpty()){
-			spRootConfig->ReadConfigValueInt(strSection, "Baudrate", m_baudrate);
-		}
-	}
-
-	return erroCode;
-}
-
-ErrorCodeEnum CThermalPrintFSM::OnExit()
-{
-	m_hDevHelper.TearDown();
-	//清理打印指令
-	if(m_pCommandList){
-		ClearPrintCMD();
-		delete m_pCommandList;
-	}
-	return Error_Succeed;
-}
-
-ErrorCodeEnum CThermalPrintFSM::GetPrintState(int& state , CSimpleStringA& err_msg)
-{
-	if(m_bDevOpen){
-		ThermalState thState;
-		if(m_hDevHelper->GetDevState(thState)==Error_Succeed){
-			Dbg("热敏检查:纸状态 %d , 硬件状态 %d",(int)thState.paperState,(int)thState.hardwareState);
-			if(thState.hardwareState==STATE_OK){
-				if(thState.paperState==PAPER_FULL){
-					state=0;
-				}else if(thState.paperState==PAPER_LOW){
-					state=1;
-				}else if(thState.paperState==PAPER_EMPTY){
-					state=2;
-				}else if(thState.paperState==PAPER_JAMMED){
-					state=3;
-				}else{
-					state=4;
-					err_msg="未知的硬件故障状态";
-				}
-
-			}else if(thState.hardwareState==STATE_OTHER_ERROR){
-				state=4;
-				DevErrorInfo devOpenErrInfo = {0};
-				ThermalState thermalState;
-				if((m_hDevHelper->GetLastErrState(thermalState,devOpenErrInfo))==Error_Succeed)
-				{
-					err_msg = devOpenErrInfo.szErrMsg;
-				}
-				else
-				{
-					Dbg("device GetDevState failed : GetLastErrState failed.");
-				}
-			}else{
-				state=4;
-				err_msg="未知的硬件故障状态";
-			}
-			return Error_Succeed;
-		}else{
-			DevErrorInfo devOpenErrInfo = {0};
-			if((m_hDevHelper->GetLastErr(devOpenErrInfo))==Error_Succeed)
-			{
-				Dbg("device GetDevState failed : %s.", devOpenErrInfo.szErrMsg);
-			}
-			else
-			{
-				Dbg("device GetDevState failed : GetLastErr failed.");
-			}
-			return Error_Hardware;
-		}
-	}else{
-		return Error_DevNotAvailable;
-	}
-}
-
-//解析每条命令
-PrintCommand* CThermalPrintFSM::ParseCommand( scew_element *elem )
-{
-	PrintCommand* pcd = new PrintCommand();
-	const char *name = scew_element_name(elem);
-	Dbg("元素名称=%s",name);
-	if(stricmp(name,"common")==0){
-		scew_attribute *attr1 = scew_element_attribute_by_name(elem, "name");
-		scew_attribute *attr2 = scew_element_attribute_by_name(elem, "value");
-		if(attr1&&attr2){
-			const char *str1 = scew_attribute_value(attr1);
-			const char *str2 = scew_attribute_value(attr2);
-			if(stricmp(str1,"CMD_COMMON_ROW_SPACE")==0){
-				pcd->eCommandType=CMD_COMMON_ROW_SPACE;
-				pcd->strCommandType="行距";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_COMMON_ALIGN")==0){
-				pcd->eCommandType=CMD_COMMON_ALIGN;
-				pcd->strCommandType="字符对齐";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_COMMON_REVERSE")==0){
-				pcd->eCommandType=CMD_COMMON_REVERSE;
-				pcd->strCommandType="颠倒打印";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_COMMON_LEFT_MARGIN")==0){
-				pcd->eCommandType=CMD_COMMON_LEFT_MARGIN;
-				pcd->strCommandType="左边距";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_COMMON_PRINTABLE_AREA")==0){
-				pcd->eCommandType=CMD_COMMON_PRINTABLE_AREA;
-				pcd->strCommandType="可打印区域";
-				pcd->strCommand=str2;
-
-			}else{
-				Dbg("common节点name属性值不支持");
-				goto on_error;
-			}
-		}else{
-			Dbg("common节点无name或value属性");
-			goto on_error;
-		}
-	}else if(stricmp(name,"font")==0){
-		scew_attribute *attr1 = scew_element_attribute_by_name(elem, "name");
-		scew_attribute *attr2 = scew_element_attribute_by_name(elem, "value");
-		if(attr1&&attr2){
-			const char *str1 = scew_attribute_value(attr1);
-			const char *str2 = scew_attribute_value(attr2);
-			if(stricmp(str1,"CMD_FONT_UNDERLINE")==0){
-				pcd->eCommandType=CMD_FONT_UNDERLINE;
-				pcd->strCommandType="字体下划线";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_FONT_BOLD")==0){
-				pcd->eCommandType=CMD_FONT_BOLD;
-				pcd->strCommandType="字体加粗";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_FONT_INVERSE")==0){
-				pcd->eCommandType=CMD_FONT_INVERSE;
-				pcd->strCommandType="字体反白";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_FONT_DOUBLEHEIGHT")==0){
-				pcd->eCommandType=CMD_FONT_DOUBLEHEIGHT;
-				pcd->strCommandType="字体倍高";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_FONT_DOUBLEWIDE")==0){
-				pcd->eCommandType=CMD_FONT_DOUBLEWIDE;
-				pcd->strCommandType="字体倍宽";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_FONT_CUSTOM_SIZE")==0){
-				pcd->eCommandType=CMD_FONT_CUSTOM_SIZE;
-				pcd->strCommandType="字体宽高自定义";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_FONT_ROTATE")==0){
-				pcd->eCommandType=CMD_FONT_ROTATE;
-				pcd->strCommandType="字体旋转";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_FONT_LEFT_RIGHT_SPACE")==0){
-				pcd->eCommandType=CMD_FONT_LEFT_RIGHT_SPACE;
-				pcd->strCommandType="字体间隔距离";
-				pcd->strCommand=str2;
-
-			}else{
-				Dbg("font节点name属性值不支持");
-				goto on_error;
-			}
-		}else{
-			Dbg("font节点无name或value属性");
-			goto on_error;
-		}
-	}else if(stricmp(name,"action")==0){
-		scew_attribute *attr1 = scew_element_attribute_by_name(elem, "name");
-		scew_attribute *attr2 = scew_element_attribute_by_name(elem, "value");
-		if(attr1&&attr2){
-			const char *str1 = scew_attribute_value(attr1);
-			const char *str2 = scew_attribute_value(attr2);
-			if(stricmp(str1,"CMD_ACTION_PRINT_ONE_LINE")==0){
-				pcd->eCommandType=CMD_ACTION_PRINT_ONE_LINE;
-				pcd->strCommandType="打印走纸一行";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_ACTION_PRINT_MOVEFORWRAD_LINES")==0){
-				pcd->eCommandType=CMD_ACTION_PRINT_MOVEFORWRAD_LINES;
-				pcd->strCommandType="打印走纸N行";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_ACTION_PRINT_MOVEBACKWRAD_LINES")==0){
-				pcd->eCommandType=CMD_ACTION_PRINT_MOVEBACKWRAD_LINES;
-				pcd->strCommandType="打印回纸N行";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_ACTION_CUT_ALL")==0){
-				pcd->eCommandType=CMD_ACTION_CUT_ALL;
-				pcd->strCommandType="全切纸";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_ACTION_CUT_HALF")==0){
-				pcd->eCommandType=CMD_ACTION_CUT_HALF;
-				pcd->strCommandType="半切纸";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_ACTION_MOVE_TO_POSITION_RELATIVE")==0){
-				pcd->eCommandType=CMD_ACTION_MOVE_TO_POSITION_RELATIVE;
-				pcd->strCommandType="横向移动";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_ACTION_MOVE_TO_FORWRAD_LENGTH")==0){
-				pcd->eCommandType=CMD_ACTION_MOVE_TO_FORWRAD_LENGTH;
-				pcd->strCommandType="纵向移动";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_ACTION_MOVE_TO_BLACKMARK")==0){
-				pcd->eCommandType=CMD_ACTION_MOVE_TO_BLACKMARK;
-				pcd->strCommandType="移动到黑标位置";
-				pcd->strCommand=str2;
-
-			}else if(stricmp(str1,"CMD_ACTION_PRINT_MOVEBACK_TO_LINE")==0){
-				pcd->eCommandType=CMD_ACTION_PRINT_MOVEBACK_TO_LINE;
-				pcd->strCommandType="移动到行首";
-				pcd->strCommand=str2;
-
-			}else{
-				Dbg("action节点name属性值不支持");
-				goto on_error;
-			}
-		}else{
-			Dbg("action节点无name或value属性");
-			goto on_error;
-		}
-	}else if(stricmp(name,"text")==0){
-		scew_attribute *attr1 = scew_element_attribute_by_name(elem, "base64");
-		scew_attribute *attr2 = scew_element_attribute_by_name(elem, "value");
-		if(attr1&&attr2){
-			const char *str1 = scew_attribute_value(attr1);
-			const char *str2 = scew_attribute_value(attr2);
-			if(stricmp(str1,"0")==0 && strlen(str2)>0){
-				Dbg("解析出来的内容:%s",str2);
-				pcd->eCommandType=CMD_PRINT_TEXT;
-				pcd->strCommandType="文本内容";
-				//utf8转码,为测试使用,不测试时不需要转码
-#ifdef RVC_OS_WIN
-				char* gbkstr = ConvertUtf8ToGBK((char*)str2);
-				Dbg("解析出来的文本:%s",gbkstr);
-				//转义字符
-				pcd->strCommand = decodeXmlContent((const char*)gbkstr);
-				delete[] gbkstr;
-				Dbg("转义出来的内容:%s",pcd->strCommand.GetData());
-#else
-				Dbg("解析出来的文本:%s", str2);
-				//转义字符
-				pcd->strCommand = decodeXmlContent(str2);
-				Dbg("转义出来的内容:%s", pcd->strCommand.GetData());
-#endif //  RVC_OS_WIN				
-			}else if(stricmp(str1,"1")==0 && strlen(str2)>0){
-				pcd->eCommandType=CMD_PRINT_TEXT;
-				pcd->strCommandType="文本内容";
-				//base64特殊处理:注意业务传送过来的是utf8格式编码的base64,
-				CSimpleStringA decodeStr=decodeBase64Content(str2);
-				if(decodeStr.GetLength()==0){
-					Dbg("text节点value属性解码失败");
-					goto on_error;
-				}else{
-					//Dbg("base64解码出来的内容:%s",decodeStr.GetData());
-#ifdef RVC_OS_WIN
-					char* gbkstr = ConvertUtf8ToGBK((char*)decodeStr.GetData());//windows机用GBK编码
-					//Dbg("base64解码出来的内容:%s",gbkstr);
-					pcd->strCommand = gbkstr;
-					delete[] gbkstr;
-#else
-					pcd->strCommand = decodeStr;
-#endif //  RVC_OS_WIN	
-				}
-				
-			}else{
-				Dbg("text节点base64属性值不支持或者value属性值为空");
-				goto on_error;
-			}
-		}else{
-			Dbg("text节点无base64或value属性");
-			goto on_error;
-		}
-	}else if(stricmp(name,"image")==0){
-		scew_attribute *attr2 = scew_element_attribute_by_name(elem, "value");
-		if(attr2){
-			const char *str2 = scew_attribute_value(attr2);
-			if(strlen(str2)>0){
-				pcd->eCommandType=CMD_PRINT_IMAGE;
-				pcd->strCommandType="图片内容";
-				pcd->strCommand=str2;
-
-			}else{
-				Dbg("image节点value属性值为空");
-				goto on_error;
-			}
-		}else{
-			Dbg("image节点无value属性");
-			goto on_error;
-		}
-
-	}else if(stricmp(name,"barcode")==0){
-		scew_attribute *attr1 = scew_element_attribute_by_name(elem, "type");
-		scew_attribute *attr2 = scew_element_attribute_by_name(elem, "value");
-		scew_attribute *attr3 = scew_element_attribute_by_name(elem, "param");
-		
-		if(attr1&&attr2&&attr3){
-			const char *str1 = scew_attribute_value(attr1);
-			const char *str2 = scew_attribute_value(attr2);
-			const char *str3 = scew_attribute_value(attr3);
-			if(strlen(str1)>0&& strlen(str2)>0&&strlen(str3)>0){
-				pcd->eCommandType=CMD_PRINT_BARCODE;
-				pcd->strCommandType="条形码";
-				pcd->eBarcodeType=(BarCodeType)atoi(str1);
-				pcd->strCommand=str2;
-				pcd->strParam=str3;
-
-			}else{
-				Dbg("barcode节点param或value或type属性值为空");
-				goto on_error;
-			}
-		}else{
-			Dbg("barcode节点无param或value或type属性");
-			goto on_error;
-		}
-
-	}else if(stricmp(name,"QRcode")==0){
-		scew_attribute *attr1 = scew_element_attribute_by_name(elem, "type");
-		scew_attribute *attr2 = scew_element_attribute_by_name(elem, "value");
-		scew_attribute *attr3 = scew_element_attribute_by_name(elem, "param");
-
-		if(attr1&&attr2&&attr3){
-			const char *str1 = scew_attribute_value(attr1);
-			const char *str2 = scew_attribute_value(attr2);
-			const char *str3 = scew_attribute_value(attr3);
-			if(strlen(str1)>0&& strlen(str2)>0&&strlen(str3)>0){
-				pcd->eCommandType=CMD_PRINT_QR;
-				pcd->strCommandType="二维码";
-				pcd->eQRcodeType=(QRCodeType)atoi(str1);
-				//base64特殊处理
-				CSimpleStringA decodeStr=decodeBase64Content(str2);
-				if(decodeStr.GetLength()==0){
-					Dbg("QRcode节点value属性解码失败");
-					goto on_error;
-				}else{
-					pcd->strCommand=decodeStr;
-				}
-				pcd->strParam=str3;
-
-			}else{
-				Dbg("QRcode节点param或value或type属性值为空");
-				goto on_error;
-			}
-		}else{
-			Dbg("QRcode节点无param或value或type属性");
-			goto on_error;
-		}
-	}else{
-		Dbg("%s节点不支持",name);
-		goto on_error;
-	}
-	return pcd;
-on_error:
-	if (pcd) {
-		free(pcd);
-	}
-	return NULL;	
-
-}
-
-CSimpleStringA CThermalPrintFSM::decodeBase64Content( const char* str )
-{
-	CSimpleStringA decodeStr="";
-    int decodeLen = base64_decode_len(str); 
-	char* decodeByte = new char[decodeLen];
-	memset(decodeByte,0,decodeLen);
-	if( base64_decode(decodeByte,str)){
-		decodeStr = decodeByte;
-	}
-	delete decodeByte;
-	return decodeStr;
-}
-
-CSimpleStringA CThermalPrintFSM::decodeXmlContent(const char* str)
-{
-	CSimpleStringA decodeStr=str;
-	decodeStr = replaceXmlContent(decodeStr, "&lt;", "<");
-	decodeStr = replaceXmlContent(decodeStr, "&gt;", ">");
-	decodeStr = replaceXmlContent(decodeStr, "&apos;", "\'");
-	decodeStr = replaceXmlContent(decodeStr, "&quot;", "\"");
-	decodeStr = replaceXmlContent(decodeStr, "&amp;", "&");
-	return decodeStr;
-}
-
-CSimpleStringA CThermalPrintFSM::replaceXmlContent(CSimpleStringA& str,const char* regex,const char* replacement)
-{
-	if(str.IsNullOrEmpty()){
-		return str;
-	}
-	int index;
-	index = str.IndexOf(regex);
-	CSimpleStringA strNew="";
-	if (index >= 0)
-	{
-		while (index >= 0)
-		{
-			
-			strNew += str.SubString(0,index)+replacement;
-			str = str.SubString(index + strlen(regex));
-			index = str.IndexOf(regex);
-		}
-		strNew += str;
-		return strNew;
-	}
-	return str;
-}
-
-
-ErrorCodeEnum CThermalPrintFSM::ParsePrintXml( CSimpleStringA xml )
-{
-	ErrorCodeEnum ret = Error_Succeed;
-	scew_reader *reader = NULL;
-	scew_parser *parser = NULL;
-	scew_tree *tree = NULL;
-	scew_element *root = NULL;	//????这个如何delete
-	scew_list* lst = NULL;
-	int count = 0;
-
-	reader = scew_reader_buffer_create(xml.GetData(),xml.GetLength());
-	if (!reader) {			
-		Dbg("create scew buffer reader!");
-		ret = Error_Exception;
-		goto on_error;
-	}
-	parser = scew_parser_create();
-	tree = scew_parser_load(parser, reader);
-	if (!tree) {
-		scew_error code = scew_error_code();
-		if (code == scew_error_expat) {
-			enum XML_Error expat_code = scew_error_expat_code(parser);
-			Dbg("scew parse error:%d, line:%d column:%d %s", expat_code, scew_error_expat_line(parser), 
-				scew_error_expat_column(parser), scew_error_expat_string(expat_code));
-		}
-
-		Dbg("parser xml failed! xml=[%s]", xml.GetData());
-		ret = Error_Exception;
-		goto on_error;
-	}
-	root = scew_tree_root(tree);
-	if (!root) {
-		Dbg("does not have root element!xml=[%s]", xml.GetData());
-		ret = Error_Exception;
-		goto on_error;
-	}
-	lst = scew_element_children(root);
-	count =scew_list_size(lst);
-	Dbg("共有%d行命令",count);
-	if (lst) {
-		for (scew_list *it = scew_list_first(lst); it; it = scew_list_next(it)) {
-			
-			scew_element* elem = (scew_element*)scew_list_data(it);
-			
-			PrintCommand* command = ParseCommand(elem);
-			if (command) {
-				m_pCommandList->push_back(command);
-			} else {
-				ret = Error_Exception;
-				Dbg("parse xml object failed!");
-				break;
-			}
-		}
-	}
-
-on_error:
-	if (tree) {
-		scew_tree_free(tree);
-	}
-	if (parser) {
-		scew_parser_free(parser);
-	}
-	if (reader) {
-		scew_reader_close(reader);
-	}
-	return ret;
-}
-
-void CThermalPrintFSM::OnStateTrans( int iSrcState, int iDstState )
-{
-	Dbg("[ThermalPrintFSM] State trans from %d to %d!", iSrcState, iDstState);
-}
-
-void CThermalPrintFSM::s0_on_entry()
-{
-	LOG_FUNCTION();
-	ScheduleTimer(1, 5000);
-	//清理s1,s2遗留下来的打印指令
-	ClearPrintCMD();
-}
-
-void CThermalPrintFSM::s0_on_exit()
-{
-	LOG_FUNCTION();
-	CancelTimer(1);
-}
-
-unsigned int CThermalPrintFSM::s0_on_event( FSMEvent* e )
-{
-	//LOG_FUNCTION();
-	switch(e->iEvt) {
-	case EVT_TIMER:
-		ScheduleTimer(1, 5000);
-		e->SetHandled();
-		break;
-	case USER_EVT_PRINT:
-		//打开闪灯
-		LogEvent(Severity_Middle, LOG_EVT_THERMAL_PRINTER_GREEN_ON, "ThermalPrint light is on.");
-		m_bHasPrintTask = true;
-		e->SetHandled();
-		break;
-	case USER_EVT_QUIT:
-		e->SetHandled();
-		LOG_TRACE("s0 on event quit");
-		break;
-	default:
-		break;
-	}
-	return 0;
-}
-
-void CThermalPrintFSM::s1_on_entry()
-{
-	LOG_FUNCTION();
-	//检查打印机状态
-	PreCheckPrinterTask* task = new PreCheckPrinterTask(this);
-	GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
-}
-
-void CThermalPrintFSM::s1_on_exit()
-{
-	LOG_FUNCTION();
-}
-
-unsigned int CThermalPrintFSM::s1_on_event( FSMEvent* e )
-{
-	int ret = 0;
-	switch(e->iEvt)
-	{
-	case USER_EVT_PRECHECK_FINISHED:
-		e->SetHandled();
-		ret = e->param1;
-		Dbg("ret = %d",e->param1);
-		if(ret!=0){
-			//预检查失败
-			//关闭闪灯,等待一段时间
-			Sleep(3000);
-			LogEvent(Severity_Middle, LOG_EVT_THERMAL_PRINTER_GREEN_OFF, "ThermalPrint light is off.");
-			Dbg("PreCheckPrinter is fail : errorcode [%s] , errormsg [%s]", m_errCode.GetData() ,m_errMsg.GetData());
-			Dbg("print is fail.************************************************************");
-			OnPreCheckFailed();
-			m_bHasPrintTask=false;			
-		}
-		break;
-	default:
-		break;
-	}
-	return ret;
-}
-
-void CThermalPrintFSM::s2_on_entry()
-{
-	LOG_FUNCTION();
-	PrintTask* task = new PrintTask(this);
-	GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
-}
-
-void CThermalPrintFSM::s2_on_exit()
-{
-	LOG_FUNCTION();
-} 
-
-unsigned int CThermalPrintFSM::s2_on_event( FSMEvent* e )
-{
-	int ret = 0;
-	switch(e->iEvt) {
-	case USER_EVT_PRINT_FINISHED:
-		e->SetHandled();
-		ret = e->param1;
-		//关闭闪灯,等待一段时间
-		Sleep(3000);
-		LogEvent(Severity_Middle, LOG_EVT_THERMAL_PRINTER_GREEN_OFF, "ThermalPrint light is off.");
-		if(ret==1){
-			//打印失败
-			OnPrintFailed();
-			Dbg("Print is fail.************************************************************");
-			//打印具体错误
-			DevErrorInfo devOpenErrInfo = {0};
-			ThermalState thermalState;
-			CSimpleStringA err_msg="";
-			if((m_hDevHelper->GetLastErrState(thermalState,devOpenErrInfo))==Error_Succeed)
-			{
-				err_msg = devOpenErrInfo.szErrMsg;
-				Dbg("Print is fail :[%s],ThermalPaperState is %d ,ThermalHardwareState is %d ",err_msg.GetData(),thermalState.paperState,thermalState.hardwareState);
-			}
-			else
-			{
-				Dbg("Print failed : GetLastErrState failed.");
-			}
-			
-			//需要reset一次
-			if(m_hDevHelper->Reset()!=Error_Succeed){
-				DevErrorInfo devOpenErrInfo = {0};
-				if((m_hDevHelper->GetLastErr(devOpenErrInfo))==Error_Succeed)
-				{
-					Dbg("Reset failed : [%s]", devOpenErrInfo.szErrMsg);
-				}
-				else
-				{
-					Dbg("Reset failed : GetLastErr failed.");
-				}
-			}else{
-				Dbg("reset success!");
-			}
-		}else{
-			//打印成功
-			OnPrintSucc();
-			Dbg("Print is OK.************************************************************");
-		}
-		m_bHasPrintTask=false;
-		break;
-	default:
-		break;
-	}
-
-	return ret;
-}
-
-void CThermalPrintFSM::OnPreCheckFailed()
-{
-	// 广播给业务,发送任务失败
-	PrintResult evt;
-	evt.uuid = CSimpleStringA2W(m_PrintTaskUUID);
-	evt.print_Result=1;
-	evt.error_code = CSimpleStringA2W(m_errCode);
-	evt.error_msg = CSimpleStringA2W(m_errMsg);
-	SpSendBroadcast(m_pEntity->GetFunction(), SP_MSG_OF(PrintResult), SP_MSG_SIG_OF(PrintResult), evt);
-}
-
-void CThermalPrintFSM::OnPrintFailed()
-{
-	// 广播给业务,发送任务失败
-	PrintResult evt;
-	evt.uuid = CSimpleStringA2W(m_PrintTaskUUID);
-	evt.print_Result=1;
-	evt.error_code = CSimpleStringA2W(m_errCode);
-	evt.error_msg = CSimpleStringA2W(m_errMsg);
-	SpSendBroadcast(m_pEntity->GetFunction(), SP_MSG_OF(PrintResult), SP_MSG_SIG_OF(PrintResult), evt);
-}
-
-void CThermalPrintFSM::OnPrintSucc()
-{
-	// 广播给业务,发送任务失败
-	PrintResult evt;
-	evt.uuid = CSimpleStringA2W(m_PrintTaskUUID);
-	evt.print_Result=0;
-	evt.error_code = L"";
-	evt.error_msg = L"";
-	SpSendBroadcast(m_pEntity->GetFunction(), SP_MSG_OF(PrintResult), SP_MSG_SIG_OF(PrintResult), evt);
-}
-
-
-
-//预检查实现
-int CThermalPrintFSM::PreCheckPrinter()
-{
-	if(m_bDevOpen){
-		ThermalState thState;
-		if(m_hDevHelper->GetDevState(thState)==Error_Succeed){
-			Dbg("打印预检查:纸状态 %d , 硬件状态 %d",(int)thState.paperState,(int)thState.hardwareState);
-			if(thState.hardwareState==STATE_OK){
-				if(thState.paperState==PAPER_FULL){
-					return 0;
-				}else if(thState.paperState==PAPER_LOW){
-					m_errCode=Error_Paper_low;
-					m_errMsg="凭条打印机少纸";
-					LogWarn(Severity_Middle,Error_Unexpect,LOG_ERR_THERMAL_PRINTER_PAPER_LOW,"thermal print paper low.");
-					return 0;
-				}else if(thState.paperState==PAPER_EMPTY){
-					m_errCode=Error_Paper_empty;
-					m_errMsg="凭条打印机缺纸";
-					LogWarn(Severity_Middle,Error_Unexpect,LOG_ERR_THERMAL_PRINTER_PAPER_EMPTY,"thermal print paper empty.");
-					return 1;
-				}else if(thState.paperState==PAPER_JAMMED){
-					m_errCode=Error_Paper_jammed;
-					m_errMsg="凭条打印机卡纸";
-					LogWarn(Severity_Middle,Error_Unexpect,LOG_ERR_THERMAL_PRINTER_PAPER_JAMMED,"thermal print paper jammed.");
-					return 1;
-				}else{
-					m_errCode=Error_PreCheckPrint;
-					m_errMsg="凭条打印机硬件故障:故障码未知";
-					LogWarn(Severity_Middle,Error_Unexpect,LOG_ERR_THERMAL_PRINTER_OTHER_DEV_FAULT,"thermal print other dev fault undefined.");
-					return 1;
-				}
-			}else if(thState.hardwareState==STATE_OTHER_ERROR){
-				
-				DevErrorInfo devOpenErrInfo = {0};
-				ThermalState thermalState;
-				CSimpleStringA err_msg="";
-				if((m_hDevHelper->GetLastErrState(thermalState,devOpenErrInfo))==Error_Succeed)
-				{
-					err_msg = devOpenErrInfo.szErrMsg;
-				}
-				else
-				{
-					Dbg("device GetDevState failed : GetLastErrState failed.");
-				}
-				m_errCode=Error_OtherDevFault;
-				m_errMsg="凭条打印机硬件故障:";
-				m_errMsg.Append(err_msg);
-				LogWarn(Severity_Middle,Error_Unexpect,LOG_ERR_THERMAL_PRINTER_OTHER_DEV_FAULT,"thermal print other dev fault.");
-				return 1;
-			}else{
-				m_errCode=Error_PreCheckPrint;
-				m_errMsg="凭条打印机硬件故障:故障码未知";
-				LogWarn(Severity_Middle,Error_Unexpect,LOG_ERR_THERMAL_PRINTER_OTHER_DEV_FAULT,"thermal print other dev fault undefined.");
-				return 1;
-			}
-		}else{
-			DevErrorInfo devOpenErrInfo = {0};
-			if((m_hDevHelper->GetLastErr(devOpenErrInfo))==Error_Succeed)
-			{
-				Dbg("device GetDevState failed : %s.", devOpenErrInfo.szErrMsg);
-			}
-			else
-			{
-				Dbg("device GetDevState failed : GetLastErr failed.");
-			}
-			m_errCode=Error_PreCheckPrint;
-			m_errMsg="调用热敏适配器GetDevState方法失败";
-			return 1;
-		}
-
-	}else{
-		m_errCode=Error_DevNotOpen;
-		m_errMsg="厂商设备还未打开";
-		return 1;
-	}
-
-}
-//打印实现
-int CThermalPrintFSM::Print()
-{
-	if(m_bDevOpen){
-		//开始调用beginPrint
-		if(m_hDevHelper->BeginPrint(m_paperType,m_paperWidth)!=Error_Succeed){
-			//失败
-			m_errCode=Error_Print;
-			m_errMsg="调用热敏适配器BeginPrint方法失败";
-			return 1;
-		}
-		//循环调用打印命令
-		bool isOK =true;
-		CSimpleStringA strCMD;
-		list<PrintCommand*>::iterator iter;
-		for(iter=m_pCommandList->begin();iter!=m_pCommandList->end();++iter){
-			PrintCommand* cmd= *iter;
-			if(cmd){
-				strCMD = cmd->strCommandType;
-				//执行单个命令
-				if(ExecutePrintCMD(cmd)!=Error_Succeed){
-					Dbg("执行%s命令失败",strCMD.GetData());
-					//尝试把可能执行了一半的错误纸张吐出来,以免影响后面的任务
-					m_hDevHelper->ControlAction(ACTION_CUT_ALL,1);
-					isOK=false;
-					break;
-				}
-			}else{
-				strCMD="null";
-				isOK=false;
-				break;
-			}
-			
-		}
-		if(isOK){
-			return 0;
-		}else{
-			m_errCode=Error_Print;
-			m_errMsg="凭条打印机打印失败";
-			return 1;
-		}
-
-	}else{
-		m_errCode=Error_DevNotOpen;
-		m_errMsg="厂商设备还未打开";
-		return 1;
-	}
-}
-
-int CThermalPrintFSM::ExecutePrintCMD(PrintCommand* cmd)
-{
-	//针对不同的指令调不同的打印命令
-	if(cmd->eCommandType<10){
-		//CommandType
-		return ExecuteParamCMD(cmd);
-	}else if(cmd->eCommandType>=10&&cmd->eCommandType<100){
-		//FontStyle
-		return ExecuteFontCMD(cmd);
-	}else if(cmd->eCommandType>=100&&cmd->eCommandType<200){
-		//PrintAction
-		return ExecuteActionCMD(cmd);
-	}else if(cmd->eCommandType>=200){
-		//printImage or QR
-		return ExecuteImageCMD(cmd);
-	}
-}
-
-int CThermalPrintFSM::ExecuteParamCMD(PrintCommand* cmd){
-	DWORD value1=0;
-	DWORD value2=0;
-	if(cmd->eCommandType==CMD_COMMON_ROW_SPACE){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->SetParam(COMMON_ROW_SPACE,value1);
-
-	}else if(cmd->eCommandType==CMD_COMMON_ALIGN){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->SetParam(COMMON_ALIGN,value1);
-
-	}else if(cmd->eCommandType==CMD_COMMON_REVERSE){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->SetParam(COMMON_REVERSE,value1);
-
-	}else if(cmd->eCommandType==CMD_COMMON_LEFT_MARGIN){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->SetParam(COMMON_LEFT_MARGIN,value1);
-
-	}else if(cmd->eCommandType==CMD_COMMON_PRINTABLE_AREA){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->SetParam(COMMON_PRINTABLE_AREA,value1);
-
-	}else {
-		Dbg("打印命令不存在");
-		return Error_Exception;
-	}
-}
-
-int CThermalPrintFSM::ExecuteFontCMD(PrintCommand* cmd){
-	DWORD value1=0;
-	DWORD value2=0;
-	if(cmd->eCommandType==CMD_FONT_UNDERLINE){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->SetFont(FONT_UNDERLINE,value1);
-
-	}else if(cmd->eCommandType==CMD_FONT_BOLD){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->SetFont(FONT_BOLD,value1);
-
-	}else if(cmd->eCommandType==CMD_FONT_INVERSE){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->SetFont(FONT_INVERSE,value1);
-
-	}else if(cmd->eCommandType==CMD_FONT_DOUBLEHEIGHT){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->SetFont(FONT_DOUBLEHEIGHT,value1);
-
-	}else if(cmd->eCommandType==CMD_FONT_DOUBLEWIDE){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->SetFont(FONT_DOUBLEWIDE,value1);
-
-	}else if(cmd->eCommandType==CMD_FONT_CUSTOM_SIZE){
-		//2个参数 
-		CAutoArray<CSimpleStringA> valueArray =cmd->strCommand.Split('|');
-		if (valueArray.GetCount() != 2)
-		{
-			Dbg("CMD_FONT_CUSTOM_SIZE 参数错误:%s",cmd->strCommand.GetData());
-			return Error_Exception;
-		}
-		value1 = (DWORD)atoi((LPCTSTR)valueArray[0]);
-		value2 = (DWORD)atoi((LPCTSTR)valueArray[1]);
-
-		return m_hDevHelper->SetFont(FONT_CUSTOM_SIZE,value1,value2);
-
-	}else if(cmd->eCommandType==CMD_FONT_ROTATE){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->SetFont(FONT_ROTATE,value1);
-
-	}else if(cmd->eCommandType==CMD_FONT_LEFT_RIGHT_SPACE){
-		//暂时只支持一个参数,参数只有右边距
-		value2=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->SetFont(FONT_LEFT_RIGHT_SPACE,0,value2);
-
-	}else {
-		Dbg("打印命令不存在");
-		return Error_Exception;
-	}
-}
-
-int CThermalPrintFSM::ExecuteActionCMD(PrintCommand* cmd){
-	DWORD value1=0;
-	DWORD value2=0;
-	if(cmd->eCommandType==CMD_ACTION_PRINT_ONE_LINE){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->ControlAction(ACTION_PRINT_ONE_LINE,value1);
-
-	}else if(cmd->eCommandType==CMD_ACTION_PRINT_MOVEFORWRAD_LINES){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->ControlAction(ACTION_PRINT_MOVEFORWRAD_LINES,value1);
-
-	}else if(cmd->eCommandType==CMD_ACTION_PRINT_MOVEBACKWRAD_LINES){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->ControlAction(ACTION_PRINT_MOVEBACKWRAD_LINES,value1);
-
-	}else if(cmd->eCommandType==CMD_ACTION_CUT_ALL){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->ControlAction(ACTION_CUT_ALL,value1);
-
-	}else if(cmd->eCommandType==CMD_ACTION_CUT_HALF){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->ControlAction(ACTION_CUT_HALF,value1);
-
-	}else if(cmd->eCommandType==CMD_ACTION_MOVE_TO_POSITION_RELATIVE){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->ControlAction(ACTION_MOVE_TO_POSITION_RELATIVE,value1);
-
-	}else if(cmd->eCommandType==CMD_ACTION_MOVE_TO_FORWRAD_LENGTH){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->ControlAction(ACTION_MOVE_TO_FORWRAD_LENGTH,value1);
-
-	}else if(cmd->eCommandType==CMD_ACTION_MOVE_TO_BLACKMARK){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->ControlAction(ACTION_MOVE_TO_BLACKMARK,value1);
-
-	}else if(cmd->eCommandType==CMD_ACTION_PRINT_MOVEBACK_TO_LINE){
-		value1=(DWORD)atoi(cmd->strCommand); 
-		return m_hDevHelper->ControlAction(ACTION_PRINT_MOVEBACK_TO_LINE,value1);
-
-	}else {
-		Dbg("打印命令不存在");
-		return Error_Exception;
-	}
-}
-
-int CThermalPrintFSM::ExecuteImageCMD(PrintCommand* cmd){
-	
-	if(cmd->eCommandType==CMD_PRINT_IMAGE){
-		Dbg("要打印的图片长度:%d",cmd->strCommand.GetLength());
-		//int ilen = cmd->strCommand.GetLength();
-		//int begin=0;
-		//while(begin<ilen){
-		//	CSimpleStringA str1;
-		//	if(begin+1000<ilen){
-		//		str1 = cmd->strCommand.SubString(begin,1000);
-		//	}else{
-		//		str1 = cmd->strCommand.SubString(begin,ilen);
-		//	}
-		//	Dbg("要打印的图片内容:%s",str1.GetData());//内容超长分批打印
-		//	begin=begin+1000;
-		//}
-		BYTE* data = (BYTE*)cmd->strCommand.GetData();
-		DWORD len = (DWORD)cmd->strCommand.GetLength();
-		return m_hDevHelper->PrintImage(data,len);
-
-	}else if(cmd->eCommandType==CMD_PRINT_TEXT){
-		//Dbg("要打印的文本长度:%d",cmd->strCommand.GetLength());
-		//Dbg("要打印的文本内容:%s",cmd->strCommand.GetData());
-		
-		BYTE* data = (BYTE*)cmd->strCommand.GetData();
-		DWORD len = (DWORD)cmd->strCommand.GetLength();
-		return m_hDevHelper->PrintText(data,len);
-
-	}else if(cmd->eCommandType==CMD_PRINT_BARCODE){
-		//3个参数 
-		//CAutoArray<CSimpleStringA> valueArray =cmd->strParam.Split('|');
-		//if (valueArray.GetCount() != 3)
-		//{
-		//	Dbg("CMD_PRINT_BARCODE 参数错误:%s",cmd->strParam.GetData());
-		//	return Error_Exception;
-		//}
-		//BarCodeType eType = cmd->eBarcodeType;
-		//BYTE* data = (BYTE*)cmd->strCommand.GetData();
-		//DWORD len = (DWORD)cmd->strCommand.GetLength();
-		//DWORD unitWidth = (DWORD)atoi((LPCTSTR)valueArray[0]);
-		//DWORD height =(DWORD)atoi((LPCTSTR)valueArray[1]);
-		//HriPosition position =(HriPosition)atoi((LPCTSTR)valueArray[2]);
-
-		//return m_hDevHelper->PrintBarCode(eType,data,len,unitWidth,height,position);
-		Dbg("CMD_PRINT_BARCODE 打印命令暂不支持");
-		return Error_Exception;
-	}else if(cmd->eCommandType==CMD_PRINT_QR){
-		Dbg("CMD_PRINT_QR 打印命令暂不支持");
-		return Error_Exception;
-	}else {
-		Dbg("打印命令不存在");
-		return Error_Exception;
-	}
-}
-
-void CThermalPrintFSM::ClearPrintCMD()
-{
-	if(m_pCommandList){
-		//循环删除里面的对象
-		list<PrintCommand*>::iterator iter;
-		for(iter=m_pCommandList->begin();iter!=m_pCommandList->end();++iter){
-			PrintCommand* cmd= *iter;
-			delete cmd;
-		}
-		//清空集合
-		m_pCommandList->clear();
-	}
-}
-
-char* CThermalPrintFSM::ConvertUtf8ToGBK(char* strUtf8)
-{
-#if defined(RVC_OS_WIN)
-    int len = MultiByteToWideChar(CP_UTF8, 0, strUtf8, -1, NULL, 0);
-    WCHAR* wszGBK = new WCHAR[len + 1];
-    memset(wszGBK, 0, len * 2 + 2);
-    MultiByteToWideChar(CP_UTF8, 0, strUtf8, -1, wszGBK, len);
-
-    len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
-    char* szGBK = new char[len + 1];
-    memset(szGBK, 0, len + 1);
-    WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, szGBK, len, NULL, NULL);
-    delete[] wszGBK;
-    return szGBK;
-#else
-	std::string str(strUtf8);
-	std::string result = SP::Utility::UTF8ToGBK(str);
-	const int len = result.length();
-    char* szGBK = new char[len + 1];
-    memset(szGBK, 0, len + 1);
-	strcpy(szGBK, result.c_str());
-	return szGBK;
-#endif //RVC_OS_WIN
-}

+ 0 - 244
Module/mod_ThermalPrint/ThermalPrintFSM.h

@@ -1,244 +0,0 @@
-#ifndef PRINTSEALFSM_H
-#define PRINTSEALFSM_H
-#pragma once
-
-#include "SpFSM.h"
-#include "ThermalPrint_server_g.h"
-#include "ThermalPrint_msg_g.h"
-#include "ThermalPrintClass.h"
-#include "DevFSMCommBase.hpp"
-#include <list>
-#include "scew.h"
-#include "EventCode.h"
-
-enum EvtType
-{
-	USER_EVT_QUIT =  EVT_USER+1,
-	USER_EVT_PRINT,
-	USER_EVT_PRECHECK_FINISHED,
-	USER_EVT_PRINT_FINISHED
-};
-
-using namespace ThermalPrint;
-using namespace std;
-
-//typedef int (WINAPI *lpAa)();
-typedef ErrorCodeEnum (*lpCreateDevCom)(DeviceBaseClass *&baseObj);
-typedef ErrorCodeEnum ( *lpReleaseDevCom)(DeviceBaseClass *&pBaseObj);
-
-//打印指令
-enum ThermalPrintCommand
-{
-	//CommandType
-	CMD_COMMON_ROW_SPACE=0,				//行间距 单位mm
-	CMD_COMMON_ALIGN,					//字符对齐模式 单位是"AlignStyle"的值
-	CMD_COMMON_REVERSE,					//颠倒打印(注意需要设置退出或者切纸才行,并在行首) 取值(0:正常打印 1:颠倒打印)
-	CMD_COMMON_LEFT_MARGIN,				//左边距 单位mm
-	CMD_COMMON_PRINTABLE_AREA,			//可打印区域 单位mm
-
-	//FontStyle
-	CMD_FONT_UNDERLINE = 10,				//下划线 取值(0:否 1:是)
-	CMD_FONT_BOLD,						//粗体 取值(0:否 1:是)
-	CMD_FONT_INVERSE,					//反白 取值(0:否 1:是)
-	CMD_FONT_DOUBLEHEIGHT,				//纵翻倍放大 取值(0:否 1:是)
-	CMD_FONT_DOUBLEWIDE,				//横翻倍向放大 取值(0:否 1:是)
-	CMD_FONT_CUSTOM_SIZE,				//字体宽高自定义,取值(宽 {1..6} ,长 {1..6})
-	CMD_FONT_ROTATE,					//字体旋转 取值(0,90,180,270)
-	CMD_FONT_LEFT_RIGHT_SPACE,			//字符左右边距设置 单位mm 取值(左边距 {0..36},右边距 {0..36})
-
-	//PrintAction
-	CMD_ACTION_PRINT_ONE_LINE=100,		//打印走纸一行
-	CMD_ACTION_PRINT_MOVEFORWRAD_LINES,	//打印并走纸n行(单位:字符行)
-	CMD_ACTION_PRINT_MOVEBACKWRAD_LINES,//回纸n行(单位:字符行)
-	CMD_ACTION_CUT_ALL,					//全切纸
-	CMD_ACTION_CUT_HALF,				//半切纸
-	CMD_ACTION_MOVE_TO_POSITION_RELATIVE,//把打印光标移动相对当前位置一段距离(横向),单位mm
-	CMD_ACTION_MOVE_TO_FORWRAD_LENGTH,	//移动向前走纸一段距离(距离包括本行高度在内) 单位:mm
-	CMD_ACTION_MOVE_TO_BLACKMARK,		//移动到黑标位置,把打印位置设置在行首(标记纸有效)
-	CMD_ACTION_PRINT_MOVEBACK_TO_LINE,	//设置起始位置在行首,取值(0:打印内容返回行首,1:清空要打印的内容返回行首)
-	
-	//printImage
-	CMD_PRINT_IMAGE=200,				//打印图片
-
-	//printText
-	CMD_PRINT_TEXT,						//打印文本
-
-	//printBarCode
-	CMD_PRINT_BARCODE,					//打印条形码
-
-	//printQR
-	CMD_PRINT_QR,						//打印二维码
-
-};
-
-struct PrintCommand 
-{
-	ThermalPrintCommand eCommandType;
-	CSimpleStringA strCommandType;	//指令类型中文名称
-	CSimpleStringA strCommand;		//参数以|做分隔,参数会有明文显示或者base64编码的内容
-	BarCodeType eBarcodeType;		//条形码子类型
-	QRCodeType eQRcodeType;			//二维码子类型
-	CSimpleStringA strParam;		//条形码和二维码子参数
-};
-
-class PrintEvent : public FSMEvent
-{
-public:
-	PrintEvent() : FSMEvent(USER_EVT_PRINT){}
-	virtual ~PrintEvent(){}
-	virtual void OnUnhandled()
-	{
-		LOG_TRACE("do print not handled");
-	}
-};
-
-class CThermalPrintFSM: public CCommDevFSM<CThermalPrintFSM, ThermalPrintClass>
-{
-public:
-	enum {s0, s1, s2};
-
-	BEGIN_FSM_STATE(CThermalPrintFSM)
-		FSM_STATE_ENTRY(s0, "Ready", s0_on_entry, s0_on_exit, s0_on_event)
-		FSM_STATE_ENTRY(s1, "PreCheck", s1_on_entry, s1_on_exit, s1_on_event)
-		FSM_STATE_ENTRY(s2, "Printing", s2_on_entry, s2_on_exit, s2_on_event)
-		END_FSM_STATE()
-
-		BEGIN_FSM_RULE(CThermalPrintFSM, s0)
-		FSM_RULE_ENTRY(s0, s0, EVT_TIMER, 0)//定时
-		FSM_RULE_ENTRY(s0, s1, USER_EVT_PRINT, 0)//进入打印
-		FSM_RULE_ENTRY(s0, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
-		FSM_RULE_ENTRY(s1, s2, USER_EVT_PRECHECK_FINISHED, 0) // 预检查打印机成功
-		FSM_RULE_ENTRY(s1, s0, USER_EVT_PRECHECK_FINISHED, 1) // 预检查打印机失败
-		FSM_RULE_ENTRY(s2, s0, USER_EVT_PRINT_FINISHED, 0) // 打印成功
-		FSM_RULE_ENTRY(s2, s0, USER_EVT_PRINT_FINISHED, 1) // 打印失败
-		END_FSM_RULE()
-
-public:
-
-	CThermalPrintFSM()
-		:m_bSupportPrint(false),m_bDevOpen(false),m_bHasPrintTask(false),m_pCommandList(NULL)
-	{
-		m_version=0;
-		m_batch=0;
-		m_port=0;
-		m_baudrate=0;
-		m_PrintTaskUUID="";
-		m_paperWidth=80;
-	}
-
-	virtual ~CThermalPrintFSM() {}
-	virtual ErrorCodeEnum OnInit();
-	virtual ErrorCodeEnum OnExit();
-
-	virtual void OnStateTrans(int iSrcState, int iDstState);
-
-	virtual void s0_on_entry();
-	virtual void s0_on_exit();
-	virtual unsigned int s0_on_event(FSMEvent* e);
-
-	virtual void s1_on_entry();
-	virtual void s1_on_exit();
-	virtual unsigned int s1_on_event(FSMEvent* e);
-
-	virtual void s2_on_entry();
-	virtual void s2_on_exit();
-	virtual unsigned int s2_on_event(FSMEvent* e);
-
-	ErrorCodeEnum SafeFreeLibrary();
-	ErrorCodeEnum FetchOtherParam();
-
-	void ClearPrintCMD();
-
-	ErrorCodeEnum GetPrintState(int& state , CSimpleStringA& err_msg);
-	ErrorCodeEnum ParsePrintXml(CSimpleStringA xml);//解析xml
-	PrintCommand* ParseCommand(scew_element *elem);
-
-	int PreCheckPrinter();
-	int Print();
-	int ExecutePrintCMD(PrintCommand* cmd);
-
-	CSimpleStringA decodeBase64Content( const char* str );
-	CSimpleStringA decodeXmlContent(const char* str);
-	CSimpleStringA replaceXmlContent(CSimpleStringA& str,const char* regex,const char* replacement);
-
-
-	// 获取当前是否有打印任务
-	bool GetHasPrintTask() const {return m_bHasPrintTask;}
-	bool IsSupportPrint() { return m_bSupportPrint;}
-	bool isPrinting() {
-		//判断是否在状态S0
-		if(strcmp(GetCurrStateName(),"Ready")==0){
-			return false;
-		}else{
-			return true;
-		}
-	}
-	bool isDevOpen(){
-		return m_bDevOpen;
-	}
-	void setPaperType(int paperType){
-		m_paperType = (ThermalPaperType)paperType;
-	}
-	void setPaperWidth(int paperWidth){
-		m_paperWidth= paperWidth;
-	}
-	void setPrintTaskUUID(CSimpleStringA uuid){
-		m_PrintTaskUUID=uuid;
-	}
-
-	
-	int ExecuteParamCMD(PrintCommand* cmd);
-	int ExecuteFontCMD(PrintCommand* cmd);
-	int ExecuteActionCMD(PrintCommand* cmd);
-	int ExecuteImageCMD(PrintCommand* cmd);
-	void OnPrintFailed();
-	void OnPrintSucc();
-	void OnPreCheckFailed();
-	char* ConvertUtf8ToGBK(char* strUtf8);
-private:
-	list<PrintCommand*>* m_pCommandList;//打印指令集合
-
-
-	bool m_bSupportPrint;//是否支持打印服务
-	bool m_bHasPrintTask;//是否有任务
-	bool m_bDevOpen;//dev是否打开成功
-	
-	
-	ThermalPaperType m_paperType;
-	int m_paperWidth;
-	int m_version, m_batch,m_port, m_baudrate;
-
-	CSimpleStringA m_PrintTaskUUID;
-	CSimpleStringA m_errCode;
-	CSimpleStringA m_errMsg;
-
-};
-
-struct PreCheckPrinterTask : public ITaskSp
-{
-	CThermalPrintFSM *m_pFSM;
-	PreCheckPrinterTask(CThermalPrintFSM *f) : m_pFSM(f) {}
-
-	void Process()
-	{
-		FSMEvent *e = new FSMEvent(USER_EVT_PRECHECK_FINISHED);
-		e->param1 = m_pFSM->PreCheckPrinter();
-		m_pFSM->PostEventFIFO(e);
-	}
-};
-
-
-struct PrintTask : public ITaskSp
-{
-	CThermalPrintFSM *m_pFsm;
-	PrintTask(CThermalPrintFSM* f) : m_pFsm(f) {}
-
-	void Process()
-	{
-		FSMEvent *e = new FSMEvent(USER_EVT_PRINT_FINISHED);
-		e->param1 = m_pFsm->Print();
-		m_pFsm->PostEventFIFO(e);
-	}
-};
-
-#endif //PRINTFSM_H

+ 0 - 174
Module/mod_ThermalPrint/ThermalPrint_client_g.h

@@ -1,174 +0,0 @@
-
-#ifndef __THERMALPRINT_CLIENT_G_H
-#define __THERMALPRINT_CLIENT_G_H
-
-#pragma once
-
-// This code is generated by spgen tool!
-
-#include "ThermalPrint_def_g.h"
-
-namespace ThermalPrint {
-class ThermalPrintService_ClientBase : public CClientSessionBase {
-public:
-	explicit ThermalPrintService_ClientBase(CEntityBase *pEntity) : m_pEntityBase(pEntity), m_bSysManaged(false) {}
-
-	ThermalPrintService_ClientBase* operator () (const linkContext &curLink) 
-	{
-		m_context = curLink;
-		return this;
-	}
-
-protected:
-	virtual ~ThermalPrintService_ClientBase()
-	{
-		/// override by user
-	}
-public:
-
-	void OnConnectSucceed()
-	{
-		bSessionClosed = false;
-	}
-	void OnClose(ErrorCodeEnum)
-	{
-		Dbg("session closed.");
-		bSessionClosed = true;
-	}
-	bool QuerySessionClosed()
-	{
-		return bSessionClosed;
-	}
-	ErrorCodeEnum Connect(CSmartPointer<IAsynWaitSp> &spAsyncWait)
-	{
-		CSmartPointer<IEntityFunction> pFunc = m_pEntityBase->GetFunction();
-		ErrorCodeEnum Error = pFunc->ConnectRemoteEntity(this, "ThermalPrint", "ThermalPrintService", spAsyncWait);
-		if (Error == Error_Succeed) {
-			m_bSysManaged = true;
-			bSessionClosed = false;
-		}
-		return Error;
-	}
-	ErrorCodeEnum Connect()
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Connect(spAsyncWait);
-		if (Error == Error_Succeed) {
-			Error = spAsyncWait->WaitAnswer();
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum DoPrint(ThermalPrintService_DoPrint_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(ThermalPrintService_Method_DoPrint, ThermalPrintService_MethodSignature_DoPrint, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum DoPrint(ThermalPrintService_DoPrint_Req &Req, ThermalPrintService_DoPrint_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = DoPrint(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum DoPrint(ThermalPrintService_DoPrint_Req &Req, ThermalPrintService_DoPrint_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = DoPrint(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum PrinterStatus(ThermalPrintService_PrinterStatus_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(ThermalPrintService_Method_PrinterStatus, ThermalPrintService_MethodSignature_PrinterStatus, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum PrinterStatus(ThermalPrintService_PrinterStatus_Req &Req, ThermalPrintService_PrinterStatus_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PrinterStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum PrinterStatus(ThermalPrintService_PrinterStatus_Req &Req, ThermalPrintService_PrinterStatus_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PrinterStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum PrintEntityStatus(ThermalPrintService_PrintEntityStatus_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		auto ret = pFunc->AsyncRequest(ThermalPrintService_Method_PrintEntityStatus, ThermalPrintService_MethodSignature_PrintEntityStatus, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum PrintEntityStatus(ThermalPrintService_PrintEntityStatus_Req &Req, ThermalPrintService_PrintEntityStatus_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PrintEntityStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum PrintEntityStatus(ThermalPrintService_PrintEntityStatus_Req &Req, ThermalPrintService_PrintEntityStatus_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = PrintEntityStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-
-	bool SafeDelete()
-	{
-		if (!m_bSysManaged) {
-			delete this;
-		}
-		return m_bSysManaged;
-	}
-
-protected:
-	bool m_bSysManaged;
-	CEntityBase *m_pEntityBase;
-	linkContext m_context;
-	bool bSessionClosed;
-};
-
-///////////////////////////
-
-} // namespace ThermalPrint
-#endif // __THERMALPRINT_CLIENT_G_H

+ 0 - 98
Module/mod_ThermalPrint/ThermalPrint_def_g.h

@@ -1,98 +0,0 @@
-#ifndef __THERMALPRINT_DEF_G_H
-#define __THERMALPRINT_DEF_G_H
-
-#pragma once
-
-// This code is generated by spgen tool!
-
-#include "SpHelper.h"
-
-namespace ThermalPrint {
-//
-// const goes here
-//
-
-#define ThermalPrintService_Method_DoPrint 0
-#define ThermalPrintService_Method_PrinterStatus 1
-#define ThermalPrintService_Method_PrintEntityStatus 2
-
-#define ThermalPrintService_MethodSignature_DoPrint 1114050611
-#define ThermalPrintService_MethodSignature_PrinterStatus -513392423
-#define ThermalPrintService_MethodSignature_PrintEntityStatus 709479848
-
-struct ThermalPrintService_DoPrint_Req
-{
-	CSimpleStringW uuid;
-	CSimpleStringW print_data;
-	int paper_type;
-	int paper_width;
-	int reserve1;
-	CSimpleStringW reserve2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & uuid & print_data & paper_type & paper_width & reserve1 & reserve2;
-	}
-
-};
-
-struct ThermalPrintService_DoPrint_Ans
-{
-	CSimpleStringW error_code;
-	CSimpleStringW error_msg;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & error_code & error_msg;
-	}
-
-};
-
-struct ThermalPrintService_PrinterStatus_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct ThermalPrintService_PrinterStatus_Ans
-{
-	int print_status;
-	CSimpleStringW status_msg;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & print_status & status_msg;
-	}
-
-};
-
-struct ThermalPrintService_PrintEntityStatus_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct ThermalPrintService_PrintEntityStatus_Ans
-{
-	bool isSupportPrint;
-	bool isPrinting;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & isSupportPrint & isPrinting;
-	}
-
-};
-
-
-///////////////////////////
-
-} // namespace ThermalPrint
-
-#endif // __THERMALPRINT_DEF_G_H

+ 0 - 33
Module/mod_ThermalPrint/ThermalPrint_msg_g.h

@@ -1,33 +0,0 @@
-
-#ifndef __THERMALPRINT_MSG_G_H
-#define __THERMALPRINT_MSG_G_H
-
-#pragma once
-
-// This code is generated by spgen tool!
-
-#include "SpHelper.h"
-
-namespace ThermalPrint {
-#define eMsg_PrintResult 0
-
-#define eMsgSig_PrintResult 692553839
-
-struct PrintResult
-{
-	CSimpleStringW uuid;
-	int print_Result;
-	CSimpleStringW error_code;
-	CSimpleStringW error_msg;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & uuid & print_Result & error_code & error_msg;
-	}
-
-};
-
-///////////////////////////
-
-} // namespace ThermalPrint
-#endif // __THERMALPRINT_MSG_G_H

+ 0 - 161
Module/mod_ThermalPrint/ThermalPrint_server_g.h

@@ -1,161 +0,0 @@
-
-#ifndef __THERMALPRINT_SERVER_G_H
-#define __THERMALPRINT_SERVER_G_H
-
-#pragma once
-
-// This code is generated by spgen tool!
-
-#include "ThermalPrint_def_g.h"
-
-namespace ThermalPrint {
-class ThermalPrintService_ServerSessionBase : public CServerSessionBase
-{
-public:
-	ThermalPrintService_ServerSessionBase()
-	{
-		/// override by user
-	}
-
-	virtual ~ThermalPrintService_ServerSessionBase()
-	{
-		/// override by user
-	}
-
-	virtual bool IsExclusive() { return false; }
-
-	virtual bool IsSessionOverlap() { return true; }
-
-	virtual ErrorCodeEnum GetMessageAttr(DWORD dwMessageID, DWORD dwSignature, bool &bOverlap)
-	{
-		ErrorCodeEnum Error = Error_Succeed;
-		switch (dwMessageID) {
-		case ThermalPrintService_Method_DoPrint:
-			if (dwSignature == ThermalPrintService_MethodSignature_DoPrint) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case ThermalPrintService_Method_PrinterStatus:
-			if (dwSignature == ThermalPrintService_MethodSignature_PrinterStatus) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case ThermalPrintService_Method_PrintEntityStatus:
-			if (dwSignature == ThermalPrintService_MethodSignature_PrintEntityStatus) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		default:
-			Error = Error_MethodNotFound;
-			break;
-		}
-		return Error;
-	}
-
-	int CheckMessageSignature(DWORD dwMessageID, DWORD dwSignature)
-	{
-		ErrorCodeEnum Error = Error_Succeed;
-		switch (dwMessageID) {
-		case ThermalPrintService_Method_DoPrint:
-			if (dwSignature != ThermalPrintService_MethodSignature_DoPrint) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case ThermalPrintService_Method_PrinterStatus:
-			if (dwSignature != ThermalPrintService_MethodSignature_PrinterStatus) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case ThermalPrintService_Method_PrintEntityStatus:
-			if (dwSignature != ThermalPrintService_MethodSignature_PrintEntityStatus) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		default:
-			Error = Error_MethodNotFound;
-			break;
-		}
-		return Error;
-	}
-
-	virtual void Handle_DoPrint(SpReqAnsContext<ThermalPrintService_DoPrint_Req, ThermalPrintService_DoPrint_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_PrinterStatus(SpReqAnsContext<ThermalPrintService_PrinterStatus_Req, ThermalPrintService_PrinterStatus_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_PrintEntityStatus(SpReqAnsContext<ThermalPrintService_PrintEntityStatus_Req, ThermalPrintService_PrintEntityStatus_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void OnRequest(CSmartPointer<ITransactionContext> pTransactionContext)
-	{
-		CAutoBuffer Buf;
-		DWORD dwMessageID;
-		DWORD dwMessageSignature;
-		ErrorCodeEnum Error = pTransactionContext->GetReceiveBuffer(dwMessageID, dwMessageSignature, Buf);
-		if (Error == Error_Succeed) {
-#ifdef DEBUG
-			assert(CheckMessageSignature(dwMessageID, dwMessageSignature) == Error_Succeed);
-#else
-			if (CheckMessageSignature(dwMessageID, dwMessageSignature) != Error_Succeed) {
-				pTransactionContext->SendAnswer(Error_MethodSignatureFailed);
-				return;
-			}
-#endif
-			switch (dwMessageID) {
-				case ThermalPrintService_Method_DoPrint:
-					{
-						SpReqAnsContext<ThermalPrintService_DoPrint_Req,ThermalPrintService_DoPrint_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<ThermalPrintService_DoPrint_Req,ThermalPrintService_DoPrint_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_DoPrint(ctx);
-					}
-					break;
-				case ThermalPrintService_Method_PrinterStatus:
-					{
-						SpReqAnsContext<ThermalPrintService_PrinterStatus_Req,ThermalPrintService_PrinterStatus_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<ThermalPrintService_PrinterStatus_Req,ThermalPrintService_PrinterStatus_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_PrinterStatus(ctx);
-					}
-					break;
-				case ThermalPrintService_Method_PrintEntityStatus:
-					{
-						SpReqAnsContext<ThermalPrintService_PrintEntityStatus_Req,ThermalPrintService_PrintEntityStatus_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<ThermalPrintService_PrintEntityStatus_Req,ThermalPrintService_PrintEntityStatus_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						Handle_PrintEntityStatus(ctx);
-					}
-					break;
-				default:
-					assert(0);
-					break;
-			}
-			
-		} else {
-			pTransactionContext->SendAnswer(Error);
-		}
-	}
-
-};
-
-
-///////////////////////////
-
-} // namespace ThermalPrint
-#endif // __THERMALPRINT_SERVER_G_H

+ 0 - 25
Module/mod_ThermalPrint/mod_ThermalPrint.cpp

@@ -1,25 +0,0 @@
-#include "stdafx.h"
-#include "mod_ThermalPrint.h"
-
-void ThermalPrintServerSession::Handle_DoPrint( SpReqAnsContext<ThermalPrintService_DoPrint_Req, ThermalPrintService_DoPrint_Ans>::Pointer ctx )
-{
-	Dbg("PrintReq received!");
-	m_pEntity->DoPrint(ctx);
-}
-
-void ThermalPrintServerSession::Handle_PrinterStatus( SpReqAnsContext<ThermalPrintService_PrinterStatus_Req, ThermalPrintService_PrinterStatus_Ans>::Pointer ctx )
-{
-	Dbg("PrinterStatus received!");
-	m_pEntity->PrinterStatus(ctx);
-}
-
-void ThermalPrintServerSession::Handle_PrintEntityStatus( SpReqAnsContext<ThermalPrintService_PrintEntityStatus_Req, ThermalPrintService_PrintEntityStatus_Ans>::Pointer ctx )
-{
-	Dbg("PrintEntityStatus received!");
-	m_pEntity->PrintEntityStatus(ctx);
-}
-
-
-SP_BEGIN_ENTITY_MAP()
-SP_ENTITY(CThermalPrintEntity)
-SP_END_ENTITY_MAP()

+ 0 - 229
Module/mod_ThermalPrint/mod_ThermalPrint.h

@@ -1,229 +0,0 @@
-#ifndef MOD_THERMAL_PRINT_H
-#define MOD_THERMAL_PRINT_H
-#pragma once
-
-#include "stdafx.h"
-#include "modVer.h"
-#include "SpTest.h"
-#include "SpBase.h"
-#include "SpIni.h"
-#include "ThermalPrintFSM.h"
-#include "ThermalPrintError.h"
-#include "DevEntityCommBase.hpp"
-
-#include <fstream>
-
-
-using namespace ThermalPrint;
-
-using namespace std;
-
-// 热敏打印服务
-class CThermalPrintEntity;
-
-class ThermalPrintServerSession : public ThermalPrintService_ServerSessionBase
-{
-public:
-	ThermalPrintServerSession(CThermalPrintEntity* pEntity) :m_pEntity(pEntity) {}
-	virtual ~ThermalPrintServerSession() {}
-	virtual void Handle_DoPrint(SpReqAnsContext<ThermalPrintService_DoPrint_Req, ThermalPrintService_DoPrint_Ans>::Pointer ctx);
-	virtual void Handle_PrinterStatus(SpReqAnsContext<ThermalPrintService_PrinterStatus_Req, ThermalPrintService_PrinterStatus_Ans>::Pointer ctx);
-	virtual void Handle_PrintEntityStatus(SpReqAnsContext<ThermalPrintService_PrintEntityStatus_Req, ThermalPrintService_PrintEntityStatus_Ans>::Pointer ctx);
-
-private:
-	CThermalPrintEntity* m_pEntity;
-};
-
-class CThermalPrintEntity : public CDevAdptEntityBase
-{
-public :
-	CThermalPrintEntity() {}
-
-	virtual ~CThermalPrintEntity() {}
-
-	virtual const char *GetEntityName() const { return "ThermalPrint"; }
-
-    const char* GetEntityVersion() const { return MODULE_VERSION_FULL; }
-
-    ON_ENTITYT_TEST()
-
-	virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext) 
-	{
-		LOG_FUNCTION();
-		ErrorCodeEnum rt = m_fsm.Init(this);
-		Dbg("ThermalPrintEntity Init : %d", rt);
-		pTransactionContext->SendAnswer(rt);
-	}
-
-	virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext)
-	{
-		m_fsm.OnExit();
-		pTransactionContext->SendAnswer(Error_Succeed);
-	}
-
-	virtual void OnSelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext)
-	{
-		if (Test_ShakeHand == eTestType)
-		{
-			pTransactionContext->SendAnswer(Error_Succeed);
-		}
-	}
-
-	// 实体服务化
-	virtual CServerSessionBase* OnNewSession(const char*, const char*)
-	{
-		return new ThermalPrintServerSession(this);
-	}
-
-	void DoPrint(SpReqAnsContext<ThermalPrintService_DoPrint_Req, ThermalPrintService_DoPrint_Ans>::Pointer ctx){
-		//解析xml内容,不符合规范则报错
-		Dbg("On DoPrint!**************************************************");
-		ErrorCodeEnum  ret = Error_Succeed;
-		//判断是否支持打印,如果不支持,则报错
-		if(!m_fsm.IsSupportPrint()){
-			Dbg("当前热敏打印机不支持打印");
-			// 热敏实体不支持打印
-			ctx->Ans.error_code=CSimpleStringA2W(Error_DevNotOpen);
-			ctx->Ans.error_msg=CSimpleStringA2W("当前热敏设备未配置,不支持打印");
-			ctx->Answer(ret); 
-			return;
-		}
-		//状态为非S0或者有任务则报错
-		if (m_fsm.GetHasPrintTask()|| m_fsm.isPrinting())
-		{
-			Dbg("上一个打印任务未结束,当前打印任务已取消");
-			// 打印任务未结束,拒绝接受任务
-			ctx->Ans.error_code=CSimpleStringA2W(Error_Printing);
-			ctx->Ans.error_msg=CSimpleStringA2W("上一个打印任务未结束,当前打印任务已取消!");
-			ctx->Answer(ret); 
-			return;
-		}
-		//开始任务处理
-		Dbg("uuid=%s",CSimpleStringW2A(ctx->Req.uuid));
-		if(ctx->Req.paper_type!=0&&ctx->Req.paper_type!=1){
-
-			ctx->Ans.error_code=CSimpleStringA2W(Error_Param);
-			ctx->Ans.error_msg=CSimpleStringA2W("打印纸张类型参数错误");
-			ctx->Answer(ret); 
-			return;
-		}
-
-		if(ctx->Req.paper_width!=80&&ctx->Req.paper_width!=57){
-
-			ctx->Ans.error_code=CSimpleStringA2W(Error_Param);
-			ctx->Ans.error_msg=CSimpleStringA2W("打印纸张宽度错误");
-			ctx->Answer(ret); 
-			return;
-		}
-		//开始解析xml内容
-		//Dbg("读入的内容是:%s",CSimpleStringW2A(ctx->Req.print_data).GetData());
-		if(m_fsm.ParsePrintXml(CSimpleStringW2A(ctx->Req.print_data))!=Error_Succeed){
-
-			//清理打印指令
-			m_fsm.ClearPrintCMD();
-			ctx->Ans.error_code=CSimpleStringA2W(Error_Parse);
-			ctx->Ans.error_msg=CSimpleStringA2W("打印内容解析错误");
-			ctx->Answer(ret); 
-			return;
-		}
-		m_fsm.setPaperType(ctx->Req.paper_type);
-		m_fsm.setPaperWidth(ctx->Req.paper_width);
-		m_fsm.setPrintTaskUUID(CSimpleStringW2A(ctx->Req.uuid));
-		//CSimpleStringA strXml = Readxml();
-		//Dbg("读入的内容是:%s",strXml.GetData());//字符超过1024打印不出来
-		////开始解析xml内容
-		//if(m_fsm.ParsePrintXml(strXml)!=Error_Succeed){
-
-		//	//清理打印指令
-		//	m_fsm.ClearPrintCMD();
-		//	ctx->Ans.error_code=CSimpleStringA2W(Error_Parse);
-		//	ctx->Ans.error_msg=CSimpleStringA2W("打印内容解析错误");
-		//	ctx->Answer(ret); 
-		//	return;
-		//}
-		//m_fsm.setPaperType(0);
-		//m_fsm.setPaperWidth(80);
-		//m_fsm.setPrintTaskUUID("测试0001");
-
-
-		PrintEvent* e = new PrintEvent();
-		m_fsm.PostEventFIFO(e);
-		ctx->Ans.error_code=CSimpleStringA2W("");
-		ctx->Ans.error_msg=CSimpleStringA2W("");
-		ctx->Answer(ret);
-		return;
-
-	}
-	void PrinterStatus(SpReqAnsContext<ThermalPrintService_PrinterStatus_Req, ThermalPrintService_PrinterStatus_Ans>::Pointer ctx){
-		//查询打印机实时状态
-		Dbg("Do PrinterStatus");
-		ErrorCodeEnum  ret = Error_Succeed;
-		//dev open 成功,调用此接口有效
-		//打印机状态: 0 正常 1少纸 2缺纸 3卡纸 4硬件故障 5厂商接口调用失败
-		if(m_fsm.isDevOpen()){
-			int state;
-			CSimpleStringA err_msg;
-			ErrorCodeEnum ret = m_fsm.GetPrintState(state,err_msg);
-			if(ret==Error_Succeed){
-				
-				if(state==0){
-					ctx->Ans.print_status=state;
-				}else if(state==1){
-					ctx->Ans.print_status=state;
-					ctx->Ans.status_msg=CSimpleStringA2W("打印机少纸");
-					LogWarn(Severity_Middle,Error_Unexpect,LOG_ERR_THERMAL_PRINTER_PAPER_LOW,"thermal print paper low.");
-				}else if(state==2){
-					ctx->Ans.print_status=state;
-					ctx->Ans.status_msg=CSimpleStringA2W("打印机缺纸");
-					LogWarn(Severity_Middle,Error_Unexpect,LOG_ERR_THERMAL_PRINTER_PAPER_EMPTY,"thermal print paper empty.");
-				}else if(state==3){
-					ctx->Ans.print_status=state;
-					ctx->Ans.status_msg=CSimpleStringA2W("打印机卡纸");
-					LogWarn(Severity_Middle,Error_Unexpect,LOG_ERR_THERMAL_PRINTER_PAPER_JAMMED,"thermal print paper jammed.");
-
-				}else if(state==4){
-					ctx->Ans.print_status=state;
-					ctx->Ans.status_msg=CSimpleStringA2W(err_msg);
-					LogWarn(Severity_Middle,Error_Unexpect,LOG_ERR_THERMAL_PRINTER_OTHER_DEV_FAULT,"thermal print other dev fault.");
-				}
-			}else{
-				ctx->Ans.print_status=5;
-				ctx->Ans.status_msg=CSimpleStringA2W("厂商接口GetDevState调用失败");
-			}
-
-		}else{
-			ctx->Ans.print_status=5;
-			ctx->Ans.status_msg=CSimpleStringA2W("厂商适配器open失败");
-		}
-		CSimpleStringA errMsg = CSimpleStringW2A(ctx->Ans.status_msg);
-		Dbg("PrinterStatus: %d, status_msg: %s",ctx->Ans.print_status,errMsg.GetData());
-		ctx->Answer(ret);
-	}
-	void PrintEntityStatus(SpReqAnsContext<ThermalPrintService_PrintEntityStatus_Req, ThermalPrintService_PrintEntityStatus_Ans>::Pointer ctx){
-		//查询打印实体状态
-		Dbg("Do PrintEntityStatus");
-		ErrorCodeEnum  ret = Error_Succeed;
-		ctx->Ans.isSupportPrint=m_fsm.IsSupportPrint();
-		ctx->Ans.isPrinting = m_fsm.isPrinting();
-		ctx->Answer(ret);
-	}
-	virtual bool IsService() const { return true; }
-	virtual bool IsMultiThread() const { return false; }
-	CSimpleStringA Readxml(){
-		CSimpleStringA strDepPath;
-		m_fsm.GetEntityBase()->GetFunction()->GetPath("Dep", strDepPath);
-		CSimpleStringA filePath=CSimpleStringA::Format("%s" SPLIT_SLASH_STR "ThermalTest.xml", (LPCTSTR)strDepPath);
-	
-		CSimpleStringA str;
-		ifstream in(filePath.GetData(), ios::in);
-		istreambuf_iterator<char> beg(in), end;
-		string strdata(beg, end);
-		in.close();
-		str.Append(strdata.c_str());
-		return str;
-		
-	}
-private:
-	CThermalPrintFSM m_fsm;
-};
-#endif

+ 0 - 1
Module/mod_gpio/mod_gpio.h

@@ -203,7 +203,6 @@ public:
 
 #if defined(RVC_OS_WIN)
 			GetFunction()->SubscribeLog(m_uuidPtr, this, Log_Event, Severity_Middle, Error_IgnoreAll, -1, "Printer");
-            GetFunction()->SubscribeLog(m_uuidPrinter, this, Log_Event, Severity_Middle, Error_IgnoreAll, -1, "ThermalPrint");
             GetFunction()->SubscribeLog(m_uuidPrintSeal, this, Log_Event, Severity_Middle, Error_IgnoreAll, -1, "PrintSeal");
 #endif //RVC_OS_WIN
 			Dbg("subscribelog ok...");

+ 5 - 5
Module/mod_healthmanager/EntityBootStruct.h

@@ -71,7 +71,7 @@ struct BootStep
         for (size_t i = 0; i < keys->nelts; ++i) {
             char* entityName = ARRAY_IDX(keys, i, char*);
             int bootType = inifile_read_int(configPath, strSectionName, entityName, 0);
-            Dbg("boot type info: %s=%d", entityName, bootType);
+            DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("boot type info: %s=%d", entityName, bootType);
             EntityBootInfo entityBootInfo{ entityName, static_cast<EntityBootType>(bootType) };
             entityList.push_back(entityBootInfo);
         }
@@ -222,7 +222,7 @@ struct StartEntityAsyncContenxt : public StartEntityBaseContext, public ICallbac
             result = Error_Pending;
         } else {
             theFinishedState = End;
-            Dbg("return directly: %s", SpStrError(result));
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("return directly: %s", SpStrError(result));
         }
         asyncResult = result;
         return result;
@@ -302,15 +302,15 @@ ErrorCodeEnum BootStep::StartStartupEntities(CEntityBase* pTrigger)
         std::vector <StartEntityOperation*> pendingEntiList;
         for (auto& entity : entityList) {
             StartEntityOperation* startOperat = new StartEntityOperation(pTrigger, entity);
-            Dbg("to start entity: %s ...", entity.entityName.GetData());
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to start entity: %s ...", entity.entityName.GetData());
             result = startOperat->StartEntity();
             if (!startOperat->IsDone()) {
                 pendingEntiList.push_back(startOperat);
             } else {
                 if (ISSUCCEEDED(result)) {
-                    Dbg("start entity: %s successfully :)", entity.entityName.GetData());
+                    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start entity: %s successfully :)", entity.entityName.GetData());
                 } else {
-                    Dbg("start entity: %s failed :( EC: %s", entity.entityName.GetData(), SpStrError(result));
+                    DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("start entity: %s failed :( EC: %s", entity.entityName.GetData(), SpStrError(result));
                 }
                 delete startOperat;
                 if (FAILURED(result)) {

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

@@ -41,7 +41,6 @@ DeviceControl=0,@LIB_PREFIX@mod_DeviceControl@LIB_SUFFIX@,0x214
 ;Print=0,@LIB_PREFIX@mod_print@LIB_SUFFIX@,0x216
 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
 CardReadAdapter=0,@LIB_PREFIX@mod_CardReadAdapter@LIB_SUFFIX@,0x21B
 ;PortableScanner=0,@LIB_PREFIX@mod_PortableScanner@LIB_SUFFIX@,0x21C

+ 0 - 6
addin/hardwarecfg/uos/root-RVC.Stand2S-NANTIAN-VTM-6200B17FQ.ini

@@ -149,10 +149,4 @@ Vendor=nantian
 Version=1
 Batch=1
 
-[Device.ThermalPrint]
-Vendor=nantian
-Version=1
-Batch=1
-Port=3
-Baudrate=38400