iot_network.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #ifndef __IOT_NETWORK_H__
  2. #define __IOT_NETWORK_H__
  3. #include "am_openat.h"
  4. // #define OPENAT_NETWORK_ISP_LENGTH (64)
  5. // #define OPENAT_NETWORK_IMSI_LENGHT (64)
  6. #define OPENAT_NETWORK_APN_LENGTH (64)
  7. #define OPENAT_NETWORK_PASSWORD_LENGTH (64)
  8. #define OPENAT_NETWORK_USER_NAME_LENGTH (64)
  9. typedef enum
  10. {
  11. /*!< 网络断开 表示GPRS网络不可用,无法进行数据连接,有可能可以打电话*/
  12. OPENAT_NETWORK_DISCONNECT = 0x00,
  13. /*!< 网络已连接 表示GPRS网络可用,可以进行链路激活*/
  14. OPENAT_NETWORK_READY,
  15. /*!< 链路正在激活 */
  16. OPENAT_NETWORK_LINKING,
  17. /*!< 链路已经激活 PDP已经激活,可以通过socket接口建立数据连接*/
  18. OPENAT_NETWORK_LINKED,
  19. /*!< 链路正在去激活 */
  20. OPENAT_NETWORK_GOING_DOWN,
  21. }E_OPENAT_NETWORK_STATE;
  22. typedef VOID(*F_OPENAT_NETWORK_IND_CB)(E_OPENAT_NETWORK_STATE state);
  23. typedef enum
  24. {
  25. /*!< sim卡状态未知*/
  26. OPENAT_NETWORK_UNKNOWN=0,
  27. /*!< sim卡状态有效*/
  28. OPENAT_NETWORK_TRUE,
  29. /*!< SIM未插入或PIN码未解锁*/
  30. OPENAT_NETWORK_FALSE=255,
  31. }E_OPENAT_SIM_STATE;
  32. typedef struct
  33. {
  34. /*!< 网络状态 */
  35. E_OPENAT_NETWORK_STATE state;
  36. /*!< 网络信号:0-31 (值越大,信号越好) */
  37. UINT8 csq;
  38. /*!< SIM卡状态 */
  39. E_OPENAT_SIM_STATE simpresent;
  40. }T_OPENAT_NETWORK_STATUS;
  41. typedef struct
  42. {
  43. char apn[OPENAT_NETWORK_APN_LENGTH];
  44. char username[OPENAT_NETWORK_USER_NAME_LENGTH];
  45. char password[OPENAT_NETWORK_PASSWORD_LENGTH];
  46. }T_OPENAT_NETWORK_CONNECT;
  47. /**
  48. * @defgroup iot_sdk_network 网络接口
  49. * @{
  50. */
  51. /**获取网络状态
  52. *@param status: 返回网络状态
  53. *@return TRUE: 成功
  54. FLASE: 失败
  55. **/
  56. BOOL iot_network_get_status (
  57. T_OPENAT_NETWORK_STATUS* status
  58. );
  59. /**设置网络状态回调函数
  60. *@param indCb: 回调函数
  61. *@return TRUE: 成功
  62. FLASE: 失败
  63. **/
  64. BOOL iot_network_set_cb(F_OPENAT_NETWORK_IND_CB indCb);
  65. /**建立网络连接,实际为pdp激活流程
  66. *@param connectParam: 网络连接参数,需要设置APN,username,passwrd信息
  67. *@return TRUE: 成功
  68. FLASE: 失败
  69. @note 该函数为异步函数,返回后不代表网络连接就成功了,indCb会通知上层应用网络连接是否成功,连接成功后会进入OPENAT_NETWORK_LINKED状态
  70. 创建socket连接之前必须要建立网络连接
  71. 建立连接之前的状态需要为OPENAT_NETWORK_READY状态,否则会连接失败
  72. **/
  73. BOOL iot_network_connect(T_OPENAT_NETWORK_CONNECT* connectParam);
  74. /**断开网络连接,实际为pdp去激活
  75. *@param flymode: 暂时不支持,设置为FLASE
  76. *@return TRUE: 成功
  77. FLASE: 失败
  78. @note 该函数为异步函数,返回后不代表网络连接立即就断开了,indCb会通知上层应用
  79. 连接断开后网络状态会回到OPENAT_NETWORK_READY状态
  80. 此前创建socket连接也会失效,需要close掉
  81. **/
  82. BOOL iot_network_disconnect(BOOL flymode);
  83. /** @}*/
  84. #endif