Browse Source

Z991239-6441 #comment feat: 去掉大机卡机调用实时自检;进入故障态根据查询是否有卡跳转到对应状态

oilyang 1 month ago
parent
commit
2fd40ecf23

+ 0 - 2
Module/mod_CardIssuerStand/CardIssuerStand.xml

@@ -330,8 +330,6 @@
 					ARQC_DATA:授权请求数据
 					T2TRACK2_DATA:磁道2数据
 					EXPIRE_DATE:卡片失效日期
-					T2CARD_SERIAL:卡序号
-					CARD_CAT:卡类型
 					IC_TAGS:基础IC数据
 				-->
 				<param name="result" type="string"/>

+ 97 - 217
Module/mod_CardIssuerStand/CardIssuerStandFSM.cpp

@@ -435,7 +435,6 @@ unsigned int CCardIssuerFSM::s3_on_event(FSMEvent* pEvt)
 			ret = pEvt->param1;
 			if (ret == 1) {
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("插卡时查询设备状态故障");
-				setQuickSelfCheck();
 			}
 			else if (ret == 4) {
 				//吐卡
@@ -750,24 +749,6 @@ unsigned int CCardIssuerFSM::s4_on_event(FSMEvent* pEvt)
 			}
 		}
 			break;
-		case USER_EVT_WRITE:
-			{
-				CardWriteEvent* cwe = dynamic_cast<CardWriteEvent*>(pEvt);
-				WriteTask* task = new WriteTask(this);
-				task->ctx = cwe->ctx;
-				GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
-				pEvt->SetHandled();
-			}
-			break;
-		case USER_EVT_SAM_IC:
-		{
-			SAMICCommandEvent* sice = dynamic_cast<SAMICCommandEvent*>(pEvt);
-			SAMICCommandTask* task = new SAMICCommandTask(this);
-			task->ctx = sice->ctx;
-			GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
-			pEvt->SetHandled();
-		}
-			break;
 		case USER_EVT_ISSUE_EX:
 		{
 			IssueTask* task = new IssueTask(this);
@@ -877,7 +858,6 @@ unsigned int CCardIssuerFSM::s6_on_event(FSMEvent* pEvt)
 		}
 		else if (pEvt->param1 == 1) {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("取卡时设备故障");
-			setQuickSelfCheck();
 			return 1;
 		}
 	}
@@ -1098,7 +1078,6 @@ unsigned int CCardIssuerFSM::s8_on_event(FSMEvent* pEvt)
 			return 0;
 		}
 		else {
-			setQuickSelfCheck();
 			return 1;
 		}
 	}else if (pEvt->iEvt == USER_EVT_QUIT) {
@@ -1113,18 +1092,8 @@ void CCardIssuerFSM::s9_on_entry()
 	LOG_FUNCTION();
 	m_currentFSMState = 9;
 	SetDevState(DEVICE_STATUS_FAULT);
-	if (m_quickSelfcheck) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStand in fault state, need to quickSelfcheck.");
-		m_testResult = Error_InvalidState;
-		QuickSelfcheckTask* task = new QuickSelfcheckTask(this);
-		GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
-	}
-	else {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStand in fault state, need to reset.");
-		FSMEvent* e = new FSMEvent(USER_EVT_RESET);
-		PostEventFIFO(e);
-	}
-
+	QueryCardPosTask* pTask = new QueryCardPosTask(this);
+	ErrorCodeEnum err = GetEntityBase()->GetFunction()->PostThreadPoolTask(pTask);
 }
 void CCardIssuerFSM::s9_on_exit()
 {
@@ -1135,40 +1104,11 @@ unsigned int CCardIssuerFSM::s9_on_event(FSMEvent* pEvt)
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("s9 evt (%d,%d)", pEvt->iEvt, pEvt->param1));
 	switch(pEvt->iEvt)
 	{
-	case USER_EVT_RESET:
-		{
-			pEvt->SetHandled();
-			m_resetTimes++;
-			if((m_csMachineType.Compare("RVC.Stand2S", true) == 0 || m_csMachineType.Compare("RVC.Stand1SPlus", true) == 0)
-			   && m_resetTimes > MAX_RESET_TIMES_PERIOD)
-			{
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("restart tried %d times, give up",m_resetTimes);
-				m_testResult = Error_InvalidState;
-				return 0;
-			}
-			ResetDeviceEvent* rde = dynamic_cast<ResetDeviceEvent*>(pEvt);
-			ResetTask* task = new ResetTask(this);
-			GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
-
-			return 0;
-		}
-		break;
-	case USER_EVT_RESETFINISHED:
-		{
-			ResetFinishedEvent *rfe = dynamic_cast<ResetFinishedEvent*>(pEvt);
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("reset finished, result:%d", rfe->param1);
-			if (rfe->param1 == 0)
-				return 0;
-			else
-			{
-				m_testResult = Error_InvalidState;
-				return 1;
-			}
-				
-		}
 	case USER_EVT_QUIT:
 		pEvt->SetHandled();
 		return 0;
+	case USER_EVT_QUERY_CARD_POS_FINISHED:
+		return pEvt->param1;
 	case USER_EVT_ACCEPT_CANCEL:
 		m_bCancelAccept = true;
 		pEvt->SetHandled();
@@ -1227,70 +1167,14 @@ unsigned int CCardIssuerFSM::s10_on_event(FSMEvent* pEvt)
 	}
 	return ret;
 }
