Selaa lähdekoodia

Z991239-4590 #comment 优化调用逻辑,跨机激活移除

oilyang 2 vuotta sitten
vanhempi
sitoutus
67d8ad6d1b

+ 88 - 363
Module/mod_cardissuer/CardIssuerFSM.cpp

@@ -213,55 +213,6 @@ unsigned int CCardIssuerFSM::s2_on_event(FSMEvent* pEvt)
 	case USER_EVT_QUIT:
 		pEvt->SetHandled();
 		break;
-	case USER_EVT_GET_MATERIAL:
-	{
-		pEvt->SetHandled();
-		GetMaterialEvent *pGME = dynamic_cast<GetMaterialEvent*>(pEvt);
-		pGME->ctx->Ans.captured = m_CardCaptured;
-		pGME->ctx->Ans.remains = m_remainsEx[0];
-		pGME->ctx->Ans.issued = m_issuedEx[0];
-		pGME->ctx->Ans.mixed = m_mixedEx[0];
-		pGME->ctx->Answer(Error_Succeed);
-	}
-		break;
-	case USER_EVT_SET_MATERIAL:
-	{
-		m_bSettingMaterial = true;
-		pEvt->SetHandled();
-		bool bR, bC, bI, bM;
-		bR = bC = bI = bM = true;
-		SetMaterialEvent *pSME = dynamic_cast<SetMaterialEvent*>(pEvt);
-		if (pSME->ctx->Req.bRemains)
-		{
-			m_CardInitEx[0] = m_remainsEx[0] = pSME->ctx->Req.remains;
-			bR = SetCardRemains(pSME->ctx->Req.remains, 1, true);
-		}
-		if (pSME->ctx->Req.bCaptured)
-		{
-			m_CardCaptured = pSME->ctx->Req.captured;
-			bC = SetCardCaptured(pSME->ctx->Req.captured);
-		}
-		if (pSME->ctx->Req.bIssued)
-		{
-			m_issuedEx[0] = pSME->ctx->Req.issued;
-			bI = SetCardIssued(pSME->ctx->Req.issued, 1);
-		}
-		if (pSME->ctx->Req.bMixed)
-		{
-			m_mixedEx[0] = pSME->ctx->Req.mixed;
-			bM = SetCardMixed(pSME->ctx->Req.mixed, 1);
-		}
-		if (bR && bC && bI && bM)
-			pSME->ctx->Answer(Error_Succeed);
-		else
-		{
-			pSME->ctx->Answer(Error_Unexpect);
-		}
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("case USER_EVT_SET_MATERIAL, bRemains:%d, bCaptured:%d, bIssued:%d, bMixed:%d, bR:%d, bC:%d, bI:%d, bM:%d",
-			pSME->ctx->Req.bRemains, pSME->ctx->Req.bCaptured, pSME->ctx->Req.bIssued, pSME->ctx->Req.bMixed, bR, bC, bI, bM));
-		m_bSettingMaterial = false;
-	}
-		break;
 	case USER_EVT_GET_MATERIAL_EX:
 	{
 		pEvt->SetHandled();
@@ -313,7 +264,7 @@ unsigned int CCardIssuerFSM::s2_on_event(FSMEvent* pEvt)
 				pGMEE->ctx->Ans.reserved1[i] = 0;
 				pGMEE->ctx->Ans.reserved2[i] = "";
 			}
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetMaterial CardBoxNo:%s, PsbCode:%s, PsbName:%s, CardInit:%d, remains:%d, issued:%d, mixed:%d,",
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("GetMaterial CardBoxNo (%d):%s, PsbCode:%s, PsbName:%s, CardInit:%d, remains:%d, issued:%d, mixed:%d,",i,
 				pGMEE->ctx->Ans.CardBoxNo[i].GetData(),
 				pGMEE->ctx->Ans.PsbCode[i].GetData(),
 				pGMEE->ctx->Ans.PsbName[i].GetData(),
@@ -407,15 +358,6 @@ unsigned int CCardIssuerFSM::s2_on_event(FSMEvent* pEvt)
 		}
 		break;
 	}
-	case USER_EVT_PREONLINE_ON_STORE:
-	{
-		pEvt->SetHandled();
-		PreOnlineOnStoreEvent *bsl = dynamic_cast<PreOnlineOnStoreEvent*>(pEvt);
-		PreOnlineOnStoreTask *pTask = new PreOnlineOnStoreTask(this);
-		pTask->ctx = bsl->ctx;
-		GetEntityBase()->GetFunction()->PostThreadPoolTask(pTask);
-	}
-		break;
 	default:
 		break;
 	}
@@ -457,7 +399,7 @@ unsigned int CCardIssuerFSM::s3_on_event(FSMEvent* pEvt)
 		break;
 	case USER_EVT_ACCEPT_CANCEL:
 		m_bCancelAccept = true;
-		m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN);
+		//m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN);
 		pEvt->SetHandled();
 		ret = 3;
 		break;
@@ -490,7 +432,7 @@ unsigned int CCardIssuerFSM::s4_on_event(FSMEvent* pEvt)
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("s4 evt (%d,%d)", pEvt->iEvt, pEvt->param1));
 
 	switch(pEvt->iEvt){
-		case USER_EVT_READ_NEW:
+		case USER_EVT_READ:
 			{
 				CardReadEvent* crne = dynamic_cast<CardReadEvent*>(pEvt);
 				ReadTask* task = new ReadTask(this);
@@ -571,56 +513,6 @@ unsigned int CCardIssuerFSM::s4_on_event(FSMEvent* pEvt)
 				pEvt->SetHandled();
 				return 0;
 			}
-		case USER_EVT_GET_MATERIAL:
-		{
-			pEvt->SetHandled();
-			GetMaterialEvent *pGME = dynamic_cast<GetMaterialEvent*>(pEvt);
-			pGME->ctx->Ans.captured = m_CardCaptured;
-			pGME->ctx->Ans.remains = m_remainsEx[0];
-			pGME->ctx->Ans.issued = m_issuedEx[0];
-			pGME->ctx->Ans.mixed = m_mixedEx[0];
-			pGME->ctx->Answer(Error_Succeed);
-		}
-			break;
-		case USER_EVT_SET_MATERIAL:
-		{
-				m_bSettingMaterial = true;
-				pEvt->SetHandled();
-				bool bR, bC, bI, bM;
-				bR = bC = bI = bM = true;
-				SetMaterialEvent *pSME = dynamic_cast<SetMaterialEvent*>(pEvt);
-				if (pSME->ctx->Req.bRemains)
-				{
-					m_CardInitEx[0] = m_remainsEx[0] = pSME->ctx->Req.remains;
-					bR = SetCardRemains(pSME->ctx->Req.remains, 1, true);
-				}
-				if (pSME->ctx->Req.bCaptured)
-				{
-					m_CardCaptured = pSME->ctx->Req.captured;
-					bC = SetCardCaptured(pSME->ctx->Req.captured);
-				}
-				if (pSME->ctx->Req.bIssued)
-				{
-					m_issuedEx[0] = pSME->ctx->Req.issued;
-					bI = SetCardIssued(pSME->ctx->Req.issued, 1);
-				}
-				if (pSME->ctx->Req.bMixed)
-				{
-					m_mixedEx[0] = pSME->ctx->Req.mixed;
-					bM = SetCardMixed(pSME->ctx->Req.mixed, 1);
-				}
-				if (bR && bC && bI && bM)
-					pSME->ctx->Answer(Error_Succeed);
-				else
-				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("set material failed.r(%d),c(%d),i(%d),m(%d)", bR, bC, bI, bM);
-					pSME->ctx->Answer(Error_Unexpect);
-				}
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("case USER_EVT_SET_MATERIAL, bRemains:%d, bCaptured:%d, bIssued:%d, bMixed:%d, bR:%d, bC:%d, bI:%d, bM:%d",
-					pSME->ctx->Req.bRemains, pSME->ctx->Req.bCaptured, pSME->ctx->Req.bIssued, pSME->ctx->Req.bMixed, bR, bC, bI, bM);
-				m_bSettingMaterial = false;
-		}
-			break;
 		case USER_EVT_GET_MATERIAL_EX:
 		{
 			pEvt->SetHandled();
@@ -807,7 +699,7 @@ unsigned int CCardIssuerFSM::s5_on_event(FSMEvent* pEvt)
 	int ret = 0;
 	switch(pEvt->iEvt)
 	{
-	case USER_EVT_READ_NEW_FINISHED:
+	case USER_EVT_READ_FINISHED:
 		{
 			pEvt->SetHandled();
 			CardReadFinishedEvent *pCRNFE = dynamic_cast<CardReadFinishedEvent *>(pEvt);
@@ -823,7 +715,7 @@ unsigned int CCardIssuerFSM::s5_on_event(FSMEvent* pEvt)
 			else
 			{
 				SetErrPackage("Read finished", m_csDevSN, Error_Unexpect, MEC_DEVAPI_CARDISSUER_GetDevStatus);
-				pCRNFE->ctx->Answer(Error_Unexpect, AlarmDEC(true));
+				pCRNFE->ctx->Answer(Error_Unexpect, AlarmDEC(m_iInWhatPage == PageType_Other));
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220303").setResultCode("RTA2302")("读取IC数据失败");
 				ret = 1;
 			}
@@ -925,19 +817,6 @@ unsigned int CCardIssuerFSM::s7_on_event(FSMEvent* pEvt)
 		pEvt->SetHandled();
 		return 0;
 	}
-	case USER_EVT_GET_MATERIAL:
-	{
-		pEvt->SetHandled();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("captured:%d, remains:%d, issued:%d, mixed:%d",
-			m_CardCaptured, m_remainsEx[0], m_issuedEx[0], m_mixedEx[0]);
-		GetMaterialEvent* pGME = dynamic_cast<GetMaterialEvent*>(pEvt);
-		pGME->ctx->Ans.captured = m_CardCaptured;
-		pGME->ctx->Ans.remains = m_remainsEx[0];
-		pGME->ctx->Ans.issued = m_issuedEx[0];
-		pGME->ctx->Ans.mixed = m_mixedEx[0];
-		pGME->ctx->Answer(Error_Succeed);
-	}
-		break;
 	case USER_EVT_GET_MATERIAL_EX:
 	{
 		pEvt->SetHandled();
@@ -1266,31 +1145,6 @@ unsigned int CCardIssuerFSM::s14_on_event(FSMEvent* pEvt)
 	}
 	return ret;
 }
-//PreOnlineOnStore
-void CCardIssuerFSM::s16_on_entry()
-{
-	m_currentFSMState = 16;
-}
-void CCardIssuerFSM::s16_on_exit()
-{
-}
-unsigned int CCardIssuerFSM::s16_on_event(FSMEvent* pEvt)
-{
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("s16 evt (%d,%d)", pEvt->iEvt, pEvt->param1));
-	switch (pEvt->iEvt)
-	{
-		case USER_EVT_PREONLINE_ON_STORE_FINISHED:
-		{
-			pEvt->SetHandled();
-			return pEvt->param1;
-		}
-			break;
-		default:
-			break;
-	}
-	return 0;
-}
-
 
 ErrorCodeEnum CCardIssuerFSM::OnInit()
 {
@@ -1332,8 +1186,7 @@ ErrorCodeEnum CCardIssuerFSM::OnExit()
 		l_beginTime = GetTickCountRVC();
 		eExit = m_hDevHelper->GetDevStatus(m_devStatus);
 		l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetDevStatus", l_beginTime, l_endTime, eExit,
-				CSimpleStringA::Format("OnExit, m_devStatus.eMedia:%d, m_issueStatus:%d", m_devStatus.eMedia, m_issueStatus));
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("OnExit, m_devStatus.eMedia:%d, m_issueStatus:%d", m_devStatus.eMedia, m_issueStatus);
 		
 		if (eExit == Error_Succeed)
 		{
@@ -1356,9 +1209,9 @@ ErrorCodeEnum CCardIssuerFSM::OnExit()
 		eExit = m_hDevHelper->DevClose();
 		l_endTime = GetTickCountRVC();
 		if (eExit == Error_Succeed)
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DevClose", l_beginTime, l_endTime, eExit, CSimpleStringA::Format("OnExit,读卡器关闭成功"));
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("OnExit,读卡器关闭DevClose成功");
 		else
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DevClose", l_beginTime, l_endTime, eExit, CSimpleStringA::Format("OnExit,读卡器关闭失败"));
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("OnExit,读卡器关闭DevClose失败 eErr:%d", eExit);
 	}
 	FSMImpl<CCardIssuerFSM>::OnExit();
 	return Error_Succeed;
