完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
摘要: 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支持低功耗蓝牙主要包括以下功能:
应用开发框架及接口 AliOS Things BLE应用开发框架主要针对GATT Server,即peripheral,主要完成以下功能:
AliOS Things应用层规范接口的定义,可以在framework/bluetooth/ble_app_framework/ble_app_framework.h文件中找到。下面对应用层接口作一些说明: ble_peripheral_init
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快速迭代,持续更新,主要包括:
|
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 02:17 , Processed in 0.562013 second(s), Total 69, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号