123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- #include "DeviceAdaptChecker.h"
- #include <vector>
- #include <string>
- ErrorCodeEnum CAdapterLoader::LoadConfigFromRootIni()
- {
- LOG_FUNCTION();
- ErrorCodeEnum result(Error_Succeed);
- CSmartPointer<IConfigInfo> spRootConfig;
- result = pEntityBase->GetFunction()->OpenConfig(Config_Root, spRootConfig);
- CSimpleStringA strSection = CSimpleStringA("Device.") + vendorLibInfo.strDevice;
- spRootConfig->ReadConfigValue(strSection, "Vendor", vendorLibInfo.strVendor);
- spRootConfig->ReadConfigValue(strSection, "Version", vendorLibInfo.strVersion);
- spRootConfig->ReadConfigValue(strSection, "Batch", vendorLibInfo.strBatch);
- do {
- int value(0);
- spRootConfig->ReadConfigValueInt(strSection, "Port", value);
- vendorLibInfo.optCfg.dwPort = value;
- } while (false);
- do {
- int value(0);
- spRootConfig->ReadConfigValueInt(strSection, "Baudrate", value);
- vendorLibInfo.optCfg.dwBaudRate = value;
- } while (false);
- do {
- int value(0);
- //spRootConfig->ReadConfigValueInt(strSection, "PortNum", value);
- vendorLibInfo.optCfg.dwParam1 = value;
- } while (false);
- vendorLibInfo.optCfg.dwParam2 = 0;
- result = pEntityBase->GetFunction()->GetPath("Dep", vendorLibInfo.optCfg.strDepDirWithSlashOrFileName);
- vendorLibInfo.optCfg.strDepDirWithSlashOrFileName += SPLIT_SLASH_STR;
- return result;
- }
- ErrorCodeEnum CAdapterLoader::GetAdapterFullPath(CSimpleStringA& strLibFullPath)
- {
- ErrorCodeEnum result(Error_Succeed);
- CSimpleStringA strLibName = vendorLibInfo.toLibNameString();
- CSimpleStringA strDepPath;
- result = pEntityBase->GetFunction()->GetPath("Dep", strDepPath);
- strLibFullPath = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s", (LPCTSTR)strDepPath, (LPCTSTR)strLibName);
- return result;
- }
- void CAdapterLoadChecker::Init(CEntityBase* pEntity)
- {
- CSystemStaticInfo info;
- pEntity->GetFunction()->GetSystemStaticInfo(info);
- if (info.strMachineType.Compare("RVC.Stand2S") == 0) {
- mAdapterConfigList.Init(array_size(adapterList_4_stand2s));
- for (int i = 0; i < array_size(adapterList_4_stand2s); ++i) {
- CAdapterLoader* item = new CAdapterLoader(adapterList_4_stand2s[i], pEntity);
- mAdapterConfigList[i] = item;
- mAdapterConfigList[i]->LoadConfigFromRootIni();
- }
- } else if (info.strMachineType.Compare("RVC.Stand1SPlus") == 0) {
- mAdapterConfigList.Init(array_size(adapterList_4_stand1s));
- for (int i = 0; i < array_size(adapterList_4_stand1s); ++i) {
- CAdapterLoader* item = new CAdapterLoader(adapterList_4_stand1s[i], pEntity);
- mAdapterConfigList[i] = item;
- mAdapterConfigList[i]->LoadConfigFromRootIni();
- }
- }
- }
- bool CAdapterLoadChecker::IsThisFileConfigure(LPCTSTR fileName, AdapterRootConfigInfo* info)
- {
- LOG_FUNCTION();
- bool result(false);
- for (int i = 0; i < mAdapterConfigList.GetCount(); ++i) {
- if(mAdapterConfigList[i] == nullptr)
- continue;
- CAdapterLoader*& item = mAdapterConfigList[i];
- if (item->GetAdaperFileName().Compare(fileName) == 0) {
- if (info != NULL) { *info = item->vendorLibInfo.optCfg; }
- result = true;
- break;
- }
- }
- return result;
- }
- CAutoArray<CSimpleStringA> CAdapterLoadChecker::GetConfigedAdapterFileName(LPCTSTR device, LPCTSTR vendor)
- {
- CAutoArray<CSimpleStringA> result;
- std::vector<std::string> tmp;
- const bool deviceFilterFlag = (device != NULL && strlen(device) > 0);
- const bool vendorFilterFlag = (vendor != NULL && strlen(vendor) > 0);
- for (int i = 0; i < mAdapterConfigList.GetCount(); ++i) {
- if (mAdapterConfigList[i] == nullptr)
- continue;
- CAdapterLoader*& item = mAdapterConfigList[i];
- if (item->IsFullConfig()
- && (!deviceFilterFlag || item->vendorLibInfo.strDevice.Compare(device) == 0)
- && (!vendorFilterFlag || item->vendorLibInfo.strVendor.Compare(vendor) == 0)) {
- tmp.push_back(std::string(item->GetAdaperFileName().GetData()));
- }
- }
- result.Init(tmp.size());
- int cnt(0);
- for (auto it = tmp.cbegin(); it != tmp.cend(); ++it) {
- result[cnt++] = it->c_str();
- }
- return result;
- }
- CAutoArray<AdapterRootConfigInfo> CAdapterLoadChecker::GetConfigedAdapterInfo(LPCTSTR device /*= ""*/, LPCTSTR vendor /*= ""*/)
- {
- CAutoArray<AdapterRootConfigInfo> result;
- std::vector<std::string> filenames;
- std::vector<DWORD> ports;
- std::vector<DWORD> baudrates;
- const bool deviceFilterFlag = (device != NULL && strlen(device) > 0);
- const bool vendorFilterFlag = (vendor != NULL && strlen(vendor) > 0);
- for (int i = 0; i < mAdapterConfigList.GetCount(); ++i) {
- if (mAdapterConfigList[i] == nullptr)
- continue;
- CAdapterLoader*& item = mAdapterConfigList[i];
- if (item->IsFullConfig()
- && (!deviceFilterFlag || item->vendorLibInfo.strDevice.Compare(device) == 0)
- && (!vendorFilterFlag || item->vendorLibInfo.strVendor.Compare(vendor) == 0)) {
- filenames.push_back(std::string(item->GetAdaperFileName().GetData()));
- ports.push_back(item->vendorLibInfo.optCfg.dwPort);
- baudrates.push_back(item->vendorLibInfo.optCfg.dwBaudRate);
- }
- }
- result.Init(filenames.size());
- int cnt(0);
- for (auto it = filenames.cbegin(); it != filenames.cend(); ++it, ++cnt) {
- result[cnt].strDepDirWithSlashOrFileName = it->c_str();
- result[cnt].dwPort = ports[cnt];
- result[cnt].dwBaudRate = baudrates[cnt];
- }
- return result;
- }
- bool VendorLibInfoEx::Load(CSimpleStringA& adapterFilename)
- {
- bool result(false);
-
- #ifdef RVC_OS_WIN
- CSimpleStringA strPrefix("");
- CSimpleStringA strSuffix(".dll");
- #else
- CSimpleStringA strPrefix("lib");
- CSimpleStringA strSuffix(".so");
- #endif //RVC_OS_WIN
- if (adapterFilename.GetLength() < strPrefix.GetLength() + strSuffix.GetLength()) {
- return result;
- }
- /*lib3.5.7.9.so*/
- CSimpleStringA pureAdapterName = adapterFilename.SubString(
- strPrefix.GetLength(), adapterFilename.GetLength() - strPrefix.GetLength() - strSuffix.GetLength());
-
- CAutoArray<CSimpleStringA> adapterElems = pureAdapterName.Split('.');
- if (adapterElems.GetCount() != 4) {
- return result;
- }
- for (int i = 0; i < array_size(adapterList_4_stand2s); ++i) {
- if (adapterElems[0].Compare(adapterList_4_stand2s[i]) == 0) {
- result = true;
- break;
- }
- }
- ///**TODO(Gifur@10/19/2021): 保守写法,需考虑到文件名异常的情况 */
- for (int i = 0; result && i < adapterElems.GetCount(); ++i) {
- switch (i) {
- case 0:
- strDevice = adapterElems[i];
- break;
- case 1:
- strVendor = adapterElems[i];
- break;
- case 2:
- strVersion = adapterElems[i];
- break;
- case 3:
- strBatch = adapterElems[i];
- break;
- default:
- break;
- }
- }
- return result;
- }
|