Forráskód Böngészése

!10710 修复非接卡机部分问题
Merge pull request !10710 from 80174520/feature_fix_contactless

杨诗友80174847 7 hónapja
szülő
commit
22ec8e7332

+ 8 - 76
Module/mod_CardIssuerStand/CardIssuerFSM.cpp

@@ -780,7 +780,6 @@ unsigned int CCardIssuerFSM::s7_on_event(FSMEvent* pEvt)
 			FetchCard evt;
 			evt.status = 1;
 			SpSendBroadcast(m_pEntity->GetFunction(), SP_MSG_OF(FetchCard), SP_MSG_SIG_OF(FetchCard), evt);
-			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER)("取卡时设备故障");
 			return 1;
 		}
 		else {
@@ -1151,96 +1150,26 @@ ErrorCodeEnum CCardIssuerFSM::OnInit()
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("CardIssuer, MachineType:%s, TerminalNo:%s, MachineVersion:%d.%d",
 		m_csMachineType.GetData(), m_terminalNo.GetData(), m_majorVerion, m_minorVerion));
 
-	//因替换实体名,需要兼容把以前旧的运行时文件拷贝成新的实体名运行文件,卡机分离后,拷贝旧版运行时文件,后期稳定后直接去除
-	//////////////////////////////////////////////////////////////////////////
+
 	CSimpleStringA runinfoPath(true);
-	CSmartPointer<IConfigInfo> spConfig;
 	ErrorCodeEnum  err = GetEntityBase()->GetFunction()->GetPath("RunInfo", runinfoPath);
 	if (err != Error_Succeed) {
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("get system RunInfo value failed.");
-		return Error_Exception;
-	}
-	err = GetEntityBase()->GetFunction()->OpenConfig(Config_Run, spConfig);
-	if (err != Error_Succeed) {
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("get cfg file failed ");
-		return err;
-	}
-	
+	}	
 	CSimpleStringA runinfoOldFile = runinfoPath + SPLIT_SLASH_STR + "runcfg" + SPLIT_SLASH_STR + "CardIssuer.ini"; 
 	CSimpleStringA runinfoNewFile = runinfoPath + SPLIT_SLASH_STR + "runcfg" + SPLIT_SLASH_STR + "CardIssuerStand.ini";
-
-	int enterMainPageInt = 0;
-
 	if (ExistsFile(runinfoNewFile.GetData())) {
-		if (ExistsFile(runinfoOldFile)) {
-			//新在,旧也在,新进入首页则不拷贝,否则重新拷贝
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStand.ini is Exist. CardIssuer.ini is Exist");
-			spConfig->ReadConfigValueInt("all", "enterMainPage", enterMainPageInt);
-			if (enterMainPageInt == 2) {
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStand.ini is Exist. enterMainPage=%d, no recopy", enterMainPageInt);
-			}
-			else if (enterMainPageInt == 1) {
-				//先删再拷贝
-				if (RemoveFileA(runinfoNewFile.GetData())) {
-					if (CopyFileA(runinfoOldFile.GetData(), runinfoNewFile.GetData(), FALSE)) {
-						LogWarn(Severity_Low, Error_Unexpect, CardIssuer_UserErrorCode_CopyRuncfg, "Recopy old CardIssuer.ini succ");
-						spConfig->WriteConfigValueInt("all", "enterMainPage", 1);//写入初值
-					}
-					else {
-#ifdef RVC_OS_WIN
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Recopy old CardIssuer.ini failed.err=%d", (int)GetLastError());
-#else
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Recopy old CardIssuer.ini failed.err=%d", errno);
-#endif
-						return Error_Exception;
-					}
-				}
-				else {
-#ifdef RVC_OS_WIN
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("remove CardIssuerStand.ini failed.err=%d", (int)GetLastError());
-#else
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("remove CardIssuerStand.ini failed.err=%d", errno);
-#endif
-					return Error_Exception;
-				}
-			}
-			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardIssuerStand.ini is Exist. but enterMainPage=%d is invalid, continued use CardIssuerStand.ini", enterMainPageInt);
-			}
-
-		}
-		else {
-			//新在,旧不在,不处理
-			spConfig->ReadConfigValueInt("all", "enterMainPage", enterMainPageInt);
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStand.ini is Exist. CardIssuer.ini not Exist .enterMainPage=%d", enterMainPageInt);
-		}
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStand.ini is Exist.");
 	}
 	else {
 		if (ExistsFile(runinfoOldFile)) {
-			//新不在,旧在,拷贝,附初值
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStand.ini is not Exist. CardIssuer.ini is Exist");
-			if (CopyFileA(runinfoOldFile.GetData(), runinfoNewFile.GetData(), FALSE)) {
-				LogWarn(Severity_Low, Error_Unexpect, CardIssuer_UserErrorCode_CopyRuncfg, "copy old CardIssuer.ini succ.");
-				spConfig->WriteConfigValueInt("all", "enterMainPage", 1);//写入初值
-			}
-			else {
-#ifdef RVC_OS_WIN
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("copy old CardIssuer.ini failed.err=%d", (int)GetLastError());
-#else
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("copy old CardIssuer.ini failed.err=%d", errno);
-#endif
-				return Error_Exception;
-			}
-
 		}
 		else {
-			//新旧都不在,附初值
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStand.ini is not Exist. CardIssuer.ini is not Exist");
-			spConfig->WriteConfigValueInt("all", "enterMainPage", 1);//写入初值
 		}
 	}
 