-//Writing
+//ReadJSing
 void CCardIssuerFSM::s11_on_entry()
-{
-	LOG_FUNCTION();
-	m_currentFSMState = 11;
-}
-void CCardIssuerFSM::s11_on_exit()
-{
-	LOG_FUNCTION();
-}
-unsigned int CCardIssuerFSM::s11_on_event(FSMEvent* pEvt)
-{
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("s11(writing) evt (%d,%d)", pEvt->iEvt, pEvt->param1));
-	int ret = 0;
-	switch(pEvt->iEvt)
-	{
-	case USER_EVT_WRITE_FINISHED:
-		pEvt->SetHandled();
-		ret = pEvt->param1;
-		break;
-	case USER_EVT_EXIT:
-		pEvt->SetHandled();
-		m_captureReason = "4001";
-		m_bIssuingExit = true;
-		break;
-	default:
-		break;
-	}
-	return ret;
-}
-
-//SAMIC
-void CCardIssuerFSM::s14_on_entry()
-{
-	LOG_FUNCTION();
-	m_currentFSMState = 14;
-}
-void CCardIssuerFSM::s14_on_exit()
-{
-	LOG_FUNCTION();
-}
-unsigned int CCardIssuerFSM::s14_on_event(FSMEvent* pEvt)
-{
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("s14 evt (%d,%d)", pEvt->iEvt, pEvt->param1));
-	int ret = 0;
-	switch (pEvt->iEvt)
-	{
-	case USER_EVT_SAM_IC_FINISHED:
-		pEvt->SetHandled();
-		break;
-	default:
-		break;
-	}
-	return ret;
-}
-
-void CCardIssuerFSM::s15_on_entry()
 {
 	LOG_FUNCTION();
 	m_currentFSMState = 15;
 	m_bReturnMainPage = false;
 }
-
-void CCardIssuerFSM::s15_on_exit()
+void CCardIssuerFSM::s11_on_exit()
 {
 	if (m_bReturnMainPage) {
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("S15 exit, send exit main page event");
@@ -1298,8 +1182,7 @@ void CCardIssuerFSM::s15_on_exit()
 	}
 	LOG_FUNCTION();
 }
-
-unsigned int CCardIssuerFSM::s15_on_event(FSMEvent* pEvt)
+unsigned int CCardIssuerFSM::s11_on_event(FSMEvent* pEvt)
 {
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s15 evt (%d,%d)", pEvt->iEvt, pEvt->param1);
 	int ret = 0;
@@ -1336,20 +1219,18 @@ unsigned int CCardIssuerFSM::s15_on_event(FSMEvent* pEvt)
 	}
 	return ret;
 }
-
-void CCardIssuerFSM::s16_on_entry()
+//IssueJSing
+void CCardIssuerFSM::s12_on_entry()
 {
 	LOG_FUNCTION();
 	m_currentFSMState = 16;
 	m_bReturnMainPage = false;
 }
-
-void CCardIssuerFSM::s16_on_exit()
+void CCardIssuerFSM::s12_on_exit()
 {
 	LOG_FUNCTION();
 }
-
-unsigned int CCardIssuerFSM::s16_on_event(FSMEvent* pEvt)
+unsigned int CCardIssuerFSM::s12_on_event(FSMEvent* pEvt)
 {
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("s16 evt (%d,%d)", pEvt->iEvt, pEvt->param1));
 	int ret = 0;
@@ -1360,7 +1241,6 @@ unsigned int CCardIssuerFSM::s16_on_event(FSMEvent* pEvt)
 		pEvt->SetHandled();
 		ret = pEvt->param1;
 		if (ret == 2) {
-			setQuickSelfCheck();
 		}
 		else if (ret == 1) {
 			if (m_bReturnMainPage) {
@@ -1787,7 +1667,6 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 		spEntityFunction->OpenConfig(Config_CenterSetting, spConfigCS);
 
 		int tmpCardnoMismatch = 0, tmpICRetryTimes = 1, tmpStopUseRF = 0;
-		int tmpSelfcheckSleepTime = 0;
 
 		spConfigCS->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "EacQueryFlag", m_eacQueryFlag);
 		spConfigCS->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "UseCardnoMismatch", tmpCardnoMismatch);
@@ -1796,11 +1675,10 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 		spConfigCS->ReadConfigValue(GetEntityBase()->GetEntityName(), "RFVendorList", m_rfVendorList);
 		spConfigCS->ReadConfigValue(GetEntityBase()->GetEntityName(), "SwallowCardUrl", m_csSwallowCardUrl);
 		spConfigCS->ReadConfigValue(GetEntityBase()->GetEntityName(), "SyncMaterialUrl", m_csSyncMaterialUrl);
-		spConfigCS->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "SelfcheckSleepTime", tmpSelfcheckSleepTime);
 		spConfigCS->ReadConfigValue("Common", "EacQueryHost", m_EacQueryHost);
 
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("EacQueryFlag:%d,EacQueryHost:%s,UseCardnoMismatch:%d,ICRetryTimes:%d,SelfcheckSleepTime:%d,StopUseRF:%d"
-			, m_eacQueryFlag, m_EacQueryHost.GetData(), tmpCardnoMismatch, tmpICRetryTimes, tmpSelfcheckSleepTime, tmpStopUseRF);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("EacQueryFlag:%d,EacQueryHost:%s,UseCardnoMismatch:%d,ICRetryTimes:%d,StopUseRF:%d"
+			, m_eacQueryFlag, m_EacQueryHost.GetData(), tmpCardnoMismatch, tmpICRetryTimes, tmpStopUseRF);
 
 		if (tmpCardnoMismatch == 1)
 			m_bUseCardnoMismatch = true;
