Browse Source

Z991239-6441 #comment feat: 预期之外的请求处理,走状态机事件处理的default逻辑,不走提前判定,也不走事件本地的UnHandle逻辑

oilyang 1 month ago
parent
commit
437ad8c2ff

+ 87 - 7
Module/mod_CardIssuerStand/CardIssuerStandFSM.cpp

@@ -379,6 +379,7 @@ unsigned int CCardIssuerFSM::s2_on_event(FSMEvent* pEvt)
 	}
 		break;
 	default:
+		FSMEventDefaultProcess(pEvt, CardIssuer_UserErrorCode_PROCESS_IDLE);
 		break;
 	}
 	return ret;
@@ -462,6 +463,7 @@ unsigned int CCardIssuerFSM::s3_on_event(FSMEvent* pEvt)
 		}
 		break;
 	default:
+		FSMEventDefaultProcess(pEvt, CardIssuer_UserErrorCode_PROCESS_ACCEPT);
 		break;
 	}
 	return ret;
@@ -765,6 +767,7 @@ unsigned int CCardIssuerFSM::s4_on_event(FSMEvent* pEvt)
 			pEvt->SetHandled();
 			return pEvt->param1;
 		default:
+			FSMEventDefaultProcess(pEvt, CardIssuer_UserErrorCode_PROCESS_HOLD);
 			break;
 	}
 	return 0;
@@ -820,6 +823,7 @@ unsigned int CCardIssuerFSM::s5_on_event(FSMEvent* pEvt)
 			ret = 0;
 		}
 	default:
+		FSMEventDefaultProcess(pEvt, CardIssuer_UserErrorCode_PROCESS_READ);
 		break;
 	}
 	return ret;
@@ -837,18 +841,23 @@ void CCardIssuerFSM::s6_on_exit()
 unsigned int CCardIssuerFSM::s6_on_event(FSMEvent* pEvt)
 {
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("s6 evt (%d,%d)", pEvt->iEvt, pEvt->param1));
-
-	if (pEvt->iEvt == USER_EVT_EJECTFINISHED){
+	switch (pEvt->iEvt)
+	{
+	case USER_EVT_EJECTFINISHED:
+	{
 		pEvt->SetHandled();
 		if (pEvt->param1 == 0)
 			return 0;
 		else
 			return 1;
-	}else if (pEvt->iEvt == USER_EVT_QUIT) {
+	}
+	case USER_EVT_QUIT:
+	{
 		pEvt->SetHandled();
 		return 0;
 	}
-	else if (pEvt->iEvt == USER_EVT_JS_EJECT_FINISHED) {
+	case USER_EVT_JS_EJECT_FINISHED:
+	{
 		pEvt->SetHandled();
 		if (pEvt->param1 == 0) {
 			LogEvent(Severity_Middle, LOG_EVT_CARDISSUER_OP, "CardIssuerStand op.");
@@ -861,6 +870,10 @@ unsigned int CCardIssuerFSM::s6_on_event(FSMEvent* pEvt)
 			return 1;
 		}
 	}
+	default:
+		FSMEventDefaultProcess(pEvt, CardIssuer_UserErrorCode_PROCESS_EJECT);
+		break;
+	}
 	return 0;
 }
 //Waiting fetch
@@ -1049,6 +1062,7 @@ unsigned int CCardIssuerFSM::s7_on_event(FSMEvent* pEvt)
 		break;
 
 	default:
+		FSMEventDefaultProcess(pEvt, CardIssuer_UserErrorCode_PROCESS_WAIT_FETCH);
 		break;
 	}
 	return 0;
