博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蓝牙代码分析二
阅读量:5942 次
发布时间:2019-06-19

本文共 1273 字,大约阅读时间需要 4 分钟。

hot3.png

gap_params_init()

GAP定义了设备如何发现和建立与其他设备的链接。该函数就是用来设置GAP的参数,设置设备名等。可以从Generic Access Service 中看到设置的这些参数。sd_ble_gap_ppcp_set()中ppcp表示外围设备连接首选参数。这个参数主要是让中央设备在首次连接外设时可以读取他们以及时调整连接参数。或者当当中央设备以后重连该设备,并且保留这些参数,那么就免去连接后可能需要修改连接参数的麻烦。当然也可以通过sd_ble_gap_ppcp_set()来更改连接参数。

conn_params_init() 

链接参数更新设置。主要设置什么时候发起更新链接参数请求以及间隔和最大尝试次数。

client characteristic configuration descriptor  客户端特征配置描述符

ble_stack_init()

softdevice_ble_evt_handler_set(ble_evt_dispatch)注册事件派发程序。

因为我的蓝牙需要和苹果的homekit平台对接,所以就拿homekit_init(void)作为添加服务的分析。

homekit整体上可以分为三个部分,uuid的初始化,外设信息初始化和配对初始化。

在uuids_init(void)中通过static const ble_uuid128_t base_uuid = { { HOMEKIT_BASE_UUID } };赋值,然后通过sd_ble_uuid_vs_add(&base_uuid, &uuids_type)函数将自定义的uuid添加到协议栈中。

在void accessoryinfo_init(void),主要是实现了添加服务和特征值。

然后通过service_addService(&service, characteristics)函数将这些服务放到协议栈里。通过函数service_add_characteristic(uint16_t service_handle, const service_characteristic_t* characteristics)来添加服务的特性值。其实其他任何服务添加模板都是一样,这些已是套路。

最后通过函数pairing_init(void)来初始化配对参数。配对的设置整体代码也一样,具体的需要另外章节分析。

然后就到了广播初始化函数advertising_init(void),初始化函数中通过ble_advdata_t结构体来设置广播参数比如:广播的uuid,广播所依赖的homekit版本,还有广播数据等。广播一般有四种类型分别是:通用广播,定向广播,不可连接广播,可发现广播。最后通过函数ble_advdata_set()将这些数据设置进栈。之后就可以通过函数sd_ble_gap_adv_start()来进行广播了。

转载于:https://my.oschina.net/u/2241389/blog/734400

你可能感兴趣的文章
mysql出现unblock with 'mysqladmin flush-hosts'
查看>>
oracle exp/imp命令详解
查看>>
开发安全的 API 所需要核对的清单
查看>>
Mycat源码中的单例模式
查看>>
WPF Dispatcher介绍
查看>>
fiddler展示serverIP方法
查看>>
C语言中的随意跳转
查看>>
WPF中如何将ListViewItem双击事件绑定到Command
查看>>
《聚散两依依》
查看>>
小tips:你不知道的 npm init
查看>>
Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决...
查看>>
Jmeter也能IP欺骗!
查看>>
Rust 阴阳谜题,及纯基于代码的分析与化简
查看>>
ASP.NET Core的身份认证框架IdentityServer4(4)- 支持的规范
查看>>
(原創) array可以使用reference方式傳進function嗎? (C/C++)
查看>>
170多个Ionic Framework学习资源(转载)
查看>>
Azure:不能把同一个certificate同时用于Azure Management和RDP
查看>>
Directx11教程(15) D3D11管线(4)
查看>>
Microsoft Excel软件打开文件出现文件的格式与文件扩展名指定格式不一致?
查看>>
ios ble 参考
查看>>