@@ -1811,9 +1689,6 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 		m_issueStatusFromFile = m_issueStatus = isIssue;
 		if (m_issueStatusFromFile == 0)
 			m_bCardFromHopper = false;
-		if (tmpSelfcheckSleepTime == 0) {
-			m_SelfcheckSleepTime = 10000;//默认10s
-		}
 
 		ret = UnAcceptCard();
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ret: %d, isIssue: %d, m_hasCardWhileDevOpen:%d, m_issueStatusFromFile:%d",
@@ -4261,18 +4136,18 @@ ErrorCodeEnum CCardIssuerFSM::MachineMoveCardFrontGate(bool bInBussiness)
 	
 	return eMoveFrontGate;
 }
-int CCardIssuerFSM::QueryCardInfo()
+int CCardIssuerFSM::QueryCardPos()
 {
 	int ret;
 	if (m_hDevHelper == nullptr)
 		ret = 1;
-	else{
-		if(GetDevStatus())
+	else {
+		if (GetDevStatus())
 			ret = (m_devStatus.eMedia == CI_MEDIA_PRESENT) ? 2 : 0;
 		else
 			ret = 1;
 	}
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("QueryCardInfo, ret:%d", ret);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("QueryCardPos, ret:%d", ret);
 	return ret;
 }
 
@@ -6261,7 +6136,7 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaContact(SpReqAnsContext<CardIssuerStandSe
 		CSimpleStringA alarmMsg = "";
 		CSimpleStringA csErrMsgWithReturnCode = "";
 
-		if (m_bSupportRF) {
+		if (bContinue) {
 			if (retDetectAndRead == -1) {
 				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("检测卡片类型时上电失败");
 				GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
@@ -6446,61 +6321,100 @@ int CCardIssuerFSM::PreOnlineJS_ReadViaRF(SpReqAnsContext<CardIssuerStandService
 		CSimpleStringA alarmMsg = "";
 		CSimpleStringA csErrMsgWithReturnCode = "";
 
-		if (retDetectAndRead == -1) {
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("检测卡片类型时上电失败(非接)");
-			GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
+		if (bContinue)
+		{
+			if (retDetectAndRead == -1) {
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("检测卡片类型时上电失败(非接)");
+				GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
 
-			if (m_issueStatus) {
-				if (IsInBusiness())
-				{
-					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2327")(csErrMsgWithReturnCode.GetData());
-					LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed, alarmMsg.GetData());
+				if (m_issueStatus) {
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2327")(csErrMsgWithReturnCode.GetData());
 				}
 				else {
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2327")(csErrMsgWithReturnCode.GetData());
-					LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed, alarmMsg.GetData());
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2326")(csErrMsgWithReturnCode.GetData());
 				}
-
-				ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed);
 			}
-			else {
-				if (IsInBusiness())
-				{
-					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2326")(csErrMsgWithReturnCode.GetData());
-					LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, alarmMsg.GetData());
+			else if (retDetectAndRead == -2) {
+
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("读取IC数据失败");
+				DWORD dwTmpUserErrCode = 0;
+				if (m_issueStatus) {
+					dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220320", "读取IC数据失败");
 				}
-				else
-				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2326")(csErrMsgWithReturnCode.GetData());
-					LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, alarmMsg.GetData());
+				else {
+					dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220303", "读取IC数据失败");
 				}
+			}
+			else if (retDetectAndRead == -3) {
 
-				ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed);
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("IC卡建立应用列表失败");
+				DWORD dwTmpUserErrCode = 0;
+				if (m_issueStatus) {
+					dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220320", "retDetectAndRead=-3");
+				}
+				else {
+					dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220303", "retDetectAndRead=-3");
+				}
 			}
 		}
-		else if (retDetectAndRead == -2) {
+		else
+		{
+			if (retDetectAndRead == -1) {
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("检测卡片类型时上电失败(非接)");
+				GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
 
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("读取IC数据失败");
-			DWORD dwTmpUserErrCode = 0;
-			if (m_issueStatus) {
-				dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220320", "读取IC数据失败");
-			}
-			else {
-				dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220303", "读取IC数据失败");
+				if (m_issueStatus) {
+					if (IsInBusiness())
+					{
+						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2327")(csErrMsgWithReturnCode.GetData());
+						LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed, alarmMsg.GetData());
+					}
+					else {
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2327")(csErrMsgWithReturnCode.GetData());
+						LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed, alarmMsg.GetData());
+					}
+
+					ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed);
+				}
+				else {
+					if (IsInBusiness())
+					{
+						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2326")(csErrMsgWithReturnCode.GetData());
+						LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, alarmMsg.GetData());
+					}
+					else
+					{
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2326")(csErrMsgWithReturnCode.GetData());
+						LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, alarmMsg.GetData());
+					}
+
+					ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed);
+				}
 			}
-			ctx->Answer(Error_Unexpect, dwTmpUserErrCode);
-		}
-		else if (retDetectAndRead == -3) {
+			else if (retDetectAndRead == -2) {
 
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("IC卡建立应用列表失败");
-			DWORD dwTmpUserErrCode = 0;
-			if (m_issueStatus) {
-				dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220320", "retDetectAndRead=-3");
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("读取IC数据失败");
+				DWORD dwTmpUserErrCode = 0;
+				if (m_issueStatus) {
+					dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220320", "读取IC数据失败");
+				}
+				else {
+					dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220303", "读取IC数据失败");
+				}
+				ctx->Answer(Error_Unexpect, dwTmpUserErrCode);
 			}
-			else {
-				dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220303", "retDetectAndRead=-3");
+			else if (retDetectAndRead == -3) {
+
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("IC卡建立应用列表失败");
+				DWORD dwTmpUserErrCode = 0;
+				if (m_issueStatus) {
+					dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220320", "retDetectAndRead=-3");
+				}
+				else {
+					dwTmpUserErrCode = SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220303", "retDetectAndRead=-3");
+				}
+				ctx->Answer(Error_Unexpect, dwTmpUserErrCode);
 			}
-			ctx->Answer(Error_Unexpect, dwTmpUserErrCode);
 		}
 		return -1;//上电读卡失败
 	}
@@ -7061,40 +6975,6 @@ void CCardIssuerFSM::GetCardProcessLastErr(ErrorCodeEnum& eErrCode, CSimpleStrin
 	csErrMsgWithReturnCode = csErrMsgWithReturnCodeStr.GetData();
 }
 
-int CCardIssuerFSM::QuickSelfCheckImpl()
-{
-	//通知健康快速自检
-	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("QuickSelfCheckImpl")("快速自检开始");
-	int ret = 0;//失败
-	ErrorCodeEnum eErr = Error_Unexpect;
-	HealthManager::HealthManagerService_ClientBase* pClient = new HealthManager::HealthManagerService_ClientBase(GetEntityBase());
-	eErr = pClient->Connect();
-	if (eErr == Error_Succeed)
-	{
-		HealthManager::HealthManagerService_RealCheck_Req req1 = {};
-		HealthManager::HealthManagerService_RealCheck_Ans ans1 = {};
-		req1.name = "CardIssuerStand";
-		if (Error_Succeed == (*pClient)(EntityResource::getLink().upgradeLink())->RealCheck(req1, ans1, 10000))
-		{
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("QuickSelfCheckImpl")("RealCheck success");
-			ret = 1;
-		}
-		else {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("QuickSelfCheckImpl")("RealCheck fail");
-			ret = 0;
-		}
-		pClient->GetFunction()->CloseSession();
-		//pClient->SafeDelete();
-		return ret;
-	}
-	else {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("QuickSelfCheckImpl")("connect to HealthManager fail,err=%d", (int)eErr);
-		pClient->SafeDelete();
-		return ret;
-	}
-}
-
 int CCardIssuerFSM::PowerOffIC(int type)
 {
 	int ret = 0;

+ 35 - 150
Module/mod_CardIssuerStand/CardIssuerStandFSM.h

@@ -47,14 +47,10 @@ enum EvtType
 	USER_EVT_EXIT,
 	USER_EVT_READ,
 	USER_EVT_READ_FINISHED,
-	USER_EVT_WRITE,
-	USER_EVT_WRITE_FINISHED,
 	USER_EVT_GET_MATERIAL_EX,
 	USER_EVT_SET_MATERIAL_EX,
 	USER_EVT_ISSUE_EX,
 	USER_EVT_ISSUE_EX_FINISHED,
-	USER_EVT_SAM_IC,
-	USER_EVT_SAM_IC_FINISHED,
 	USER_EVT_BACK_TO_INIT,
 	//新定义JS状态机事件枚举
 	USER_EVT_JS_CAPTURE = EVT_USER + 38,
@@ -65,14 +61,13 @@ enum EvtType
 	USER_EVT_JS_POSTONLINE_FINISHED,
 	USER_EVT_JS_ISSUE_FROM_BOX,
 	USER_EVT_JS_ISSUE_FROM_BOX_FINISHED,
-	USER_EVT_QUICK_SELF_CHECK,
-	USER_EVT_QUICK_SELF_CHECK_FINISHED,
 	USER_EVT_JS_READ,
 	USER_EVT_JS_READ_FINISHED,
 	USER_EVT_JS_INSERT,
 	USER_EVT_JS_INSERT_FINISHED,
 	USER_EVT_JS_INSERT_CANCEL,
-	USER_EVT_JS_EXIT_MIAN_PAGE
+	USER_EVT_JS_EXIT_MIAN_PAGE,
+	USER_EVT_QUERY_CARD_POS_FINISHED
 };
 enum SAMICCommandType
 {
@@ -293,38 +288,7 @@ public:
 protected:
 private:
 };
-class CardWriteEvent : public FSMEvent
-{
-public:
-	CardWriteEvent() : FSMEvent(USER_EVT_WRITE){}
-	~CardWriteEvent(){}
-	SpReqAnsContext<CardIssuerStandService_WriteTrack_Req,CardIssuerStandService_WriteTrack_Ans>::Pointer ctx;
-	virtual void OnUnhandled() 
-	{
-		if (ctx != NULL)
-		{
-			ctx->Answer(Error_InvalidState);
-		}
-	}
-protected:
-private:
-};
-class CardWriteFinishedEvent : public FSMEvent
-{
-public:
-	CardWriteFinishedEvent() : FSMEvent(USER_EVT_WRITE_FINISHED){}
-	~CardWriteFinishedEvent(){}
-	SpReqAnsContext<CardIssuerStandService_WriteTrack_Req,CardIssuerStandService_WriteTrack_Ans>::Pointer ctx;
-	virtual void OnUnhandled() 
-	{
-		if (ctx != NULL)
-		{
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("card read unhandled(new)");
-		}
-	}
-protected:
-private:
-};
+
 class GetMaterialExEvent : public FSMEvent
 {
 public:
@@ -368,21 +332,7 @@ public:
 		}
 	}
 };
