|
@@ -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)
|