123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- #ifndef RVC_MOD_COMM_ENTITY_UTIL_HPP_
- #define RVC_MOD_COMM_ENTITY_UTIL_HPP_
- #include "path.h"
- #include "SpBase.h"
- #if defined(RVC_OS_WIN)
- #define streq stricmp
- #else
- #define streq strcasecmp
- #endif //RVC_OS_WIN
- typedef unsigned long long ULLINT;
- #define SLEEP(interval) std::this_thread::sleep_for(std::chrono::milliseconds(interval))
- namespace SP
- {
- namespace Module
- {
- namespace Comm
- {
- inline
- CSimpleStringA GetCurrMachineType(CEntityBase* pEntity)
- {
- CSystemStaticInfo sysInfo;
- pEntity->GetFunction()->GetSystemStaticInfo(sysInfo);
- return sysInfo.strMachineType;
- }
- inline
- CSimpleStringA GetCurrEntityConfigPath(CEntityBase* pEntity)
- {
- CSimpleStringA strConfigDir(true);
- pEntity->GetFunction()->GetPath("cfg", strConfigDir);
- CSimpleStringA result(strConfigDir + SPLIT_SLASH_STR + pEntity->GetEntityName() + ".ini");
- Dbg("config path: %s", result.GetData());
- return result;
- }
- enum Site
- {
- CMB_UNKNOWN,
- CMB_LIB, /** 行内大堂*/
- CMB_SSB, /** 自助网点*/
- CMB_LSS, /** 生活销售机*/
- CMB_FLB, /** 离行机器*/
- CMB_OSB, /** 外拓PAD*/
- CMB_SMM /** 商户终端*/
- };
- #define SITE_ENUM_TYPE(MACRO) \
- MACRO(LIB)\
- MACRO(SSB)\
- MACRO(LSS)\
- MACRO(FLB)\
- MACRO(OSB)\
- MACRO(SMM)
- #define ENUM_MAP_CONVERT(elem) \
- if (streq(lpcszSiteName, "CMB."#elem) == 0) return CMB_##elem;
- /*!
- * convert cmb site name to enum type.
- */
- static Site Str2Site(LPCSTR lpcszSiteName)
- {
- if (lpcszSiteName == NULL || strlen(lpcszSiteName) == 0)
- return CMB_UNKNOWN;
- SITE_ENUM_TYPE(ENUM_MAP_CONVERT)
- return CMB_UNKNOWN;
- }
- #undef ENUM_MAP_CONVERT
- #define ENUM_MAP_CONVERT(elem) case CMB_##elem: return "CMB."#elem;
- static LPCSTR Site2Str(Site site)
- {
- switch (site) {
- SITE_ENUM_TYPE(ENUM_MAP_CONVERT)
- default:
- break;
- }
- return "Unkown";
- }
- enum What
- {
- RVC_UNKNOWN,
- RVC_Stand2S, /** 落地式大机*/
- RVC_PAD, /** PAD*/
- RVC_Desk2S, /** 低柜双屏*/
- RVC_IL, /** 简版*/
- RVC_Desk1S, /** 低柜一体机*/
- RVC_CardStore, /** 卡库*/
- RPM_Stand1S /** 扩展柜*/
- };
- #define MACHINE_ENUM_TYPE(MACRO) \
- MACRO(Stand2S)\
- MACRO(PAD)\
- MACRO(Desk2S)\
- MACRO(IL)\
- MACRO(Desk1S)\
- MACRO(CardStore)
- #undef ENUM_MAP_CONVERT
- #define ENUM_MAP_CONVERT(elem) \
- if (streq(lpcszTypeName, "RVC."#elem) == 0) return RVC_##elem;
- /*!
- * convert cmb site name to enum type.
- */
- static What Str2Type(LPCSTR lpcszTypeName)
- {
- if (lpcszTypeName == NULL || strlen(lpcszTypeName) == 0)
- return RVC_UNKNOWN;
- MACHINE_ENUM_TYPE(ENUM_MAP_CONVERT)
- if (streq(lpcszTypeName, "RPM.Stand1S") == 0)
- return RPM_Stand1S;
- return RVC_UNKNOWN;
- }
- #undef ENUM_MAP_CONVERT
- #define ENUM_MAP_CONVERT(elem) case RVC_##elem: return "RVC."#elem;
- static LPCSTR Type2Str(What what)
- {
- switch (what) {
- MACHINE_ENUM_TYPE(ENUM_MAP_CONVERT)
- default:
- break;
- }
- if (what == RPM_Stand1S)
- return "RPM.Stand1S";
- return "Unkown";
- }
- struct TerminalMachineInfo
- {
- Site site;
- What type;
- struct {
- WORD minor;
- WORD major;
- } gen;
- };
- inline
- TerminalMachineInfo GetTerminalMachineInfo(CEntityBase* pEntity)
- {
- CSystemStaticInfo sysInfo;
- TerminalMachineInfo termInfo;
- pEntity->GetFunction()->GetSystemStaticInfo(sysInfo);
- termInfo.site = Str2Site(sysInfo.strSite);
- termInfo.type = Str2Type(sysInfo.strMachineType);
- termInfo.gen.major = sysInfo.MachineVersion.GetMajor();
- termInfo.gen.minor = sysInfo.MachineVersion.GetMinor();
- return termInfo;
- }
- inline ULLINT RVCGetTickCount()
- {
- #ifdef RVC_OS_WIN
- return GetTickCount64();
- #else
- struct timespec ts;
- clock_gettime(CLOCK_MONOTONIC, &ts);
- return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
- #endif // RVC_OS_WIN
- }
- } // comm
- } // mod
- } // sp
- #endif //RVC_MOD_COMM_ENTITY_UTIL_HPP_
|