@@ -1407,7 +1260,7 @@ bool CCardIssuerFSM::GetDevStatus(bool bPrint)
 		errCode = m_hDevHelper->GetDevStatus(m_devStatus);
 		l_endTime = GetTickCountRVC();
 		if (bPrint)
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetDevStatus", l_beginTime, l_endTime, errCode,CSimpleStringA::Format("GetDevStatus, GetDevStatus::eMedia: %d", m_devStatus.eMedia));
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetDevStatus, GetDevStatus::eMedia: %d", m_devStatus.eMedia);
 		if (Error_Succeed == errCode) 
 		{
 			if (_strnicmp("RVC.CardPrinter", m_csMachineType, strlen("RVC.CardPrinter")) == 0)
@@ -1644,8 +1497,7 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 		long l_beginTime = GetTickCountRVC();
 		eErrDev = m_hDevHelper->DevOpenEx(m_port, m_baudRate, btOpenType, pDevSN, m_connectType);
 		long l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DevOpenEx", l_beginTime, l_endTime, eErrDev,
-			CSimpleStringA::Format("OpenDevice, openType:%d, connectType:%d", btOpenType, m_connectType));
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("OpenDevice, openType:%d, connectType:%d", btOpenType, m_connectType);
 
 		if (eErrDev == Error_Succeed)
 		{
@@ -1661,9 +1513,8 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 			{
 				CSimpleStringA tmpVersion = CSimpleStringA::Format("%d.%d.%d.%d", m_devCat.version.wMajor, m_devCat.version.wMinor, m_devCat.version.wRevision, m_devCat.version.wBuild);
 				int ret = SplitDevModelInfo();
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetDevCategory", l_beginTime, l_endTime, eErrDev,
-					CSimpleStringA::Format("OpenDevice, szVendor:%s, szType:%s, szModel:%s, version:%s, ret:%d",
-						m_devCat.szVendor, m_devCat.szType, m_devCat.szVendor, tmpVersion.GetData(), ret));
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("OpenDevice, szVendor:%s, szType:%s, szModel:%s, version:%s, ret:%d",
+						m_devCat.szVendor, m_devCat.szType, m_devCat.szVendor, tmpVersion.GetData(), ret);
 				m_adapterInfo.FulfillCategoryInfo(m_devCat);
 			}
 			else
@@ -1835,7 +1686,7 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 		}
 		else
 		{
-			LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_Open_Failed, "读卡器打开失败");
+			LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_Open_Failed, "启动后检查卡机状态失败");
 			return Error_Unexpect;
 		}
 	}
@@ -1894,7 +1745,9 @@ int CCardIssuerFSM::UnAcceptCard()
 	CSimpleStringA errMsg(true);
 	if (GetDevStatus())
 	{
-		if (m_devStatus.eMedia == CI_MEDIA_PRESENT)
+		switch (m_devStatus.eMedia)
+		{
+		case CI_MEDIA_PRESENT:
 		{
 			m_hasCardWhileDevOpen = true;
 			JustReadCardNo();
@@ -1917,23 +1770,30 @@ int CCardIssuerFSM::UnAcceptCard()
 			LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_CaptureCard_EntityOnStart, errMsg.GetData());
 			return CaptureCard(NULL);
 		}
-		else
-		{
-			long l_beginTime, l_endTime;
-			l_beginTime = GetTickCountRVC();
-			eErr = m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN);
-			l_endTime = GetTickCountRVC();
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SetCardInType", l_beginTime, l_endTime, eErr, "UnAcceptCard, CI_CARD_IN_TYPE_FORBIDDEN");
-
-			if (Error_Succeed != eErr){
-				SetErrPackage("UnAcceptCard::SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN)", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SetCardInType);
-				AlarmDEC();
-			} 
-			if (GetDevStatus())
-				return 0;
-			else
-				return 1;
+		case CI_MEDIA_JAMMED:
+		case CI_MEDIA_ENTERING:
+			LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_CardPosUnexpectedOnDevOpen, CSimpleStringA::Format("Unexpected CardStatusEnum:%d", m_devStatus.eMedia));
+			break;
+		case CI_MEDIA_NOTPRESENT:
+			return 0;
+		default:
+			break;
 		}