-class SAMICCommandEvent : public FSMEvent
-{
-public:
-	SAMICCommandEvent() : FSMEvent(USER_EVT_SAM_IC){}
-	~SAMICCommandEvent(){}
-	SpReqAnsContext<CardIssuerStandService_SAMICCommand_Req, CardIssuerStandService_SAMICCommand_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("sam/ic unhandled");
-			ctx->Answer(Error_InvalidState);
-		}
-	}
-};
+
 #pragma region JS接口 event
 //JS接口
 class EjectJSEvent : public FSMEvent
@@ -445,14 +395,6 @@ public:
 	}
 };
 
-class QuickSelfcheckFinishEvent : public FSMEvent
-{
-public:
-	QuickSelfcheckFinishEvent() : FSMEvent(USER_EVT_QUICK_SELF_CHECK_FINISHED) {}
-	~QuickSelfcheckFinishEvent() {}
-protected:
-private:
-};
 
 class ReadJSEvent : public FSMEvent
 {
@@ -826,7 +768,7 @@ struct SyncMaterialCountHTTPRet : CHTTPRet {
 class CCardIssuerFSM : public CCommDevFSM<CCardIssuerFSM, CardIssuerClass>, public IFSMStateHooker
 {
 public:
-	enum {s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s14,s15,s16};
+	enum {s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12};
 	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)
@@ -839,10 +781,8 @@ public:
 		FSM_STATE_ENTRY(s8,"Capturing",s8_on_entry,s8_on_exit,s8_on_event)
 		FSM_STATE_ENTRY(s9,"Failed",s9_on_entry,s9_on_exit,s9_on_event)
 		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(s15, "ReadJSing", s15_on_entry, s15_on_exit, s15_on_event)
-		FSM_STATE_ENTRY(s16, "IssueJSing", s16_on_entry, s16_on_exit, s16_on_event)
+		FSM_STATE_ENTRY(s11, "ReadJSing", s11_on_entry, s11_on_exit, s11_on_event)
+		FSM_STATE_ENTRY(s12, "IssueJSing", s12_on_entry, s12_on_exit, s12_on_event)
 		END_FSM_STATE()
 
 	BEGIN_FSM_RULE(CCardIssuerFSM,s0)
@@ -859,7 +799,7 @@ public:
 		FSM_RULE_ENTRY(s2,s10,USER_EVT_ISSUE,0)
 		FSM_RULE_ENTRY(s2, s10, USER_EVT_ISSUE_EX, 0)
 		FSM_RULE_ENTRY(s2, s3, USER_EVT_JS_INSERT, 0)//JS 插卡
-		FSM_RULE_ENTRY(s2, s16, USER_EVT_JS_ISSUE_FROM_BOX, 0)//JS 卡箱发卡
+		FSM_RULE_ENTRY(s2, s12, USER_EVT_JS_ISSUE_FROM_BOX, 0)//JS 卡箱发卡
 		FSM_RULE_ENTRY(s2, s8, USER_EVT_JS_CAPTURE, 0)//JS 吞卡
 		FSM_RULE_ENTRY(s3,s4,USER_EVT_ACCEPTFINISHED,0)
 		FSM_RULE_ENTRY(s3,s9,USER_EVT_ACCEPTFINISHED,1)
@@ -879,15 +819,13 @@ public:
 		FSM_RULE_ENTRY(s4,s8,USER_EVT_ACCEPT,0)
 		FSM_RULE_ENTRY(s4,s8,USER_EVT_EXIT,1)
 		FSM_RULE_ENTRY(s4,s8,USER_EVT_CAPTURE,0)
-		FSM_RULE_ENTRY(s4,s11,USER_EVT_WRITE,0)
-		FSM_RULE_ENTRY(s4, s14, USER_EVT_SAM_IC, 0)
 		FSM_RULE_ENTRY(s4, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
 		FSM_RULE_ENTRY(s4, s2, USER_EVT_ISSUE_EX_FINISHED, 2)
 		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(s4, s15, USER_EVT_JS_READ, 0)//JS 读卡
-		FSM_RULE_ENTRY(s4, s15, USER_EVT_JS_POSTONLINE, 0)//JS 联机后
+		FSM_RULE_ENTRY(s4, s11, USER_EVT_JS_READ, 0)//JS 读卡
+		FSM_RULE_ENTRY(s4, s11, USER_EVT_JS_POSTONLINE, 0)//JS 联机后
 		FSM_RULE_ENTRY(s4, s6, USER_EVT_JS_EJECT, 0)//JS 吐卡
 		FSM_RULE_ENTRY(s4, s8, USER_EVT_JS_CAPTURE, 0)//JS 吞卡
 		FSM_RULE_ENTRY(s4, s6, USER_EVT_JS_EXIT_MIAN_PAGE, 0)//JS 退回首页吐卡
@@ -899,8 +837,9 @@ public:
 		FSM_RULE_ENTRY(s5, s4, USER_EVT_EXIT, 0)
 		FSM_RULE_ENTRY(s5, s4, USER_EVT_PREONLINEFINISHED, 0)
 		FSM_RULE_ENTRY(s5, s4, USER_EVT_POSTONLINEFINISHED, 0)
-		FSM_RULE_ENTRY(s6,s7,USER_EVT_EJECTFINISHED,0)
-		FSM_RULE_ENTRY(s6,s9,USER_EVT_EJECTFINISHED,1)
+		FSM_RULE_ENTRY(s6,	s2,USER_EVT_EJECTFINISHED,0)
+		FSM_RULE_ENTRY(s6,	s9,USER_EVT_EJECTFINISHED,1)
+		FSM_RULE_ENTRY(s6, s7, USER_EVT_EJECTFINISHED, 2)
 		FSM_RULE_ENTRY(s6, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
 		FSM_RULE_ENTRY(s6, s2, USER_EVT_JS_EJECT_FINISHED, 0)//JS 吐卡取卡成功,取卡超时吞卡成功
 		FSM_RULE_ENTRY(s6, s9, USER_EVT_JS_EJECT_FINISHED, 1)//JS 吐卡失败,取卡超时吞卡失败
@@ -913,9 +852,8 @@ public:
 		FSM_RULE_ENTRY(s8, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
 		FSM_RULE_ENTRY(s8, s2, USER_EVT_JS_CAPTURE_FINISHED, 0)//JS 吞卡成功
 		FSM_RULE_ENTRY(s8, s9, USER_EVT_JS_CAPTURE_FINISHED, 1)//JS 吞卡失败
-		FSM_RULE_ENTRY(s9, s2, USER_EVT_RESETFINISHED, 0)
-		FSM_RULE_ENTRY(s9, s0, USER_EVT_RESETFINISHED, 2)
-		FSM_RULE_ENTRY(s9, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
+		FSM_RULE_ENTRY(s9, s2, USER_EVT_QUERY_CARD_POS_FINISHED, 0)
+		FSM_RULE_ENTRY(s9, s4, USER_EVT_QUERY_CARD_POS_FINISHED, 2)
 		FSM_RULE_ENTRY(s10,s4,USER_EVT_ISSUE_FINISHED,0)
 		FSM_RULE_ENTRY(s10,s9,USER_EVT_ISSUE_FINISHED,1)
 		FSM_RULE_ENTRY(s10,s2,USER_EVT_ISSUE_FINISHED,2)
@@ -926,18 +864,15 @@ public:
 		FSM_RULE_ENTRY(s10, s6, USER_EVT_ISSUE_EX_FINISHED, 6)
 		FSM_RULE_ENTRY(s10, s2, USER_EVT_ISSUE_EX_FINISHED, 8)
 		FSM_RULE_ENTRY(s10, s2, USER_EVT_EXIT, 0)
-		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(s15, s4, USER_EVT_JS_READ_FINISHED, 0)//JS 读卡结果返回
-		FSM_RULE_ENTRY(s15, s2, USER_EVT_JS_READ_FINISHED, 1)//JS 无卡
-		FSM_RULE_ENTRY(s15, s4, USER_EVT_JS_POSTONLINE_FINISHED, 0)//JS
-		FSM_RULE_ENTRY(s15, s4, USER_EVT_JS_EXIT_MIAN_PAGE, 0)//退出事件
-		FSM_RULE_ENTRY(s16, s4, USER_EVT_JS_ISSUE_FROM_BOX_FINISHED, 0)//JS 发卡成功
-		FSM_RULE_ENTRY(s16, s2, USER_EVT_JS_ISSUE_FROM_BOX_FINISHED, 1)//JS 发卡失败
-		FSM_RULE_ENTRY(s16, s9, USER_EVT_JS_ISSUE_FROM_BOX_FINISHED, 2)//JS 发卡故障
-		FSM_RULE_ENTRY(s16, s8, USER_EVT_JS_ISSUE_FROM_BOX_FINISHED, 3)//JS 退回首页进行吞卡
+
+		FSM_RULE_ENTRY(s11, s4, USER_EVT_JS_READ_FINISHED, 0)//JS 读卡结果返回
+		FSM_RULE_ENTRY(s11, s2, USER_EVT_JS_READ_FINISHED, 1)//JS 无卡
+		FSM_RULE_ENTRY(s11, s4, USER_EVT_JS_POSTONLINE_FINISHED, 0)//JS
+		FSM_RULE_ENTRY(s11, s4, USER_EVT_JS_EXIT_MIAN_PAGE, 0)//退出事件
+		FSM_RULE_ENTRY(s12, s4, USER_EVT_JS_ISSUE_FROM_BOX_FINISHED, 0)//JS 发卡成功
+		FSM_RULE_ENTRY(s12, s2, USER_EVT_JS_ISSUE_FROM_BOX_FINISHED, 1)//JS 发卡失败
+		FSM_RULE_ENTRY(s12, s9, USER_EVT_JS_ISSUE_FROM_BOX_FINISHED, 2)//JS 发卡故障
+		FSM_RULE_ENTRY(s12, s8, USER_EVT_JS_ISSUE_FROM_BOX_FINISHED, 3)//JS 退回首页进行吞卡
 	END_FSM_RULE()
 
 	CCardIssuerFSM() : m_bCancelAccept(false),m_bWaitingAccept(false),
@@ -950,7 +885,7 @@ public:
 	,  m_bCancelByRFIC(false), m_devOpenFailedCount(0)
 			, m_EacQueryHost(""),m_eacQueryFlag(0), m_bUseCardnoMismatch(false), m_ICRetryTimes(1)
 			, m_bCardFromHopper(true), m_bStopUseRF(false),m_rfVendorList(""), m_bUseRFTillNext(false), m_csSwallowCardUrl(""), m_csSyncMaterialUrl("")
-			, m_quickSelfcheck(false), m_SelfcheckSleepTime(10000), m_bCancelInsert(false), m_bReturnMainPage(false)
+			, m_bCancelInsert(false), m_bReturnMainPage(false)
 		{
 			HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x203);
 			cmdDecodeMag2 = NULL;
@@ -998,20 +933,14 @@ public:
 	void s10_on_entry();
 	void s10_on_exit();
 	unsigned int s10_on_event(FSMEvent* event);
+
 	void s11_on_entry();
 	void s11_on_exit();
 	unsigned int s11_on_event(FSMEvent* event);
-	void s14_on_entry();
-	void s14_on_exit();
-	unsigned int s14_on_event(FSMEvent* event);
-
-	void s15_on_entry();
-	void s15_on_exit();
-	unsigned int s15_on_event(FSMEvent* event);
 
-	void s16_on_entry();
-	void s16_on_exit();
-	unsigned int s16_on_event(FSMEvent* event);
+	void s12_on_entry();
+	void s12_on_exit();
+	unsigned int s12_on_event(FSMEvent* event);
 	
 	ErrorCodeEnum OpenDevice(BYTE btOpenType, const char *pDevSN);
 	int Initial();
@@ -1059,7 +988,7 @@ public:
 		else
 			return m_eDevState;
 	}
-	int QueryCardInfo();
+	int QueryCardPos();
 
 	int UpdateLocalRunCfg(CAutoArray<int> hopperArr);
 	int SyncDataToDB(bool bMaintain[12],bool bSetCaptured=true);//同步物料计数
@@ -1170,10 +1099,6 @@ public:
 	CSimpleStringA MaskCardno(const char* cardno);
 	void GetCardProcessLastErr(ErrorCodeEnum& eErrCode, CSimpleStringA& lastApiName, CSimpleStringA& alarmMsg, CSimpleStringA& csErrMsgWithReturnCode);
 	
-	int QuickSelfCheckImpl();
-	void setQuickSelfCheck() {
-		m_quickSelfcheck = true;
-	}
 	void SetDoExitFlag(bool bFlag) { m_bDoExit = bFlag; }
 	int PowerOffIC(int type);//0:接触IC 1:非接
 	virtual void OnStateTrans(int iSrcState, int iDstState);
@@ -1185,13 +1110,10 @@ public:
 	}
 private:
 	bool m_bCancelInsert;
-	bool m_quickSelfcheck;
 	bool m_bDoExit;
 	bool m_bReturnMainPage;//正在处理过程中是否退到首页变量
 	ULLINT m_ullBeginTime, m_ullEndTime;
 	BYTE m_btCID/*9f27*/;
-public:
-	int  m_SelfcheckSleepTime;
 };
 struct InitTask : public ITaskSp
 {
@@ -1313,27 +1235,15 @@ struct WaitFetchingTask : public ITaskSp
 		fsm->PostEventFIFO(e);
 	}
 };
-struct ResetTask : public ITaskSp
-{
-	CCardIssuerFSM* fsm;
-	ResetTask(CCardIssuerFSM* f) : fsm(f) {}
-	void Process()
-	{
-		ResetFinishedEvent *e = new ResetFinishedEvent();
-		e->param1 = fsm->Reset();
-		fsm->PostEventFIFO(e);
-	}
-};
-struct WriteTask : public ITaskSp
+
+struct QueryCardPosTask : public ITaskSp
 {
-	SpReqAnsContext<CardIssuerStandService_WriteTrack_Req,CardIssuerStandService_WriteTrack_Ans>::Pointer ctx;
 	CCardIssuerFSM* fsm;
-	WriteTask(CCardIssuerFSM* f) : fsm(f) {}
+	QueryCardPosTask(CCardIssuerFSM* f) : fsm(f) {}
 	void Process()
 	{
-		CardWriteFinishedEvent *e = new CardWriteFinishedEvent();
-		e->ctx = ctx;
-		e->param1 = fsm->WriteCard(ctx);
+		FSMEvent* e = new FSMEvent(USER_EVT_QUERY_CARD_POS_FINISHED);
+		e->param1 = fsm->QueryCardPos();
 		fsm->PostEventFIFO(e);
 	}
 };
@@ -1348,18 +1258,6 @@ struct DoExitWhenIdleTask : public ITaskSp
 		fsm->SetDoExitFlag(false);
 	}
 };
