AliOS Things蓝牙协议栈及应用开发框架介绍

摘要: AliOS Things从1.2.0版本开始支持蓝牙协议栈(BLE),及基于蓝牙协议栈的应用层开发框架。本文分为三部分对蓝牙组件进行介绍:蓝牙组件,蓝牙协议栈介绍及接口说明,和应用开发框架介绍及示例说明。AliOS Things v1.2.0支持蓝牙4.2,提供完整的host端低功耗蓝牙协议栈支持。

点击查看原文

AliOS Things从1.2.0版本开始支持蓝牙协议栈(BLE),及基于蓝牙协议栈的应用层开发框架。本文分为三部分对蓝牙组件进行介绍:

蓝牙组件
蓝牙协议栈介绍及接口说明
应用开发框架介绍及示例说明
蓝牙组件

AliOS Things v1.2.0支持蓝牙4.2,提供完整的host端低功耗蓝牙协议栈支持。主要包括三部分内容:协议层API,蓝牙协议栈,HCI (Host Controller Interface)驱动接口。当开发者拿到一个全新平台的时候,需要完成HCI接口与AliOS Things提供的蓝牙协议栈的对接。目前,AliOS Things已经完成在乐鑫ESP32上面蓝牙协议栈部分的对接,开发者可以直接基于协议层API进行上层应用开发。

从应用开发者的角度,BLE应用开发过程中,经常会遇到的烦恼是蓝牙协议栈概念及细节的理解。为了解决应用业务开发者的烦恼,AliOS-Things设计与开发了BLE应用开发框架。期望开发者在使用了我们的应用开发框架后,能够极简的进行业务逻辑开发,再也不用纠缠于BLE协议栈概念及细节。

综上,AliOS Things蓝牙组件总体结构如下图所示。
图片描述
蓝牙协议栈及接口

AliOS Things v1.2.0支持低功耗蓝牙主要包括以下功能:

Generic Access Profile (GAP)
Generic Attribute Profile (GATT)
清晰的HCI驱动层抽象
主要提供以下接口:

GAP
GATT
Logical Link Control and Adaptation Protocol (L2CAP)
HCI驱动
蓝牙协议栈在快速迭代中,后续会开发更多功能及接口。

应用开发框架及接口

AliOS Things BLE应用开发框架主要针对GATT Server,即peripheral,主要完成以下功能:

维护开发者添加的属性和特性
GATT (Generic Attribute Profile)相关读,写,通知,指示和连接
通过实现上述两项功能,为开发者提供清晰简单的应用开发接口,接口主要包括以下功能:

创建外设应用开发框架对象
创建和添加属性到BLE协议栈,即GATT
广播Attribute
回复和更新Central设备的请求和订阅信息
我们已经在庆科mk3239上支持了创建外设应用框架对象接口,发布添加属性接口,广播接口。开发者可以在创建了外设应用开发框架对象后,借助于接口轻松添加属性,完成服务的广播,连接的建立和信息的更新。我们正在丰富上述接口功能并提供全部功能,并将已经在mk3239上支持的应用开发能力做到与平台无关,让使用其他蓝牙芯片的开发者也能够享受到极简开发的快乐。

AliOS Things应用层规范接口的定义,可以在framework/bluetooth/ble_app_framework/ble_app_framework.h文件中找到。下面对应用层接口作一些说明:
ble_peripheral_init

接口定义:

     peripheral_hdl_t ble_peripheral_init(peripheral_init_t *p,ble_peripheral_conn_cb_t c,ble_peripheral_disconn_cb_t disc,const uint8_t *gatt_db,int db_len);

接口说明:
该函数用于初始化peripheral设备服务,包括协议栈初始化、设备初始化、GATT属性数据库初始化。设备初始化相关的参数由参数p指定,GATT属性数据库由参数gatt_db和db_len指定。参数c和disc分别指定有客户端设备连接时和断开连接时的回调函数。该函数返回值是对应peripheral设备的handle,handle可以用于标识peripheral设备及其属性。
ble_peripheral_deinit

