|
@@ -129,13 +129,6 @@ void CPinPadFSM::s2_on_entry()
|
|
|
m_eDevState = DEVICE_STATUS_NORMAL;
|
|
|
GetEntityBase()->GetFunction()->SetUserDefineState(USER_PINPAD_IDLE);
|
|
|
m_testResult = Error_Succeed;
|
|
|
-#if defined(RVC_OS_WIN)
|
|
|
- //oilyang@20220413 except RVC.PAD without FWB
|
|
|
- CSimpleStringA tmpFWBDevSN("");
|
|
|
- GetEntityBase()->GetFunction()->GetSysVar("FWBDevSN", tmpFWBDevSN);
|
|
|
- if (!(m_csMachineType.Compare("RVC.PAD", true) == 0 && tmpFWBDevSN.IsNullOrEmpty()))
|
|
|
- ToLogWarnInfoAboutTermCustom(); //@lzm
|
|
|
-#endif
|
|
|
}
|
|
|
|
|
|
void CPinPadFSM::s2_on_exit()
|
|
@@ -185,18 +178,6 @@ unsigned int CPinPadFSM::s2_on_event(FSMEvent* pEvt)
|
|
|
case USER_EVT_QUIT:
|
|
|
pEvt->SetHandled();
|
|
|
break;
|
|
|
- case USER_EVT_TODO_INIT:
|
|
|
- {
|
|
|
- pEvt->SetHandled();
|
|
|
- ProcFWBReConnTask* task = new ProcFWBReConnTask(this);
|
|
|
- GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
|
|
|
- }
|
|
|
- break;
|
|
|
- case USER_EVT_TODO_INIT_FINISHED:
|
|
|
- {
|
|
|
- pEvt->SetHandled();
|
|
|
- return pEvt->param1;
|
|
|
- }
|
|
|
|
|
|
default:
|
|
|
break;
|
|
@@ -292,18 +273,6 @@ unsigned int CPinPadFSM::s5_on_event(FSMEvent* pEvt)
|
|
|
DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s5 evt %d",pEvt->iEvt);
|
|
|
switch (pEvt->iEvt)
|
|
|
{
|
|
|
- case USER_EVT_TODO_INIT:
|
|
|
- {
|
|
|
- pEvt->SetHandled();
|
|
|
- ProcFWBReConnTask* task = new ProcFWBReConnTask(this);
|
|
|
- GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
|
|
|
- }
|
|
|
- break;
|
|
|
- case USER_EVT_TODO_INIT_FINISHED:
|
|
|
- {
|
|
|
- pEvt->SetHandled();
|
|
|
- return pEvt->param1;
|
|
|
- }
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
@@ -323,18 +292,6 @@ unsigned int CPinPadFSM::s6_on_event(FSMEvent* pEvt)
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("s6 evt %d", pEvt->iEvt);
|
|
|
switch (pEvt->iEvt)
|
|
|
{
|
|
|
- case USER_EVT_TODO_INIT:
|
|
|
- {
|
|
|
- pEvt->SetHandled();
|
|
|
- ProcFWBReConnTask* task = new ProcFWBReConnTask(this);
|
|
|
- GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
|
|
|
- }
|
|
|
- break;
|
|
|
- case USER_EVT_TODO_INIT_FINISHED:
|
|
|
- {
|
|
|
- pEvt->SetHandled();
|
|
|
- return pEvt->param1;
|
|
|
- }
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
@@ -344,16 +301,8 @@ int CPinPadFSM::Initial()
|
|
|
{
|
|
|
LOG_FUNCTION();
|
|
|
#if defined(RVC_OS_WIN)
|
|
|
- //oilyang@20220413 except RVC.PAD without FWB
|
|
|
- CSimpleStringA tmpFWBDevSN("");
|
|
|
- GetEntityBase()->GetFunction()->GetSysVar("FWBDevSN", tmpFWBDevSN);
|
|
|
- if ((m_csMachineType.Compare("RVC.PAD", true) == 0 && tmpFWBDevSN.IsNullOrEmpty()))
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("RVC.PAD without FWB(%s).",tmpFWBDevSN.GetData());
|
|
|
- return 0;
|
|
|
- }
|
|
|
DWORD dwCurrThId = GetCurrentThreadId();
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Initial thread id:%d",dwCurrThId);
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Initial thread id:%d", dwCurrThId);
|
|
|
#endif
|
|
|
ErrorCodeEnum eErrDev;
|
|
|
auto pEntity = GET_DEV_ENTITY_BASE_POINTER();
|
|
@@ -363,56 +312,31 @@ int CPinPadFSM::Initial()
|
|
|
DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("m_deviceNo:%s", m_deviceNo.GetData());
|
|
|
m_devCheckData = "0000000000000000";
|
|
|
|
|
|
- CSimpleStringA tmpVendor(""), tmpDevSN(""), tmpDLLVersion(""), csDepPath(""), csBackslash(SPLIT_SLASH_STR);
|
|
|
- GetEntityBase()->GetFunction()->GetSysVar("FWBVendor", tmpVendor);
|
|
|
- GetEntityBase()->GetFunction()->GetSysVar("FWBDevSN", tmpDevSN);
|
|
|
- GetEntityBase()->GetFunction()->GetSysVar("FWBVersion", tmpDLLVersion);
|
|
|
- if (tmpDLLVersion.GetLength() < 2)//如果忘记配置,则直接使用默认值8.1
|
|
|
- tmpDLLVersion = "8.1";
|
|
|
- if (tmpDevSN.GetLength() > 12 && tmpDevSN.IndexOf("FWB") > 2)
|
|
|
- {
|
|
|
-#if defined(RVC_OS_WIN)
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("This is fwb device.");
|
|
|
- m_devSN = tmpDevSN;
|
|
|
- VendorLibInfo tmpVendorLibInfo(GetEntityBase()->GetEntityName());
|
|
|
- tmpVendorLibInfo.strVendor = tmpVendor;
|
|
|
- CAutoArray<CSimpleStringA> dllVersions = tmpDLLVersion.Split('.');
|
|
|
- if (dllVersions.GetCount() >= 2) {
|
|
|
- tmpVendorLibInfo.strVersion = dllVersions[0];
|
|
|
- tmpVendorLibInfo.strBatch = dllVersions[1];
|
|
|
- } else {
|
|
|
- tmpVendorLibInfo.strVersion = tmpDLLVersion;
|
|
|
- }
|
|
|
- pEntity->vendorLibInfo = tmpVendorLibInfo;
|
|
|
-#endif
|
|
|
- }
|
|
|
- else
|
|
|
+ CSimpleStringA csDepPath(""), csBackslash(SPLIT_SLASH_STR);
|
|
|
+
|
|
|
+ m_devSN = "";
|
|
|
+ eErrDev = pEntity->LoadVendorLibName();
|
|
|
+ if (eErrDev != Error_Succeed)
|
|
|
{
|
|
|
- m_devSN = "";
|
|
|
- eErrDev = pEntity->LoadVendorLibName();
|
|
|
- if (eErrDev != Error_Succeed)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("SpGetDevAdaptorPath(%d) failed.", eErrDev);
|
|
|
- LogWarn(Severity_Middle, eErrDev, PinPad_UserErrorCode_Get_DevAdapter_Path_Failed, "Initial:SpGetDevAdaptorPath");
|
|
|
- return Error_DevLoadFileFailed;
|
|
|
- }
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("SpGetDevAdaptorPath(%d) failed.", eErrDev);
|
|
|
+ LogWarn(Severity_Middle, eErrDev, PinPad_UserErrorCode_Get_DevAdapter_Path_Failed, "Initial:SpGetDevAdaptorPath");
|
|
|
+ return Error_DevLoadFileFailed;
|
|
|
}
|
|
|
FulfillAdapterInfoFrom(pEntity->vendorLibInfo);
|
|
|
HARDWARE_ENTITY_SET_VENDOR_NAME(m_entCode, m_adapterInfo.strVendor);
|
|
|
|
|
|
pEntity->InitializeVendorLogSwitch();
|
|
|
-
|
|
|
+
|
|
|
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to load vendor dll.");
|
|
|
|
|
|
eErrDev = m_hDevHelper.LoadUp(m_adapterInfo.adapterFilePath);
|
|
|
if (!IS_SUCCEED(eErrDev))
|
|
|
{
|
|
|
- if (tmpDevSN.GetLength() < 10 || tmpDevSN.IndexOf("FWB") < 1)
|
|
|
- GetEntityBase()->GetFunction()->ShowFatalError("密码键盘加载厂商适配器失败!请检查root.ini配置是否正确。");
|
|
|
LogWarn(Severity_Middle, Error_NotInit, PinPad_UserErrorCode_Load_Dll_File_Failed, "密码键盘加载厂商适配器失败!请检查root.ini配置是否正确。");
|
|
|
return Error_DevLoadFileFailed;
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("load vendor dll suc.");
|
|
|
}
|
|
|
|
|
@@ -424,28 +348,28 @@ int CPinPadFSM::Initial()
|
|
|
m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
eErr = m_hDevHelper->DevOpen(m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt());
|
|
|
m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
-
|
|
|
+
|
|
|
if (eErr == Error_Succeed)
|
|
|
{
|
|
|
ToLogRootINIInfo();
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DevOpen").setCostTime(m_ullEndTime - m_ullBeginTime)();
|
|
|
initTries = 0;
|
|
|
- ErrorCodeEnum errCode3,errCode4;
|
|
|
+ ErrorCodeEnum errCode3, errCode4;
|
|
|
m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
//errCode1 = m_hDevHelper->SetParam(EPP_PT_SET_ENCRYPT_METHOD,EPP_ALGO_METHOD_3DES);
|
|
|
//errCode2 = m_hDevHelper->SetParam(EPP_PT_SET_MAC_ALGORITH,EPP_MAC_ALGO_ASNIX99);
|
|
|
errCode3 = m_hDevHelper->SetParam(EPP_PT_SET_PIN_ALGORITH, EPP_PIN_ALGO_SM4);
|
|
|
- errCode4 = m_hDevHelper->SetParam(EPP_PT_SET_ECB_CBC_MODE,EPP_ALGO_MODE_3DEC_CBC);
|
|
|
+ errCode4 = m_hDevHelper->SetParam(EPP_PT_SET_ECB_CBC_MODE, EPP_ALGO_MODE_3DEC_CBC);
|
|
|
m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
-
|
|
|
- if(errCode3 != Error_Succeed || errCode4 != Error_Succeed)
|
|
|
+
|
|
|
+ if (errCode3 != Error_Succeed || errCode4 != Error_Succeed)
|
|
|
{
|
|
|
- if(errCode3 != Error_Succeed)
|
|
|
+ if (errCode3 != Error_Succeed)
|
|
|
{
|
|
|
SetErrPackage("Initial::SetParm(3)", m_devSN, errCode3, MEC_DEVAPI_EPP_SetParam);
|
|
|
AlarmDEC();
|
|
|
}
|
|
|
- if(errCode4 != Error_Succeed)
|
|
|
+ if (errCode4 != Error_Succeed)
|
|
|
{
|
|
|
SetErrPackage("Initial::SetParm(4)", m_devSN, errCode4, MEC_DEVAPI_EPP_SetParam);
|
|
|
AlarmDEC();
|
|
@@ -466,18 +390,16 @@ int CPinPadFSM::Initial()
|
|
|
Sleep(1200);
|
|
|
continue;
|
|
|
}
|
|
|
- }while(initTries<PINPAD_INIT_TRIES);
|
|
|
-
|
|
|
+ } while (initTries < PINPAD_INIT_TRIES);
|
|
|
+
|
|
|
if (initTries != 0)
|
|
|
{
|
|
|
LogEvent(Severity_Middle, LOG_EVT_PINPAD_OPEN_FAIL, "Open pinpad failed.");
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Open pinpad failed.%s",(const char*)tmpDevSN);
|
|
|
- if (tmpDevSN.GetLength() < 10 || tmpDevSN.IndexOf("FWB") < 1)
|
|
|
- GetEntityBase()->GetFunction()->ShowFatalError("密码键盘打开失败!请检查键盘是否连接,配置是否正确。");
|
|
|
+ DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Open pinpad failed.");
|
|
|
return 1;
|
|
|
}
|
|
|
m_bOpened = true;
|
|
|
-
|
|
|
+
|
|
|
//oiltmp comment the following 20160406
|
|
|
//update with the version 1.7.1
|
|
|
m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
@@ -502,7 +424,7 @@ int CPinPadFSM::Initial()
|
|
|
spConfig->ReadConfigValue("Load", "SN_SM", m_keySNSM);
|
|
|
spConfig->ReadConfigValue("Load", "ckckck", m_lastCheckCode);
|
|
|
}
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("encrypt key :%d,load key :%d", m_encryptkey,m_bSMLoaded);
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("encrypt key :%d,load key :%d", m_encryptkey, m_bSMLoaded);
|
|
|
DevCategoryInfo devInfo;
|
|
|
ZeroMemory(devInfo.szModel, MAX_DEV_MODEL_LEN);
|
|
|
ZeroMemory(devInfo.szType, MAX_DEV_TYPE_LEN);
|
|
@@ -510,7 +432,7 @@ int CPinPadFSM::Initial()
|
|
|
m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
eErrDev = m_hDevHelper->GetDevCategory(devInfo);
|
|
|
m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
-
|
|
|
+
|
|
|
if (eErrDev == Error_Succeed)
|
|
|
{
|
|
|
m_szModel = devInfo.szModel;
|
|
@@ -528,7 +450,7 @@ int CPinPadFSM::Initial()
|
|
|
}
|
|
|
|
|
|
CSimpleStringA xTmpStr = CSimpleStringA::Format("(hw support):%d,load key :%d,SMSN:%s", m_encryptkey, m_bSMLoaded, m_keySNSM.GetData());
|
|
|
- LogWarn(Severity_Low, Error_Unexpect, PinPad_UserErrorCode_DevConnect_CostTime, CSimpleStringA::Format("%d",(SP::Module::Comm::RVCGetTickCount()-m_ullConnectCost)/1000));
|
|
|
+ LogWarn(Severity_Low, Error_Unexpect, PinPad_UserErrorCode_DevConnect_CostTime, CSimpleStringA::Format("%d", (SP::Module::Comm::RVCGetTickCount() - m_ullConnectCost) / 1000));
|
|
|
LogWarn(Severity_Low, Error_Unexpect, PinPad_UserErrorCode_PinPad_InfoAboutKey_Onboot, xTmpStr.GetData());
|
|
|
LogEvent(Severity_Middle, LOG_EVT_PINPAD_OPEN_SUC, "Open pinpad suc.");
|
|
|
return 0;
|
|
@@ -1441,13 +1363,8 @@ bool CPinPadFSM::GetDevInfo(DevCategoryInfo &devInfo)
|
|
|
CSimpleStringA tmpModel("");
|
|
|
if (m_szModel.GetLength() > 1)
|
|
|
{
|
|
|
- //oilyang@20200807 add FWBID for auth&init
|
|
|
- CSimpleStringA tmpDevSN(""),tmpAddStr("");
|
|
|
- GetEntityBase()->GetFunction()->GetSysVar("FWBDevSN", tmpDevSN);
|
|
|
- if (tmpDevSN.GetLength() > 12 && tmpDevSN.IndexOf("FWB") > 2)
|
|
|
- tmpAddStr = tmpAddStr + "Vendor=" + m_szVendor + "#FWBID=" + tmpDevSN;
|
|
|
- else
|
|
|
- tmpAddStr = tmpAddStr + "Vendor=" + m_szVendor;
|
|
|
+ CSimpleStringA tmpAddStr("");
|
|
|
+ tmpAddStr = tmpAddStr + "Vendor=" + m_szVendor;
|
|
|
if (m_szModel[m_szModel.GetLength() - 1] == '#')
|
|
|
tmpModel = m_szModel + tmpAddStr;
|
|
|
else
|
|
@@ -1468,12 +1385,12 @@ void CPinPadFSM::SetInWhatPage(int iPageType)
|
|
|
}
|
|
|
void CPinPadFSM::SelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext)
|
|
|
{
|
|
|
- if (m_eDevState == DEVICE_STATUS_FAULT || m_eDevState == DEVICE_STATUS_NOT_READY)
|
|
|
- {
|
|
|
- ProcFWBReConnTask* task = new ProcFWBReConnTask(this);
|
|
|
- GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
|
|
|
- }
|
|
|
- pTransactionContext->SendAnswer(Error_Succeed);
|
|
|
+ if (m_eDevState == DEVICE_STATUS_NORMAL)
|
|
|
+ pTransactionContext->SendAnswer(Error_Succeed);
|
|
|
+ else if (m_eDevState == DEVICE_STATUS_NOT_READY)
|
|
|
+ pTransactionContext->SendAnswer(Error_NotInit);
|
|
|
+ else
|
|
|
+ pTransactionContext->SendAnswer(Error_InvalidState);
|
|
|
}
|
|
|
|
|
|
int CPinPadFSM::ProcFWBReConn()
|