-struct SAMICCommandTask : public ITaskSp
-{
-	CCardIssuerFSM* fsm;
-	SpReqAnsContext<CardIssuerStandService_SAMICCommand_Req, CardIssuerStandService_SAMICCommand_Ans>::Pointer ctx;
-	SAMICCommandTask(CCardIssuerFSM* f) : fsm(f) {}
-	void Process()
-	{
-		FSMEvent* e = new FSMEvent(USER_EVT_SAM_IC_FINISHED);
-		e->param1 = fsm->SAMICCommand(ctx);
-		fsm->PostEventFIFO(e);
-	}
-};
 
 
 struct RegistCaptureCardInfoTask : public ITaskSp
@@ -1476,18 +1374,5 @@ struct InsertJSTask : public ITaskSp
 	}
 };
 
-//故障自检task
-struct QuickSelfcheckTask : public ITaskSp
-{
-	CCardIssuerFSM* fsm;
-	QuickSelfcheckTask(CCardIssuerFSM* f) : fsm(f) {}
-	void Process()
-	{
-		QuickSelfcheckFinishEvent* e = new QuickSelfcheckFinishEvent();
-		Sleep(fsm->m_SelfcheckSleepTime);
-		e->param1 = fsm->QuickSelfCheckImpl();
-		fsm->PostEventFIFO(e);
-	}
-};
 #pragma endregion JS接口 工作线程
 #endif //__CARD_ISSUER_FSM_H