接口定义:
void ble_peripheral_deinit(peripheral_hdl_t hdl);
接口说明:
该接口是接口ble_peripheral_init的反向操作,用于注销peripheral设备初始化和协议栈初始化等操作。
ble_adv_start

接口定义:

    void ble_adv_start(ble_adv_complete_cb_t adv_handler,const char *manufacture,peripheral_hdl_t hdl);

接口说明:
该接口用于启动广播。参数adv_handler指定广播结束时的回调函数,参数manufacture指定设备的厂商名信息。广播的信息(服务、属性等)在初始化函数的GATT数据库中设定。
ble_adv_stop

接口定义:

void ble_adv_stop();

接口说明:
该接口停止广播。
ble_attr_add

接口定义:

     ble_gatt_attr_t *ble_attr_add(uint16_t hdl,uint16_t val_len,const uint8_t *val);

接口说明:
该接口用于添加peripheral设备属性值。参数hdl指定属性句柄,val指定属性值,val_len指定属性值的长度(以字节为单位)。该函数返回值为一个ble_gatt_attr_t类型的结构体,用于后续对该属性的操作。
ble_attr_indicate

接口定义:

     void ble_attr_indicate(ble_gatt_attr_t *attr,peripheral_hdl_t hdl,uint16_t len,const uint8_t *data);

接口说明:
该接口用于向客户端设备发送指示(indication)。参数attr表明指示对应的属性,hdl表明peripheral设备对应的handle,data指定需要指示的数据,len指定数据长度。
ble_attr_notify

接口定义:

    void ble_attr_notify(ble_gatt_attr_t *attr,peripheral_hdl_t hdl,uint16_t len,const uint8_t *data);

接口说明:
该函数功能与ble_attr_indicate类似,区别在于发送通知(notification)。
基于BLE应用框架的示例说明

AliOS Things目前提供了2个BLE示例sample,位于目录example/bluetooth/目录中。这2个sample均基于BLE应用框架和接口。下面对这2个sample作一些说明。

ble_advertisements

该示例sample展示了如何开发基于BLE应用框架和接口的应用。

第一步,初始化peripheral设备。

peripheral_init_t p = {BLE_DEVICE_NAME, 0, 1};
hdl = ble_peripheral_init(&p, connection_handler, disconnection_handler,adv_gatt_db, sizeof(adv_gatt_db));

peripheral_init_t中指定了设备名、最大连接数等信息。GATT数据库在adv_gatt_db中指定,包含了GATT服务、GAP服务、设备信息服务及他们的属性。

第二步,发布广播。广播的内容包括厂商名、第一步中指定的设备信息服务等。

ble_adv_start(adv_complete_cb, MANUFACURE_NAME, hdl);

ble_show_system_time

该示例程序是另外一个简单的基于BLE应用框架和接口的sample。该示例在上一个示例的基础上,增加了一个用户自定义服务(TIME Service),并为该服务添加了一个属性值,用于显示系统启动时长。

下面的代码展示了该示例程序的主要流程:

static void indicate_handler(void *arg)
{struct indicate_arg_s *ind = (struct indicate_arg_s *)arg;long long time = aos_now_ms();ble_attr_indicate(ind->attr, ind->hdl, sizeof(time), (uint8_t *)&time);aos_post_delayed_action(1000, indicate_handler, arg);
}int application_start( void )
{peripheral_hdl_t hdl;ble_gatt_attr_t *attr;struct indicate_arg_s ind_arg;peripheral_init_t p = {BLE_DEVICE_NAME, 0, 1};hdl = ble_peripheral_init(&p, connection_handler, disconnection_handler,adv_gatt_db, sizeof(adv_gatt_db));ble_adv_start(adv_complete_cb, MANUFACURE_NAME, hdl);attr = ble_attr_add(HDLC_TIME_OUT_VALUE, 0, NULL);ind_arg.hdl = hdl;ind_arg.attr = attr;aos_post_delayed_action(1000, indicate_handler, &ind_arg);aos_loop_run();return 0;
}

