|
@@ -9,9 +9,6 @@ CardIssuerClassImpl::CardIssuerClassImpl()
|
|
|
m_isDevOpened = false;
|
|
|
m_isCanceled = false;
|
|
|
|
|
|
- m_busy_flag = false;
|
|
|
- m_signal_get_flag = false;
|
|
|
-
|
|
|
m_SetCardInTypeFlag = 0;
|
|
|
m_CardInTypeFlag = false;
|
|
|
|
|
@@ -107,8 +104,7 @@ bool CardIssuerClassImpl::LoadNTDRVDLL()
|
|
|
|
|
|
ErrorCodeEnum CardIssuerClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
|
|
|
{
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
ErrorCodeEnum err = Error_Succeed;
|
|
|
std::strcpy(devCategory.szModel, "FWID=");
|
|
@@ -120,15 +116,14 @@ ErrorCodeEnum CardIssuerClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
|
|
|
std::strcpy(devCategory.szType, "PVER=ACTT#MID=ACT-F55570");
|
|
|
std::strcpy(devCategory.szVendor, "nantian");
|
|
|
|
|
|
- m_busy_flag = false;
|
|
|
+ mtx.unlock();
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
ErrorCodeEnum CardIssuerClassImpl::Reset()
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
int iRet = 0;
|
|
|
try
|
|
@@ -164,15 +159,15 @@ ErrorCodeEnum CardIssuerClassImpl::Reset()
|
|
|
{
|
|
|
iRet = eret;
|
|
|
}
|
|
|
- m_busy_flag = false;
|
|
|
+
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
|
|
|
ErrorCodeEnum CardIssuerClassImpl::DevClose()
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
int iRet = 0;
|
|
|
iRet = DRVCardDispenser->CloseDev();
|
|
@@ -184,7 +179,8 @@ ErrorCodeEnum CardIssuerClassImpl::DevClose()
|
|
|
|
|
|
iRet = Error_DevConnFailed;
|
|
|
}
|
|
|
- m_busy_flag = false;
|
|
|
+
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
|
|
@@ -226,8 +222,7 @@ DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass *&pBaseObj)
|
|
|
ErrorCodeEnum CardIssuerClassImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate)
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
int iRet = Error_Succeed;
|
|
|
char *CapInfo[10];
|
|
@@ -290,27 +285,26 @@ ErrorCodeEnum CardIssuerClassImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate)
|
|
|
iRet = eret;
|
|
|
}
|
|
|
|
|
|
- m_busy_flag = false;
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
delete[] CapInfo[i];
|
|
|
}
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
ErrorCodeEnum CardIssuerClassImpl::GetDevStatus(CardIssuerStatus &devStatus)
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- if (m_busy_flag == true || m_signal_get_flag == true)
|
|
|
+ if(mtx.try_lock() == false)
|
|
|
{
|
|
|
- if (m_StatusErrorCode == Error_Succeed)
|
|
|
- devStatus = tempStatus;
|
|
|
- m_signal_get_flag = false;
|
|
|
+ statusMtx.lock();
|
|
|
+ devStatus = statusCache;
|
|
|
+ statusMtx.unlock();
|
|
|
return m_StatusErrorCode;
|
|
|
}
|
|
|
|
|
|
- m_signal_get_flag = true;
|
|
|
-
|
|
|
int iRet = Error_Succeed;
|
|
|
+ CardIssuerStatus tempStatus;
|
|
|
memset(m_errorInfo.szErrMsg, 0, sizeof(m_errorInfo.szErrMsg));
|
|
|
m_errorInfo.dwErrMsgLen = 0;
|
|
|
char *BoxStatus[200] = {NULL};
|
|
@@ -448,13 +442,18 @@ ErrorCodeEnum CardIssuerClassImpl::GetDevStatus(CardIssuerStatus &devStatus)
|
|
|
{
|
|
|
iRet = eret;
|
|
|
}
|
|
|
- devStatus = tempStatus;
|
|
|
- m_signal_get_flag = false;
|
|
|
+ statusMtx.lock();
|
|
|
+ statusCache = tempStatus;
|
|
|
+ devStatus = statusCache;
|
|
|
+ statusMtx.unlock();
|
|
|
+
|
|
|
+ // m_signal_get_flag = false;
|
|
|
m_StatusErrorCode = (ErrorCodeEnum)iRet;
|
|
|
for (int i = 0; i < 200; i++)
|
|
|
{
|
|
|
delete[] BoxStatus[i];
|
|
|
}
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
ErrorCodeEnum CardIssuerClassImpl::GetDeviceSN(char *&pDevSN)
|
|
@@ -467,8 +466,7 @@ ErrorCodeEnum CardIssuerClassImpl::GetDeviceSN(char *&pDevSN)
|
|
|
ErrorCodeEnum CardIssuerClassImpl::MoveCard(CardPosEnum eCardPos, int hopperNo)
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
int iRet = Error_Succeed;
|
|
|
try
|
|
@@ -633,18 +631,17 @@ ErrorCodeEnum CardIssuerClassImpl::MoveCard(CardPosEnum eCardPos, int hopperNo)
|
|
|
{
|
|
|
iRet = eret;
|
|
|
}
|
|
|
- m_busy_flag = false;
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
ErrorCodeEnum CardIssuerClassImpl::SetCardInType(CardInEnum eCardIn)
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
+ mtx.lock();
|
|
|
LOG4VTM(WARN, "<SetCardInType> - "
|
|
|
<< "eCardIn-" << eCardIn);
|
|
|
- m_busy_flag = true;
|
|
|
LOG4VTM(WARN, "<SetCardInType> - "
|
|
|
<< "WaitGetStatus");
|
|
|
- WAITING_LOOP();
|
|
|
LOG4VTM(WARN, "<SetCardInType> - "
|
|
|
<< "WaitSetCardInTypeEnd");
|
|
|
if ((m_SetCardInTypeFlag != 0) && (!m_CardInTypeFlag))
|
|
@@ -708,18 +705,17 @@ ErrorCodeEnum CardIssuerClassImpl::SetCardInType(CardInEnum eCardIn)
|
|
|
{
|
|
|
iRet = eret;
|
|
|
}
|
|
|
- m_busy_flag = false;
|
|
|
LOG4VTM(WARN, "<SetCardInType> - "
|
|
|
<< "SetCardInType Exit Count:" << FunSum);
|
|
|
FunSum++;
|
|
|
m_SetCardInTypeFlag = 2;
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
ErrorCodeEnum CardIssuerClassImpl::MagRead(MagTracks &magTracks)
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
int iRet = Error_Succeed;
|
|
|
try
|
|
@@ -804,14 +800,13 @@ ErrorCodeEnum CardIssuerClassImpl::MagRead(MagTracks &magTracks)
|
|
|
{
|
|
|
iRet = eret;
|
|
|
}
|
|
|
- m_busy_flag = false;
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
ErrorCodeEnum CardIssuerClassImpl::MagWrite(MagTracks magTracks, MagWriteModeEnum eWriteMode)
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
int iRet = Error_Succeed;
|
|
|
memset(m_errorInfo.szErrMsg, 0, sizeof(m_errorInfo.szErrMsg));
|
|
@@ -881,14 +876,13 @@ ErrorCodeEnum CardIssuerClassImpl::MagWrite(MagTracks magTracks, MagWriteModeEnu
|
|
|
m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
iRet = Error_Hardware;
|
|
|
}
|
|
|
- m_busy_flag = false;
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
ErrorCodeEnum CardIssuerClassImpl::SetRetractCounter(DWORD dwCount)
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
int iRet = Error_Succeed;
|
|
|
|
|
@@ -909,7 +903,7 @@ ErrorCodeEnum CardIssuerClassImpl::SetRetractCounter(DWORD dwCount)
|
|
|
iRet = Error_Hardware;
|
|
|
}
|
|
|
}
|
|
|
- m_busy_flag = false;
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
ErrorCodeEnum CardIssuerClassImpl::SetIssuerCounter(DWORD dwCount, int hopperNo)
|
|
@@ -920,8 +914,7 @@ ErrorCodeEnum CardIssuerClassImpl::SetIssuerCounter(DWORD dwCount, int hopperNo)
|
|
|
ErrorCodeEnum CardIssuerClassImpl::ActiveICCard()
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
int iRet = Error_Succeed;
|
|
|
|
|
@@ -942,14 +935,13 @@ ErrorCodeEnum CardIssuerClassImpl::ActiveICCard()
|
|
|
m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
iRet = Error_Hardware;
|
|
|
}
|
|
|
- m_busy_flag = false;
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
ErrorCodeEnum CardIssuerClassImpl::ContactIC()
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
int iRet = 0;
|
|
|
|
|
@@ -970,14 +962,13 @@ ErrorCodeEnum CardIssuerClassImpl::ContactIC()
|
|
|
m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
iRet = Error_Hardware;
|
|
|
}
|
|
|
- m_busy_flag = false;
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
ErrorCodeEnum CardIssuerClassImpl::ReleaseIC()
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
int iRet = 0;
|
|
|
|
|
@@ -994,14 +985,13 @@ ErrorCodeEnum CardIssuerClassImpl::ReleaseIC()
|
|
|
m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
iRet = Error_Hardware;
|
|
|
}
|
|
|
- m_busy_flag = false;
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
ErrorCodeEnum CardIssuerClassImpl::WarmReset()
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
int iRet = 0;
|
|
|
|
|
@@ -1024,14 +1014,13 @@ ErrorCodeEnum CardIssuerClassImpl::WarmReset()
|
|
|
m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
iRet = Error_Hardware;
|
|
|
}
|
|
|
- m_busy_flag = false;
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
ErrorCodeEnum CardIssuerClassImpl::ICCommand(CmdInfo sendBuf, CmdInfo &recvBuf)
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
int iRet = 0;
|
|
|
|
|
@@ -1086,14 +1075,13 @@ ErrorCodeEnum CardIssuerClassImpl::ICCommand(CmdInfo sendBuf, CmdInfo &recvBuf)
|
|
|
{
|
|
|
iRet = eret;
|
|
|
}
|
|
|
- m_busy_flag = false;
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
ErrorCodeEnum CardIssuerClassImpl::DeactivateICCard()
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
int iRet = Error_Succeed;
|
|
|
|
|
@@ -1112,7 +1100,7 @@ ErrorCodeEnum CardIssuerClassImpl::DeactivateICCard()
|
|
|
m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
iRet = Error_Hardware;
|
|
|
}
|
|
|
- m_busy_flag = false;
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
|
|
@@ -1143,8 +1131,7 @@ ErrorCodeEnum CardIssuerClassImpl::RFTypeABCommand(CmdInfo sendBuf, CmdInfo &rec
|
|
|
ErrorCodeEnum CardIssuerClassImpl::DevOpenEx(DWORD dwPort, DWORD dwBaudRate, BYTE btOpenType, const char *pDevSN, BYTE &btType)
|
|
|
{
|
|
|
LOG4VTM_FUNCTION();
|
|
|
- m_busy_flag = true;
|
|
|
- WAITING_LOOP();
|
|
|
+ mtx.lock();
|
|
|
|
|
|
int iRet = Error_Succeed;
|
|
|
char *CapInfo[10];
|
|
@@ -1212,11 +1199,11 @@ ErrorCodeEnum CardIssuerClassImpl::DevOpenEx(DWORD dwPort, DWORD dwBaudRate, BYT
|
|
|
iRet = eret;
|
|
|
}
|
|
|
btType = DEV_OPEN_TYPE_COM;
|
|
|
- m_busy_flag = false;
|
|
|
for (int i = 0; i < 10; i++)
|
|
|
{
|
|
|
delete[] CapInfo[i];
|
|
|
}
|
|
|
+ mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
|
ErrorCodeEnum CardIssuerClassImpl::TransferEnInit(int &iStatus, BYTE *&Cr1, int &lenR1, BYTE *&Cr3, int &lenR3, BYTE *&dKey, int &lenKey)
|
|
@@ -1353,14 +1340,4 @@ ErrorCodeEnum CardIssuerClassImpl::QueryBatteryPower(int &bat)
|
|
|
{
|
|
|
int iRet = 0;
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
-}
|
|
|
-
|
|
|
-void CardIssuerClassImpl::WAITING_LOOP()
|
|
|
-{
|
|
|
- while (1)
|
|
|
- {
|
|
|
- usleep(5 * 1000);
|
|
|
- if (m_signal_get_flag == false)
|
|
|
- break;
|
|
|
- }
|
|
|
}
|