@@ -1065,14 +1079,18 @@ void CCardIssuerFSM::s8_on_exit()
 unsigned int CCardIssuerFSM::s8_on_event(FSMEvent* pEvt)
 {
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("s8 evt (%d,%d)", pEvt->iEvt, pEvt->param1));
-	if (pEvt->iEvt == USER_EVT_CAPTUREFINISHED){
+	switch (pEvt->iEvt)
+	{
+	case USER_EVT_CAPTUREFINISHED:
+	{
 		pEvt->SetHandled();
 		if (pEvt->param1 == 0)
 			return 0;
 		else
 			return 1;
 	}
-	else if (pEvt->iEvt == USER_EVT_JS_CAPTURE_FINISHED) {
+	case USER_EVT_JS_CAPTURE_FINISHED:
+	{
 		pEvt->SetHandled();
 		if (pEvt->param1 == 0) {
 			return 0;
@@ -1080,10 +1098,16 @@ unsigned int CCardIssuerFSM::s8_on_event(FSMEvent* pEvt)
 		else {
 			return 1;
 		}
-	}else if (pEvt->iEvt == USER_EVT_QUIT) {
+	}
+	case USER_EVT_QUIT:
+	{
 		pEvt->SetHandled();
 		return 0;
 	}
+	default:
+		FSMEventDefaultProcess(pEvt, CardIssuer_UserErrorCode_PROCESS_FAULT);
+		break;
+	}
 	return 0;
 }
 //Failed
@@ -1114,6 +1138,7 @@ unsigned int CCardIssuerFSM::s9_on_event(FSMEvent* pEvt)
 		pEvt->SetHandled();
 		break;
 	default:
+		FSMEventDefaultProcess(pEvt, CardIssuer_UserErrorCode_PROCESS_FAULT);
 		break;
 	}
 
@@ -1163,6 +1188,7 @@ unsigned int CCardIssuerFSM::s10_on_event(FSMEvent* pEvt)
 	}
 		break;
 	default:
+		FSMEventDefaultProcess(pEvt, CardIssuer_UserErrorCode_PROCESS_ISSUE);
 		break;
 	}
 	return ret;
@@ -1215,6 +1241,7 @@ unsigned int CCardIssuerFSM::s11_on_event(FSMEvent* pEvt)
 	}
 	break;
 	default:
+		FSMEventDefaultProcess(pEvt, CardIssuer_UserErrorCode_PROCESS_READ);
 		break;
 	}
 	return ret;
@@ -1264,6 +1291,7 @@ unsigned int CCardIssuerFSM::s12_on_event(FSMEvent* pEvt)
 	}
 	break;
 	default:
+		FSMEventDefaultProcess(pEvt, CardIssuer_UserErrorCode_PROCESS_ISSUE);
 		break;
 	}
 	return ret;
@@ -7029,3 +7057,55 @@ void CCardIssuerFSM::OnStateTrans(int iSrcState, int iDstState)
 {
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("trans from %s to %s", GetStateName(iSrcState), GetStateName(iDstState));
 }
+void CCardIssuerFSM::FSMEventDefaultProcess(FSMEvent* pEvt, DWORD dwUserCode)
+{
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("iEvt:%d,dwUserCode:%x", pEvt->iEvt, dwUserCode);
+	switch (pEvt->iEvt)
+	{
+	case USER_EVT_JS_INSERT:
+	{
+		InsertJSEvent* ise = dynamic_cast<InsertJSEvent*>(pEvt);
+		pEvt->SetHandled();
+		ise->ctx->Answer(Error_InvalidState, dwUserCode);
+	}
+	break;
+	case USER_EVT_JS_READ:
+	{
+		ReadJSEvent* rje = dynamic_cast<ReadJSEvent*>(pEvt);
+		pEvt->SetHandled();
+		rje->ctx->Answer(Error_InvalidState, dwUserCode);
+	}
+	break;
+	case USER_EVT_JS_ISSUE_FROM_BOX:
+	{
+		IssueFromBoxJSEvent* ife = dynamic_cast<IssueFromBoxJSEvent*>(pEvt);;
+		pEvt->SetHandled();
+		ife->ctx->Answer(Error_InvalidState, dwUserCode);
+	}
+	break;
+	case USER_EVT_JS_EJECT:
+	{
+		EjectJSEvent* eje = dynamic_cast<EjectJSEvent*>(pEvt);
+		pEvt->SetHandled();
+		eje->ctx->Answer(Error_InvalidState, dwUserCode);
+	}
+	break;
+	case USER_EVT_JS_POSTONLINE:
+	{
+		PostOnlineJSEvent* poe = dynamic_cast<PostOnlineJSEvent*>(pEvt);
+		pEvt->SetHandled();
+		poe->ctx->Answer(Error_InvalidState, dwUserCode);
+	}
+	break;
+	case USER_EVT_JS_CAPTURE:
+	{
+		CaptureJSEvent* cje = dynamic_cast<CaptureJSEvent*>(pEvt);
+		pEvt->SetHandled();
+		cje->ctx->Answer(Error_InvalidState, dwUserCode);
+	}
+	break;
+	default:
+		break;
+	}
+	return;
+}

