从字面意思也能看出 该函数是 设备 向 云服务器 发起连接的功能函数,但是“连接”功能知识它的主要功能,它还实现了一些其他的参数初始化,比如特别重要的 底层 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 的运行的核心, 这一点,后面会详细的分析该函数。