第一步,初始化peripheral设备。

第二步,启动广播。

第三步,添加时间属性的值。

第四步,每隔1s发送一次指示,该指示包含系统启动时长信息。

小结

目前,AliOS Things蓝牙组件提供了一些最基础的功能模块,开发者可以基于现有功能直接基于AliOS Things进行蓝牙开发。后续,我们会随着AliOS Things快速迭代,持续更新,主要包括:

升级到蓝牙5.0
支持更加丰富的应用开发示例和接口
支持SIG BLE mesh
AliOS Things uMesh支持蓝牙
支持更多的平台运行AliOS Things蓝牙协议栈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速开发工作流_01_简单流程案例

文章目录一、介绍二、技术选型三、登录/绘制流程图3.1. 需要先登录3.2. 绘制流程图四、 使用说明4.1. 选择数据库4.2. 增加 mybatis, modeler,idm 等配置4.3. yml 文件配置五、定义流程文件这样当此框架启动的时候它会默认加载resource目录下的processes时就可以将此流程配置加…

Spark精华问答 | Spark和Hadoop的架构区别解读

总的来说,Spark采用更先进的架构,使得灵活性、易用性、性能等方面都比Hadoop更有优势,有取代Hadoop的趋势,但其稳定性有待进一步提高。我总结,具体表现在如下几个方面。1Q:Spark和Hadoop的架构区别A&#x…

7类合作伙伴,190条沟通路径,高德汽车如何实现组织高效沟通?

摘要: 通常协同开发组织或团队大于等于7,关键干系人大于等于10,组织级沟通路径大于等于21条,关键干系人沟通路径大于等于45条,并以较大角系数递增。这种沟通路径曲线下,如何让组织信息快速传递?…

MaxCompute - ODPS重装上阵 第二弹 - 新的基本数据类型与内建函数

摘要: MaxCompute(原ODPS)是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用,支撑了多个BU的核心业务。 MaxCompute除了持续优化性能外,也致力于提升SQL语言的用户体验和表达能力…

@程序员:可以被认出是写代码的,但是不能因为格子衬衫!

戳蓝字“CSDN云计算”关注我们哦!亲爱的,我今天穿什么衣服比较好呢?你女朋友早上是否也会站在试衣镜前这样询问你?醒醒,你哪里有女朋友!你分得清人家衣服的?比如:裤子:背…

助力全站WebP ,阿里云云上FPGA 团队发布 WebP图片解决方案

摘要: 阿里云 WebP 图片解决方案的软件部分由联捷计算科技(CTAccel)提供,再整合上阿里云自身的FaaS (FPGA as a Service) 弹性计算平台,形成了完整的阿里云 WebP 图片解决方案。 点此查看原文 目前来说,图片…

linux ssh连接交换机_访问SMB交换机CLI使用SSH或远程登录

访问SMB交换机CLI使用SSH或远程登录客观Cisco小型企业被管理的交换机可以通过命令行界面(CLI)远程访问和被配置。访问CLI在一个基于终端的窗口允许命令被输入。如果喜欢配置使用在您的交换机的终端命令通过CLI而不是基于Web的工具,这是一个更加容易的选择。某些任务…

面试官问我:你们的数据库是怎么架构的?

戳蓝字“CSDN云计算”关注我们哦!作者:尜尜人物来源:https://www.cnblogs.com/littlecharacter/p/9084291.html一、数据库架构原则高可用高性能一致性扩展性二、常见的架构方案方案一:主备架构,只有主库提供读写服务&a…

一张图学会数据库迁云最佳路径