+
+		//oilyang@20230612 delete the following lines,as no need to GetDevStatus twice
+		//long l_beginTime, l_endTime;
+		//l_beginTime = GetTickCountRVC();
+		//eErr = m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN);
+		//l_endTime = GetTickCountRVC();
+
+		//if (Error_Succeed != eErr){
+		//	SetErrPackage("UnAcceptCard::SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN)", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SetCardInType);
+		//	AlarmDEC();
+		//} 
+		//if (GetDevStatus())
+		//	return 0;
+		//else
+		//	return 1;
 	}
 	else
 	{
@@ -2072,7 +1932,6 @@ int CCardIssuerFSM::IssueCard(SpReqAnsContext<CardIssuerService_Issue_Req, CardI
 	l_beginTime = GetTickCountRVC();
 	errCode = m_hDevHelper->GetDevStatus(cis);
 	l_endTime = GetTickCountRVC();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetDevStatus", l_beginTime, l_endTime, errCode, "IssueCard");
 
 	if (errCode != Error_Succeed) {
 		SetErrPackage("IssueCard::GetDevStatus", m_csDevSN, errCode, MEC_DEVAPI_CARDISSUER_GetDevStatus);
@@ -2168,7 +2027,6 @@ int CCardIssuerFSM::IssueCard(SpReqAnsContext<CardIssuerService_Issue_Req, CardI
 	l_beginTime = GetTickCountRVC();
 	errCode = m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN);
 	l_beginTime = GetTickCountRVC();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SetCardInType",l_beginTime, l_endTime, errCode, "IssueCard, CI_CARD_IN_TYPE_FORBIDDEN");
 
 	if (errCode != Error_Succeed)
 	{
@@ -2182,7 +2040,7 @@ int CCardIssuerFSM::IssueCard(SpReqAnsContext<CardIssuerService_Issue_Req, CardI
 	l_beginTime = GetTickCountRVC();
 	errCode = m_hDevHelper->MoveCard(CI_MOVECARD_FROM_HOPPER, m_currentHopper);
 	l_endTime = GetTickCountRVC();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MoveCard", l_beginTime, l_endTime, errCode, CSimpleStringA::Format("IssuerCard, m_currentHopper:%d", m_currentHopper));
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("IssuerCard, m_currentHopper:%d", m_currentHopper);
 	m_bCardFromHopper = true;
 	if (errCode != Error_Succeed)
 	{
@@ -2190,12 +2048,12 @@ int CCardIssuerFSM::IssueCard(SpReqAnsContext<CardIssuerService_Issue_Req, CardI
 		SetErrPackage("IssueCard::MoveCard", m_csDevSN, errCode, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_FROM_HOPPER);
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040220320").setResultCode("RTA2306")("从卡箱移动卡片到读卡器失败,请重试或检查是否有塞卡");
 		if (ctx != NULL)
-			ctx->Answer(Error_Unexpect, AlarmDEC(true));
+			ctx->Answer(Error_Unexpect, AlarmDEC(m_iInWhatPage == PageType_Other));
 		else
-			ctxEx->Answer(Error_Unexpect, AlarmDEC(true));
+			ctxEx->Answer(Error_Unexpect, AlarmDEC(m_iInWhatPage == PageType_Other));
 		return 1;
 	}
-
+	LogWarn(Severity_Low, Error_Succeed, CardIssuer_UserErrorCode_MoveCard_FromHopper, "MoveCard from hopper suc.");
 	m_issuedEx[m_currentHopper - 1]++;
 	m_remainsEx[m_currentHopper - 1]--;
 	//oilyang@20180809 增加对单卡槽多卡槽机器的使用及闲置的适配
@@ -2281,7 +2139,6 @@ int CCardIssuerFSM::CaptureCard(SpReqAnsContext<CardIssuerService_Capture_Req,Ca
 		l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN);
 		l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SetCardInType", l_beginTime, l_endTime, eErr, "CaptureCard, CI_CARD_IN_TYPE_FORBIDDEN");
 
 		if (eErr != Error_Succeed) {
 			SetErrPackage("CaptureCard::SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN)", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SetCardInType);
@@ -2292,7 +2149,10 @@ int CCardIssuerFSM::CaptureCard(SpReqAnsContext<CardIssuerService_Capture_Req,Ca
 	}
 	else {
 		if (ctx != NULL){
-			LogError(Severity_Middle, Error_Unexpect, 0x20300034, "CaptureCard failed");
+			if (m_iInWhatPage == PageType_Other)
+				LogError(Severity_Middle, Error_Unexpect, 0x20300034, "CaptureCard failed");
+			else
+				LogWarn(Severity_Middle, Error_Unexpect, 0x20300034, "CaptureCard failed");
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220304").setResultCode("RTA2307")("吞卡失败,请检查吞卡箱是否已满或联系厂商检查是否有吞卡");
 			ctx->Answer(Error_Unexpect, 0x20300034);
 		}
@@ -2308,7 +2168,7 @@ int CCardIssuerFSM::EjectCard(SpReqAnsContext<CardIssuerService_Eject_Req,CardIs
 	Sleep(300);//oilyang@20230106 for keba said "maybe we need stay for machine to prepare..."
 	int ret = 0;
 	ErrorCodeEnum eErr;
-	eErr = MachineMoveCardFrontGate(ctx != NULL);
+	eErr = MachineMoveCardFrontGate(ctx != NULL && m_iInWhatPage == PageType_Other);
 	m_pCardProcess->DataInit();
 	if (Error_Succeed == eErr){
 		if (ctx != NULL)
@@ -2343,7 +2203,6 @@ int CCardIssuerFSM::WaitFetchingCard()
 				l_beginTime = GetTickCountRVC();
 				ErrorCodeEnum eErr = m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN);
 				l_endTime = GetTickCountRVC();
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SetCardInType", l_beginTime, l_endTime, eErr, "WaitFetchingCard,card fetched,to set CI_CARD_IN_TYPE_FORBIDDEN");
 
 				if (eErr != Error_Succeed) {
 					SetErrPackage("WaitFetchingCard::SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN)", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SetCardInType);
@@ -2402,12 +2261,18 @@ int CCardIssuerFSM::InternalAcceptCard()
 			{
 				acceptTries++;
 				Sleep(ACCEPT_TRY_INTERVAL);
+				//oilyang@20230609 after sleep,to check if have been canceled in sleeping time
+				if (m_bCancelAccept)
+				{
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("have been canceled in sleeping time");
+					err = 3;
+					goto Err;
+				}
 				//hr = m_pIDCard->IDC_Accept(IDC_ALL_CARD,&lpCardData);
 				if (!m_bCancelAccept && !bHasSetCardInType) {
 					l_beginTime = GetTickCountRVC();
 					eErr = m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_ALL);
 					l_endTime = GetTickCountRVC();
-					//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SetCardInType", l_beginTime, l_endTime, eErr, "InternalAcceptCard, CI_CARD_IN_TYPE_ALL");
 				}
 				if (Error_Succeed != eErr) {
 					SetErrPackage("InternalAcceptCard::SetCardInType(CI_CARD_IN_TYPE_ALL)", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SetCardInType);
@@ -2432,7 +2297,6 @@ Err:
 	l_beginTime = GetTickCountRVC();
 	eErr = m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN);
 	l_endTime = GetTickCountRVC();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SetCardInType", l_beginTime, l_endTime, eErr, "InternalAcceptCard, CI_CARD_IN_TYPE_FORBIDDEN");
 
 	if (Error_Succeed != eErr)
 	{
@@ -2451,13 +2315,12 @@ Err:
 			{
 				err = 4;
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<InternalAcceptCard>, Cancel InterAccept, eject card.");
-				eErr = MachineMoveCardFrontGate(true);
+				eErr = MachineMoveCardFrontGate(m_iInWhatPage == PageType_Other);
 
 				if (Error_Succeed == eErr) {
 					l_beginTime = GetTickCountRVC();
 					eErr = m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN);
 					l_endTime = GetTickCountRVC();
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("InternalAcceptCard, SetCardInType", l_beginTime, l_endTime, eErr, "CI_CARD_IN_TYPE_FORBIDDEN");
 
 					if (eErr != Error_Succeed) {
 						SetErrPackage("InternalAcceptCard::SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN)", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SetCardInType);
@@ -2492,7 +2355,8 @@ int CCardIssuerFSM::AcceptCard(SpReqAnsContext<CardIssuerService_Insert_Req, Car
 		m_bCardFromHopper = false;
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("AcceptCard, insert succeed");
+			LogWarn(Severity_Low, Error_Succeed, CardIssuer_UserErrorCode_InsertCardSucceed, "AcceptCard, insert succeed");
+			
 			m_bUseRFTillNext = false;
 			ctx->Answer(Error_Succeed);
 		}
@@ -2515,7 +2379,7 @@ int CCardIssuerFSM::AcceptCard(SpReqAnsContext<CardIssuerService_Insert_Req, Car
 	{
 		if (ctx != NULL){
 			SetErrPackage("AcceptCard::InternalAcceptCard", m_csDevSN, Error_Unexpect, MEC_DEVAPI_CARDISSUER_GetDevStatus);
-			ctx->Answer(Error_Unexpect, AlarmDEC(true));
+			ctx->Answer(Error_Unexpect, AlarmDEC(m_iInWhatPage == PageType_Other));
 		}
 	}
 	return rc;
@@ -2621,8 +2485,8 @@ int CCardIssuerFSM::ReadCard_Contact(SpReqAnsContext<CardIssuerService_Read_Req,
 		l_beginTime = GetTickCountRVC();
 		eMagReadErr = m_hDevHelper->MagRead(magTracks);
 		l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MagRead", l_beginTime, l_endTime, eMagReadErr, CSimpleString::Format("t2Status:%d, t3Status:%d, t2Len:%d, t3Len:%d",
-			magTracks.track[1].eStatus, magTracks.track[2].eStatus, magTracks.track[1].dwSize, magTracks.track[2].dwSize));
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MagRead t2Status:%d, t3Status:%d, t2Len:%d, t3Len:%d",
+			magTracks.track[1].eStatus, magTracks.track[2].eStatus, magTracks.track[1].dwSize, magTracks.track[2].dwSize);
 		//oilyang@20230204 copy mag data for RF
 		m_magTracks.eRange = magTracks.eRange;
 		for (int i = 0; i < 3; ++i)
@@ -2814,7 +2678,6 @@ int CCardIssuerFSM::ReadCard_Contact(SpReqAnsContext<CardIssuerService_Read_Req,
 				l_beginTime = GetTickCountRVC();
 				eErr = m_hDevHelper->DeactivateICCard();
 				l_endTime = GetTickCountRVC();
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeactivateICCard", l_beginTime, l_endTime, eErr, "ReadCard");
 
 				if (eErr != Error_Succeed) {
 				SetErrPackage("ReadCard::DeactivateICCard", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard);
@@ -3050,7 +2913,6 @@ int CCardIssuerFSM::ReadCard_RF(SpReqAnsContext<CardIssuerService_Read_Req, Card
 				l_beginTime = GetTickCountRVC();
 				eErr = m_hDevHelper->DeactContactlessICCard();
 				l_endTime = GetTickCountRVC();
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeactContactlessICCard", l_beginTime, l_endTime, eErr, "ReadCard");
 
 				if (eErr != Error_Succeed) {
 					SetErrPackage("ReadCard::DeactContactlessICCard", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard);
@@ -3156,7 +3018,7 @@ int CCardIssuerFSM::PreOnline_Contact(SpReqAnsContext<CardIssuerService_PreOnlin
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220320").setResultCode("RTA230V")("发卡时,检测卡片类型时上电失败");
 				if (!IfUseRf())
 				{
-					if (!bCrossPreOnline)
+					if (!bCrossPreOnline && m_iInWhatPage == PageType_Other)
 						LogError(Severity_Middle, Error_Unexpect, 0x203002A1, "(IssueCard)PreOnline::DetectAndReadICData:DetectIfICCard");
 					else
 						LogWarn(Severity_Middle, Error_Unexpect, 0x203002A1, "(IssueCard)PreOnline::DetectAndReadICData:DetectIfICCard");
@@ -3168,7 +3030,7 @@ int CCardIssuerFSM::PreOnline_Contact(SpReqAnsContext<CardIssuerService_PreOnlin
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220303").setResultCode("RTA230M")("检测卡片类型时上电失败");
 				if (!IfUseRf())
 				{
-					if (!bCrossPreOnline)
+					if (!bCrossPreOnline && m_iInWhatPage == PageType_Other)
 						LogError(Severity_Middle, Error_Unexpect, 0x20300243, "PreOnline::DetectAndReadICData:DetectIfICCard");
 					else
 						LogWarn(Severity_Middle, Error_Unexpect, 0x20300243, "PreOnline::DetectAndReadICData:DetectIfICCard");
@@ -3184,7 +3046,7 @@ int CCardIssuerFSM::PreOnline_Contact(SpReqAnsContext<CardIssuerService_PreOnlin
 			if (!IfUseRf())
 			{
 				SetErrPackage(xCardName + " PreOnline::DetectAndReadICData:GetICDataFromCard(-2)", m_csDevSN, Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand);
-				ctx->Answer(Error_Unexpect, AlarmDEC(!bCrossPreOnline));
+				ctx->Answer(Error_Unexpect, AlarmDEC(!bCrossPreOnline && m_iInWhatPage == PageType_Other));
 			}
 		}else if (retDetectAndRead == -3){
 			if (m_issueStatus)
@@ -3194,7 +3056,7 @@ int CCardIssuerFSM::PreOnline_Contact(SpReqAnsContext<CardIssuerService_PreOnlin
 			if (!IfUseRf())
 			{
 				SetErrPackage(xCardName + " PreOnline::DetectAndReadICData:GetICDataFromCard(-3)", m_csDevSN, Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand);
-				ctx->Answer(Error_Unexpect, AlarmDEC(!bCrossPreOnline));
+				ctx->Answer(Error_Unexpect, AlarmDEC(!bCrossPreOnline && m_iInWhatPage == PageType_Other));
 			}
 		}
 		bICOK = false;
@@ -3461,13 +3323,19 @@ int CCardIssuerFSM::PreOnline_RF(SpReqAnsContext<CardIssuerService_PreOnline_Req
 			if (m_issueStatus)
 			{
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220320").setResultCode("RTA230V")("发卡时,检测卡片类型时上电失败");
-				LogError(Severity_Middle, Error_Unexpect, 0x203002A1, "(IssueCard)PreOnline_RF::DetectAndReadICData:DetectIfICCard");
+				if (m_iInWhatPage == PageType_Other)
+					LogError(Severity_Middle, Error_Unexpect, 0x203002A1, "(IssueCard)PreOnline_RF::DetectAndReadICData:DetectIfICCard");
+				else
+					LogWarn(Severity_Middle, Error_Unexpect, 0x203002A1, "(IssueCard)PreOnline_RF::DetectAndReadICData:DetectIfICCard");
 				ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed);
 			}
 			else
 			{
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220303").setResultCode("RTA230M")("检测卡片类型时上电失败");
-				LogError(Severity_Middle, Error_Unexpect, 0x20300243, "PreOnline_RF::DetectAndReadICData:DetectIfICCard");
+				if (m_iInWhatPage == PageType_Other)
+					LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, "PreOnline_RF::DetectAndReadICData:DetectIfICCard");
+				else
+					LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, "PreOnline_RF::DetectAndReadICData:DetectIfICCard");
 				ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_ActiveICCard_Failed);
 			}
 		}
@@ -3477,7 +3345,7 @@ int CCardIssuerFSM::PreOnline_RF(SpReqAnsContext<CardIssuerService_PreOnline_Req
 			else
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220303").setResultCode("RTA2302")("读取IC数据失败");
 			SetErrPackage(xCardName + " PreOnline::DetectAndReadICData:GetICDataFromCard(-2)", m_csDevSN, Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand);
-			ctx->Answer(Error_Unexpect, AlarmDEC(true));
+			ctx->Answer(Error_Unexpect, AlarmDEC(m_iInWhatPage == PageType_Other));
 		}
 		else if (retDetectAndRead == -3) {
 			if (m_issueStatus)
@@ -3485,7 +3353,7 @@ int CCardIssuerFSM::PreOnline_RF(SpReqAnsContext<CardIssuerService_PreOnline_Req
 			else
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220303").setResultCode("RTA2302")("读取IC数据失败");
 			SetErrPackage(xCardName + " PreOnline::DetectAndReadICData:GetICDataFromCard(-3)", m_csDevSN, Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand);
-			ctx->Answer(Error_Unexpect, AlarmDEC(true));
+			ctx->Answer(Error_Unexpect, AlarmDEC(m_iInWhatPage == PageType_Other));
 		}
 		return 0;
 	}
@@ -3765,13 +3633,12 @@ int CCardIssuerFSM::WriteCard(SpReqAnsContext<CardIssuerService_WriteTrack_Req,
 		long l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->MoveCard(CI_MOVECARD_MAG_POSITION);
 		long l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MoveCard", l_beginTime, l_endTime, eErr, "CI_MOVECARD_MAG_POSITION");
 
 		if (eErr != Error_Succeed)
 		{
 			SetErrPackage("WriteCard::MoveCard(CI_MOVECARD_MAG_POSITION)", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_MAG_POSITION);
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220315").setResultCode("RTA2309")("从卡箱移动卡片到磁条写卡位置失败");
-			ctx->Answer(Error_Unexpect, AlarmDEC(true));
+			ctx->Answer(Error_Unexpect, AlarmDEC(m_iInWhatPage == PageType_Other));
 			return ret;
 		}
 	}
@@ -3816,7 +3683,6 @@ int CCardIssuerFSM::WriteCard(SpReqAnsContext<CardIssuerService_WriteTrack_Req,
 	l_beginTime = GetTickCountRVC();
 	eErr = m_hDevHelper->MagWrite(magTrack, AUTO_CO);
 	l_endTime = GetTickCountRVC();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MagWrite", l_beginTime, l_endTime, eErr, "AUTO_CO");
 
 	if (eErr != Error_Succeed)
 	{
@@ -3824,7 +3690,7 @@ int CCardIssuerFSM::WriteCard(SpReqAnsContext<CardIssuerService_WriteTrack_Req,
 		AlarmDEC();
 		ret = 1;
 	}
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040220315")();
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040220315")("MagWrite ok");
 	ctx->Ans.result = ret;
 	ctx->Answer(Error_Succeed);
 	return ret;
@@ -4073,7 +3939,6 @@ ErrorCodeEnum CCardIssuerFSM::MachineMoveCardBackNotHold()
 	long l_beginTime = GetTickCountRVC();
 	ErrorCodeEnum eMoveNotHold = m_hDevHelper->MoveCard(CI_MOVECARD_BACK_NOT_HOLD);
 	long l_endTime = GetTickCountRVC();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MoveCard", l_beginTime, l_endTime, eMoveNotHold, CSimpleStringA::Format("<MachineMoveCardBackNotHold>, param:%d", CI_MOVECARD_BACK_NOT_HOLD));
 	
 	//2016-11-10 14:30:54 joseph
 	if (eMoveNotHold != Error_Succeed)
@@ -4090,7 +3955,6 @@ ErrorCodeEnum CCardIssuerFSM::MachineMoveCardFrontGate(bool bInBussiness)
 	long l_beginTime = GetTickCountRVC();
 	ErrorCodeEnum eMoveFrontGate = m_hDevHelper->MoveCard(CI_MOVECARD_FRONT_GATE);
 	long l_endTime = GetTickCountRVC();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MoveCard", l_beginTime, l_endTime, eMoveFrontGate, CSimpleStringA::Format("MachineMoveCardFrontGate, param:%d", CI_MOVECARD_FRONT_GATE));
 
 	if (eMoveFrontGate != Error_Succeed){
 		if (m_bCardFromHopper)
@@ -4387,7 +4251,6 @@ bool CCardIssuerFSM::JustReadCardNo()
 		l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->DeactivateICCard();
 		l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeactivateICCard", l_beginTime, l_endTime, eErr, "JustReadCardNo");
 
 		if (eErr != Error_Succeed){
 			SetErrPackage("JustReadCardNo::DeactivateICCard", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard);
@@ -4397,7 +4260,6 @@ bool CCardIssuerFSM::JustReadCardNo()
 		l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->ReleaseIC();
 		l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ReleaseIC", l_beginTime, l_endTime, eErr, "JustReadCardNo");
 
 		if (eErr != Error_Succeed){
 			SetErrPackage("JustReadCardNo::ReleaseIC", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_ReleaseIC);
@@ -4414,9 +4276,9 @@ bool CCardIssuerFSM::JustReadCardNo()
 		l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->MagRead(magTracks);
 		l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MagRead", l_beginTime, l_endTime, eErr, CSimpleStringA::Format("JustReadCardNo, track[1].eStatus:%d, track[2].sStatus:%d, t2.dwSize:%d, t3.dwSize:%d, t2Len:%d, t3Len:%d",
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MagRead JustReadCardNo, track[1].eStatus:%d, track[2].sStatus:%d, t2.dwSize:%d, t3.dwSize:%d, t2Len:%d, t3Len:%d",
 				magTracks.track[1].eStatus, magTracks.track[2].eStatus, magTracks.track[1].dwSize, magTracks.track[2].dwSize,
-				strlen((const char*)magTracks.track[1].data), strlen((const char*)magTracks.track[2].data)));
+				strlen((const char*)magTracks.track[1].data), strlen((const char*)magTracks.track[2].data));
 
 		if (eErr == Error_Succeed)
 		{
@@ -4543,7 +4405,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_
 		l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->SAMSelect(ctx->Req.param1[0]);
 		l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SAMSelect", l_beginTime, l_endTime, eErr, CSimpleStringA::Format("req.param1:%d", ctx->Req.param1[0]));
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SAMSelect req.param1:%d", ctx->Req.param1[0]);
 
 		if(eErr) {
 			SetErrPackage("SAMICCommand::SAMSelect", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SAMSelect);
@@ -4554,7 +4416,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_
 		l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->SAMActive(ctx->Req.param1[0]);
 		l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SAMActive", l_beginTime, l_endTime, eErr, CSimpleStringA::Format("req.param1:%d", ctx->Req.param1[0]));
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SAMActive req.param1:%d", ctx->Req.param1[0]);
 
 		if(eErr) {
 			SetErrPackage("SAMICCommand::SAMActive", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SAMActive);
@@ -4565,7 +4427,6 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_
 		l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->SAMDeactivate();
 		l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SAMDeactivate", l_beginTime, l_endTime, eErr, "SAMICCommand_SAM_Deactivate");
 
 		if(eErr) {
 			SetErrPackage("SAMICCommand::SAMDeactivate", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SAMDeactivate);
@@ -4576,7 +4437,6 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_
 		l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->SAMWarmReset();
 		l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SAMWarmReset", l_beginTime, l_endTime, eErr, "SAMICCommand_SAM_WarmReset");
 
 		if(eErr) {
 			SetErrPackage("SAMICCommand::SAMWarmReset", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SAMWarmReset);
@@ -4589,7 +4449,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_
 		l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->SAMQueryStatus(samStatus);
 		l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SAMWarmReset", l_beginTime, l_endTime, eErr, CSimpleStringA::Format("isActive:%d, chosenOfSAM:%d", samStatus.isActive, samStatus.chosenOfSAM));
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SAMWarmReset isActive:%d, chosenOfSAM:%d", samStatus.isActive, samStatus.chosenOfSAM);
 
 		if (eErr == Error_Succeed)
 		{
@@ -4616,7 +4476,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_
 		l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->SAMCommand(sendBuf,recvBuf);
 		l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SAMCommand", l_beginTime, l_endTime, eErr, CSimpleStringA::Format("req.param2:%s, recvBuf.dwSize:%d", ctx->Req.param2[0].GetData(), recvBuf.dwSize));
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SAMCommand req.param2:%s, recvBuf.dwSize:%d", ctx->Req.param2[0].GetData(), recvBuf.dwSize);
 
 		if (eErr == Error_Succeed)
 		{
@@ -4643,7 +4503,6 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_
 		l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->ContactIC();
 		l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SAMCommand", l_beginTime, l_endTime, eErr, "SAMICCommand_IC_Active");
 
 		if (eErr == Error_Succeed)
 		{
@@ -4651,7 +4510,6 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_
 			l_beginTime =GetTickCountRVC();
 			eErr = m_hDevHelper->ActiveICCardATR(atrBuf);
 			l_beginTime =GetTickCountRVC();
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ActiveICCardATR", l_beginTime, l_endTime, eErr, "SAMICCommand_IC_Active");
 
 			if (eErr == Error_Succeed)
 			{
@@ -4694,7 +4552,6 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_
 			l_beginTime = GetTickCountRVC();
 			eErr = m_hDevHelper->DeactivateICCard();
 			l_endTime = GetTickCountRVC();
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeactivateICCard", l_beginTime, l_endTime, eErr, "SAMICCommand_IC_Deactivate");
 
 			if(eErr != Error_Stoped)
 			{
@@ -4721,7 +4578,6 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_
 		l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->ICCommand(sendBuf, recvBuf);
 		l_endTime = GetTickCountRVC();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ICCommand", l_beginTime, l_endTime, eErr, "SAMICCommand_IC_Command");
 
 		if(false)//oiltest@20201224 before deploy ,comment loging apdu content
 		{
@@ -4730,7 +4586,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_
 			{
 				ZeroMemory(pRet, MAX_IC_BUFFER_SIZE);
 				HexBuf2StrBuf(sendBuf.data, (char**)&pRet, size);
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("ICCommand return data, %s", (const char*)pRet));
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("ICCommand send data, %s", (const char*)pRet));
 				delete[] pRet;
 			}
 										
@@ -4748,6 +4604,10 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_
 				ctx->Ans.ret2.Init(1);
 				ctx->Ans.ret1[0] = recvBuf.dwSize * 2;
 				ctx->Ans.ret2[0] = pRet;
+				if (false)//oiltest before deploy ,comment loging apdu content
+				{
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ICCommand, recvBuf.data:%s", pRet);
+				}
 				delete[]pRet;
 			}
 		}
@@ -4847,7 +4707,6 @@ int CalcDelayFactor(int failedCount)
 	else
 		return 1 << (failedCount % 7);
 }
-
 void CCardIssuerFSM::GetVendorDllName(CSimpleStringA& strDevAdaptorPath)
 {
 	auto pEntity = GET_DEV_ENTITY_BASE_POINTER();
@@ -4959,119 +4818,6 @@ bool CCardIssuerFSM::ReadCardInfo(CSmartPointer<IConfigInfo> &cfgRun, CSimpleStr
 	return false;
 }
 
-int CCardIssuerFSM::PreOnlineOnStore(SpReqAnsContext<CardIssuerService_PreOnlineOnStore_Req, CardIssuerService_PreOnlineOnStore_Ans>::Pointer ctx)
-{
-	HeartBeatService_ClientBase *pHeartBeatClient = NULL;
-	ErrorCodeEnum eErr = Error_Unexpect;
-	CSimpleStringA errMsg(true);
-	pHeartBeatClient = new HeartBeatService_ClientBase(GetEntityBase());
-	if (pHeartBeatClient != NULL) {
-		eErr = pHeartBeatClient->Connect();
-		if (eErr != Error_Succeed) {
-			pHeartBeatClient->SafeDelete();
-			LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_PreOnline_Connect_Heatbeat_Failed, "connect heartbeat faile while preonline.");
-		}
-	}
-	else
-	{
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("pGuiConsoleClient is null?");
-		ctx->Answer(Error_Unexpect);
-		return 0;
-	}
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("<PreOnlineOnStore>, connect to heartbeat suc.");
-	m_crossStart = GetTickCountRVC();
-	if (eErr == Error_Succeed)
-	{
-		if (pHeartBeatClient != NULL)
-		{
-			m_crossCtx = ctx;
-			HeartBeatService_CardActive_Req req;
-			HeartBeatService_CardActive_Ans ans;
-			req.type = 0;
-			req.account = ctx->Req.account;
-			req.term = ctx->Req.termNo;
-			req.data = ctx->Req.businessData;
-			req.slot = ctx->Req.slot;
-
-			errMsg = CSimpleStringA::Format("<PreOnlineOnStore>, send CardActive, termNo:%s, slot:%d", req.term.GetData(), req.slot);
-			LogWarn(Severity_Low, Error_Unexpect, CardIssuer_UserErrorCode_PreOnline_Send_CardActive, errMsg.GetData());
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040220327")();
-
-			eErr = pHeartBeatClient->CardActive(req, ans, 60000);
-			if (eErr == Error_Succeed)
-			{
-				m_bCardActiveNotify = false;
-				WaitCardActiveTask* pTask = new WaitCardActiveTask(this);
-				GetEntityBase()->GetFunction()->PostThreadPoolTask(pTask);
-			}
-			else
-			{
-				errMsg = CSimpleStringA::Format("CardActive Result(termNo:%s, slot:%d):%d(0x%x)", req.term.GetData(), req.slot, eErr, eErr);
-				LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_PreOnline_Recv_CardActive, errMsg.GetData());
-			}
-
-			pHeartBeatClient->GetFunction()->CloseSession();
-			pHeartBeatClient = NULL;
-		}
-	}
-	return 0;
-}
-void CCardIssuerFSM::NotifyPreOnline(unsigned long errCode, unsigned long findCard, unsigned long cardPos, CSimpleStringA data)
-{
-	UINT64 crossEnd = GetTickCountRVC();
-	//? ? ? 为什么是110s,重试?从生产实际来看,在25s到40s之间,大部分在30s左右,需要和前端(65s)一致,改成60s oilyang@20221019
-	//in 110 second 
-	if (m_crossCtx != NULL)
-	{
-		if ((crossEnd - m_crossStart) < 60 * 1000)
-		{
-			m_bCardActiveNotify = true;
-			m_crossCtx->Ans.cardPos = cardPos;
-			m_crossCtx->Ans.findCard = findCard;
-			m_crossCtx->Ans.result = data;
-			CSimpleStringA outParam = CSimpleStringA::Format("NotifyPreOnline, cardPos:%d, findCard:%d, errCode:%d", cardPos, findCard, errCode);
-			LogWarn(Severity_Low, Error_Unexpect, CardIssuer_UserErrorCode_NotifyPreOnline_ParamInfo, outParam.GetData());
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)(CSimpleStringA::Format("<NotifyPreOnline>, notify result:%d, cardPos:%d, findCard:%d",errCode, cardPos, findCard));
-			if (errCode == Error_Duplication)//THE CardStore is issuing card
-			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220327").setResultCode("RTA230Q")("卡库正在使用中");
-				LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_CardActive_CardStore_Issuing, "卡库正在使用中");
-				m_crossCtx->Answer(Error_Duplication);
-			}
-			else if (errCode == Error_TimeOut)//CardStore process cost too long!
-			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220327").setResultCode("RTA230W")("跨机时卡库处理耗时过长");
-				LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_CardStore_Reply_TooLong, "跨机时卡库处理耗时过长");
-				m_crossCtx->Answer(Error_ReplyTimeOut);
-			}
-			else if (errCode == Error_NotExist)//heartbeat service can't find the dest terminal
-			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220327").setResultCode("RTA230Y")("跨机时卡库不在线");
-				LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_CardActive_CardStore_OffLine, "跨机时卡库不在线");
-				m_crossCtx->Answer(Error_DevNotAvailable);
-			}
-			else if (errCode == Error_DevNotAvailable)//CardStore maybe called by OTHER VTM
-			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220327").setResultCode("RTA2310")("卡库正在被其他VTM跨机调用");
-				LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_CardActive_CardStore_CallByOther, "卡库正在被其他VTM跨机调用");
-				m_crossCtx->Answer(Error_Duplication);
-			}
-			else if (errCode == Error_Hardware)//CardStore's CardIssuer in fault state
-			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220327").setResultCode("RTA2311")("卡库卡机未成功打开");
-				LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_CardActive_CardIssuer_InFaultState, "卡库卡机未成功打开");
-				m_crossCtx->Answer(Error_Hardware);
-			}
-			else
-				m_crossCtx->Answer((ErrorCodeEnum)errCode);
-		}else{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220327").setResultCode("RTA2312")("超时后,才收到卡库返回");
-			LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_NotifyPreonline_Wait_TooLong, "CardStore return after timeout.");
-		}
-		m_crossCtx = NULL;
-	}
-}
-
 void CCardIssuerFSM::DecodeTracksData(const char *track2, DWORD dwT2size, const char *track3, DWORD dwT3size, char *&magData, bool bT2OK, bool bT3OK)
 {
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<DecodeTracksData>, bT2OK:%d, bT3OK:%d, t2.size:%d(%d), t3.size:%d(%d)",
@@ -5141,27 +4887,6 @@ void CCardIssuerFSM::CloseAndClearDevObj(bool bCheckConnecting, bool bCloseOnly)
 	}
 }
 
-void CCardIssuerFSM::WaitCardActive()
-{
-	while (1)
-	{
-		if (m_bCardActiveNotify)
-			break;
-		UINT64 crossEnd = GetTickCountRVC();
-		if ((crossEnd - m_crossStart) < 60 * 1000)
-			Sleep(1000);
-		else {
-			if (m_crossCtx != NULL)
-			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220327").setResultCode("RTA230U")("跨机激活未收到返回,请确认卡库或服务是否正常");
-				m_crossCtx->Answer(Error_TimeOut, CardIssuer_UserErrorCode_CardActive_Service_NoReturn);
-				LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_CardActive_Service_NoReturn, "CardActive havn't return in 60s");
-				Dbg("oiltest record for SelfChecker test 1792 to kill CardIsser");
-				break;
-			}
-		}
-	}
-}
 int CCardIssuerFSM::JudgeCardType(CSimpleStringA cardno, bool& bMismatch)
 {
 	if (cardno.GetLength() < 8)

+ 20 - 98
Module/mod_cardissuer/CardIssuerFSM.h

@@ -32,10 +32,8 @@ enum EvtType
 	USER_EVT_ACCEPTFINISHED,
 	USER_EVT_ISSUE,
 	USER_EVT_ISSUE_FINISHED,
-	//USER_EVT_READ,
 	USER_EVT_EJECT,
 	USER_EVT_CAPTURE,
-	//USER_EVT_READFINISHED,
 	USER_EVT_EJECTFINISHED,
 	USER_EVT_WAITFINISHED,
 	USER_EVT_CAPTUREFINISHED,
@@ -47,10 +45,8 @@ enum EvtType
 	USER_EVT_RESET,
 	USER_EVT_RESETFINISHED,
 	USER_EVT_EXIT,
-	USER_EVT_GET_MATERIAL,
-	USER_EVT_SET_MATERIAL,
-	USER_EVT_READ_NEW,
-	USER_EVT_READ_NEW_FINISHED,
+	USER_EVT_READ,
+	USER_EVT_READ_FINISHED,
 	USER_EVT_WRITE,
 	USER_EVT_WRITE_FINISHED,
 	USER_EVT_GET_MATERIAL_EX,
@@ -60,8 +56,6 @@ enum EvtType
 	USER_EVT_SAM_IC,
 	USER_EVT_SAM_IC_FINISHED,
 	USER_EVT_BACK_TO_INIT,
-	USER_EVT_PREONLINE_ON_STORE,
-	USER_EVT_PREONLINE_ON_STORE_FINISHED,
 };
 enum SAMICCommandType
 {
@@ -170,7 +164,7 @@ public:
 class CardReadEvent : public FSMEvent
 {
 public:
-	CardReadEvent() : FSMEvent(USER_EVT_READ_NEW) {}
+	CardReadEvent() : FSMEvent(USER_EVT_READ) {}
 	~CardReadEvent() {}
 	SpReqAnsContext<CardIssuerService_Read_Req, CardIssuerService_Read_Ans>::Pointer ctx;
 	virtual void OnUnhandled()
@@ -187,7 +181,7 @@ private:
 class CardReadFinishedEvent : public FSMEvent
 {
 public:
-	CardReadFinishedEvent() : FSMEvent(USER_EVT_READ_NEW_FINISHED) {}
+	CardReadFinishedEvent() : FSMEvent(USER_EVT_READ_FINISHED) {}
 	~CardReadFinishedEvent() {}
 	SpReqAnsContext<CardIssuerService_Read_Req, CardIssuerService_Read_Ans>::Pointer ctx;
 	virtual void OnUnhandled()
@@ -273,35 +267,6 @@ public:
 protected:
 private:
 };
-class GetMaterialEvent : public FSMEvent
-{
-public:
-	GetMaterialEvent() : FSMEvent(USER_EVT_GET_MATERIAL){}
-	~GetMaterialEvent(){}
-	SpReqAnsContext<CardIssuerService_GetMaterialCount_Req,CardIssuerService_GetMaterialCount_Ans>::Pointer ctx;
-	virtual void OnUnhandled() 
-	{
-		if (ctx != NULL)
-			ctx->Answer(Error_InvalidState);
-	}
-protected:
-private:
-};
-
-class SetMaterialEvent : public FSMEvent
-{
-public:
-	SetMaterialEvent() : FSMEvent(USER_EVT_SET_MATERIAL){}
-	~SetMaterialEvent(){}
-	SpReqAnsContext<CardIssuerService_SetMaterialCount_Req,CardIssuerService_SetMaterialCount_Ans>::Pointer ctx;
-	virtual void OnUnhandled() 
-	{
-		if (ctx != NULL)
-			ctx->Answer(Error_InvalidState);
-	}
-protected:
-private:
-};
 class CardWriteEvent : public FSMEvent
 {
 public:
@@ -338,8 +303,8 @@ private:
 class GetMaterialExEvent : public FSMEvent
 {
 public:
-	GetMaterialExEvent() : FSMEvent(USER_EVT_GET_MATERIAL_EX){}
-	~GetMaterialExEvent(){}
+	GetMaterialExEvent() : FSMEvent(USER_EVT_GET_MATERIAL_EX) {}
+	~GetMaterialExEvent() {}
 	SpReqAnsContext<CardIssuerService_GetMaterialCountEx_Req, CardIssuerService_GetMaterialCountEx_Ans>::Pointer ctx;
 	virtual void OnUnhandled()
 	{
@@ -348,7 +313,7 @@ public:
 	}
 protected:
 private:
-}; 
+};
 class SetMaterialExEvent : public FSMEvent
 {
 public:
@@ -393,21 +358,7 @@ public:
 		}
 	}
 };
-class PreOnlineOnStoreEvent : public FSMEvent
-{
-public:
-	PreOnlineOnStoreEvent() : FSMEvent(USER_EVT_PREONLINE_ON_STORE){}
-	virtual ~PreOnlineOnStoreEvent(){}
-	SpReqAnsContext<CardIssuerService_PreOnlineOnStore_Req, CardIssuerService_PreOnlineOnStore_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("preonline on store unhandled");
-			ctx->Answer(Error_InvalidState);
-		}
-	}
-};
+
 typedef struct EacQueryByEac_X1 {
 	string xEacNbr;
 	string xCltNbr;
@@ -647,7 +598,7 @@ struct CRegistSwallowCardRet : CHTTPRet {
 class CCardIssuerFSM : public CCommDevFSM<CCardIssuerFSM, CardIssuerClass>
 {
 public:
-	enum {s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s14,s16};
+	enum {s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s14};
 	BEGIN_FSM_STATE(CCardIssuerFSM)
 		FSM_STATE_ENTRY(s0,"Init",s0_on_entry,s0_on_exit,s0_on_event)
 		FSM_STATE_ENTRY(s1,"Initializing",s1_on_entry,s1_on_exit,s1_on_event)
@@ -662,7 +613,6 @@ public:
 		FSM_STATE_ENTRY(s10,"Issuing",s10_on_entry,s10_on_exit,s10_on_event)
 		FSM_STATE_ENTRY(s11,"Writing",s11_on_entry,s11_on_exit,s11_on_event)
 		FSM_STATE_ENTRY(s14, "SAMIC", s14_on_entry, s14_on_exit, s14_on_event)
-		FSM_STATE_ENTRY(s16, "PreOnlineOnStore", s16_on_entry, s16_on_exit, s16_on_event)
 		END_FSM_STATE()
 
 	BEGIN_FSM_RULE(CCardIssuerFSM,s0)
@@ -678,14 +628,13 @@ public:
 		FSM_RULE_ENTRY(s2, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
 		FSM_RULE_ENTRY(s2,s10,USER_EVT_ISSUE,0)
 		FSM_RULE_ENTRY(s2, s10, USER_EVT_ISSUE_EX, 0)
-		FSM_RULE_ENTRY(s2, s16, USER_EVT_PREONLINE, 16)
 		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)
 		FSM_RULE_ENTRY(s3,s2,USER_EVT_ACCEPTFINISHED,3)
 		FSM_RULE_ENTRY(s3,s7,USER_EVT_ACCEPTFINISHED,4)
 		FSM_RULE_ENTRY(s3, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
-		FSM_RULE_ENTRY(s4,s5,USER_EVT_READ_NEW,0)
+		FSM_RULE_ENTRY(s4,s5,USER_EVT_READ,0)
 		FSM_RULE_ENTRY(s4,s6,USER_EVT_EJECT,0)
 		FSM_RULE_ENTRY(s4,s6,USER_EVT_EXIT,0)
 		FSM_RULE_ENTRY(s4,s8,USER_EVT_ACCEPT,0)
@@ -698,9 +647,9 @@ public:
 		FSM_RULE_ENTRY(s4, s6, USER_EVT_ISSUE_EX_FINISHED, 6)
 		FSM_RULE_ENTRY(s4, s5, USER_EVT_PREONLINE, 0)
 		FSM_RULE_ENTRY(s4, s5, USER_EVT_POSTONLINE, 0)
-		FSM_RULE_ENTRY(s5,s4,USER_EVT_READ_NEW_FINISHED,0)
-		FSM_RULE_ENTRY(s5,s9,USER_EVT_READ_NEW_FINISHED,1)
-		FSM_RULE_ENTRY(s5,s4,USER_EVT_READ_NEW_FINISHED,2)
+		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)
 		FSM_RULE_ENTRY(s5, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
 		FSM_RULE_ENTRY(s5, s4, USER_EVT_EXIT, 0)
 		FSM_RULE_ENTRY(s5, s4, USER_EVT_PREONLINEFINISHED, 0)
@@ -731,8 +680,7 @@ public:
 		FSM_RULE_ENTRY(s11,s4,USER_EVT_WRITE_FINISHED,0)
 		FSM_RULE_ENTRY(s11,s4,USER_EVT_WRITE_FINISHED,1)
 		FSM_RULE_ENTRY(s14, s4, USER_EVT_SAM_IC_FINISHED, 0)
-		FSM_RULE_ENTRY(s16, s2, USER_EVT_PREONLINE_ON_STORE, 0)
-		FSM_RULE_ENTRY(s16, s2, USER_EVT_PREONLINEFINISHED, 0)
+
 		
 	END_FSM_RULE()
 
@@ -744,7 +692,7 @@ public:
 	, m_captureReason(""), m_machineType(1), m_currentHopper(1), m_hopperNum(1)
 	, m_bSettingMaterial(false)	, m_addCardNo(""), m_addCardSerial(""), m_hasCardWhileDevOpen(false)
 	, m_bChannelOK(false), m_bCancelByRFIC(false), m_devOpenFailedCount(0)
-			, m_bInMainPage(false), m_EacQueryHost(""),m_eacQueryFlag(0), m_bUseCardnoMismatch(false), m_ICRetryTimes(1)
+			, m_iInWhatPage(PageType_Other), m_EacQueryHost(""),m_eacQueryFlag(0), m_bUseCardnoMismatch(false), m_ICRetryTimes(1)
 			, m_bCardFromHopper(true), m_bStopUseRF(false),m_rfVendorList(""), m_bUseRFTillNext(false), m_csMaterialUrl("")
 		{
 			HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x203);
@@ -799,9 +747,6 @@ public:
 	void s14_on_entry();
 	void s14_on_exit();
 	unsigned int s14_on_event(FSMEvent* event);
-	void s16_on_entry();
-	void s16_on_exit();
-	unsigned int s16_on_event(FSMEvent* event);
 	
 	void Load();
 	ErrorCodeEnum OpenDevice(BYTE btOpenType, const char *pDevSN);
@@ -861,8 +806,6 @@ public:
 
 	bool WriteCardInfo(CSmartPointer<IConfigInfo> &cfgRun, const char *acc, const char* serial, int slot, bool bClear = false, bool bHasCard = false);
 	bool ReadCardInfo(CSmartPointer<IConfigInfo> &cfgRun, CSimpleStringA &acc, CSimpleStringA &serial, int slot);
-	int PreOnlineOnStore(SpReqAnsContext<CardIssuerService_PreOnlineOnStore_Req, CardIssuerService_PreOnlineOnStore_Ans>::Pointer ctx);
-	void NotifyPreOnline(unsigned long errCode,unsigned long findCard, unsigned long cardPos, CSimpleStringA data);
 
 	void DecodeTracksData(const char *track2, DWORD dwT2size, const char *track3, DWORD dwT3size,char *&magData,bool bT2OK=true,bool bT3OK=true);
 	int GetFSMState()
@@ -882,7 +825,7 @@ public:
 	void CloseAndClearDevObj(bool bCheckConnecting = true, bool bCloseOnly = false);
 	bool GetDevInitFlag() { return m_bOpened; }
 
-	void SetMainPageFlag(bool bValue) { m_bInMainPage = bValue; }
+	void SetInWhatPage(int bValue) { m_iInWhatPage = bValue; }
 	void WaitCardActive();
 	static void HttpsLogCallBack(const char* logtxt);
 	int JudgeCardType(CSimpleStringA cardno, bool &bMismatch);
@@ -899,12 +842,12 @@ private:
 	lpCMBdecodeEx cmdDecodeEx;	
 	bool m_bCancelAccept, m_bWaitingAccept, m_bWaitAccepteMore, m_bExit
 		, m_bCDA, m_bIssuingExit, m_bCardIssued, m_bHasHopper[HOPPER_NUM]
-		, m_bSettingMaterial, m_hasCardWhileDevOpen, m_bChannelOK, m_bCancelByRFIC, m_bInMainPage
+		, m_bSettingMaterial, m_hasCardWhileDevOpen, m_bChannelOK, m_bCancelByRFIC
 		, m_bCardActiveNotify, m_bCardFromHopper, m_bUseCardnoMismatch, m_bStopUseRF;
 	bool m_bUseRFTillNext;//if ReadCard by RF,the following PreOnline & PostOnline always use RF till the next card(insert/issue)
 	ErrorCodeEnum m_testResult;
 
-	int m_CardCaptured;
+	int m_CardCaptured,m_iInWhatPage/*在哪个页面,区分首页,用户桌面,其他页*/;
 	int m_issueStatusFromFile, m_issueStatus/*the status maybe changed by Business call*/;
 	//1:default, 2:SCI, 3:no cfg
 	int m_machineType;
@@ -928,8 +871,6 @@ private:
 		,m_csCM, m_rfVendorList, m_csDevSN;
 	char m_AuthCode[2];
 	vector<CMBBin> m_vBin;
-	SpReqAnsContext<CardIssuerService_PreOnlineOnStore_Req, CardIssuerService_PreOnlineOnStore_Ans>::Pointer m_crossCtx;
-	UINT64 m_crossStart;
 	int SplitTrack2(CSimpleStringA pTrack2,Track2Data &decodeData);
 	bool JustReadCardNo();
 	bool IsValidCardNo(const char*,int);
@@ -1111,27 +1052,8 @@ struct SAMICCommandTask : public ITaskSp
 		fsm->PostEventFIFO(e);
 	}
 };
-struct PreOnlineOnStoreTask : public ITaskSp
-{
-	CCardIssuerFSM* fsm;
-	SpReqAnsContext<CardIssuerService_PreOnlineOnStore_Req, CardIssuerService_PreOnlineOnStore_Ans>::Pointer ctx;
-	PreOnlineOnStoreTask(CCardIssuerFSM* f) : fsm(f) {}
-	void Process()
-	{
-		FSMEvent *e = new FSMEvent(USER_EVT_PREONLINE_ON_STORE_FINISHED);
-		e->param1 = fsm->PreOnlineOnStore(ctx);
-		fsm->PostEventFIFO(e);
-	}
-};
-struct WaitCardActiveTask : public ITaskSp
-{
-	CCardIssuerFSM* fsm;
-	WaitCardActiveTask(CCardIssuerFSM* f) : fsm(f) {}
-	void Process()
-	{
-		fsm->WaitCardActive();
-	}
-};
+
+
 struct RegistCaptureCardInfoTask : public ITaskSp
 {
 	CCardIssuerFSM* fsm;

+ 25 - 3
Module/mod_cardissuer/CardIssuer_UserErrorCode.h

@@ -6,7 +6,7 @@
 
 #define CardIssuer_UserErrorCode_No_Encryted_Channel				(CardIssuer_UserErrorCode_Start + 1)	//未建立安全通道
 #define CardIssuer_UserErrorCode_Open_RunCfgFile_Failed				(CardIssuer_UserErrorCode_Start + 2)	//打开运行时配置失败
-//#define CardIssuer_UserErrorCode_Hopper_Mixed_Too_Much				(CardIssuer_UserErrorCode_Start + 3)	//后面错误码细化了卡箱1,2,3
+#define CardIssuer_UserErrorCode_EntityInFailState					(CardIssuer_UserErrorCode_Start + 3)	//卡机处于故障态,请稍后重试,重试还有问题请联系厂商维护
 #define CardIssuer_UserErrorCode_NotHas_Hopper1						(CardIssuer_UserErrorCode_Start + 4)	//未检测到卡箱1,请确认卡箱1是否有卡箱
 #define CardIssuer_UserErrorCode_NotHas_Hopper2						(CardIssuer_UserErrorCode_Start + 5)	//未检测到卡箱2,请确认卡箱2是否有卡箱
 #define CardIssuer_UserErrorCode_NotHas_Hopper3						(CardIssuer_UserErrorCode_Start + 6)	//未检测到卡箱3,请确认卡箱3是否有卡箱
@@ -16,7 +16,7 @@
 #define CardIssuer_UserErrorCode_NoCardRemains_Hopper1				(CardIssuer_UserErrorCode_Start + 10)	//卡箱1剩余卡片计数为0(空)
 #define CardIssuer_UserErrorCode_NoCardRemains_Hopper2				(CardIssuer_UserErrorCode_Start + 11)	//卡箱2剩余卡片计数为0(空)
 #define CardIssuer_UserErrorCode_NoCardRemains_Hopper3				(CardIssuer_UserErrorCode_Start + 12)	//卡箱3剩余卡片计数为0(空)
-//#define CardIssuer_UserErrorCode_CaptureCard_Failed					(CardIssuer_UserErrorCode_Start + 13)	//吞卡失败
+#define CardIssuer_UserErrorCode_MoveCard_FromHopper				(CardIssuer_UserErrorCode_Start + 13)	//卡片从卡箱移到读卡器
 #define CardIssuer_UserErrorCode_MoveCardToGate_Failed				(CardIssuer_UserErrorCode_Start + 14)	//前端进卡,吐卡失败
 #define CardIssuer_UserErrorCode_KakuFindEmptySlot_Failed			(CardIssuer_UserErrorCode_Start + 15)	//卡库找不到空闲卡槽
 #define CardIssuer_UserErrorCode_KakuHaveOldPanKuRecord				(CardIssuer_UserErrorCode_Start + 16)	//卡库有旧的盘库记录
@@ -47,6 +47,12 @@
 #define CardIssuer_UserErrorCode_CaptureCard_IdleExit				(CardIssuer_UserErrorCode_Start + 39) //Idle空闲状态处理Exit事件时吞卡
 #define CardIssuer_UserErrorCode_CaptureCard_FromBusiness			(CardIssuer_UserErrorCode_Start + 40) //业务主动发起调用CaptureCard
 
+#define CardIssuer_UserErrorCode_EntityInStateCannotProcess			(CardIssuer_UserErrorCode_Start + 41) //卡机当前状态无法处理此请求
+#define CardIssuer_UserErrorCode_MoveCardToSlot						(CardIssuer_UserErrorCode_Start + 42) //卡片移到卡槽
+#define CardIssuer_UserErrorCode_MoveCardFromSlot					(CardIssuer_UserErrorCode_Start + 43) //卡槽移到卡机
+#define CardIssuer_UserErrorCode_PrintCardFaceRightNow				(CardIssuer_UserErrorCode_Start + 44) //卡面打印
+#define CardIssuer_UserErrorCode_InsertCardSucceed					(CardIssuer_UserErrorCode_Start + 45) //前端插卡
+
 
 #define CardIssuer_UserErrorCode_CardStore_SlotNum					(CardIssuer_UserErrorCode_Start + 49) //记录卡库容量
 #define CardIssuer_UserErrorCode_Invoke_Access_IniDev_Failed		(CardIssuer_UserErrorCode_Start + 50) //建立加密通道时,调用准入接口失败
@@ -104,6 +110,7 @@
 #define CardIssuer_UserErrorCode_CaptureCard_ByTerminal				(CardIssuer_UserErrorCode_Start + 87)	//终端自行调用吞卡
 #define CardIssuer_UserErrorCode_EjectCard_ByTerminal				(CardIssuer_UserErrorCode_Start + 88)	//终端自行调用吐卡
 #define CardIssuer_UserErrorCode_CaptureCard_EntityOnStart			(CardIssuer_UserErrorCode_Start + 89)	//实体启动时发现有卡,终端自行调用吞卡
+#define CardIssuer_UserErrorCode_CardPosUnexpectedOnDevOpen			(CardIssuer_UserErrorCode_Start + 90)	//实体启动时卡片位置异常
 
 
 //读卡过程
@@ -179,4 +186,19 @@
 #define CardIssuer_UserErrorCode_CardActive_CardStore_CallByOther	(CardIssuer_UserErrorCode_Start + 168)	//跨机时卡库正在其他VTM调用
 #define CardIssuer_UserErrorCode_ReadAccount_Cost_Time				(CardIssuer_UserErrorCode_Start + 169)	//ReadAccount耗时
 #define CardIssuer_UserErrorCode_CardActive_CardIssuer_InFaultState	(CardIssuer_UserErrorCode_Start + 170)	//卡库收到跨机请求时卡机未成功打开
-#endif //_CARDISSUER_USER_ERRORCODE_H
+#define CardIssuer_UserErrorCode_Account_NotMatchWithReadAccount	(CardIssuer_UserErrorCode_Start + 171)	//传入卡号与实际读到的不一致
+
+//***此段枚举值不可变动,涉及到业务逻辑***	卡库API细化后新增的错误码,也用于前端展示对应话术
+#define CardIssuer_UserErrorCode_Dev_HopperHasNoCard		(CardIssuer_UserErrorCode_Start + 180) //卡箱无卡
+#define CardIssuer_UserErrorCode_Dev_HopperMissing			(CardIssuer_UserErrorCode_Start + 181)//发卡箱缺失
+#define CardIssuer_UserErrorCode_Dev_TransCarJammed			(CardIssuer_UserErrorCode_Start + 182)//传输小车堵塞
+#define CardIssuer_UserErrorCode_Dev_RetainBinFull			(CardIssuer_UserErrorCode_Start + 183)//回收箱满
+#define CardIssuer_UserErrorCode_Dev_RetainBinMissing		(CardIssuer_UserErrorCode_Start + 184)//回收箱缺失
+#define CardIssuer_UserErrorCode_Dev_CardInReader			(CardIssuer_UserErrorCode_Start + 185)//读卡器内有卡
+#define CardIssuer_UserErrorCode_Dev_SlotHasNoCard			(CardIssuer_UserErrorCode_Start + 186)//卡槽内无卡
+#define CardIssuer_UserErrorCode_Dev_CardInSlot				(CardIssuer_UserErrorCode_Start + 187)//卡槽内有卡
+#define CardIssuer_UserErrorCode_Dev_NoCardInReader			(CardIssuer_UserErrorCode_Start + 188)//读卡器内无卡
+#define CardIssuer_UserErrorCode_Dev_CardJammed				(CardIssuer_UserErrorCode_Start + 189)//塞卡
+#define CardIssuer_UserErrorCode_Dev_SlotJammed				(CardIssuer_UserErrorCode_Start + 190)//卡槽堵塞
+#define CardIssuer_UserErrorCode_Dev_SlotInvalid			(CardIssuer_UserErrorCode_Start + 191)//卡槽地址非法(越界等)
+//#endif //_CARDISSUER_USER_ERRORCODE_H

+ 23 - 94
Module/mod_cardissuer/mod_cardissuer.cpp

@@ -13,186 +13,117 @@
 void CardIssuerServerSession::Handle_Insert(SpReqAnsContext<CardIssuerService_Insert_Req, CardIssuerService_Insert_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Insert")("Invoke Insert");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Insert")("Insert");
 	m_pEntity->Insert(ctx);
 }
 void CardIssuerServerSession::Handle_Read(SpReqAnsContext<CardIssuerService_Read_Req, CardIssuerService_Read_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Read")("Invoke Read");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Read")("Read");
 	m_pEntity->Read(ctx);
 }
 
 void CardIssuerServerSession::Handle_Capture(SpReqAnsContext<CardIssuerService_Capture_Req, CardIssuerService_Capture_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Capture")("Invoke Capture");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Capture")("Capture");
 	m_pEntity->Capture(ctx);
 }
 
 void CardIssuerServerSession::Handle_Eject(SpReqAnsContext<CardIssuerService_Eject_Req, CardIssuerService_Eject_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Eject")("Invoke Eject");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Eject")("Eject");
 	m_pEntity->Eject(ctx);
 }
 
 void CardIssuerServerSession::Handle_CancelInsert(SpOnewayCallContext<CardIssuerService_CancelInsert_Info>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("CancelInsert")("Invoke CancelInsert");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("CancelInsert")("CancelInsert");
 	m_pEntity->CancelInsert(ctx);
 }
 void CardIssuerServerSession::Handle_InsertWaitMore(SpOnewayCallContext<CardIssuerService_InsertWaitMore_Info>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("InsertWaitMore")("Invoke InsertWaitMore");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("InsertWaitMore")("InsertWaitMore");
 	m_pEntity->InsertWaitMore(ctx);
 }
-void CardIssuerServerSession::Handle_Issue(SpReqAnsContext<CardIssuerService_Issue_Req, CardIssuerService_Issue_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Issue")("Invoke Issue");
-	m_pEntity->Issue(ctx);
-}
 void CardIssuerServerSession::Handle_PreOnline(SpReqAnsContext<CardIssuerService_PreOnline_Req, CardIssuerService_PreOnline_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("PreOnline")("Invoke PreOnline");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("PreOnline")("PreOnline");
 	m_pEntity->PreOnline(ctx);
 }
 void CardIssuerServerSession::Handle_PostOnline(SpReqAnsContext<CardIssuerService_PostOnline_Req, CardIssuerService_PostOnline_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("PostOnline")("Invoke PostOnline");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("PostOnline")("PostOnline");
 	m_pEntity->PostOnline(ctx);
 }
 void CardIssuerServerSession::Handle_Exit(SpOnewayCallContext<CardIssuerService_Exit_Info>::Pointer ctx)
 {
 	LOG_FUNCTION();
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Exit")("Exit");
 	m_pEntity->Exit(ctx);
-}
-void CardIssuerServerSession::Handle_GetMaterialCount(SpReqAnsContext<CardIssuerService_GetMaterialCount_Req, CardIssuerService_GetMaterialCount_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("GetMaterialCount")("Invoke GetMaterialCount");
-	m_pEntity->GetMaterialCount(ctx);
-}
-
-void CardIssuerServerSession::Handle_SetMaterialCount(SpReqAnsContext<CardIssuerService_SetMaterialCount_Req, CardIssuerService_SetMaterialCount_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("SetMaterialCount")("Invoke SetMaterialCount");
-	m_pEntity->SetMaterialCount(ctx);
 }
  void CardIssuerServerSession::Handle_SetIssueFlag(SpOnewayCallContext<CardIssuerService_SetIssueFlag_Info>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("SetIssueFlag")("Invoke SetIssueFlag");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("SetIssueFlag")("SetIssueFlag");
 	m_pEntity->SetIssueFlag(ctx);
 }
-void CardIssuerServerSession::Handle_ReadEx(SpReqAnsContext<CardIssuerService_ReadEx_Req, CardIssuerService_ReadEx_Ans>::Pointer ctx)
-{
-	ctx->Answer(Error_NotImpl);
-}
 void CardIssuerServerSession::Handle_QueryCardInfo(SpReqAnsContext<CardIssuerService_QueryCardInfo_Req, CardIssuerService_QueryCardInfo_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("QueryCardInfo");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("QueryCardInfo")("QueryCardInfo");
 	m_pEntity->QueryCardInfo(ctx);
 }
 void CardIssuerServerSession::Handle_WriteTrack(SpReqAnsContext<CardIssuerService_WriteTrack_Req, CardIssuerService_WriteTrack_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("WriteTrack")("Invoke WriteTrack");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("WriteTrack")("WriteTrack");
 	m_pEntity->WriteTrack(ctx);
 }
 void CardIssuerServerSession::Handle_GetMaterialCountEx(SpReqAnsContext<CardIssuerService_GetMaterialCountEx_Req, CardIssuerService_GetMaterialCountEx_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("GetMaterialCountEx")("Invoke GetMaterialCountEx");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("GetMaterialCountEx")("GetMaterialCountEx");
 	m_pEntity->GetMaterialCountEx(ctx);
 }
 void CardIssuerServerSession::Handle_SetMaterialCountEx(SpReqAnsContext<CardIssuerService_SetMaterialCountEx_Req, CardIssuerService_SetMaterialCountEx_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("SetMaterialCountEx")("Invoke SetMaterialCountEx");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("SetMaterialCountEx")("SetMaterialCountEx");
 	m_pEntity->SetMaterialCountEx(ctx);
 }
 void CardIssuerServerSession::Handle_SetSomeFlag(SpReqAnsContext<CardIssuerService_SetSomeFlag_Req, CardIssuerService_SetSomeFlag_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("SetSomeFlag");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("SetSomeFlag")("SetSomeFlag");
 	m_pEntity->SetSomeFlag(ctx);
 }
-void CardIssuerServerSession::Handle_GetSCIInfo(SpReqAnsContext<CardIssuerService_GetSCIInfo_Req, CardIssuerService_GetSCIInfo_Ans>::Pointer ctx)
-{
-	ctx->Answer(Error_NotImpl);
-}
 void CardIssuerServerSession::Handle_IssueEx(SpReqAnsContext<CardIssuerService_IssueEx_Req, CardIssuerService_IssueEx_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("IssueEx")("Invoke IssueEx");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("IssueEx")("IssueEx");
 	m_pEntity->IssueEx(ctx);
 }
-void CardIssuerServerSession::Handle_OpenSafeLock(SpReqAnsContext<CardIssuerService_OpenSafeLock_Req, CardIssuerService_OpenSafeLock_Ans>::Pointer ctx)
-{
-	ctx->Answer(Error_NotImpl);
-}
 void CardIssuerServerSession::Handle_SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_Req, CardIssuerService_SAMICCommand_Ans>::Pointer ctx)
 {
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("SAMICCommand")("Invoke SAMICCommand");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("SAMICCommand")("SAMICCommand");
 	m_pEntity->SAMICCommand(ctx);
 }
-void CardIssuerServerSession::Handle_QueryPrinterStatus(SpReqAnsContext<CardIssuerService_QueryPrinterStatus_Req, CardIssuerService_QueryPrinterStatus_Ans>::Pointer ctx)
-{
-	ctx->Answer(Error_NotImpl);
-}
-void CardIssuerServerSession::Handle_Print(SpReqAnsContext<CardIssuerService_Print_Req, CardIssuerService_Print_Ans>::Pointer ctx)
-{
-	ctx->Answer(Error_NotImpl);
-}
-void CardIssuerServerSession::Handle_QuerySCIList(SpReqAnsContext<CardIssuerService_QuerySCIList_Req, CardIssuerService_QuerySCIList_Ans>::Pointer ctx)
-{
-	ctx->Answer(Error_NotImpl);
-}
-void CardIssuerServerSession::Handle_BindSCI(SpReqAnsContext<CardIssuerService_BindSCI_Req, CardIssuerService_BindSCI_Ans>::Pointer ctx)
-{
-	ctx->Answer(Error_NotImpl);
-}
-void CardIssuerServerSession::Handle_PreOnlineOnStore(SpReqAnsContext<CardIssuerService_PreOnlineOnStore_Req, CardIssuerService_PreOnlineOnStore_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("PreOnlineOnStore")("Invoke PreOnlineOnStore");
-	m_pEntity->PreOnlineOnStore(ctx);
-}
-void CardIssuerServerSession::Handle_NotifyPreonline(SpReqAnsContext<CardIssuerService_NotifyPreonline_Req, CardIssuerService_NotifyPreonline_Ans>::Pointer ctx)
-{
-	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("NotifyPreonline")("Invoke NotifyPreonline");
-	m_pEntity->NotifyPreonline(ctx);
-}
-void CardIssuerServerSession::Handle_QueryCardInfoOnStore(SpReqAnsContext<CardIssuerService_QueryCardInfoOnStore_Req, CardIssuerService_QueryCardInfoOnStore_Ans>::Pointer ctx)
-{
-	ctx->Answer(Error_NotImpl);
-}
-void CardIssuerServerSession::Handle_GetAddCardInfo(SpReqAnsContext<CardIssuerService_GetAddCardInfo_Req, CardIssuerService_GetAddCardInfo_Ans>::Pointer ctx)
-{
-	ctx->Answer(Error_NotImpl);
-}
-void CardIssuerServerSession::Handle_PrintCardImmediately(SpReqAnsContext<CardIssuerService_PrintCardImmediately_Req, CardIssuerService_PrintCardImmediately_Ans>::Pointer ctx)
-{
-	ctx->Answer(Error_NotImpl);
-}
 void CardIssuerServerSession::Handle_QueryCIStatus(SpReqAnsContext<CardIssuerService_QueryCIStatus_Req, CardIssuerService_QueryCIStatus_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("QueryCIStatus")("Invoke QueryCIStatus");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("QueryCIStatus")("QueryCIStatus");
 	m_pEntity->QueryCIStatus(ctx);
 }
 void CardIssuerServerSession::Handle_GetDevInfo(SpReqAnsContext<CardIssuerService_GetDevInfo_Req, CardIssuerService_GetDevInfo_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("GetDevInfo")("GetDevInfo");
 	m_pEntity->GetDevInfo(ctx);
 }
 void CCardIssuerEntity::OnSysVarEvent(const char* pszKey, const char* pszValue, const char* pszOldValue, const char* pszEntityName)
@@ -200,13 +131,11 @@ void CCardIssuerEntity::OnSysVarEvent(const char* pszKey, const char* pszValue,
 	if ((_strnicmp(pszKey, "UIState", strlen("UIState")) == 0))
 	{
 		if (_strnicmp(pszValue, "M", strlen("M")) == 0)
-		{
-			m_fsm.SetMainPageFlag(true);
-		}
+			m_fsm.SetInWhatPage(PageType_MainPage);
+		else if (_strnicmp(pszValue, "U", strlen("U")) == 0)
+			m_fsm.SetInWhatPage(PageType_UserDesktop);
 		else
-			m_fsm.SetMainPageFlag(false);
-
-
+			m_fsm.SetInWhatPage(PageType_Other);
 	}
 }
 

+ 0 - 40
Module/mod_cardissuer/mod_cardissuer.h

@@ -17,32 +17,17 @@ public:
 	virtual void Handle_Eject(SpReqAnsContext<CardIssuerService_Eject_Req, CardIssuerService_Eject_Ans>::Pointer ctx);
 	virtual void Handle_CancelInsert(SpOnewayCallContext<CardIssuerService_CancelInsert_Info>::Pointer ctx);
 	virtual void Handle_InsertWaitMore(SpOnewayCallContext<CardIssuerService_InsertWaitMore_Info>::Pointer ctx);
-	virtual void Handle_Issue(SpReqAnsContext<CardIssuerService_Issue_Req, CardIssuerService_Issue_Ans>::Pointer ctx);
 	virtual void Handle_PreOnline(SpReqAnsContext<CardIssuerService_PreOnline_Req, CardIssuerService_PreOnline_Ans>::Pointer ctx);
 	virtual void Handle_PostOnline(SpReqAnsContext<CardIssuerService_PostOnline_Req, CardIssuerService_PostOnline_Ans>::Pointer ctx);
 	virtual void Handle_Exit(SpOnewayCallContext<CardIssuerService_Exit_Info>::Pointer ctx);	
-	virtual void Handle_GetMaterialCount(SpReqAnsContext<CardIssuerService_GetMaterialCount_Req, CardIssuerService_GetMaterialCount_Ans>::Pointer ctx);
-	virtual void Handle_SetMaterialCount(SpReqAnsContext<CardIssuerService_SetMaterialCount_Req, CardIssuerService_SetMaterialCount_Ans>::Pointer ctx);
 	virtual void Handle_SetIssueFlag(SpOnewayCallContext<CardIssuerService_SetIssueFlag_Info>::Pointer ctx);
-	virtual void Handle_ReadEx(SpReqAnsContext<CardIssuerService_ReadEx_Req, CardIssuerService_ReadEx_Ans>::Pointer ctx);
 	virtual void Handle_QueryCardInfo(SpReqAnsContext<CardIssuerService_QueryCardInfo_Req, CardIssuerService_QueryCardInfo_Ans>::Pointer ctx);
 	virtual void Handle_WriteTrack(SpReqAnsContext<CardIssuerService_WriteTrack_Req, CardIssuerService_WriteTrack_Ans>::Pointer ctx);
 	virtual void Handle_GetMaterialCountEx(SpReqAnsContext<CardIssuerService_GetMaterialCountEx_Req, CardIssuerService_GetMaterialCountEx_Ans>::Pointer ctx);
 	virtual void Handle_SetMaterialCountEx(SpReqAnsContext<CardIssuerService_SetMaterialCountEx_Req, CardIssuerService_SetMaterialCountEx_Ans>::Pointer ctx);
 	virtual void Handle_SetSomeFlag(SpReqAnsContext<CardIssuerService_SetSomeFlag_Req, CardIssuerService_SetSomeFlag_Ans>::Pointer ctx);
-	virtual void Handle_GetSCIInfo(SpReqAnsContext<CardIssuerService_GetSCIInfo_Req, CardIssuerService_GetSCIInfo_Ans>::Pointer ctx);
 	virtual void Handle_IssueEx(SpReqAnsContext<CardIssuerService_IssueEx_Req, CardIssuerService_IssueEx_Ans>::Pointer ctx);
-	virtual void Handle_OpenSafeLock(SpReqAnsContext<CardIssuerService_OpenSafeLock_Req, CardIssuerService_OpenSafeLock_Ans>::Pointer ctx);
 	virtual void Handle_SAMICCommand(SpReqAnsContext<CardIssuerService_SAMICCommand_Req, CardIssuerService_SAMICCommand_Ans>::Pointer ctx);
-	virtual void Handle_QueryPrinterStatus(SpReqAnsContext<CardIssuerService_QueryPrinterStatus_Req, CardIssuerService_QueryPrinterStatus_Ans>::Pointer ctx);
-	virtual void Handle_Print(SpReqAnsContext<CardIssuerService_Print_Req, CardIssuerService_Print_Ans>::Pointer ctx);
-	virtual void Handle_QuerySCIList(SpReqAnsContext<CardIssuerService_QuerySCIList_Req, CardIssuerService_QuerySCIList_Ans>::Pointer ctx);
-	virtual void Handle_BindSCI(SpReqAnsContext<CardIssuerService_BindSCI_Req, CardIssuerService_BindSCI_Ans>::Pointer ctx);
-	virtual void Handle_PreOnlineOnStore(SpReqAnsContext<CardIssuerService_PreOnlineOnStore_Req, CardIssuerService_PreOnlineOnStore_Ans>::Pointer ctx);
-	virtual void Handle_NotifyPreonline(SpReqAnsContext<CardIssuerService_NotifyPreonline_Req, CardIssuerService_NotifyPreonline_Ans>::Pointer ctx);
-	virtual void Handle_QueryCardInfoOnStore(SpReqAnsContext<CardIssuerService_QueryCardInfoOnStore_Req, CardIssuerService_QueryCardInfoOnStore_Ans>::Pointer ctx);
-	virtual void Handle_GetAddCardInfo(SpReqAnsContext<CardIssuerService_GetAddCardInfo_Req, CardIssuerService_GetAddCardInfo_Ans>::Pointer ctx);
-	virtual void Handle_PrintCardImmediately(SpReqAnsContext<CardIssuerService_PrintCardImmediately_Req, CardIssuerService_PrintCardImmediately_Ans>::Pointer ctx);
 	virtual void Handle_QueryCIStatus(SpReqAnsContext<CardIssuerService_QueryCIStatus_Req, CardIssuerService_QueryCIStatus_Ans>::Pointer ctx);
 	virtual void Handle_GetDevInfo(SpReqAnsContext<CardIssuerService_GetDevInfo_Req, CardIssuerService_GetDevInfo_Ans>::Pointer ctx);
 private:
@@ -199,20 +184,6 @@ public:
 		FSMEvent *evt = new FSMEvent(USER_EVT_EXIT);
 		m_fsm.PostEventFIFO(evt);
 	}
-	void GetMaterialCount(SpReqAnsContext<CardIssuerService_GetMaterialCount_Req, CardIssuerService_GetMaterialCount_Ans>::Pointer ctx)
-	{
-		m_bNewSessionInit = false;
-		GetMaterialEvent *pEvt = new GetMaterialEvent();
-		pEvt->ctx = ctx;
-		m_fsm.PostEventFIFO(pEvt);
-	}
-	void SetMaterialCount(SpReqAnsContext<CardIssuerService_SetMaterialCount_Req, CardIssuerService_SetMaterialCount_Ans>::Pointer ctx)
-	{
-		m_bNewSessionInit = false;
-		SetMaterialEvent *pEvt = new SetMaterialEvent();
-		pEvt->ctx = ctx;
-		m_fsm.PostEventFIFO(pEvt);
-	}
 	void QueryCardInfo(SpReqAnsContext<CardIssuerService_QueryCardInfo_Req, CardIssuerService_QueryCardInfo_Ans>::Pointer ctx)
 	{
 		if (m_bNewSessionInit)
@@ -303,17 +274,6 @@ public:
 		pEvt->ctx = ctx;
 		m_fsm.PostEventFIFO(pEvt);
 	}
-	void PreOnlineOnStore(SpReqAnsContext<CardIssuerService_PreOnlineOnStore_Req, CardIssuerService_PreOnlineOnStore_Ans>::Pointer ctx)
-	{
-		PreOnlineOnStoreEvent *pEvt = new PreOnlineOnStoreEvent();
-		pEvt->ctx = ctx;
-		m_fsm.PostEventFIFO(pEvt);
-	}
-	void NotifyPreonline(SpReqAnsContext<CardIssuerService_NotifyPreonline_Req, CardIssuerService_NotifyPreonline_Ans>::Pointer ctx)
-	{
-		m_fsm.NotifyPreOnline(ctx->Req.errCode,ctx->Req.findCard,ctx->Req.cardPos,ctx->Req.data);
-		ctx->Answer(Error_Succeed);
-	}
 	void GetDevInfo(SpReqAnsContext<CardIssuerService_GetDevInfo_Req, CardIssuerService_GetDevInfo_Ans>::Pointer ctx)
 	{
 		ctx->Ans.state = m_fsm.GetDevState();