|
@@ -5,23 +5,15 @@
|
|
|
#include "EventCode.h"
|
|
|
#include <algorithm>
|
|
|
#include <map>
|
|
|
+#include "publicFunExport.h"
|
|
|
+
|
|
|
using namespace std;
|
|
|
+using namespace SP::Module::Comm;
|
|
|
+
|
|
|
#define _ATL_NO_AUTOMATIC_NAMESPACE
|
|
|
#define ReadCard_TIMEOUT 62000 //web的超时时间是65s
|
|
|
#define ReadCard_Min_Time 12000 //Read+PreOnline
|
|
|
|
|
|
-//TODO: CrossPlaform [Gifur@2025730]
|
|
|
-unsigned long long GetTickCountRVC() {
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- return GetTickCount64();
|
|
|
-#else
|
|
|
- struct timespec ts;
|
|
|
-
|
|
|
- clock_gettime(CLOCK_MONOTONIC, &ts);
|
|
|
-
|
|
|
- return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
|
|
|
-#endif //RVC_OS_WIN
|
|
|
-}
|
|
|
class CCardReadAdapterEntity;
|
|
|
void CCardReadAdapterFSM::s0_on_entry()
|
|
|
{
|
|
@@ -1004,8 +996,8 @@ int CCardReadAdapterFSM::ContactlessCardRead(SpReqAnsContext<CardReadAdapterServ
|
|
|
}
|
|
|
ErrorCodeEnum eErr = Error_Unexpect;
|
|
|
DWORD elapsed = 0;
|
|
|
- DWORD dwStart = GetTickCountRVC();
|
|
|
- DWORD dwEnd = GetTickCountRVC();
|
|
|
+ DWORD dwStart = RVCGetTickCount();
|
|
|
+ DWORD dwEnd = RVCGetTickCount();
|
|
|
int insertloopNum = 0;
|
|
|
int preloopNum = 0;
|
|
|
while(elapsed + ReadCard_Min_Time < ReadCard_TIMEOUT)
|
|
@@ -1018,7 +1010,7 @@ int CCardReadAdapterFSM::ContactlessCardRead(SpReqAnsContext<CardReadAdapterServ
|
|
|
DWORD dwUserCode = 0;
|
|
|
req.aid = ctx->Req.aid;
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to call contactless insert...");
|
|
|
- dwEnd = GetTickCountRVC();
|
|
|
+ dwEnd = RVCGetTickCount();
|
|
|
DWORD dwTimeout = ReadCard_TIMEOUT - (dwEnd-dwStart);
|
|
|
m_busCtx.eCardFromWhich = Card_In_No_Where;
|
|
|
m_busCtx.eCardProcStage = Card_ProcStage_WaitForCard;
|
|
@@ -1063,7 +1055,7 @@ int CCardReadAdapterFSM::ContactlessCardRead(SpReqAnsContext<CardReadAdapterServ
|
|
|
}
|
|
|
else if(eErr == Error_Interact){
|
|
|
DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("maybe ICCommand error, need loop!!!");
|
|
|
- dwEnd = GetTickCountRVC();
|
|
|
+ dwEnd = RVCGetTickCount();
|
|
|
elapsed = dwEnd - dwStart;
|
|
|
Sleep(400);
|
|
|
insertloopNum++;
|
|
@@ -1084,7 +1076,7 @@ int CCardReadAdapterFSM::ContactlessCardRead(SpReqAnsContext<CardReadAdapterServ
|
|
|
{
|
|
|
//oilyang@20210223 add,The Entity FSM is too late to change state ,as the call coming so fast
|
|
|
Sleep(200);
|
|
|
- dwEnd = GetTickCountRVC();
|
|
|
+ dwEnd = RVCGetTickCount();
|
|
|
DWORD elapsed1 = ReadCard_TIMEOUT - (dwEnd-dwStart);
|
|
|
if(elapsed1 < 5000)//PreOnline较慢,预留一定时间
|
|
|
{
|
|
@@ -1107,7 +1099,7 @@ int CCardReadAdapterFSM::ContactlessCardRead(SpReqAnsContext<CardReadAdapterServ
|
|
|
ctx->Ans.status = 0;
|
|
|
}else if(eErr == Error_Interact){
|
|
|
DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ContacelssCard return Error_Interact, need loop.");
|
|
|
- dwEnd = GetTickCountRVC();
|
|
|
+ dwEnd = RVCGetTickCount();
|
|
|
elapsed = dwEnd - dwStart;
|
|
|
preloopNum++;
|
|
|
Sleep(400);
|
|
@@ -2286,7 +2278,7 @@ int CCardReadAdapterFSM::PreOnlineOnStore(SpReqAnsContext<CardReadAdapterService
|
|
|
ErrorCodeEnum eErr = Error_Unexpect;
|
|
|
CSimpleStringA errMsg(true);
|
|
|
|
|
|
- m_ullCrossStart = GetTickCountRVC();
|
|
|
+ m_ullCrossStart = RVCGetTickCount();
|
|
|
|
|
|
if (m_pHBClient != NULL)
|
|
|
{
|
|
@@ -2322,7 +2314,7 @@ int CCardReadAdapterFSM::NotifyPreonline(SpReqAnsContext<CardReadAdapterService_
|
|
|
{
|
|
|
LOG_FUNCTION();
|
|
|
|
|
|
- UINT64 crossEnd = GetTickCountRVC();
|
|
|
+ UINT64 crossEnd = RVCGetTickCount();
|
|
|
//? ? ? 为什么是110s,重试?从生产实际来看,在25s到40s之间,大部分在30s左右,需要和前端(65s)一致,改成60s oilyang@20221019
|
|
|
//in 110 second
|
|
|
if (m_crossCtx != NULL)
|
|
@@ -2709,7 +2701,7 @@ void CCardReadAdapterFSM::WaitCardActive()
|
|
|
{
|
|
|
if (m_bCardActiveNotify)
|
|
|
break;
|
|
|
- UINT64 crossEnd = GetTickCountRVC();
|
|
|
+ UINT64 crossEnd = RVCGetTickCount();
|
|
|
if ((crossEnd - m_ullCrossStart) < 62 * 1000)
|
|
|
Sleep(1000);
|
|
|
else {
|