文档章节

蓝牙代码分析二

xiaocui911
 xiaocui911
发布于 2016/08/18 09:46
字数 572
阅读 66
收藏 0

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()来进行广播了。

© 著作权归作者所有

共有 人打赏支持
上一篇: 指针
xiaocui911
粉丝 6
博文 69
码字总数 14765
作品 0
深圳
程序员
私信 提问
android项目源码解析01——蓝牙聊天工具源码

今天看了一下andriod自带的蓝牙聊天工具的源码,本想写一篇源码解析的,但是看到网上某高手已经写了一篇很完善的文章了,因而这里只是引用一下: OPhone平台蓝牙编程之蓝牙聊天分析(一) ht...

迷途d书童
2012/03/23
3.5K
0
android 蓝牙源码分析

BluetoothService类中定义的Native方法都在androidserverBluetoothServer.cpp里建立jni调用 一、开启(BT Turn on Turn off) (蓝牙的打开关闭由类BluetoothEnabler控制。) 1.由Bluetooth...

keke321
2012/08/28
0
0
物联网安全拔“牙”实战——低功耗蓝牙(BLE)初探

0x00 目录 0x00 目录 0x01 前言 0x02 BLE概述    BLE 协议栈总览    GAP-通用访问规范    GATT-通用属性协议 0x03 BLE嗅探 0x04 伪造BLE通信 0x05 分析BLE私有数据协议(灯泡、跳...

广岛秋泽
2015/12/04
0
0
继承BaseAdapter覆写getView()方法解析

当我们继承BaseAdapter自定义适合自己使用的Adapter时候,不可避免的要覆写getView()方法。自己在分析蓝牙4.0官方源代码遇到这个问题,分析了几遍,有所领悟,参考了这篇博文http://blog.csd...

sometimesno1
2014/12/09
0
0
蓝牙功能

蓝牙功能 作为蓝牙中心,连接外设 一般性的步骤是先扫描设备,然后根据蓝牙设备的名称等信息找到需要连接的设备,进行连接 然后获取设备的服务,可以订阅对应的服务,可以对设备进行写入 作为...

云飞扬v5
2016/09/24
24
0

没有更多内容

加载失败,请刷新页面

加载更多

render常用模版 结合iview

表格添加一对按钮 { title: '操作', align: 'center', render: (h, params) => { return h('div', [ h('Button', { props: { ......

Carbenson
12分钟前
0
0
一次生产 CPU 100% 排查优化实践

前言 到了年底果然都不太平,最近又收到了运维报警:表示有些服务器负载非常高,让我们定位问题。 还真是想什么来什么,前些天还故意把某些服务器的负载提高(没错,老板让我写个 BUG!),不...

crossoverJie
20分钟前
7
0
Spring Cloud Alibaba Sentinel 整合 Feign 的设计实现

作者 | Spring Cloud Alibaba 高级开发工程师洛夜 来自公众号阿里巴巴中间件投稿 前段时间 Hystrix 宣布不再维护之后(Hystrix 停止开发。。。Spring Cloud 何去何从?),Feign 作为一个跟 ...

Java技术栈
36分钟前
6
0
虚拟机加密

在超融合的基础设施和虚拟化成为常态的世界里,对加密的要求越来越高,越来越迫切,IT部门需考虑的重大安全问题和方法也浮现了出来。 物理数据中心时代,采取双保险式数据安全方法是相对简单...

linuxCool
39分钟前
2
0
MySQL 主从同步

MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binlog的,主上须开启bin...

野雪球
52分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部