文档章节

蓝牙代码分析二

xiaocui911
 xiaocui911
发布于 2016/08/18 09:46
字数 572
阅读 89
收藏 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源码分析(六)-----蓝牙Bluetooth源码目录分析

一 :Bluetooth 的设置应用 packagesappsSettingssrccomandroidsettingsbluetooth* 蓝牙设置应用及设置参数,蓝牙状态,蓝牙设备等。 BluetoothDevicePreference.java 顾名思义,蓝牙设备首选...

—莫言—
05/20
0
0
android项目源码解析01——蓝牙聊天工具源码

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

迷途d书童
2012/03/23
3.6K
0
Android-蓝牙自动配对与隐藏对话框

一、概述 本次分析是基于Android7.0的源码。 二、自动配对分析过程 首先,我们分析一下源码的自动配对过程,packages/apps/Settings/src/com/android/settings/bluetooth/DeviceListPrefere...

.double
01/28
0
0
android 蓝牙源码分析

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

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

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

广岛秋泽
2015/12/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka再平衡机制详解

所谓的再平衡,指的是在kafka consumer所订阅的topic发生变化时发生的一种分区重分配机制。一般有三种情况会触发再平衡: consumer group中的新增或删除某个consumer,导致其所消费的分区需要...

爱宝贝丶
16分钟前
11
0
element 验证 请输入大于0的整数

data() { var validatePass = (rule, value, callback) => { // if (value <= 0) { // callback(new Error('请输入大于0的整数')); // } else { // c......

沉迷代码我爱学习
27分钟前
4
0
报表工具花钱or开源?我对比了这6个工具

近一年都在处理报表问题,调研了不少报表工具,也开发了适合公司业务的报表应用。分享一些关于如何选择报表工具的个人观点,希望对你有参考作用。 对于大部分企业来说,能花时间和人力去开发...

帆软
27分钟前
3
0
自建redis笔记--Redis cluster搭建

Redis cluster搭建 2018年十月 Redis 发布了稳定版本的 5.0 版本,推出了各种新特性,其中一点是放弃 Ruby的集群方式,改为 使用 C语言编写的 redis-cli的方式,是集群的构建方式复杂度大大降...

北极之北
28分钟前
3
0
分享一个在caffe中实现的yolo层

这是别人实现的,是我移植到cc的cpu实现,可以实现caffe中使用yolo3,但是我感觉实际效果不如darknet 好点 template <typename Dtype>inline Dtype sigmoid(Dtype x){return 1. / (1. ...

开飞色
29分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部