#ifndef DEVICE_ADAPTER_CHECKER_H_ #define DEVICE_ADAPTER_CHECKER_H_ #include "DevEntityCommBase.hpp" #include "DevFSMCommBase.hpp" #include "toolkit.h" //Stand2S static const char* adapterList_4_stand2s[] = { "PinPad", "CardIssuer", "IDCertificate","ContactlessCard","HSPScanner", "FingerPrint", "WatchDog", "Gpio", "Ups" }; //Stand1SPlus static const char* adapterList_4_stand1s[] = { "PinPad", "CardIssuer", "IDCertificate","ContactlessCard", "FingerPrint","Gpio" }; struct AdapterRootConfigInfo { DWORD dwPort; DWORD dwBaudRate; DWORD dwParam1; DWORD dwParam2; CSimpleStringA strDepDirWithSlashOrFileName; AdapterRootConfigInfo() :dwPort(0), dwBaudRate(0), dwParam1(0), dwParam2(0), strDepDirWithSlashOrFileName(true) {} }; struct VendorLibInfoEx : public VendorLibInfo { AdapterRootConfigInfo optCfg; bool Load(CSimpleStringA& adapterFilename); }; class CAdapterLoader { public: CAdapterLoader(LPCTSTR lpcszAdapterName, CEntityBase* pEntity) { vendorLibInfo.strDevice = lpcszAdapterName; pEntityBase = pEntity; } ~CAdapterLoader() {} ErrorCodeEnum LoadConfigFromRootIni(); bool IsNoAnyConfigure() const { return vendorLibInfo.IsNotConfig(); } bool IsFullConfig() const { return vendorLibInfo.IsValid(); } bool IsConfigIncomplete() const { return (!IsNoAnyConfigure() && !IsFullConfig()); } ErrorCodeEnum GetAdapterFullPath(CSimpleStringA& strLibFullPath); CSimpleStringA GetAdaperFileName() { return vendorLibInfo.toLibNameString(); } VendorLibInfoEx vendorLibInfo; private: CEntityBase* pEntityBase; }; class CAdapterLoadChecker { public: CAdapterLoadChecker() { } ~CAdapterLoadChecker() { for (int i = 0; i < mAdapterConfigList.GetCount(); ++i) { if (mAdapterConfigList[i] != nullptr) { delete mAdapterConfigList[i]; mAdapterConfigList[i] = nullptr; } } } void Init(CEntityBase* pEntity); bool IsThisFileConfigure(LPCTSTR fileName, AdapterRootConfigInfo* info = NULL); CAutoArray GetConfigedAdapterFileName(LPCTSTR device = "", LPCTSTR vendor = ""); CAutoArray GetConfigedAdapterInfo(LPCTSTR device = "", LPCTSTR vendor = ""); CAutoArray& AdapterCoinfigList() { return mAdapterConfigList; } static ErrorCodeEnum CheckDeviceAndAdapterAvailable(const VendorLibInfoEx& vendorLibInfo, CSimpleStringA& strErrMsg); static ErrorCodeEnum EditLDLibraryPathForVendor(LPCTSTR filePath, BOOL fAdd); private: CAutoArray mAdapterConfigList; }; #endif