摘要: 我们以基于Oracle数据库的应用系统上云为例,如何根据实际需求,及不同的应用特征,去选择合适的上云解决方案?看懂了以下这张图,就能找到最适合你的应用系统总体的迁移上云路径。 点此查看原文 传统架构…

透析《长安十二时辰》里的望楼,人类在唐朝就有 5G 愿望了?

戳蓝字“CSDN云计算”关注我们哦!作者 | 胡巍巍出品 | 程序人生(ID:coder_life)《古都24小时》哦不《长安十二时辰》,让很多人跟着易烊千玺和雷佳音,回了趟大唐!为了体现真实,剧中大…

MaxCompute - ODPS重装上阵 第三弹 - 复杂类型

摘要: MaxCompute(原ODPS)是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用,支撑了多个BU的核心业务。 MaxCompute除了持续优化性能外,也致力于提升SQL语言的用户体验和表达能力…

ecplise安装flowable插件

ecplise安装flowable插件步骤: Help ---- > Install New Software ---- > add, 然后添加的弹窗中输入以下信息: Name: Flowable BPMN 2.0 designerLocation: http://flowable.org/designer/update/创建一个maven项目测试一下:

OpenStack精华问答 | OpenStack和CloudStack对比

自诞生以来,OpenStack 似乎一直被质疑,其背后最重要的两大推手 NASA 和 Rackspace 都弃它而去,惠普、思科接连宣布关闭基于 OpenStack 的公有云服务,但是,OpenStack 依旧坚挺。1Q:OpenStack发展历史A:2Q:op…

基于TableStore/MaxCompute的数据采集分析系统介绍

摘要 在互联网高度发达的今天,ipad、手机等智能终端设备随处可见,运行在其中的APP、网站也非常多,如何采集终端数据进行分析,提升软件的品质非常重要,例如PV/UV统计、用户行为数据统计与分析等。虽然场景简单&#xf…

第3篇:Flowable-IDM详述

接上一篇: 第2篇:Flowable启动 https://blog.csdn.net/weixin_40816738/article/details/102875324 文章目录一、Flowable-IDM功能二、Flowable-IDM登录地址三、Flowable-IDM登录用户和页面四、Flowable-IDM用户管理页面五、Flowable-IDM用户组管理页面六…

比“5G有多快”更重要的,是5G将带来哪些改变

戳蓝字“CSDN云计算”关注我们哦!“速度,其实是5G最无聊的应用。”北京邮电大学20岁的何同学,在他制作的一个火遍全网的视频中,用这句话结尾。5G,对我们普通人而言,是个熟悉又陌生的词。由于它是中美贸易战…

阿里云新推出 HiTSDB + IoT套件 物联网设备上云步入快车道

摘要: 阿里云针对物联网企业遇到的5大痛点,提供了HiTSDB IoT 套件的一体化解决方案,能够支持物联设备快速上云,高效设备管理,数据安全,低成本海量数据存储,实时掌握设备状态,快速发现…

阿里云 MVP技术直播——缪政辉教你如何搭建万能LNMP环境

摘要: 阿里云 MVP 缪政辉开直播咯!快把这个好消息告诉你身边热爱技术,喜欢云计算的同学! 缪政辉是谁? 网名妙正灰,真名和网名读法一致。阿里云第三季新晋MVP,电商在读大学生。云计算领域罕见的文…

第4篇:Flowable-Modeler详述之流程概述

接上一篇 第3篇:Flowable-IDM详述 https://blog.csdn.net/weixin_40816738/article/details/102885902 文章目录一、Flowable-Modeler功能1. 提供可视化编辑器2. 提供可视化参数配置3. 提供导入导出功能二、Flowable-Modeler界面之流程介绍三、Flowable-Modeler之创…

MaxCompute - ODPS重装上阵 第四弹 - CTE,VALUES,SEMIJOIN

摘要: MaxCompute(原ODPS)是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用,支撑了多个BU的核心业务。 MaxCompute除了持续优化性能外,也致力于提升SQL语言的用户体验和表达能力…