+ 14 - 127
Module/mod_CardIssuerStand/CardIssuerStandFSM.h

@@ -53,7 +53,7 @@ enum EvtType
 	USER_EVT_ISSUE_EX_FINISHED,
 	USER_EVT_BACK_TO_INIT,
 	//新定义JS状态机事件枚举
-	USER_EVT_JS_CAPTURE = EVT_USER + 38,
+	USER_EVT_JS_CAPTURE,
 	USER_EVT_JS_CAPTURE_FINISHED,
 	USER_EVT_JS_EJECT,
 	USER_EVT_JS_EJECT_FINISHED,
@@ -146,14 +146,6 @@ public:
 	CardAcceptEvent() : FSMEvent(USER_EVT_ACCEPT) {}
 	~CardAcceptEvent() {}
 	SpReqAnsContext<CardIssuerStandService_Insert_Req, CardIssuerStandService_Insert_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("card accept unhandled");
-			ctx->Answer(Error_InvalidState);
-		}
-	}
 };
 class CardIssueEvent : public FSMEvent
 {
@@ -161,14 +153,6 @@ public:
 	CardIssueEvent() : FSMEvent(USER_EVT_ISSUE) {}
 	~CardIssueEvent() {}
 	SpReqAnsContext<CardIssuerStandService_Issue_Req, CardIssuerStandService_Issue_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("card issue unhandled");
-			ctx->Answer(Error_InvalidState);
-		}
-	}
 };
 
 class CancelAcceptEvent : public FSMEvent
@@ -176,10 +160,6 @@ class CancelAcceptEvent : public FSMEvent
 public:
 	CancelAcceptEvent() : FSMEvent(USER_EVT_ACCEPT_CANCEL) {}
 	~CancelAcceptEvent() {}
-	virtual void OnUnhandled()
-	{
-		//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("card cancel accept unhandled");
-	}
 };
 
 class CardReadEvent : public FSMEvent
@@ -188,14 +168,6 @@ public:
 	CardReadEvent() : FSMEvent(USER_EVT_READ) {}
 	~CardReadEvent() {}
 	SpReqAnsContext<CardIssuerStandService_Read_Req, CardIssuerStandService_Read_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("card read unhandled");
-			ctx->Answer(Error_InvalidState);
-		}
-	}
 protected:
 private:
 };
@@ -205,13 +177,6 @@ public:
 	CardReadFinishedEvent() : FSMEvent(USER_EVT_READ_FINISHED) {}
 	~CardReadFinishedEvent() {}
 	SpReqAnsContext<CardIssuerStandService_Read_Req, CardIssuerStandService_Read_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-		{
-			//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("card read unhandled(new)");
-		}
-	}
 protected:
 private:
 };
@@ -237,11 +202,6 @@ public:
 	PreOnlineEvent() : FSMEvent(USER_EVT_PREONLINE){}
 	~PreOnlineEvent(){}
 	SpReqAnsContext<CardIssuerStandService_PreOnline_Req,CardIssuerStandService_PreOnline_Ans>::Pointer ctx;
-	virtual void OnUnhandled() 
-	{
-		if (ctx != NULL)
-			ctx->Answer(Error_InvalidState);
-	}
 protected:
 private:
 };
@@ -251,11 +211,6 @@ public:
 	PostOnlineEvent() : FSMEvent(USER_EVT_POSTONLINE){}
 	~PostOnlineEvent(){}
 	SpReqAnsContext<CardIssuerStandService_PostOnline_Req,CardIssuerStandService_PostOnline_Ans>::Pointer ctx;
-	virtual void OnUnhandled() 
-	{
-		if (ctx != NULL)
-			ctx->Answer(Error_InvalidState);
-	}
 protected:
 private:
 };
@@ -265,11 +220,6 @@ public:
 	CardCaptureEvent() : FSMEvent(USER_EVT_CAPTURE){}
 	~CardCaptureEvent(){}
 	SpReqAnsContext<CardIssuerStandService_Capture_Req,CardIssuerStandService_Capture_Ans>::Pointer ctx;
-	virtual void OnUnhandled() 
-	{
-		if (ctx != NULL)
-			ctx->Answer(Error_InvalidState);
-	}
 
 protected:
 private:
@@ -280,11 +230,6 @@ public:
 	CardEjectEvent() : FSMEvent(USER_EVT_EJECT){}
 	~CardEjectEvent(){}
 	SpReqAnsContext<CardIssuerStandService_Eject_Req,CardIssuerStandService_Eject_Ans>::Pointer ctx;
