阿里云IOT C-SDK 源码分析系列(3):IOT_Linkkit_Connect 接口源码分析

   从字面意思也能看出 该函数是 设备 向 云服务器 发起连接的功能函数,但是“连接”功能知识它的主要功能,它还实现了一些其他的参数初始化,比如特别重要的 底层 HAL 接口函数的绑定。该函数 原型如下:

原型

int IOT_Linkkit_Connect(int devid);
接口说明

对于主设备来说, 将会建立设备与云端的通信. 对于子设备来说, 将向云端注册该子设备(如果需要的话), 并添加主子设备拓扑关系
参数说明

参数	数据类型	    方向	说明
devid	int	    输入	设备ID

返回值说明

值	说明
0	成功
< 0	失败

  我们还是通过树形结构来分析一下 网关主设备调用 该函数的实现原理:

简单概括的说,IOT_Linkkit_Connect 函数的关键功能是:

1、找到 _mqtt_connection 的地址。

2、执行_mqtt_connection 的 _mqtt_connect 函数,而_mqtt_connect 函数的功能主要有:

      ① 通过 IOT_MQTT_Construct 实现底层HAL 接口函数的 绑定,并且将 HAL函数集指针 赋值给 全局变量 g_mqtt_client

      ② 将绑定的底层HAL接口函数集指针 再赋值给  _mqtt_connection->context

      然后调用底层 HAL 接口的 TCP 连接 函数向 服务器发起连接。  

3、创建 SDK 自己的 守护进程 _iotx_cm_yield_thread_func ,这个进程非常重要,主要功能是 周期发送 心跳给服务器,判断连接状态、重新连接,接收 订阅消息等等,可以说,它是 C-SDK 的运行的核心, 这一点,后面会详细的分析该函数。

发布了256 篇原创文章 · 获赞 262 · 访问量 63万+

猜你喜欢

转载自blog.csdn.net/u012351051/article/details/104216932