-	//////////////////////////////////////////////////////////////////////////
 	m_devStatus.eMedia = CI_MEDIA_NOTPRESENT;
 	m_bHasHopper[0] = false;
 	m_bHasHopper[1] = false;
@@ -2119,19 +2048,20 @@ int CCardIssuerFSM::WaitFetchingCard()
 	DWORD dwStart, dwEnd;
 	dwStart = GetTickCountRVC();
 	LogEvent(Severity_Middle, LOG_EVT_CARDISSUER_GREEN_ON,"CardReader(fetch) warning on");
+	long l_beginTime, l_endTime;
 	do {
+		l_beginTime = GetTickCountRVC();
 		if (GetDevStatus(false)){
 			dwEnd = GetTickCountRVC();
 			if (m_devStatus.eMedia == CI_MEDIA_ENTERING){
 				Sleep(WAIT_INTERVAL);
 			}
 			else{
-				long l_beginTime, l_endTime;
+				
 				l_beginTime = GetTickCountRVC();
 				ErrorCodeEnum eErr = m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN);
 				l_endTime = GetTickCountRVC();
 
-
 				if (eErr != Error_Succeed) {			
 					SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_SetCardInType, "DevAdapter::SetCardInType", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 				}
@@ -2143,7 +2073,9 @@ int CCardIssuerFSM::WaitFetchingCard()
 			}
 		}else
 		{
+			l_endTime = GetTickCountRVC();
 			LogEvent(Severity_Middle, LOG_EVT_CARDISSUER_GREEN_OFF,"CardReader(fetch) warning off");
+			SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_GetDevStatus, "DevAdapter::GetDevStatus", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220305", "取卡时设备故障");
 			return 1;
 		}
 	}while ((dwEnd-dwStart) < 60*1000);

+ 19 - 14
Module/mod_ContactlessCard/ContactlessFSM.cpp

@@ -486,8 +486,14 @@ void CContactlessCardFSM::s9_on_entry()
 	LOG_FUNCTION();
 	m_currentFSMState = 9;
 	SetDevState(DEVICE_STATUS_FAULT);
-	FSMEvent *e = new FSMEvent(USER_EVT_RESET);
-	PostEventFIFO(e);
+	if (m_bNeedReset) {
+		FSMEvent* e = new FSMEvent(USER_EVT_RESET);
+		PostEventFIFO(e);
+	}
+	else {
+		m_testResult = Error_InvalidState;
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("device is fault, wait for restart entity");
+	}
 }
 void CContactlessCardFSM::s9_on_exit()
 {
@@ -580,8 +586,9 @@ unsigned int CContactlessCardFSM::s10_on_event(FSMEvent* pEvt)
 			ret = 0;
 		}
 	break;
-	case USER_EVT_EXIT_MIAN_PAGE:
+	case EVT_MAINPAGE_DISPLAY:
 		{
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("S10 receive exit to main page");
 			m_bPageExit = true;
 			pEvt->SetHandled();
 			ret = 0;
@@ -616,8 +623,9 @@ unsigned int CContactlessCardFSM::s11_on_event(FSMEvent* pEvt)
 			ret = pEvt->param1;
 		}
 	break;