-	virtual void OnUnhandled() 
-	{
-		if (ctx != NULL)
-			ctx->Answer(Error_InvalidState);
-	}
 protected:
 private:
 };
@@ -295,11 +240,6 @@ public:
 	GetMaterialExEvent() : FSMEvent(USER_EVT_GET_MATERIAL_EX) {}
 	~GetMaterialExEvent() {}
 	SpReqAnsContext<CardIssuerStandService_GetMaterialCountEx_Req, CardIssuerStandService_GetMaterialCountEx_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-			ctx->Answer(Error_InvalidState);
-	}
 protected:
 private:
 };
@@ -309,11 +249,6 @@ public:
 	SetMaterialExEvent() : FSMEvent(USER_EVT_SET_MATERIAL_EX){}
 	~SetMaterialExEvent(){}
 	SpReqAnsContext<CardIssuerStandService_SetMaterialCountEx_Req, CardIssuerStandService_SetMaterialCountEx_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-			ctx->Answer(Error_InvalidState);
-	}
 protected:
 private:
 };
@@ -323,14 +258,6 @@ public:
 	CardIssueExEvent() : FSMEvent(USER_EVT_ISSUE_EX){}
 	~CardIssueExEvent(){}
 	SpReqAnsContext<CardIssuerStandService_IssueEx_Req, CardIssuerStandService_IssueEx_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("card issue ex unhandled");
-			ctx->Answer(Error_InvalidState);
-		}
-	}
 };
 
 #pragma region JS接口 event
@@ -341,13 +268,6 @@ public:
 	EjectJSEvent() : FSMEvent(USER_EVT_JS_EJECT) {}
 	~EjectJSEvent() {}
 	SpReqAnsContext<CardIssuerStandService_EjectJS_Req, CardIssuerStandService_EjectJS_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("EjectJS Operate unhandled");
-		}
-	}
 };
 
 class CaptureJSEvent : public FSMEvent
@@ -356,13 +276,6 @@ public:
 	CaptureJSEvent() : FSMEvent(USER_EVT_JS_CAPTURE) {}
 	~CaptureJSEvent() {}
 	SpReqAnsContext<CardIssuerStandService_CaptureJS_Req, CardIssuerStandService_CaptureJS_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("CaptureJS Operate unhandled");
-		}
-	}
 };
 
 class PostOnlineJSEvent : public FSMEvent
@@ -371,13 +284,6 @@ public:
 	PostOnlineJSEvent() : FSMEvent(USER_EVT_JS_POSTONLINE) {}
 	~PostOnlineJSEvent() {}
 	SpReqAnsContext<CardIssuerStandService_PostOnlineJS_Req, CardIssuerStandService_PostOnlineJS_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("PostOnlineJS Operate unhandled");
-		}
-	}
 };
 
 class IssueFromBoxJSEvent : public FSMEvent
@@ -386,30 +292,10 @@ public:
 	IssueFromBoxJSEvent() : FSMEvent(USER_EVT_JS_ISSUE_FROM_BOX) {}
 	~IssueFromBoxJSEvent() {}
 	SpReqAnsContext<CardIssuerStandService_IssueFromBoxJS_Req, CardIssuerStandService_IssueFromBoxJS_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("IssueFromBoxJS Operate unhandled");
-		}
-	}
 };
 
 
-class ReadJSEvent : public FSMEvent
-{
-public:
-	ReadJSEvent() : FSMEvent(USER_EVT_JS_READ) {}
-	~ReadJSEvent() {}
-	SpReqAnsContext<CardIssuerStandService_ReadJS_Req, CardIssuerStandService_ReadJS_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("ReadJS Operate unhandled");
-		}
-	}
-};
+
 
 class InsertJSEvent : public FSMEvent
 {
@@ -417,13 +303,6 @@ public:
 	InsertJSEvent() : FSMEvent(USER_EVT_JS_INSERT) {}
 	~InsertJSEvent() {}
 	SpReqAnsContext<CardIssuerStandService_InsertJS_Req, CardIssuerStandService_InsertJS_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("InsertJS Operate unhandled");
-		}
-	}
 };
 
 class CancelInsertJSEvent : public FSMEvent
@@ -431,10 +310,6 @@ class CancelInsertJSEvent : public FSMEvent
 public:
 	CancelInsertJSEvent() : FSMEvent(USER_EVT_JS_INSERT_CANCEL) {}
 	~CancelInsertJSEvent() {}
