|
|
@@ -186,6 +186,7 @@ CVtmLoaderFSM::CVtmLoaderFSM()
|
|
|
m_ullMaxAddrDetectTime = 10*60*1000;//10 minutes
|
|
|
m_iDetectInterval = 5000;
|
|
|
m_terminalNoFromWeb = m_verShowMsg = "";
|
|
|
+ m_iNoCheckMachineModel = 0;
|
|
|
}
|
|
|
|
|
|
CVtmLoaderFSM::~CVtmLoaderFSM()
|
|
|
@@ -954,6 +955,9 @@ int CVtmLoaderFSM::NetWorkCheckAndGetSetting()
|
|
|
}
|
|
|
int CVtmLoaderFSM::EntityLoad()
|
|
|
{
|
|
|
+ //oilyang@20240407 add check machine model in ST/UAT test room
|
|
|
+ if (!CheckConfigInfoInTestRoom())
|
|
|
+ return -1;
|
|
|
//前提:收到了配置拉取完成的指令,才会进入到这里
|
|
|
//为了测试,假装已经拿到了集中配置
|
|
|
m_ullEntityLoadStart = SP::Module::Comm::RVCGetTickCount();
|
|
|
@@ -1629,8 +1633,8 @@ bool CVtmLoaderFSM::GetConfig()
|
|
|
|
|
|
|
|
|
GetEntityBase()->GetFunction()->GetSystemStaticInfo(m_sysInfo);
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("terminalNo:%s, MachineType:%s, MachineVersion:%s, Site:%s, Screen:%d, EnrolGPS:%f.%f, EnrolAddr:%s"
|
|
|
- , m_sysInfo.strTerminalID.GetData(), m_sysInfo.strMachineType.GetData(), m_sysInfo.MachineVersion.ToString().GetData()
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("terminalNo:%s, MachineModel:%s, MachineType:%s, MachineVersion:%s, Site:%s, Screen:%d, EnrolGPS:%f.%f, EnrolAddr:%s"
|
|
|
+ , m_sysInfo.strTerminalID.GetData(), m_sysInfo.strMachineModel.GetData(), m_sysInfo.strMachineType.GetData(), m_sysInfo.MachineVersion.ToString().GetData()
|
|
|
, m_sysInfo.strSite.GetData(), m_sysInfo.eScreen, m_sysInfo.EnrolGPS.GetLatitude(), m_sysInfo.EnrolGPS.GetLongitude(), m_sysInfo.strEnrolAddr.GetData());
|
|
|
|
|
|
int tmpSec = 0;
|
|
|
@@ -2327,33 +2331,147 @@ void CVtmLoaderFSM::CheckVideo(SpReqAnsContext<VtmLoaderService_CheckDeviceEntit
|
|
|
}
|
|
|
} while (true);
|
|
|
}
|
|
|
-void CVtmLoaderFSM::Oiltest()
|
|
|
+bool CVtmLoaderFSM::CheckConfigInfoInTestRoom()
|
|
|
{
|
|
|
- CSmartPointer<IEntityFunctionPrivilege> pFuncPrivilege = m_pEntity->GetFunction().ConvertCase<IEntityFunctionPrivilege>();
|
|
|
- CSmartPointer<IAsynWaitSp> spWait;
|
|
|
- //(re)start entity
|
|
|
- ErrorCodeEnum eErrCode = pFuncPrivilege->StartEntity("HealthManager", NULL, spWait);
|
|
|
- if (eErrCode == Error_Succeed)
|
|
|
- {
|
|
|
- if (spWait != NULL)
|
|
|
- eErrCode = spWait->WaitAnswer(MAX_AYSNC_TIMEOUT);
|
|
|
- }
|
|
|
- else
|
|
|
+ if (m_iNoCheckMachineModel)
|
|
|
+ return true;
|
|
|
+
|
|
|
+ bool bNeedCheckOK = false;
|
|
|
+#ifdef DEVOPS_ON_ST /*DevOps流水线编译,ST环境*/
|
|
|
+ bNeedCheckOK = true;
|
|
|
+#elif defined(DEVOPS_ON_UAT)/*DevOps流水线编译,UAT环境*/
|
|
|
+ bNeedCheckOK = true;
|
|
|
+#endif
|
|
|
+ bNeedCheckOK = true;//oiltest
|
|
|
+ if (bNeedCheckOK)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("StartEntity %s failed(%d).", "HealthManager", eErrCode);
|
|
|
- return;
|
|
|
- }
|
|
|
+ CSmartPointer<IConfigInfo> spConfigRoot;
|
|
|
+ if (GetEntityBase()->GetFunction()->OpenConfig(Config_Root, spConfigRoot) != Error_Succeed)
|
|
|
+ {
|
|
|
|
|
|
- DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("StartEntity %s suc.", "HealthManager");
|
|
|
- return;
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ CSimpleStringA csMachineModel(true);
|
|
|
+ spConfigRoot->ReadConfigValue("terminalinfo", "machineModel", csMachineModel);
|
|
|
+ if (csMachineModel.IsNullOrEmpty())
|
|
|
+ {
|
|
|
+ LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, "机型为空,请检查(terminalinfo/machineModel)");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_USER)("to check machine model:%s", csMachineModel.GetData());
|
|
|
+
|
|
|
+ char* validMachineList[26] = { "E1080","VTM_E1000","E1080-L","BST260L-AQ3","GWI BST260L-AQ1","BS9000","ZSS9000","VTM700-A01","KS218","ZSS9100",
|
|
|
+ "KL286D","ZT2617-A01","MX9200CM","KK1000I(1365张)","KL286","DT-7000I64A","CASH35AG-1227","CASH35AG-JR10(G)","BST260T","KK1000I-2(1092张)",
|
|
|
+ "CASH35AG-3211","KK1000I-3(500张)","VTM-295","GWI BST260L","VTM700-A02","SAC401-D-02" };
|
|
|
+ //first, to check if the machine model in the valid machine list
|
|
|
+ int xSn = 0;
|
|
|
+ for (xSn = 0; xSn < 26; ++xSn)
|
|
|
+ if (csMachineModel.Compare(validMachineList[xSn], false) == 0)
|
|
|
+ {
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_USER)("match machine model:%s", validMachineList[xSn]);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (xSn >= 26)
|
|
|
+ {
|
|
|
+ LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型不存在,请检查:%s", csMachineModel.GetData()));
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ //second, to check if the key entity config matching the machine model
|
|
|
+ //for RVC.Stand2S/RVC.Stand1SPlus/RVC.CardPrinter to check pinpad
|
|
|
+ //for RVC.CardStore to check IDCertificate
|
|
|
|
|
|
+ CSimpleStringA strVendor(true);
|
|
|
+ if (m_sysInfo.strMachineType.Compare("RVC.CardStore") == 0)
|
|
|
+ spConfigRoot->ReadConfigValue("Device.IDCertificate", "Vendor", strVendor);
|
|
|
+ else
|
|
|
+ spConfigRoot->ReadConfigValue("Device.PinPad", "Vendor", strVendor);
|
|
|
|
|
|
- SetTerminalNo(NULL);
|
|
|
- Sleep(11000);
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to save to root.ini");
|
|
|
- SaveTerminalNo(NULL);
|
|
|
- m_hSaveTerminalNoVar.Broadcast();
|
|
|
-
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("continue boot");
|
|
|
-
|
|
|
+ //gwi
|
|
|
+ if (csMachineModel.Compare("BST260L-AQ3") == 0 || csMachineModel.Compare("GWI BST260L-AQ1") == 0
|
|
|
+ || csMachineModel.Compare("GWI BST260L") == 0 || csMachineModel.Compare("VTM700-A01") == 0
|
|
|
+ || csMachineModel.Compare("BST260T") == 0 || csMachineModel.Compare("VTM700-A02") == 0
|
|
|
+ )
|
|
|
+ {
|
|
|
+ if (strVendor.IsNullOrEmpty() || strVendor.Compare("gwi", true) != 0)
|
|
|
+ {
|
|
|
+ if (m_sysInfo.strMachineType.Compare("RVC.CardStore") != 0)
|
|
|
+ LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,密码键盘模块厂商:%s"
|
|
|
+ , csMachineModel.GetData(), strVendor.GetData()));
|
|
|
+ else
|
|
|
+ LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,身份证模块厂商:%s"
|
|
|
+ , csMachineModel.GetData(), strVendor.GetData()));
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //keba
|
|
|
+ if (csMachineModel.Compare("E1080") == 0 || csMachineModel.Compare("VTM_E1000") == 0
|
|
|
+ || csMachineModel.Compare("E1080-L") == 0)
|
|
|
+ {
|
|
|
+ if (strVendor.IsNullOrEmpty() || strVendor.Compare("keba", true) != 0)
|
|
|
+ {
|
|
|
+ LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,密码键盘模块厂商:%s"
|
|
|
+ , csMachineModel.GetData(), strVendor.GetData()));
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //zt
|
|
|
+ if (csMachineModel.Compare("ZT2617-A01") == 0)
|
|
|
+ {
|
|
|
+ if (strVendor.IsNullOrEmpty() || strVendor.Compare("szzt", true) != 0)
|
|
|
+ {
|
|
|
+ LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,身份证模块厂商:%s"
|
|
|
+ , csMachineModel.GetData(), strVendor.GetData()));
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //Eastcom
|
|
|
+ if (csMachineModel.Compare("KK1000I(1365张)") == 0 || csMachineModel.Compare("KK1000I-2(1092张)") == 0
|
|
|
+ || csMachineModel.Compare("KK1000I-3(500张)") == 0)
|
|
|
+ {
|
|
|
+ if (strVendor.IsNullOrEmpty() || strVendor.Compare("Eastcom", true) != 0)
|
|
|
+ {
|
|
|
+ LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,身份证模块厂商:%s"
|
|
|
+ , csMachineModel.GetData(), strVendor.GetData()));
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //cw
|
|
|
+ if (csMachineModel.Compare("CASH35AG-1227") == 0 || csMachineModel.Compare("CASH35AG-JR10(G)") == 0
|
|
|
+ || csMachineModel.Compare("CASH35AG-3211") == 0
|
|
|
+ )
|
|
|
+ {
|
|
|
+ if (strVendor.IsNullOrEmpty() || strVendor.Compare("cw", true) != 0)
|
|
|
+ {
|
|
|
+ if (m_sysInfo.strMachineType.Compare("RVC.CardStore") != 0)
|
|
|
+ LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,密码键盘模块厂商:%s"
|
|
|
+ , csMachineModel.GetData(), strVendor.GetData()));
|
|
|
+ else
|
|
|
+ LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,身份证模块厂商:%s"
|
|
|
+ , csMachineModel.GetData(), strVendor.GetData()));
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //grg
|
|
|
+ if (csMachineModel.Compare("DT-7000I64A") == 0)
|
|
|
+ {
|
|
|
+ if (strVendor.IsNullOrEmpty() || strVendor.Compare("grg", true) != 0)
|
|
|
+ {
|
|
|
+ LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,密码键盘模块厂商:%s"
|
|
|
+ , csMachineModel.GetData(), strVendor.GetData()));
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //Glodpac
|
|
|
+ if (csMachineModel.Compare("SAC401-D-02") == 0)
|
|
|
+ {
|
|
|
+ if (strVendor.IsNullOrEmpty() || strVendor.Compare("Goldpac", true) != 0)
|
|
|
+ {
|
|
|
+ LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,密码键盘模块厂商:%s"
|
|
|
+ , csMachineModel.GetData(), strVendor.GetData()));
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ return true;
|
|
|
}
|