CommEntityUtil.hpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. #ifndef RVC_MOD_COMM_ENTITY_UTIL_HPP_
  2. #define RVC_MOD_COMM_ENTITY_UTIL_HPP_
  3. #include "path.h"
  4. #include "SpBase.h"
  5. #if defined(RVC_OS_WIN)
  6. #define streq stricmp
  7. #else
  8. #define streq strcasecmp
  9. #endif //RVC_OS_WIN
  10. typedef unsigned long long ULLINT;
  11. #define SLEEP(interval) std::this_thread::sleep_for(std::chrono::milliseconds(interval))
  12. namespace SP
  13. {
  14. namespace Module
  15. {
  16. namespace Comm
  17. {
  18. inline
  19. CSimpleStringA GetCurrMachineType(CEntityBase* pEntity)
  20. {
  21. CSystemStaticInfo sysInfo;
  22. pEntity->GetFunction()->GetSystemStaticInfo(sysInfo);
  23. return sysInfo.strMachineType;
  24. }
  25. inline
  26. CSimpleStringA GetCurrEntityConfigPath(CEntityBase* pEntity)
  27. {
  28. CSimpleStringA strConfigDir(true);
  29. pEntity->GetFunction()->GetPath("cfg", strConfigDir);
  30. CSimpleStringA result(strConfigDir + SPLIT_SLASH_STR + pEntity->GetEntityName() + ".ini");
  31. Dbg("config path: %s", result.GetData());
  32. return result;
  33. }
  34. enum Site
  35. {
  36. CMB_UNKNOWN,
  37. CMB_LIB, /** 行内大堂*/
  38. CMB_SSB, /** 自助网点*/
  39. CMB_LSS, /** 生活销售机*/
  40. CMB_FLB, /** 离行机器*/
  41. CMB_OSB, /** 外拓PAD*/
  42. CMB_SMM /** 商户终端*/
  43. };
  44. #define SITE_ENUM_TYPE(MACRO) \
  45. MACRO(LIB)\
  46. MACRO(SSB)\
  47. MACRO(LSS)\
  48. MACRO(FLB)\
  49. MACRO(OSB)\
  50. MACRO(SMM)
  51. #define ENUM_MAP_CONVERT(elem) \
  52. if (streq(lpcszSiteName, "CMB."#elem) == 0) return CMB_##elem;
  53. /*!
  54. * convert cmb site name to enum type.
  55. */
  56. static Site Str2Site(LPCSTR lpcszSiteName)
  57. {
  58. if (lpcszSiteName == NULL || strlen(lpcszSiteName) == 0)
  59. return CMB_UNKNOWN;
  60. SITE_ENUM_TYPE(ENUM_MAP_CONVERT)
  61. return CMB_UNKNOWN;
  62. }
  63. #undef ENUM_MAP_CONVERT
  64. #define ENUM_MAP_CONVERT(elem) case CMB_##elem: return "CMB."#elem;
  65. static LPCSTR Site2Str(Site site)
  66. {
  67. switch (site) {
  68. SITE_ENUM_TYPE(ENUM_MAP_CONVERT)
  69. default:
  70. break;
  71. }
  72. return "Unkown";
  73. }
  74. enum What
  75. {
  76. RVC_UNKNOWN,
  77. RVC_Stand2S, /** 落地式大机*/
  78. RVC_PAD, /** PAD*/
  79. RVC_Desk2S, /** 低柜双屏*/
  80. RVC_IL, /** 简版*/
  81. RVC_Desk1S, /** 低柜一体机*/
  82. RVC_CardStore, /** 卡库*/
  83. RPM_Stand1S /** 扩展柜*/
  84. };
  85. #define MACHINE_ENUM_TYPE(MACRO) \
  86. MACRO(Stand2S)\
  87. MACRO(PAD)\
  88. MACRO(Desk2S)\
  89. MACRO(IL)\
  90. MACRO(Desk1S)\
  91. MACRO(CardStore)
  92. #undef ENUM_MAP_CONVERT
  93. #define ENUM_MAP_CONVERT(elem) \
  94. if (streq(lpcszTypeName, "RVC."#elem) == 0) return RVC_##elem;
  95. /*!
  96. * convert cmb site name to enum type.
  97. */
  98. static What Str2Type(LPCSTR lpcszTypeName)
  99. {
  100. if (lpcszTypeName == NULL || strlen(lpcszTypeName) == 0)
  101. return RVC_UNKNOWN;
  102. MACHINE_ENUM_TYPE(ENUM_MAP_CONVERT)
  103. if (streq(lpcszTypeName, "RPM.Stand1S") == 0)
  104. return RPM_Stand1S;
  105. return RVC_UNKNOWN;
  106. }
  107. #undef ENUM_MAP_CONVERT
  108. #define ENUM_MAP_CONVERT(elem) case RVC_##elem: return "RVC."#elem;
  109. static LPCSTR Type2Str(What what)
  110. {
  111. switch (what) {
  112. MACHINE_ENUM_TYPE(ENUM_MAP_CONVERT)
  113. default:
  114. break;
  115. }
  116. if (what == RPM_Stand1S)
  117. return "RPM.Stand1S";
  118. return "Unkown";
  119. }
  120. struct TerminalMachineInfo
  121. {
  122. Site site;
  123. What type;
  124. struct {
  125. WORD minor;
  126. WORD major;
  127. } gen;
  128. };
  129. inline
  130. TerminalMachineInfo GetTerminalMachineInfo(CEntityBase* pEntity)
  131. {
  132. CSystemStaticInfo sysInfo;
  133. TerminalMachineInfo termInfo;
  134. pEntity->GetFunction()->GetSystemStaticInfo(sysInfo);
  135. termInfo.site = Str2Site(sysInfo.strSite);
  136. termInfo.type = Str2Type(sysInfo.strMachineType);
  137. termInfo.gen.major = sysInfo.MachineVersion.GetMajor();
  138. termInfo.gen.minor = sysInfo.MachineVersion.GetMinor();
  139. return termInfo;
  140. }
  141. inline ULLINT RVCGetTickCount()
  142. {
  143. #ifdef RVC_OS_WIN
  144. return GetTickCount64();
  145. #else
  146. struct timespec ts;
  147. clock_gettime(CLOCK_MONOTONIC, &ts);
  148. return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
  149. #endif // RVC_OS_WIN
  150. }
  151. } // comm
  152. } // mod
  153. } // sp
  154. #endif //RVC_MOD_COMM_ENTITY_UTIL_HPP_