-	virtual void OnUnhandled()
-	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("CancelInsertJS Operate unhandled");
-	}
 };
 
 #pragma endregion JS接口 event
@@ -1108,13 +983,25 @@ public:
 		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("rtaMsg=%s", rtaMsg.GetData());
 		return rtaMsg;
 	}
+	
 private:
 	bool m_bCancelInsert;
 	bool m_bDoExit;
 	bool m_bReturnMainPage;//正在处理过程中是否退到首页变量
 	ULLINT m_ullBeginTime, m_ullEndTime;
 	BYTE m_btCID/*9f27*/;
+	void FSMEventDefaultProcess(FSMEvent* pEvt, DWORD dwUserCode);
 };
+
+class ReadJSEvent : public FSMEvent
+{
+public:
+	ReadJSEvent() : FSMEvent(USER_EVT_JS_READ){}
+	~ReadJSEvent() {}
+	SpReqAnsContext<CardIssuerStandService_ReadJS_Req, CardIssuerStandService_ReadJS_Ans>::Pointer ctx;
+};
+
+
 struct InitTask : public ITaskSp
 {
 	CCardIssuerFSM* fsm;

+ 23 - 72
Module/mod_CardIssuerStand/mod_cardissuerStand.h

@@ -209,7 +209,7 @@ public:
 		{
 			int ret = m_fsm.QueryCardPos();
 			if (ret != 1)//query hardware ok
-				ctx->Ans.position = m_fsm.QueryCardPos();
+				ctx->Ans.position = ret;
 			else
 			{
 				if (_stricmp(m_fsm.GetCurrStateName(), "Hold") == 0)
@@ -325,103 +325,66 @@ public:
 	void ReadJS(SpReqAnsContext<CardIssuerStandService_ReadJS_Req, CardIssuerStandService_ReadJS_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
-		if (!m_fsm.GetDevInitFlag()) {
+		if (!m_fsm.GetDevInitFlag())
 			ctx->Answer(Error_DevNotAvailable, CardIssuer_UserErrorCode_DevOpen_Failed);
-		}
-		else if (_stricmp(m_fsm.GetCurrStateName(), "Hold") != 0) {
-			DWORD errCode = m_fsm.GetFsmStateErrCode();
-			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("ReadJS req is unhandled ,CurrState=%d", state);
-			ctx->Answer(Error_Unexpect, errCode);
-		}
-		else {
+		else
+		{
 			ReadJSEvent* pEvt = new ReadJSEvent();
 			pEvt->ctx = ctx;
 			m_fsm.PostEventFIFO(pEvt);
 		}
-
 	}
 	void PostOnlineJS(SpReqAnsContext<CardIssuerStandService_PostOnlineJS_Req, CardIssuerStandService_PostOnlineJS_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
-		if (!m_fsm.GetDevInitFlag()) {
+		if (!m_fsm.GetDevInitFlag())
 			ctx->Answer(Error_DevNotAvailable, CardIssuer_UserErrorCode_DevOpen_Failed);
-		}
-		else if (_stricmp(m_fsm.GetCurrStateName(), "Hold") != 0) {
-			DWORD errCode = m_fsm.GetFsmStateErrCode();
-			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("PostOnlineJS req is unhandled ,CurrState=%d", state);
-			ctx->Answer(Error_Unexpect, errCode);
-		}
-		else {
+		else
+		{
 			PostOnlineJSEvent* pEvt = new PostOnlineJSEvent();
 			pEvt->ctx = ctx;
 			m_fsm.PostEventFIFO(pEvt);
 		}
-
 	}
 	void EjectJS(SpReqAnsContext<CardIssuerStandService_EjectJS_Req, CardIssuerStandService_EjectJS_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
-		if (!m_fsm.GetDevInitFlag()) {
+		if (!m_fsm.GetDevInitFlag()) 
 			ctx->Answer(Error_DevNotAvailable, CardIssuer_UserErrorCode_DevOpen_Failed);
-		}
-		else if (_stricmp(m_fsm.GetCurrStateName(), "Hold") != 0) {
-			DWORD errCode = m_fsm.GetFsmStateErrCode();
-			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("EjectJS req is unhandled ,CurrState=%d", state);
-			ctx->Answer(Error_Unexpect, errCode);
-		}
-		else {
+		else
+		{
 			EjectJSEvent* e = new EjectJSEvent();
 			e->ctx = ctx;
 			m_fsm.PostEventFIFO(e);
 		}
-
 	}
 	void CaptureJS(SpReqAnsContext<CardIssuerStandService_CaptureJS_Req, CardIssuerStandService_CaptureJS_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
-		if (!m_fsm.GetDevInitFlag()) {
+		if (!m_fsm.GetDevInitFlag()) 
 			ctx->Answer(Error_DevNotAvailable, CardIssuer_UserErrorCode_DevOpen_Failed);
-		}
-		else if (_stricmp(m_fsm.GetCurrStateName(), "Hold") == 0 || _stricmp(m_fsm.GetCurrStateName(), "Idle") == 0) {
+		else
+		{
 			CaptureJSEvent* e = new CaptureJSEvent();
 			e->ctx = ctx;
 			m_fsm.PostEventFIFO(e);
 		}
-		else {
-			DWORD errCode = m_fsm.GetFsmStateErrCode();
-			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("CaptureJS req is unhandled ,CurrState=%d", state);
-			ctx->Answer(Error_Unexpect, errCode);
-		}
-
 	}
 	void QueryHasCardJS(SpReqAnsContext<CardIssuerStandService_QueryHasCardJS_Req, CardIssuerStandService_QueryHasCardJS_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
-		if (!m_fsm.GetDevInitFlag()) {
+		if (!m_fsm.GetDevInitFlag())
 			ctx->Answer(Error_DevNotAvailable, CardIssuer_UserErrorCode_DevOpen_Failed);
-		}
-		else {
+		else
 			m_fsm.QueryHasCardJS(ctx);
-		}
-
 	}
 	void IssueFromBoxJS(SpReqAnsContext<CardIssuerStandService_IssueFromBoxJS_Req, CardIssuerStandService_IssueFromBoxJS_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
-		if (!m_fsm.GetDevInitFlag()) {
+		if (!m_fsm.GetDevInitFlag()) 
 			ctx->Answer(Error_DevNotAvailable, CardIssuer_UserErrorCode_DevOpen_Failed);
-		}
-		else if (_stricmp(m_fsm.GetCurrStateName(), "Idle") != 0) {
-			DWORD errCode = m_fsm.GetFsmStateErrCode();
-			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("IssueFromBoxJS req is unhandled ,CurrState=%d", state);
-			ctx->Answer(Error_Unexpect, errCode);
-		}
-		else {
+		else
+		{
 			IssueFromBoxJSEvent* pEvt = new IssueFromBoxJSEvent();
 			pEvt->ctx = ctx;
 			m_fsm.PostEventFIFO(pEvt);
@@ -430,32 +393,20 @@ public:
 	void InsertJS(SpReqAnsContext<CardIssuerStandService_InsertJS_Req, CardIssuerStandService_InsertJS_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
-		if (!m_fsm.GetDevInitFlag()) {
+		if (!m_fsm.GetDevInitFlag())
 			ctx->Answer(Error_DevNotAvailable, CardIssuer_UserErrorCode_DevOpen_Failed);
-		}
-		else if (_stricmp(m_fsm.GetCurrStateName(), "Idle") != 0) {
-			DWORD errCode = m_fsm.GetFsmStateErrCode();
-			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("InsertJS req is unhandled ,CurrState=%d", state);
-			ctx->Answer(Error_Unexpect, errCode);
-		}
-		else {
+		else
+		{
 			InsertJSEvent* pEvt = new InsertJSEvent();
 			pEvt->ctx = ctx;
 			m_fsm.PostEventFIFO(pEvt);
 		}
-
 	}
 	void CancelInsertJS(SpOnewayCallContext<CardIssuerStandService_CancelInsertJS_Info>::Pointer ctx)
 	{
 		LOG_FUNCTION();
-		if (!m_fsm.GetDevInitFlag()) {
-			LogWarn(Severity_Middle, Error_DevNotAvailable, CardIssuer_UserErrorCode_DevOpen_Failed, "CancelInsertJS but DevOpen failed.");
-		}
-		else {
-			CancelInsertJSEvent* evt = new CancelInsertJSEvent();
-			m_fsm.PostEventFIFO(evt);
-		}
+		CancelInsertJSEvent* evt = new CancelInsertJSEvent();
+		m_fsm.PostEventFIFO(evt);
 	}
 
 protected: