MbnEventInternal.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. #ifndef _MBN_EVENT_INTERNAL_H_
  2. #define _MBN_EVENT_INTERNAL_H_
  3. #include "AutoArray.h"
  4. #include "mbnapi.h"
  5. #include "SpBase.h"
  6. #define MBN_STRING_LEN 256
  7. #define MBN_ERROR_INVALID_STRING "[Invalid]"
  8. #define MBN_ERROR_INVALID_STRING_WITH_PARAM "[Invalid#%02d]"
  9. #define WM_ADD_PROFILE_RESULT (WM_USER + 9000)
  10. #define WM_DIAL_RESULT (WM_USER + 9001)
  11. #define WM_DELETE_PROFILE_RESULT (WM_USER + 9002)
  12. #define WM_DIAL_DISCONNECT (WM_USER + 9004)
  13. #define WM_SIGNAL_CHANGE (WM_USER + 9005)
  14. #define WM_DONGLE_CHANGE (WM_USER + 9006)
  15. #define WM_FATALMESSAGE_CHANGE (WM_USER + 9007)
  16. #define WM_UPDATE_PROFILE_RESULT (WM_USER + 9008)
  17. #define WM_CONNECT_WLAN_RESULT (WM_USER + 9010)
  18. #ifdef TWINKLE_LOCAL_DEBUG
  19. static void TwDbg(const char* format, ...)
  20. {
  21. va_list args;
  22. va_start(args, format);
  23. vDbg(format, args);
  24. }
  25. //#define Dbg(fmt, ...) \
  26. // TwDbg(fmt, ##__VA_ARGS__); \
  27. // printf(fmt "\n", ##__VA_ARGS__)
  28. #endif
  29. #define CNT_INVALID 0x0000
  30. #define CNT_MBN 0x0001
  31. #define CNT_RAS 0x0002
  32. #define CNT_AUTO 0x0003
  33. #define CNT_ANDROID 0x0004
  34. #define CNT_MBB 0x0005
  35. #define AUPR_AUTO 0x0000
  36. #define AUPR_PAP 0x0001
  37. #define AUPR_CHAP 0x0002
  38. #define AUPR_PAPORCHAP 0x0003
  39. #define AUPR_MSV2 0x0004
  40. #define AUPR_NONE 0x0005
  41. typedef
  42. /*When modify below enum, you should change ConvertStatusToString func at the same time.*/
  43. enum MOBILEDIAL_CONNECTION_STATE
  44. {
  45. MBD_NOT_INITIALIZED = 0,
  46. MBD_INVALID_CONNECTED, // checksocket connect to server failed.
  47. MBD_VALID_CONNECTED, // checksocket connect to server suc.
  48. MBD_NO_FOUND_CABLE, // the network cable is off device.
  49. MBD_RUN_CONFIG_INCOMPLEMENT,
  50. MBD_CHECK_NETWORK_CONNETCTED,
  51. MBD_CENTERSETTING_LACK,
  52. MBD_NETWORK_TIMEOUT=0x0100, // connect timeout.
  53. MBD_NETWORK_ERROR_SOCKET, // error_socket, a specific error code.
  54. MBD_NETWORK_NOTFOUND_SOCKET, // can not find specified socket in set.
  55. MBD_NETWORK_INVALID_SOCKET, // create check socket error.
  56. MBD_CABLE_TYPE_MBB, //connect with mifi
  57. MBD_CABLE_TYPE_LTE, //connect with lte
  58. MBD_CABLE_TYPE_WIRE, //connect with wire in cmb.lib
  59. MBD_CABLE_TYPE_DONGLE, //connect with ras
  60. MBD_CABLE_TYPE_UNKNOWN,
  61. MBD_CABLE_TYPE_WIFI,
  62. MBD_CABLE_NOT_SUPPORT_TYPE = 0x110,
  63. MBD_CABLE_TYPE_LTE_ENHANCE,
  64. MBD_NETWORK_SEPERATE, // just the seperate line betwen FSM and MBN.
  65. MBD_NO_MOBILEDONGLE=0x0200, // detect no device or can not find out interface about network card.
  66. MBD_NO_PROFILE, // can not find any profile.xml for connection operation.
  67. MBD_NO_ENTRY, // detect no dial entry for ras
  68. MBD_CREATE_ENTRY_FAILED,
  69. MBD_RUN_ENTRY_NOTFOUND,
  70. MBD_INVALID_BOTH_DONGLE,
  71. MBD_ACTIVATION_NONE=0x0300, // the connection state is unknown.
  72. MBD_ACTIVATION_CONNECTED, // the connection has been established.
  73. MBD_ACTIVATION_CONNECTING, // the device is establishing the connection.
  74. MBD_ACTIVATION_DISCONNECTED, // there is no connection.
  75. MBD_ACTIVATION_DISCONNECTING, // the device is in the process of disconnection.
  76. MBD_CONNECTION_INVALID_ACCESS, // The connection access string is not correct.
  77. MBD_CONNECTION_INVALID_NAMEORPASSWORD, // The name or password using in the connection profile is not correct.
  78. MBD_CONNECTION_FAILURE, // Connect failed, comm error from tryConnect or ConnectComplete.
  79. MBD_RASDIAL_FAILED, // 3g ras dial failed.
  80. MBD_READY_OFF = 0x0400, // ready state: the mobile broadband device stack is off.
  81. MBD_READY_SIM_NO_INSERT, // ready state: the sim is no inserted.
  82. MBD_READY_BAD_SIM_START,
  83. MBD_READY_BAD_SIM, // ready state: the sim is invalid.
  84. MBD_READY_FAILURE, // ready state: general device failure.
  85. MBD_READY_NOT_ACTIVATED, // ready state: the subscription is not activated.
  86. MBD_READY_DEVICE_LOCKED, // ready state: the device is locked by a PIN or password
  87. MBD_READY_DEVICE_BLOCKED, // ready state: the device is blocked by a PIN or password
  88. MBD_CONNECTION_PIN_REQUIRED/*=0x0500*/, // A PIN is required for the operation to complete.
  89. MBD_CONNECTION_MAX_CONTEXTS, // The Mobile Broadband service does not support multiple active contexts.
  90. MBD_POWER_OFF, // The device radio is off.
  91. MBD_REGISTERED_DEREG, //
  92. MBD_REGISTERED_DENIED,
  93. MBD_READY_BAD_SIM_END,
  94. MBD_READY_INITIALIZED, // ready state: the card ready to be used for mobile broadband operations.
  95. MBD_READY_NO_SERVICE,
  96. MBD_WLAN_OFF = 0x0500,
  97. MBD_WLAN_DISCONNECTED,
  98. MBD_WLAN_CONNECTING,
  99. MBD_WLAN_ENTRY_NO_FOUND,
  100. MBD_WLAN_INVALID_NAMEORPASSWORD,
  101. MBD_WLAN_CONNECTED,
  102. MBD_WLAN_CONNECT_FAILED,
  103. MBD_WLAN_CONFIG_CHANGED,
  104. MBD_WLAN_CONFIG_REBOOT,
  105. MBD_WLAN_DEVICE_PLUG_OFF,
  106. MBD_WLAN_CONFIG_WAIT_REBOOT,
  107. MBD_WLAN_DISCONNECT_UNEXPECT,
  108. MBD_WLAN_CONNECTED_WITH_ILLEGAL_SSID,
  109. MBD_WLAN_SSID_VISIBLE,
  110. MBD_MIFI_START = 0x0600,
  111. MBD_MIFI_LOGIN_INVALID_NAMEORPASSWORD,
  112. MBD_MIFI_MACFILTER_UPDATE_FAILED,
  113. MBD_MIFI_NEED_LOGIN,
  114. MBD_MIFI_INVALID_PARAM,
  115. MBD_MIFI_NOT_EXISTED,
  116. MBD_MIFI_NOT_IMPLEMENTED,
  117. MBD_MIFI_NO_DATA,
  118. MBD_MIFI_NO_CHANGED,
  119. MBD_MIFI_NOT_SUPPORTED,
  120. MBD_MIFI_INVALID_CERT,
  121. MBD_MIFI_NO_RIGHTS,
  122. MBD_MIFI_NO_DEVICE,
  123. MBD_MIFI_EXCEPTION,
  124. MBD_MIFI_INVALID_SITUATION,
  125. MBD_MIFI_TIMEOUT,
  126. MBD_MIFI_OPT_FAILED,
  127. MBD_MIFI_DEVICE_LOCKED, /*input error password exceeds max times, the device lock*/
  128. MBD_MIFI_URL,
  129. MBD_MIFI_LOW_BATTERY,
  130. MBD_MIFI_BUSY,
  131. MBD_MIFI_END,
  132. // Only for event log burn, this code do not set to any variable for later judge if necessary.
  133. MBD_CABLE_DEVICE_REMOVE = 0x0700,
  134. MBD_MBN_DEVICE_REMOVE,
  135. MBD_RAS_DEVICE_REMOVE,
  136. MBD_MBN_DEVICE_REMOVE_IN_BUSINESS,
  137. MBD_RAS_DEVICE_REMOVE_IN_BUSINESS,
  138. MBD_CABLE_DEVICE_ARRIVAL = 0x710,
  139. MBD_MBN_DEVICE_ARRIVAL ,
  140. MBD_RAS_DEVICE_ARRIVAL,
  141. MBD_MBB_DEVICE_ARRIVAL,
  142. MBD_CABLE_DIALUP_CONNETED = 0x720,
  143. MBD_MBN_DIALUP_CONNETED,
  144. MBD_RAS_DIALUP_CONNETED,
  145. MBD_MBB_DIALUP_CONNECTED,
  146. MBD_CABLE_DIALUP_DISCONNETED = 0x730,
  147. MBD_MBN_DIALUP_DISCONNETED,
  148. MBD_RAS_DIALUP_DISCONNETED,
  149. MBD_MBN_DIALUP_DISCONNETED_IN_BUSINESS,
  150. MBD_RAS_DIALUP_DISCONNETED_IN_BUSINESS,
  151. MBD_DNS_SET_FAILED = 0x740,
  152. MBD_DNS_MULTI_CABLE_CONNECT,
  153. MBD_INTERNET_START = 0x800,
  154. MBD_CABLE_TYPE_INTERNET_WIFI,
  155. MBD_CABLE_TYPE_INTERNET_LTE,
  156. MBD_CABLE_TYPE_INTERNET_DONGLE,
  157. MBD_CABLE_TYPE_INERNET_UNKNOWN,
  158. MBD_HOLD_MOBILEDONGLE = 0xfffc, // Has been hold the cur dongle.
  159. //MBD_WIN32_NOT_FOUND=0xfffc, // Not find the target such as profile etc.
  160. MBD_UNKNOWN=0xfffd, // query produre returns pending status.
  161. MBD_INTERNAL_ERROR=0xfffe //, // Can not figure the error type for now but can find key issue from dbg.
  162. //MBD_UNEXPECTED_FAILURE=0xffff
  163. } MOBILEDIAL_CONNECTION_STATE;
  164. typedef struct _AccessKeyInfo {
  165. CSimpleStringA strProfileDesc; // 配置文件名称
  166. CSimpleStringA strAccessString; // APN
  167. CSimpleStringA strUserName; // 用户名
  168. CSimpleStringA strPassword; // 密码
  169. CSimpleStringA strIPType; // IP类型(MBN有效)
  170. CSimpleStringA strAuthProtocol; // 登录类型(MBN有效)
  171. CSimpleStringA strPhoneNum; // 电话号码(RAS有效)
  172. BOOL IsDefault; // 是否为已应用
  173. USHORT usCntType;
  174. //RAS vaild
  175. USHORT usAPType; //协议(RAS有效)
  176. } AccessKeyInfo, *ptAccessKeyInfo;
  177. void InitAccessKeyInfo(ptAccessKeyInfo info);
  178. typedef struct _MbnProfileInfo {
  179. CSimpleStringA strProfileName; // 配置文件中的名称
  180. AccessKeyInfo AccessInfo;
  181. bool bUserDefined;
  182. int priority;
  183. } MbnProfileInfo, *ptMbnProfileInfo;
  184. typedef CAutoArray<MbnProfileInfo> MBNProfileList;
  185. typedef struct _MbnDongleSubInfo {
  186. CSimpleStringA strDeviceID; // 设备ID
  187. CSimpleStringA strManufacturer; // 制造商
  188. CSimpleStringA strMode; // 型号
  189. CSimpleStringA strFirmware; // 固件
  190. CSimpleStringA strCellularClass; // 网络类型
  191. //CSimpleStringA strReadyState;
  192. //CSimpleStringA strConnectState;
  193. //CSimpleStringA strRegisterState;
  194. MBN_READY_STATE mbnReadyState;
  195. MBN_REGISTER_STATE mbnRegState;
  196. MBN_ACTIVATION_STATE mbnCntState;
  197. CSimpleStringA strDataClass;
  198. CSimpleStringA strProfileName; // 已连接状态下的配置名称
  199. CSimpleStringA strProviderName; // 提供商名字(用于显示网卡名称)
  200. //对于GSM,其值表示 International Mobile Equipment Identity(IMSI) 多至15位数字
  201. //对于CDMA, 表示 Moblile Identification Number 或者 International Roaming MIN(IRM)
  202. CSimpleStringA strIMSI;
  203. // SIM international circuit card number
  204. CSimpleStringA strSimIccID;
  205. ULONG ulSingnal;
  206. } MbnDongleSubInfo, *pMbnDongleSubInfo;
  207. void InitMbnDongleSubInfo(pMbnDongleSubInfo info);
  208. #define DEVTYPE_UNKNOWN 0x0000
  209. #define DEVTYPE_MODEM 0x0001
  210. #define DEVTYPE_INTER 0x0002
  211. #define DEVTYPE_MBB 0x0004
  212. #define DEVTYPE_ANDROID_UKNOWN 0x0010
  213. #define DEVTYPE_ANDROID_MAIN 0x0011
  214. #define DEVTYPE_ANDROID_VICE 0x0012
  215. #define DEFAULT_PASSWORD_CHECK "*95555*"
  216. typedef struct _MbnDongleInfo {
  217. CSimpleStringA csInterfaceId; //在RAS中存储为设备名称
  218. MbnDongleSubInfo subInfo;
  219. MBNProfileList profileList;
  220. USHORT usDeviceType;
  221. MOBILEDIAL_CONNECTION_STATE state;
  222. int priority;
  223. }MbnDongleInfo, *ptMbnDongleInfo;
  224. typedef CAutoArray<MbnDongleInfo> DongleList;
  225. extern DongleList g_DongleInfos;
  226. extern ULONG wv;
  227. extern int gArch;
  228. void GetCurWindowsVersion(void);
  229. void ResetDongleInfos(void);
  230. const char* ActivationStateToString(MBN_ACTIVATION_STATE activationState);
  231. const char* RegisterStateToString(MBN_REGISTER_STATE registerState, MOBILEDIAL_CONNECTION_STATE& rdState);
  232. const char* StateToString(MBN_READY_STATE readyState, MOBILEDIAL_CONNECTION_STATE& rdState);
  233. const char* CellularToString(MBN_CELLULAR_CLASS cellularClass);
  234. const char* ConnectStateToString(MBN_ACTIVATION_STATE& cntState);
  235. const char* DataClassToString(MBN_DATA_CLASS dts);
  236. LPCTSTR ConvertStatusToString(MOBILEDIAL_CONNECTION_STATE state);
  237. LPCTSTR ConvertStatusToSimpleName(MOBILEDIAL_CONNECTION_STATE state);
  238. int GetSignalRank(ULONG ulStrength);
  239. #define USING_ENCRYPT
  240. #ifdef USING_ENCRYPT
  241. CSimpleStringA EncryptString(LPCTSTR lpszText);
  242. CSimpleStringA DecryptString(LPCTSTR lpszEncrpyted);
  243. #endif
  244. namespace MBN {
  245. LPCTSTR ConvertOperatorToString(int value);
  246. MBN_READY_STATE ConvertToMBNState(int value);
  247. MOBILEDIAL_CONNECTION_STATE ConvertToMCS(MBN_READY_STATE state);
  248. }
  249. MOBILEDIAL_CONNECTION_STATE MBBResult2Status(int value);
  250. #endif //_MBN_EVENT_INTERNAL_H_