前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >11.腾讯云物联网设备端学习---广播功能及实现

11.腾讯云物联网设备端学习---广播功能及实现

原创
作者头像
fancyxu
修改2021-10-07 20:39:16
1.5K0
修改2021-10-07 20:39:16
举报
文章被收录于专栏:腾讯云IoT

本系列主要目的在于记录腾讯云物联网设备端的学习笔记,并且对设备端SDK进行补充说明。

简介

广播功能
广播功能

广播功能是较为简单的功能,设备端订阅主题后,服务器通过云API(PublishBroadcastMessage)下发消息,设备端即可收到广播消息。

下面主要以广播功能为例子,介绍下如何基于iot-hub-device-c-sdk 实现该功能。

实现

模块添加

services/hub/broadcast/新增模块,需要实现

  • src:模块源码,提供sdk外部接口
  • inc:模块内部使用头文件,本功能中无
  • sample:示例代码,调用接口的示例
  • test:单元测试用例编写
  • CMakeLists.txt:cmake脚本,简单设置下源码和头文件路径,添加示例和单元测试即可

广播功能主要实现两个接口:

  • IOT_Broadcast_Init :订阅广播主题,并注册用户回调用作处理广播消息
  • IOT_Broadcast_Deinit :取消订阅广播主题

源码实现(见broadcast.c),以下简单说明下设计思路:

  • IOT_Broadcast_Init :主要分为两部分:
    • 构建topic:topic通常由固定字段和设备唯一标识(product id + device name)构成
    • 订阅主题:根据topici调用IOT_MQTT_Subscribe订阅主题,在IOT_MQTT_Yield中接收SUBACK根据

IOT_MQTT_IsSubReady的结果进行多次重试

  • IOT_Broadcast_Uninit :根据topici调用IOT_MQTT_Unsubscribe取消订阅主题
  • 用户回调(OnBroadcastArrivedCallback):用户一般只需对消息的payload部分进行处理,所以sdk中可以注册主题的消息处理回调,然后获取payload传递给用户回调,详见_broadcast_message_cb

对外头文件添加

include/services/hub中添加对外头文件qcloud_iot_broadcast.h,主要提供对外接口

编译添加

config/settings/iot_hub_setting.cmake中添加模块编译,简单将对应目录添加到编译即可,会自动检测目录下的CMakeLists.txt

代码语言:javascript
复制
add_subdirectory(${PROJECT_SOURCE_DIR}/services/hub/broadcast)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 实现
    • 模块添加
      • 对外头文件添加
        • 编译添加
        相关产品与服务
        物联网通信
        腾讯云物联网通信(Internet of Things Hub, IoT Hub)旨在提供一个安全、稳定、高效的连接平台,帮助开发者低成本、快速地实现“设备-设备”、“设备-用户应用”、“设备-云服务”之间可靠、高并发的数据通信。物联网通信平台不仅可以实现设备之间的互动、设备的数据上报和配置下发,还可以基于规则引擎和腾讯云产品打通,方便快捷地实现海量设备数据的存储、计算以及智能分析。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档