+ 3 - 8
Module/mod_CardIssuerStand/mod_cardissuerStand.cpp

@@ -92,10 +92,7 @@ void CardIssuerServerSession::Handle_QueryCardInfo(SpReqAnsContext<CardIssuerSta
 }
 void CardIssuerServerSession::Handle_WriteTrack(SpReqAnsContext<CardIssuerStandService_WriteTrack_Req, CardIssuerStandService_WriteTrack_Ans>::Pointer ctx)
 {
-	LOG_FUNCTION();
-	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("WriteTrack");
-	m_pEntity->WriteTrack(ctx);
+	ctx->Answer(Error_NotImpl);
 }
 void CardIssuerServerSession::Handle_GetMaterialCountEx(SpReqAnsContext<CardIssuerStandService_GetMaterialCountEx_Req, CardIssuerStandService_GetMaterialCountEx_Ans>::Pointer ctx)
 {
@@ -127,9 +124,7 @@ void CardIssuerServerSession::Handle_IssueEx(SpReqAnsContext<CardIssuerStandServ
 }
 void CardIssuerServerSession::Handle_SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCommand_Req, CardIssuerStandService_SAMICCommand_Ans>::Pointer ctx)
 {
-	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("SAMICCommand");
-	m_pEntity->SAMICCommand(ctx);
+	ctx->Answer(Error_NotImpl);
 }
 void CardIssuerServerSession::Handle_QueryCIStatus(SpReqAnsContext<CardIssuerStandService_QueryCIStatus_Req, CardIssuerStandService_QueryCIStatus_Ans>::Pointer ctx)
 {
@@ -151,7 +146,7 @@ void CardIssuerServerSession::Handle_ReadJS(SpReqAnsContext<CardIssuerStandServi
 {
 	LOG_FUNCTION();
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("Invoke ReadJS req.aid=%s, req.business=%s", ctx->Req.aid.GetData(), ctx->Req.businessData.GetData());
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("Invoke ReadJS req.aid=%s, req.mode=%d, req.business=%s", ctx->Req.aid.GetData(), ctx->Req.mode, ctx->Req.businessData.GetData());
 	m_pEntity->ReadJS(ctx);
 }
 void CardIssuerServerSession::Handle_PostOnlineJS(SpReqAnsContext<CardIssuerStandService_PostOnlineJS_Req, CardIssuerStandService_PostOnlineJS_Ans>::Pointer ctx)

+ 10 - 14
Module/mod_CardIssuerStand/mod_cardissuerStand.h

@@ -207,16 +207,19 @@ public:
 		}
 		else
 		{
-			ctx->Ans.position = m_fsm.QueryCardInfo();
+			int ret = m_fsm.QueryCardPos();
+			if (ret != 1)//query hardware ok
+				ctx->Ans.position = m_fsm.QueryCardPos();
+			else
+			{
+				if (_stricmp(m_fsm.GetCurrStateName(), "Hold") == 0)
+					ctx->Ans.position = 2;
+				else
+					ctx->Ans.position = 0;
+			}
 			ctx->Answer(Error_Succeed);
 		}
 	}
