MbnEventInternal.cpp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688
  1. #include "stdafx.h"
  2. #include "MbnEventInternal.h"
  3. // Windows version store.
  4. ULONG wv;
  5. int gArch;
  6. void InitAccessKeyInfo(ptAccessKeyInfo info)
  7. {
  8. info->strProfileDesc = "";
  9. info->strAccessString = "";
  10. info->strUserName = "";
  11. info->strPassword = "";
  12. info->strIPType = "";
  13. info->strAuthProtocol = "";
  14. info->strPhoneNum = "";
  15. info->IsDefault = FALSE;
  16. info->usCntType = 0;
  17. info->usAPType = 0;
  18. }
  19. void InitMbnDongleSubInfo(pMbnDongleSubInfo info)
  20. {
  21. info->strDeviceID = "";
  22. info->strManufacturer = "";
  23. info->strMode = "";
  24. info->strFirmware = "";
  25. info->strCellularClass = "";
  26. info->mbnReadyState = MBN_READY_STATE_OFF;
  27. info->mbnRegState = MBN_REGISTER_STATE_NONE;
  28. info->mbnCntState = MBN_ACTIVATION_STATE_NONE;
  29. info->strDataClass = "";
  30. info->strProfileName = "";
  31. info->strProviderName = "";
  32. info->strIMSI = "";
  33. info->strSimIccID = "";
  34. info->ulSingnal = 0UL;
  35. }
  36. DongleList g_DongleInfos;
  37. void ResetDongleInfos(void)
  38. {
  39. if(g_DongleInfos.GetCount() > 0) {
  40. for (int i=0; i<g_DongleInfos.GetCount(); ++i) {
  41. g_DongleInfos[i].priority = 0;
  42. if(g_DongleInfos[i].profileList.GetCount() > 0) {
  43. g_DongleInfos[i].profileList.Clear();
  44. }
  45. }
  46. g_DongleInfos.Clear();
  47. }
  48. }
  49. const char* ActivationStateToString(MBN_ACTIVATION_STATE activationState)
  50. {
  51. switch(activationState)
  52. {
  53. case MBN_ACTIVATION_STATE_NONE:
  54. return "NONE";
  55. case MBN_ACTIVATION_STATE_ACTIVATED:
  56. return "CONNECTED";
  57. case MBN_ACTIVATION_STATE_ACTIVATING:
  58. return "CONNECTING";
  59. case MBN_ACTIVATION_STATE_DEACTIVATED:
  60. return "DISCONNECTED";
  61. case MBN_ACTIVATION_STATE_DEACTIVATING:
  62. return "DISCONNECTING";
  63. default:
  64. return "UNKNOWN";
  65. }
  66. }
  67. const char* CellularToString(MBN_CELLULAR_CLASS cellularClass)
  68. {
  69. switch(cellularClass)
  70. {
  71. case MBN_CELLULAR_CLASS_NONE:
  72. return "NONE";
  73. case MBN_CELLULAR_CLASS_GSM:
  74. return "GSM";
  75. case MBN_CELLULAR_CLASS_CDMA:
  76. return "CDMA";
  77. default:
  78. return "UNKNOWN";
  79. }
  80. return "ERRORTYPE";
  81. }
  82. const char* DataClassToString(MBN_DATA_CLASS dts)
  83. {
  84. static char data[256] = {0};
  85. memset(data, 0, sizeof(data));
  86. bool bEmpty = true;
  87. #define DEFINE_DATACLASS_MARCO(DataClass) \
  88. do { \
  89. if((dts & MBN_DATA_CLASS_##DataClass) == MBN_DATA_CLASS_##DataClass) { \
  90. if(!bEmpty) { \
  91. strcat_s(data, ", "); \
  92. } else { \
  93. bEmpty = false; \
  94. } \
  95. strcat_s(data, #DataClass); \
  96. } \
  97. }while(false)
  98. DEFINE_DATACLASS_MARCO(GPRS);
  99. DEFINE_DATACLASS_MARCO(EDGE);
  100. DEFINE_DATACLASS_MARCO(UMTS);
  101. DEFINE_DATACLASS_MARCO(HSDPA);
  102. DEFINE_DATACLASS_MARCO(HSUPA);
  103. DEFINE_DATACLASS_MARCO(LTE);
  104. DEFINE_DATACLASS_MARCO(1XRTT);
  105. DEFINE_DATACLASS_MARCO(1XEVDO);
  106. DEFINE_DATACLASS_MARCO(1XEVDO_REVA);
  107. DEFINE_DATACLASS_MARCO(1XEVDV);
  108. DEFINE_DATACLASS_MARCO(3XRTT);
  109. DEFINE_DATACLASS_MARCO(1XEVDO_REVB);
  110. DEFINE_DATACLASS_MARCO(UMB);
  111. DEFINE_DATACLASS_MARCO(CUSTOM);
  112. if(dts == 0) {
  113. return "UNKNOWN";
  114. }
  115. //if((dts & MBN_DATA_CLASS_GPRS) == MBN_DATA_CLASS_GPRS) {
  116. // if(!bEmpty) {
  117. // strcat_s(data, ", ");
  118. // } else {
  119. // bEmpty = false;
  120. // }
  121. // strcat_s(data, "GRPS");
  122. //}
  123. return data;
  124. /*
  125. switch(dts)
  126. {
  127. case MBN_DATA_CLASS_NONE :
  128. return "NONE";
  129. break;
  130. case MBN_DATA_CLASS_GPRS:
  131. return "GPRS-2G";
  132. break;
  133. case MBN_DATA_CLASS_EDGE:
  134. return "EDGE-3G";
  135. break;
  136. case MBN_DATA_CLASS_UMTS:
  137. //https://en.wikipedia.org/wiki/UMTS_(telecommunication)
  138. return "UMTS-3G";
  139. break;
  140. case MBN_DATA_CLASS_HSDPA:
  141. return "HSDPA-3G";
  142. break;
  143. case MBN_DATA_CLASS_HSUPA:
  144. return "HSUPA-3G";
  145. break;
  146. case MBN_DATA_CLASS_LTE:
  147. return "LTE-4G";
  148. break;
  149. case MBN_DATA_CLASS_1XRTT:
  150. return "1XRTT-3G";
  151. break;
  152. case MBN_DATA_CLASS_1XEVDO:
  153. return "1XEVDO-3G";
  154. break;
  155. case MBN_DATA_CLASS_1XEVDO_REVA:
  156. return "1XEVDO_REVA-3G";
  157. break;
  158. case MBN_DATA_CLASS_1XEVDV:
  159. return "1XEVDV-3G";
  160. break;
  161. case MBN_DATA_CLASS_3XRTT:
  162. return "3XRTT_CDMA2000-3G";
  163. break;
  164. case MBN_DATA_CLASS_1XEVDO_REVB:
  165. return "1XEVDO_REVB-3G";
  166. break;
  167. case MBN_DATA_CLASS_UMB:
  168. return "UMB-3/4G";
  169. break;
  170. case MBN_DATA_CLASS_CUSTOM:
  171. return "CUSTOM";
  172. break;
  173. default:
  174. return "UNKNOWN";
  175. break;
  176. }
  177. */
  178. }
  179. const char* StateToString(MBN_READY_STATE readyState, MOBILEDIAL_CONNECTION_STATE& rdState)
  180. {
  181. switch(readyState)
  182. {
  183. case MBN_READY_STATE_OFF :
  184. rdState = MBD_READY_BAD_SIM;
  185. return "OFF";
  186. case MBN_READY_STATE_INITIALIZED:
  187. rdState = MBD_HOLD_MOBILEDONGLE;
  188. return "INITIALIZED";
  189. case MBN_READY_STATE_SIM_NOT_INSERTED:
  190. rdState = MBD_READY_SIM_NO_INSERT;
  191. return "SIM_NOT_INSERTED";
  192. case MBN_READY_STATE_BAD_SIM :
  193. rdState = MBD_READY_BAD_SIM;
  194. return "BAD_SIM";
  195. case MBN_READY_STATE_FAILURE:
  196. rdState = MBD_READY_FAILURE;
  197. return "FAILURE";
  198. case MBN_READY_STATE_NOT_ACTIVATED:
  199. rdState = MBD_READY_NOT_ACTIVATED;
  200. return "NOT_ACTIVATED";
  201. case MBN_READY_STATE_DEVICE_LOCKED:
  202. rdState = MBD_READY_DEVICE_LOCKED;
  203. return "DEVICE_LOCKED";
  204. case MBN_READY_STATE_DEVICE_BLOCKED:
  205. rdState = MBD_READY_DEVICE_BLOCKED;
  206. return "DEVICE_BLOCKED";
  207. default :
  208. rdState = MBD_UNKNOWN;
  209. return "UNKNOWN";
  210. }
  211. }
  212. const char* RegisterStateToString(MBN_REGISTER_STATE registerState, MOBILEDIAL_CONNECTION_STATE& rdState)
  213. {
  214. switch(registerState)
  215. {
  216. case MBN_REGISTER_STATE_NONE:
  217. rdState = MBD_UNKNOWN;
  218. return "NONE";
  219. case MBN_REGISTER_STATE_DEREGISTERED:
  220. rdState = MBD_REGISTERED_DEREG;
  221. return "DEREGISTERED";
  222. case MBN_REGISTER_STATE_SEARCHING:
  223. rdState = MBD_UNKNOWN;
  224. return "SEARCHING";
  225. case MBN_REGISTER_STATE_HOME:
  226. rdState = MBD_HOLD_MOBILEDONGLE;
  227. return "HOME";
  228. case MBN_REGISTER_STATE_ROAMING:
  229. rdState = MBD_HOLD_MOBILEDONGLE;
  230. return "ROAMING";
  231. case MBN_REGISTER_STATE_PARTNER:
  232. rdState = MBD_HOLD_MOBILEDONGLE;
  233. return "PARTNER";
  234. case MBN_REGISTER_STATE_DENIED:
  235. rdState = MBD_READY_BAD_SIM;
  236. return "DENIED";
  237. default:
  238. rdState = MBD_UNKNOWN;
  239. return "UNKNOWN";
  240. }
  241. }
  242. const char* ConnectStateToString(MBN_ACTIVATION_STATE& cntState)
  243. {
  244. switch(cntState)
  245. {
  246. case MBN_ACTIVATION_STATE_NONE:
  247. return "The connection state is unknown.";
  248. break;
  249. case MBN_ACTIVATION_STATE_ACTIVATED:
  250. return "The connection has been established.";
  251. break;
  252. case MBN_ACTIVATION_STATE_ACTIVATING:
  253. return "The device is establishing the connection.";
  254. break;
  255. case MBN_ACTIVATION_STATE_DEACTIVATED:
  256. return "There is no connection.";
  257. break;
  258. case MBN_ACTIVATION_STATE_DEACTIVATING:
  259. return "The device is in the process of disconnection.";
  260. break;
  261. default:
  262. return "returnValue cannot specified.";
  263. break;
  264. }
  265. }
  266. #define MBD_TO_STRING(mbnstate) \
  267. case mbnstate : return #mbnstate
  268. LPCTSTR ConvertStatusToString(MOBILEDIAL_CONNECTION_STATE state)
  269. {
  270. static char text[128] = {0};
  271. switch(state)
  272. {
  273. MBD_TO_STRING(MBD_VALID_CONNECTED);
  274. MBD_TO_STRING(MBD_INVALID_CONNECTED);
  275. MBD_TO_STRING(MBD_NOT_INITIALIZED);
  276. MBD_TO_STRING(MBD_NO_FOUND_CABLE);
  277. MBD_TO_STRING(MBD_RUN_CONFIG_INCOMPLEMENT);
  278. MBD_TO_STRING(MBD_CENTERSETTING_LACK);
  279. MBD_TO_STRING(MBD_NETWORK_TIMEOUT);
  280. MBD_TO_STRING(MBD_NETWORK_ERROR_SOCKET);
  281. MBD_TO_STRING(MBD_NETWORK_NOTFOUND_SOCKET);
  282. MBD_TO_STRING(MBD_NETWORK_INVALID_SOCKET);
  283. MBD_TO_STRING(MBD_CABLE_TYPE_MBB);
  284. MBD_TO_STRING(MBD_CABLE_TYPE_LTE);
  285. MBD_TO_STRING(MBD_CABLE_TYPE_WIRE);
  286. MBD_TO_STRING(MBD_CABLE_TYPE_DONGLE);
  287. MBD_TO_STRING(MBD_CABLE_TYPE_UNKNOWN);
  288. MBD_TO_STRING(MBD_CABLE_TYPE_WIFI);
  289. MBD_TO_STRING(MBD_CABLE_NOT_SUPPORT_TYPE);
  290. MBD_TO_STRING(MBD_CABLE_TYPE_LTE_ENHANCE);
  291. MBD_TO_STRING(MBD_RASDIAL_FAILED);
  292. MBD_TO_STRING(MBD_NO_MOBILEDONGLE);
  293. MBD_TO_STRING(MBD_NO_PROFILE);
  294. MBD_TO_STRING(MBD_NO_ENTRY);
  295. MBD_TO_STRING(MBD_CREATE_ENTRY_FAILED);
  296. MBD_TO_STRING(MBD_RUN_ENTRY_NOTFOUND);
  297. MBD_TO_STRING(MBD_INVALID_BOTH_DONGLE);
  298. MBD_TO_STRING(MBD_ACTIVATION_NONE);
  299. MBD_TO_STRING(MBD_ACTIVATION_CONNECTED);
  300. MBD_TO_STRING(MBD_ACTIVATION_CONNECTING);
  301. MBD_TO_STRING(MBD_ACTIVATION_DISCONNECTED);
  302. MBD_TO_STRING(MBD_ACTIVATION_DISCONNECTING);
  303. MBD_TO_STRING(MBD_CONNECTION_INVALID_ACCESS);
  304. MBD_TO_STRING(MBD_CONNECTION_INVALID_NAMEORPASSWORD);
  305. MBD_TO_STRING(MBD_CONNECTION_FAILURE);
  306. MBD_TO_STRING(MBD_READY_OFF);
  307. MBD_TO_STRING(MBD_READY_SIM_NO_INSERT);
  308. MBD_TO_STRING(MBD_READY_BAD_SIM);
  309. MBD_TO_STRING(MBD_READY_FAILURE);
  310. MBD_TO_STRING(MBD_READY_NOT_ACTIVATED);
  311. MBD_TO_STRING(MBD_READY_DEVICE_LOCKED);
  312. MBD_TO_STRING(MBD_READY_DEVICE_BLOCKED);
  313. MBD_TO_STRING(MBD_CONNECTION_PIN_REQUIRED);
  314. MBD_TO_STRING(MBD_CONNECTION_MAX_CONTEXTS);
  315. MBD_TO_STRING(MBD_POWER_OFF);
  316. MBD_TO_STRING(MBD_REGISTERED_DEREG);
  317. MBD_TO_STRING(MBD_REGISTERED_DENIED);
  318. MBD_TO_STRING(MBD_READY_INITIALIZED);
  319. MBD_TO_STRING(MBD_READY_NO_SERVICE);
  320. MBD_TO_STRING(MBD_WLAN_OFF);
  321. MBD_TO_STRING(MBD_WLAN_DISCONNECTED);
  322. MBD_TO_STRING(MBD_WLAN_CONNECTING);
  323. MBD_TO_STRING(MBD_WLAN_ENTRY_NO_FOUND);
  324. MBD_TO_STRING(MBD_WLAN_INVALID_NAMEORPASSWORD);
  325. MBD_TO_STRING(MBD_WLAN_CONNECTED);
  326. MBD_TO_STRING(MBD_WLAN_CONNECT_FAILED);
  327. MBD_TO_STRING(MBD_WLAN_CONFIG_CHANGED);
  328. MBD_TO_STRING(MBD_WLAN_CONFIG_REBOOT);
  329. MBD_TO_STRING(MBD_WLAN_DEVICE_PLUG_OFF);
  330. MBD_TO_STRING(MBD_WLAN_CONFIG_WAIT_REBOOT);
  331. MBD_TO_STRING(MBD_WLAN_DISCONNECT_UNEXPECT);
  332. MBD_TO_STRING(MBD_WLAN_CONNECTED_WITH_ILLEGAL_SSID);
  333. MBD_TO_STRING(MBD_WLAN_SSID_VISIBLE);
  334. MBD_TO_STRING(MBD_MIFI_START);
  335. MBD_TO_STRING(MBD_MIFI_LOGIN_INVALID_NAMEORPASSWORD);
  336. MBD_TO_STRING(MBD_MIFI_MACFILTER_UPDATE_FAILED);
  337. MBD_TO_STRING(MBD_MIFI_NEED_LOGIN);
  338. MBD_TO_STRING(MBD_MIFI_INVALID_PARAM);
  339. MBD_TO_STRING(MBD_MIFI_NOT_EXISTED);
  340. MBD_TO_STRING(MBD_MIFI_NOT_IMPLEMENTED);
  341. MBD_TO_STRING(MBD_MIFI_NO_DATA);
  342. MBD_TO_STRING(MBD_MIFI_NO_CHANGED);
  343. MBD_TO_STRING(MBD_MIFI_NOT_SUPPORTED);
  344. MBD_TO_STRING(MBD_MIFI_INVALID_CERT);
  345. MBD_TO_STRING(MBD_MIFI_NO_RIGHTS);
  346. MBD_TO_STRING(MBD_MIFI_NO_DEVICE);
  347. MBD_TO_STRING(MBD_MIFI_EXCEPTION);
  348. MBD_TO_STRING(MBD_MIFI_INVALID_SITUATION);
  349. MBD_TO_STRING(MBD_MIFI_OPT_FAILED);
  350. MBD_TO_STRING(MBD_MIFI_DEVICE_LOCKED);
  351. MBD_TO_STRING(MBD_MIFI_URL);
  352. MBD_TO_STRING(MBD_MIFI_LOW_BATTERY);
  353. MBD_TO_STRING(MBD_MIFI_BUSY);
  354. MBD_TO_STRING(MBD_MIFI_END);
  355. MBD_TO_STRING(MBD_CABLE_DEVICE_REMOVE);
  356. MBD_TO_STRING(MBD_MBN_DEVICE_REMOVE);
  357. MBD_TO_STRING(MBD_RAS_DEVICE_REMOVE);
  358. MBD_TO_STRING(MBD_MBN_DEVICE_REMOVE_IN_BUSINESS);
  359. MBD_TO_STRING(MBD_RAS_DEVICE_REMOVE_IN_BUSINESS);
  360. MBD_TO_STRING(MBD_CABLE_DEVICE_ARRIVAL);
  361. MBD_TO_STRING(MBD_MBN_DEVICE_ARRIVAL);
  362. MBD_TO_STRING(MBD_RAS_DEVICE_ARRIVAL);
  363. MBD_TO_STRING(MBD_CABLE_DIALUP_CONNETED);
  364. MBD_TO_STRING(MBD_MBN_DIALUP_CONNETED);
  365. MBD_TO_STRING(MBD_RAS_DIALUP_CONNETED);
  366. MBD_TO_STRING(MBD_MBB_DIALUP_CONNECTED);
  367. MBD_TO_STRING(MBD_CABLE_DIALUP_DISCONNETED);
  368. MBD_TO_STRING(MBD_MBN_DIALUP_DISCONNETED);
  369. MBD_TO_STRING(MBD_RAS_DIALUP_DISCONNETED);
  370. MBD_TO_STRING(MBD_MBN_DIALUP_DISCONNETED_IN_BUSINESS);
  371. MBD_TO_STRING(MBD_RAS_DIALUP_DISCONNETED_IN_BUSINESS);
  372. MBD_TO_STRING(MBD_DNS_SET_FAILED);
  373. MBD_TO_STRING(MBD_DNS_MULTI_CABLE_CONNECT);
  374. MBD_TO_STRING(MBD_INTERNET_START);
  375. MBD_TO_STRING(MBD_CABLE_TYPE_INTERNET_WIFI);
  376. MBD_TO_STRING(MBD_CABLE_TYPE_INTERNET_LTE);
  377. MBD_TO_STRING(MBD_CABLE_TYPE_INTERNET_DONGLE);
  378. MBD_TO_STRING(MBD_CABLE_TYPE_INERNET_UNKNOWN);
  379. MBD_TO_STRING(MBD_HOLD_MOBILEDONGLE);
  380. MBD_TO_STRING(MBD_UNKNOWN);
  381. MBD_TO_STRING(MBD_INTERNAL_ERROR);
  382. }
  383. sprintf_s(text, "MOBILEDIAL_UNEXPECT_STATE(0x%08X)", state);
  384. return text;
  385. }
  386. LPCTSTR ConvertStatusToSimpleName(MOBILEDIAL_CONNECTION_STATE state) {
  387. if(state == MBD_READY_SIM_NO_INSERT) {
  388. return "[无SIM卡]";
  389. } else {
  390. return MBN_ERROR_INVALID_STRING;
  391. }
  392. }
  393. namespace MBN {
  394. LPCTSTR ConvertOperatorToString(int value)
  395. {
  396. switch(value) {
  397. case 0:
  398. return "未知";
  399. break;
  400. case 1:
  401. return "中国联通";
  402. break;
  403. case 2:
  404. return "中国移动";
  405. break;
  406. case 3:
  407. return "中国电信";
  408. break;
  409. default:
  410. return "其他";
  411. }
  412. }
  413. MBN_READY_STATE ConvertToMBNState(int value)
  414. {
  415. /*
  416. sim_sub_state_unknown = 0,
  417. sim_sub_state_absent, 1
  418. sim_sub_state_pin_required, 2
  419. sim_sub_state_puk_required, 3
  420. sim_sub_state_network_locked, 4
  421. sim_sub_state_ready, 5
  422. sim_sub_state_not_ready, 6
  423. sim_sub_state_perm_disabled, 7
  424. sim_sub_state_card_io_error, 8
  425. sim_sub_state_card_restricted,9
  426. sim_sub_state_loaded, 10
  427. sim_sub_state_present 11
  428. */
  429. switch(value) {
  430. case 0:
  431. return MBN_READY_STATE_OFF;
  432. case 5:
  433. case 10:
  434. case 11:
  435. return MBN_READY_STATE_INITIALIZED;
  436. case 1:
  437. return MBN_READY_STATE_SIM_NOT_INSERTED;
  438. case 7:
  439. return MBN_READY_STATE_BAD_SIM;
  440. case 8:
  441. return MBN_READY_STATE_FAILURE;
  442. case 9:
  443. return MBN_READY_STATE_NOT_ACTIVATED;
  444. case 2:
  445. case 3:
  446. case 4:
  447. return MBN_READY_STATE_DEVICE_LOCKED;
  448. case 6:
  449. return MBN_READY_STATE_DEVICE_BLOCKED;
  450. default:
  451. return MBN_READY_STATE_OFF;
  452. }
  453. }
  454. MOBILEDIAL_CONNECTION_STATE ConvertToMCS(MBN_READY_STATE state)
  455. {
  456. switch(state) {
  457. case MBN_READY_STATE_OFF:
  458. return MBD_READY_BAD_SIM;
  459. break;
  460. case MBN_READY_STATE_INITIALIZED:
  461. return MBD_READY_INITIALIZED;
  462. break;
  463. case MBN_READY_STATE_SIM_NOT_INSERTED:
  464. return MBD_READY_SIM_NO_INSERT;
  465. break;
  466. case MBN_READY_STATE_BAD_SIM:
  467. return MBD_READY_BAD_SIM;
  468. break;
  469. case MBN_READY_STATE_FAILURE:
  470. return MBD_READY_FAILURE;
  471. break;
  472. case MBN_READY_STATE_NOT_ACTIVATED:
  473. return MBD_READY_NOT_ACTIVATED;
  474. break;
  475. case MBN_READY_STATE_DEVICE_LOCKED:
  476. return MBD_READY_DEVICE_LOCKED;
  477. break;
  478. case MBN_READY_STATE_DEVICE_BLOCKED:
  479. return MBD_READY_DEVICE_BLOCKED;
  480. default:
  481. return MBD_READY_BAD_SIM;
  482. break;
  483. }
  484. }
  485. }
  486. int GetSignalRank(ULONG ulSignalStrength)
  487. {
  488. if(ulSignalStrength == MBN_RSSI_UNKNOWN) return 0;
  489. else if(ulSignalStrength >= 24) return(4);
  490. else if(ulSignalStrength >= 16) return(3);
  491. else if(ulSignalStrength >= 8) return(2);
  492. return (1);
  493. }
  494. CSimpleStringA EncryptString(LPCTSTR lpszText)
  495. {
  496. int iEncrypt=0;
  497. int len = strlen(lpszText);
  498. CSimpleStringA csEncrypted('\0', len*2+1);
  499. for(int i=0; i<len; ++i) {
  500. sprintf(&csEncrypted[i*2],"%02X", (int)((lpszText[i]) ^ (128 | (iEncrypt++ & 127))));
  501. }
  502. return CSimpleStringA((LPCTSTR)csEncrypted);
  503. }
  504. CSimpleStringA DecryptString(LPCTSTR lpszEncrpyted)
  505. {
  506. int iEncrypt=0;
  507. int len = strlen(lpszEncrpyted);
  508. CSimpleStringA csPlainTxt('\0', (len)/2+1);
  509. int iCh = 0;
  510. for(int i=0; i<len; i+=2) {
  511. sscanf(lpszEncrpyted+i, "%02X", &iCh);
  512. csPlainTxt[i/2] = (char)(((char)iCh) ^ (128 | (iEncrypt++ & 127)));
  513. }
  514. return CSimpleStringA((LPCTSTR)csPlainTxt);
  515. }
  516. MOBILEDIAL_CONNECTION_STATE MBBResult2Status(int value)
  517. {
  518. switch(value)
  519. {
  520. case 0: return MBD_NOT_INITIALIZED;
  521. case -2: return MBD_MIFI_NEED_LOGIN;
  522. case -3: return MBD_MIFI_LOGIN_INVALID_NAMEORPASSWORD;
  523. case -4: return MBD_MIFI_INVALID_PARAM;
  524. case -5: return MBD_MIFI_NOT_EXISTED;
  525. case -6: return MBD_MIFI_NOT_IMPLEMENTED;
  526. case -7: return MBD_MIFI_NO_DATA;
  527. case -8: return MBD_MIFI_NO_CHANGED;
  528. case -9: return MBD_MIFI_NOT_SUPPORTED;
  529. case -10: return MBD_MIFI_INVALID_CERT;
  530. case -11: return MBD_MIFI_NO_RIGHTS;
  531. case -12: return MBD_MIFI_NO_DEVICE;
  532. case -13: return MBD_MIFI_EXCEPTION;
  533. case -14: return MBD_MIFI_INVALID_SITUATION;
  534. case -15: return MBD_MIFI_TIMEOUT;
  535. case -16: return MBD_MIFI_OPT_FAILED;
  536. case -17: return MBD_MIFI_DEVICE_LOCKED;
  537. case -18: return MBD_MIFI_URL;
  538. case -19: return MBD_MIFI_BUSY;
  539. default:
  540. break;
  541. }
  542. return MBD_UNKNOWN;
  543. }
  544. void GetCurWindowsVersion(void)
  545. {
  546. DWORD dwMajorVer;
  547. DWORD dwMinVer;
  548. DWORD dwBuildNumber;
  549. BOOL bValid = FALSE;
  550. HMODULE hModuleDll = NULL;
  551. if(hModuleDll = ::LoadLibraryA("ntdll.dll")) {
  552. typedef void (WINAPI * pfRTLGETNTVERSIONNUMBERS)(DWORD*, DWORD*, DWORD*);
  553. pfRTLGETNTVERSIONNUMBERS pfRtlGetNtVersionNumbers = NULL;
  554. pfRtlGetNtVersionNumbers = (pfRTLGETNTVERSIONNUMBERS)::GetProcAddress(hModuleDll, "RtlGetNtVersionNumbers");
  555. if(pfRtlGetNtVersionNumbers) {
  556. pfRtlGetNtVersionNumbers(&dwMajorVer, &dwMinVer, &dwBuildNumber);
  557. dwBuildNumber &= 0x0FFFF;
  558. bValid = TRUE;
  559. }
  560. }
  561. ::FreeLibrary(hModuleDll);
  562. hModuleDll = NULL;
  563. wv = 0;
  564. {
  565. SYSTEM_INFO si = { 0 };
  566. GetNativeSystemInfo(&si);
  567. switch (si.wProcessorArchitecture){
  568. case 0:
  569. gArch = 32; // Intel x86
  570. break;
  571. case 9:
  572. gArch = 64; // Intel/AMD x64
  573. break;
  574. case 6: // Itanium-based x64
  575. default:
  576. gArch = 0;
  577. break;
  578. }
  579. }
  580. if(!bValid) {
  581. return;
  582. }
  583. DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("dwMajorVer: %d, dwMinVer: %d, dwBuildNumber: %d", dwMajorVer, dwMinVer, dwBuildNumber);
  584. if (dwMajorVer == 5 && dwMinVer < 1 || dwMajorVer < 5)
  585. {
  586. wv = 1;
  587. }
  588. /* Windows XP */
  589. else if (dwMajorVer == 5 && dwMinVer == 1)
  590. {
  591. wv = 2;
  592. }
  593. /* Windows Server 2003 */
  594. else if (dwMajorVer == 5 && dwMinVer == 2)
  595. {
  596. wv = 3;
  597. }
  598. /* Windows Vista, Windows Server 2008 */
  599. else if (dwMajorVer == 6 && dwMinVer == 0)
  600. {
  601. wv = 4;
  602. }
  603. /* Windows 7, Windows Server 2008 R2 */
  604. else if (dwMajorVer == 6 && dwMinVer == 1)
  605. {
  606. wv = 7;
  607. }
  608. /* Windows 8 */
  609. else if (dwMajorVer == 6 && dwMinVer == 2)
  610. {
  611. wv = 8;
  612. }
  613. /* Windows 8.1 */
  614. else if (dwMajorVer == 6 && dwMinVer == 3)
  615. {
  616. wv = 8;
  617. }
  618. /* Windows 10 */
  619. else if (dwMajorVer == 10 && dwMinVer == 0)
  620. {
  621. wv = 10;
  622. }
  623. else if (dwMajorVer == 10 && dwMinVer > 0 || dwMajorVer > 10)
  624. {
  625. wv = 99;
  626. }
  627. }