浏览代码

Z991239-6121 #comment feat: 修复非接实体lost缺陷

Signed-Off-By: commit-hook
刘文涛80174520 6 月之前
父节点
当前提交
e38b63b05f
共有 2 个文件被更改,包括 17 次插入5 次删除
  1. 15 4
      Module/mod_ContactlessCard/ContactlessFSM.cpp
  2. 2 1
      Module/mod_ContactlessCard/ContactlessFSM.h

+ 15 - 4
Module/mod_ContactlessCard/ContactlessFSM.cpp

@@ -486,8 +486,14 @@ void CContactlessCardFSM::s9_on_entry()
 	LOG_FUNCTION();
 	m_currentFSMState = 9;
 	SetDevState(DEVICE_STATUS_FAULT);
-	FSMEvent *e = new FSMEvent(USER_EVT_RESET);
-	PostEventFIFO(e);
+	if (m_bNeedReset) {
+		FSMEvent* e = new FSMEvent(USER_EVT_RESET);
+		PostEventFIFO(e);
+	}
+	else {
+		m_testResult = Error_InvalidState;
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("device is fault, wait for restart entity");
+	}
 }
 void CContactlessCardFSM::s9_on_exit()
 {
@@ -655,8 +661,7 @@ ErrorCodeEnum CContactlessCardFSM::OnInit()
 	if (errCode != Error_Succeed)
 	{
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Load failed(%d).",errCode);
-		m_bOpening = false;
-		return errCode;
+		SetDevInitFlag(false);//打开失败
 	}
 	devStatus.eMediaPos = CI_MEDIA_NOTPRESENT;
 	m_bOpening = false;
@@ -862,6 +867,12 @@ ErrorCodeEnum CContactlessCardFSM::Load()
 }
 int CContactlessCardFSM::Initial()
 {
+	if (!m_bOpened) {
+		m_bNeedReset = false;
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Initial,ret = 1");
+		return 1;//故障模式
+	}
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Initial,ret = 0");
 	return 0;
 }
 bool CContactlessCardFSM::GetDevStatus(bool bPrint)

+ 2 - 1
Module/mod_ContactlessCard/ContactlessFSM.h

@@ -281,7 +281,7 @@ public:
 		CContactlessCardFSM() : m_bCancelAccept(false), m_bWaitingAccept(false),
 		m_bWaitAccepteMore(false), m_bExit(false), m_resetTimes(0), m_testResult(Error_Succeed)
 		, m_bCDA(false), m_pDataToARQC(NULL), m_csMachineType(true), m_csDevNo(""), m_devInit(false), m_repeatErrTimes(0),
-		m_bCancelRead(false),m_bPageExit(false)
+		m_bCancelRead(false),m_bPageExit(false), m_bNeedReset(true)
 		{
 			HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x213); 
 			cmdDecodeMag2 = NULL;
@@ -409,6 +409,7 @@ private:
 	//new
 	bool m_bCancelRead;
 	bool m_bPageExit;
+	bool m_bNeedReset;
 };
 struct InitTask : public ITaskSp
 {