-	case USER_EVT_EXIT_MIAN_PAGE:
+	case EVT_MAINPAGE_DISPLAY:
 	{
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("S11 receive exit to main page");
 		m_bPageExit = true;
 		pEvt->SetHandled();
 		ret = 0;
@@ -655,8 +663,7 @@ ErrorCodeEnum CContactlessCardFSM::OnInit()
 	if (errCode != Error_Succeed)
 	{
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Load failed(%d).",errCode);
-		m_bOpening = false;
-		return errCode;
+		SetDevInitFlag(false);//打开失败
 	}
 	devStatus.eMediaPos = CI_MEDIA_NOTPRESENT;
 	m_bOpening = false;
@@ -862,6 +869,12 @@ ErrorCodeEnum CContactlessCardFSM::Load()
 }
 int CContactlessCardFSM::Initial()
 {
+	if (!m_bOpened) {
+		m_bNeedReset = false;
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Initial,ret = 1");
+		return 1;//故障模式
+	}
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Initial,ret = 0");
 	return 0;
 }
 bool CContactlessCardFSM::GetDevStatus(bool bPrint)
@@ -2186,11 +2199,3 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 	return 0;
 
 }
-
-int CContactlessCardFSM::ExitToMainPage()
-{
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("exit to main page, send event");
-	FSMEvent* evt = new FSMEvent(USER_EVT_EXIT_MIAN_PAGE);
-	PostEventFIFO(evt);
-	return 0;
-}

+ 7 - 5
Module/mod_ContactlessCard/ContactlessFSM.h

@@ -45,8 +45,7 @@ enum EvtType
 	USER_EVT_JS_EJECTFINISHED,
 	USER_EVT_JS_POSTONLINE,
 	USER_EVT_JS_POSTONLINEFINISHED,
-	USER_EVT_JS_READ_CANCEL,
-	USER_EVT_EXIT_MIAN_PAGE
+	USER_EVT_JS_READ_CANCEL
 };
 
 using namespace ContactlessCard;
@@ -244,6 +243,10 @@ public:
 		FSM_RULE_ENTRY(s2,s3,USER_EVT_ACCEPT,0)
 		FSM_RULE_ENTRY(s2, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
 		FSM_RULE_ENTRY(s2, s6, USER_EVT_EJECT, 0)
+		FSM_RULE_ENTRY(s2, s10, USER_EVT_JS_READ, 0)//JS	¶Á¿¨
+		FSM_RULE_ENTRY(s2, s10, USER_EVT_JS_POSTONLINE, 0)//JS	Áª»úºó
+		FSM_RULE_ENTRY(s2, s11, USER_EVT_JS_EJECT, 0)//JS	Í¿¨
+			
 		FSM_RULE_ENTRY(s3,s4,USER_EVT_ACCEPTFINISHED,0)
 		FSM_RULE_ENTRY(s3,s9,USER_EVT_ACCEPTFINISHED,1)
 		FSM_RULE_ENTRY(s3,s2,USER_EVT_ACCEPTFINISHED,2)
@@ -281,7 +284,7 @@ public:
 		CContactlessCardFSM() : m_bCancelAccept(false), m_bWaitingAccept(false),
 		m_bWaitAccepteMore(false), m_bExit(false), m_resetTimes(0), m_testResult(Error_Succeed)
 		, m_bCDA(false), m_pDataToARQC(NULL), m_csMachineType(true), m_csDevNo(""), m_devInit(false), m_repeatErrTimes(0),
-		m_bCancelRead(false),m_bPageExit(false)
+		m_bCancelRead(false),m_bPageExit(false), m_bNeedReset(true)
 		{
 			HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x213); 
 			cmdDecodeMag2 = NULL;
@@ -374,8 +377,6 @@ public:
 
 	int PreOnlineJS(SpReqAnsContext<ContactlessCardService_ReadJS_Req, ContactlessCardService_ReadJS_Ans>::Pointer ctx);
 
-	int ExitToMainPage();
-
 protected:
 	int m_iInsertTries;
 	int m_resetTries;
@@ -409,6 +410,7 @@ private:
 	//new
 	bool m_bCancelRead;
 	bool m_bPageExit;
+	bool m_bNeedReset;
 };
 struct InitTask : public ITaskSp
 {

+ 0 - 3
Module/mod_ContactlessCard/mod_ContactlessCard.cpp

@@ -117,9 +117,6 @@ void CContactlessCardEntity::OnSysVarEvent(const char* pszKey, const char* pszVa
 	if ((_strnicmp(pszKey, "UIState", strlen("UIState")) == 0))
 	{
 		m_fsm.OnUIState4SetWhatPage(pszValue);
-		if (_strnicmp(pszValue, "M", strlen("M")) == 0) {
-			m_fsm.ExitToMainPage();
-		}
 	}
 }
 

+ 8 - 85
Module/mod_cardissuerstore/CardIssuerFSM.cpp

@@ -499,7 +499,7 @@ unsigned int CCardIssuerFSM::s4_on_event(FSMEvent* pEvt)
 				pEvt->SetHandled();
 				return 0;
 			}
-		case USER_EVT_EXIT_MIAN_PAGE:
+		case EVT_MAINPAGE_DISPLAY:
 			{
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("S4 receive exit to main page");
 				m_captureReason = "4001";
@@ -902,7 +902,7 @@ unsigned int CCardIssuerFSM::s7_on_event(FSMEvent* pEvt)
 			FetchCard evt;
 			evt.status = 1;
 			SpSendBroadcast(m_pEntity->GetFunction(), SP_MSG_OF(FetchCard), SP_MSG_SIG_OF(FetchCard), evt);
-			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER)("取卡时设备故障");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("取卡时设备故障");
 			return 1;
 		}
 		else {
@@ -1449,96 +1449,24 @@ ErrorCodeEnum CCardIssuerFSM::OnInit()
 		}
 	}
 
-	//因替换实体名,需要兼容把以前旧的运行时文件拷贝成新的实体名运行文件,卡机分离后,拷贝旧版运行时文件,后期稳定后直接去除
-	//////////////////////////////////////////////////////////////////////////
 	CSimpleStringA runinfoPath(true);
-	CSmartPointer<IConfigInfo> spConfig;
 	ErrorCodeEnum  err = GetEntityBase()->GetFunction()->GetPath("RunInfo", runinfoPath);
 	if (err != Error_Succeed) {
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("get system RunInfo value failed.");
-		return Error_Exception;
-	}
-	err = GetEntityBase()->GetFunction()->OpenConfig(Config_Run, spConfig);
-	if (err != Error_Succeed) {
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("get cfg file failed ");
-		return err;
 	}
-
 	CSimpleStringA runinfoOldFile = runinfoPath + SPLIT_SLASH_STR + "runcfg" + SPLIT_SLASH_STR + "CardIssuer.ini";
 	CSimpleStringA runinfoNewFile = runinfoPath + SPLIT_SLASH_STR + "runcfg" + SPLIT_SLASH_STR + "CardIssuerStore.ini";
-
-	int enterMainPageInt = 0;
-
 	if (ExistsFile(runinfoNewFile.GetData())) {
-		if (ExistsFile(runinfoOldFile)) {
-			//新在,旧也在,新进入首页则不拷贝,否则重新拷贝
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStore.ini is Exist. CardIssuer.ini is Exist");
-			spConfig->ReadConfigValueInt("all", "enterMainPage", enterMainPageInt);
-			if (enterMainPageInt == 2) {
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStore.ini is Exist. enterMainPage=%d, no recopy", enterMainPageInt);
-			}
-			else if (enterMainPageInt == 1) {
-				//先删再拷贝
-				if (RemoveFileA(runinfoNewFile.GetData())) {
-					if (CopyFileA(runinfoOldFile.GetData(), runinfoNewFile.GetData(), FALSE)) {
-						LogWarn(Severity_Low, Error_Unexpect, CardIssuerStore_UserErrorCode_CopyRuncfg, "Recopy old CardIssuer.ini succ");
-						spConfig->WriteConfigValueInt("all", "enterMainPage", 1);//写入初值
-					}
-					else {
-#ifdef RVC_OS_WIN
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Recopy old CardIssuer.ini failed.err=%d", (int)GetLastError());
-#else
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Recopy old CardIssuer.ini failed.err=%d", errno);
-#endif
-						return Error_Exception;
-					}
-				}
-				else {
-#ifdef RVC_OS_WIN
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("remove CardIssuerStore.ini failed.err=%d", (int)GetLastError());
-#else
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("remove CardIssuerStore.ini failed.err=%d", errno);
-#endif
-					return Error_Exception;
-				}
-			}
-			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardIssuerStore.ini is Exist. but enterMainPage=%d is invalid, continued use CardIssuerStore.ini", enterMainPageInt);
-			}
-
-		}
-		else {
-			//新在,旧不在,不处理
-			spConfig->ReadConfigValueInt("all", "enterMainPage", enterMainPageInt);
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStore.ini is Exist. CardIssuer.ini not Exist .enterMainPage=%d", enterMainPageInt);
-		}
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStore.ini is Exist.");
 	}
 	else {
-		if (ExistsFile(runinfoOldFile)) {
-			//新不在,旧在,拷贝,附初值
+		if (ExistsFile(runinfoOldFile.GetData())) {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStore.ini is not Exist. CardIssuer.ini is Exist");
-			if (CopyFileA(runinfoOldFile.GetData(), runinfoNewFile.GetData(), FALSE)) {
-				LogWarn(Severity_Low, Error_Unexpect, CardIssuerStore_UserErrorCode_CopyRuncfg, "copy old CardIssuer.ini succ.");
-				spConfig->WriteConfigValueInt("all", "enterMainPage", 1);//写入初值
-			}
-			else {
-#ifdef RVC_OS_WIN
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("copy old CardIssuer.ini failed.err=%d", (int)GetLastError());
-#else
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("copy old CardIssuer.ini failed.err=%d", errno);
-#endif
-				return Error_Exception;
-			}
-
 		}
 		else {
-			//新旧都不在,附初值
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStore.ini is not Exist. CardIssuer.ini is not Exist");
-			spConfig->WriteConfigValueInt("all", "enterMainPage", 1);//写入初值
 		}
 	}
-	
-	//////////////////////////////////////////////////////////////////////////
 
 #endif //RVC_OS_WIN
 	m_devStatus.eMedia = CI_MEDIA_NOTPRESENT;
@@ -2531,14 +2459,15 @@ int CCardIssuerFSM::WaitFetchingCard()
 	DWORD dwStart, dwEnd;
 	dwStart = GetTickCountRVC();
 	LogEvent(Severity_Middle, LOG_EVT_CARDISSUER_STORE_GREEN_ON,"CardReader(fetch) warning on");
+	long l_beginTime, l_endTime;
 	do {
+		l_beginTime = GetTickCountRVC();
 		if (GetDevStatus(false)){
 			dwEnd = GetTickCountRVC();
 			if (m_devStatus.eMedia == CI_MEDIA_ENTERING){
 				Sleep(WAIT_INTERVAL);
 			}
 			else{
-				long l_beginTime, l_endTime;
 				l_beginTime = GetTickCountRVC();
 				ErrorCodeEnum eErr = m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN);
 				l_endTime = GetTickCountRVC();
@@ -2556,7 +2485,9 @@ int CCardIssuerFSM::WaitFetchingCard()
 			}
 		}else
 		{
+			l_endTime = GetTickCountRVC();
 			LogEvent(Severity_Middle, LOG_EVT_CARDISSUER_STORE_GREEN_OFF,"CardReader(fetch) warning off");
+			SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_GetDevStatus, "DevAdapter::GetDevStatus", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040222005", "取卡时设备故障");
 			return 1;
 		}
 	}while ((dwEnd-dwStart) < 60*1000);
@@ -8803,14 +8734,6 @@ int CCardIssuerFSM::ReadJS(SpReqAnsContext<CardIssuerStoreService_ReadJS_Req, Ca
 	}
 }
 
-int CCardIssuerFSM::ExitToMainPage()
-{
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("exit to main page, send event");
-	FSMEvent* evt = new FSMEvent(USER_EVT_EXIT_MIAN_PAGE);
-	PostEventFIFO(evt);
-	return 0;
-}
-
 DWORD CCardIssuerFSM::GetFsmStateErrCode()
 {
 	int state = GetFSMState();

+ 27 - 3
Module/mod_cardissuerstore/CardIssuerFSM.h

@@ -92,7 +92,6 @@ enum EvtType
 	USER_EVT_JS_ADD_CRAD_FROMBOX_FINISHED,
 	USER_EVT_JS_MOVE_CARD_FROMSLOT,
 	USER_EVT_JS_MOVE_CARD_FROMSLOT_FINISHED,
-	USER_EVT_EXIT_MIAN_PAGE,
 };
 enum SAMICCommandType
 {
@@ -1085,7 +1084,7 @@ public:
 		FSM_RULE_ENTRY(s4, s18, USER_EVT_JS_PRINT_CARD, 0)//JS 打印
 		FSM_RULE_ENTRY(s4, s5, USER_EVT_JS_POSTONLINE, 0)//JS 联机后处理
 		FSM_RULE_ENTRY(s4, s5, USER_EVT_JS_READ, 0)//JS 读卡
-		FSM_RULE_ENTRY(s4, s8, USER_EVT_EXIT_MIAN_PAGE, 1)//退到首页事件
+		FSM_RULE_ENTRY(s4, s8, EVT_MAINPAGE_DISPLAY, 1)//退到首页事件
 		FSM_RULE_ENTRY(s5,s4,USER_EVT_READ_FINISHED,0)
 		FSM_RULE_ENTRY(s5,s9,USER_EVT_READ_FINISHED,1)
 		FSM_RULE_ENTRY(s5,s4,USER_EVT_READ_FINISHED,2)
@@ -1460,7 +1459,6 @@ public:
 
 	int ReadJS(SpReqAnsContext<CardIssuerStoreService_ReadJS_Req, CardIssuerStoreService_ReadJS_Ans>::Pointer ctx);
 
-	int ExitToMainPage();
 #pragma endregion JS接口具体实现方法
 
 #pragma region JS新增接口
@@ -1952,6 +1950,32 @@ struct QuickSelfcheckTask : public ITaskSp
 	}
 };
 
+struct GetCardInStoreJSTask : public ITaskSp
+{
+	CCardIssuerFSM* fsm;
+	SpReqAnsContext<CardIssuerStoreService_GetCardInStoreJS_Req, CardIssuerStoreService_GetCardInStoreJS_Ans>::Pointer ctx;
+	GetCardInStoreJSTask(CCardIssuerFSM* f) : fsm(f) { ctx = NULL; }
+	void Process()
+	{
+		if (ctx != NULL) {
+			fsm->GetCardInStoreJS(ctx);
+		}
+	}
+};
+
+struct QueryHasCardJSTask : public ITaskSp
+{
+	CCardIssuerFSM* fsm;
+	SpReqAnsContext<CardIssuerStoreService_QueryHasCardJS_Req, CardIssuerStoreService_QueryHasCardJS_Ans>::Pointer ctx;
+	QueryHasCardJSTask(CCardIssuerFSM* f) : fsm(f) { ctx = NULL; }
+	void Process()
+	{
+		if (ctx != NULL) {
+			fsm->QueryHasCardJS(ctx);
+		}
+	}
+};
+
 
 #pragma endregion JS接口 工作线程
 

+ 0 - 2
Module/mod_cardissuerstore/mod_cardissuer.cpp

@@ -333,8 +333,6 @@ void CCardIssuerEntity::OnSysVarEvent(const char* pszKey, const char* pszValue,
 		m_fsm.OnUIState4SetWhatPage(pszValue);
 		if (_strnicmp(pszValue, "M", strlen("M")) == 0) {
 			m_fsm.SetEnterMainPage();//设置进入首页
-			//判断是否进入首页触发业务结束事件,发送事件给状态机。
-			m_fsm.ExitToMainPage();
 		}
 	}
 }

+ 9 - 2
Module/mod_cardissuerstore/mod_cardissuer.h

@@ -383,7 +383,13 @@ public:
 	void GetCardInStoreJS(SpReqAnsContext<CardIssuerStoreService_GetCardInStoreJS_Req, CardIssuerStoreService_GetCardInStoreJS_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
-		m_fsm.GetCardInStoreJS(ctx);
+		if (!m_fsm.GetDevInitFlag()) {
+			ctx->Answer(Error_DevNotAvailable, CardIssuerStore_UserErrorCode_DevOpen_Failed);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetCardInStoreJS but DevOpen failed.");
+		}
+		else {
+			m_fsm.GetCardInStoreJS(ctx);
+		}
 	}
 
 	void AddAndReadCardFromBoxJS(SpReqAnsContext<CardIssuerStoreService_AddAndReadCardFromBoxJS_Req, CardIssuerStoreService_AddAndReadCardFromBoxJS_Ans>::Pointer ctx)
@@ -491,7 +497,8 @@ public:
 	{
 		LOG_FUNCTION();
 		if (!m_fsm.GetDevInitFlag()) {
-			ctx->Answer(Error_DevNotAvailable, CardIssuerStore_UserErrorCode_DevOpen_Failed);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("QueryHasCardJS but DevOpen failed.");
+			ctx->Answer(Error_DevNotAvailable, CardIssuerStore_UserErrorCode_DevOpen_Failed);		
 		}
 		else {
 			m_fsm.QueryHasCardJS(ctx);