-	void WriteTrack(SpReqAnsContext<CardIssuerStandService_WriteTrack_Req, CardIssuerStandService_WriteTrack_Ans>::Pointer ctx)
-	{
-		CardWriteEvent *pEvt = new CardWriteEvent();
-		pEvt->ctx = ctx;
-		m_fsm.PostEventFIFO(pEvt);
-	}
 	void SetIssueFlag(SpOnewayCallContext<CardIssuerStandService_SetIssueFlag_Info>::Pointer ctx){ m_fsm.FrontSetIssueFlag(true); }
 	void GetMaterialCountEx(SpReqAnsContext<CardIssuerStandService_GetMaterialCountEx_Req, CardIssuerStandService_GetMaterialCountEx_Ans>::Pointer ctx)
 	{
@@ -284,13 +287,6 @@ public:
 			m_fsm.PostEventFIFO(pEvt);
 		}
 	}
-	void SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCommand_Req, CardIssuerStandService_SAMICCommand_Ans>::Pointer ctx)
-	{
-		LOG_FUNCTION();
-		SAMICCommandEvent *pEvt = new SAMICCommandEvent();
-		pEvt->ctx = ctx;
-		m_fsm.PostEventFIFO(pEvt);
-	}
 	void GetDevInfo(SpReqAnsContext<CardIssuerStandService_GetDevInfo_Req, CardIssuerStandService_GetDevInfo_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();