从函数名称上就可以知道,这个函数的主要功能是向云端发送消息,但是它的功能不仅仅如此,特别需要注意的就是,他还包含
子设备登录/子设备退出功能。函数 原型如下:
- IOT_Linkkit_Report
-
原型 int IOT_Linkkit_Report(int devid, iotx_linkkit_msg_type_t msg_type, unsigned char *payload, int payload_len); 接口说明 向云端发送消息, 包括属性上报/设备标签信息更新上报/设备标签信息删除上报/透传数据上报/子设备登录/子设备登出 参数说明 参数 数据类型 方向 说明 devid int 输入 设备ID msg_type iotx_linkkit_msg_type_t 输入 需要上报的消息类型 payload unsigned char * 输入 消息Payload payload_len int 输入 消息Payload的长度 返回值说明 值 说明 0 成功 >= 1 消息ID < 0 失败
关于子设备的登录功能,主要用在 向网关添加子设备的操作中,代码逻辑如下:
-
static int example_add_subdev(iotx_linkkit_dev_meta_info_t *meta_info) { /* 创建网关子设备 资源*/ devid = IOT_Linkkit_Open(IOTX_LINKKIT_DEV_TYPE_SLAVE, meta_info); ..... ..... /* 子设备 connect, 不仅包含连接服务器,还包含 子设备的其他资源初始化 */ res = IOT_Linkkit_Connect(devid); ..... /* 子设备 登录 操作 ,必须 */ res = IOT_Linkkit_Report(devid, ITM_MSG_LOGIN, NULL, 0); return res; }
IOT_Linkkit_Report 的 消息其他类型如下:
-
参数附加说明
typedef enum { ITM_MSG_POST_PROPERTY, ITM_MSG_DEVICEINFO_UPDATE, ITM_MSG_DEVICEINFO_DELETE, ITM_MSG_POST_RAW_DATA, ITM_MSG_LOGIN, ITM_MSG_LOGOUT, ... ... IOTX_LINKKIT_MSG_MAX } iotx_linkkit_msg_type_t;
- ITM_MSG_POST_PROPERTY: 设备属性数据上报
- ITM_MSG_DEVICEINFO_UPDATE: 设备标签更新信息上报
- ITM_MSG_DEVICEINFO_DELETE: 设备标签删除信息上报
- ITM_MSG_POST_RAW_DATA: 设备透传数据上报
- ITM_MSG_LOGIN: 子设备登录
- ITM_MSG_LOGOUT: 子设备登出
- ITM_MSG_DELETE_TOPO: 删除子设备和网关之间的拓扑关系
- ITM_MSG_REPORT_SUBDEV_FIRMWARE_VERSION: 上报子设备的固件版本号, 用于子设备OTA功能
- ITM_MSG_PROPERTY_DESIRED_GET: 获取云端缓存的属性值下发, 用于高级版设备影子
- ITM_MSG_PROPERTY_DESIRED_DELETE: 主动删除云端缓存的属性值, 用于高级版设备影子