文档章节

蓝牙代码分析二

xiaocui911
 xiaocui911
发布于 2016/08/18 09:46
字数 572
阅读 64
收藏 0
点赞 0
评论 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.4K
0
物联网安全拔“牙”实战——低功耗蓝牙(BLE)初探

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

广岛秋泽
2015/12/04
0
0
android 蓝牙源码分析

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

keke321
2012/08/28
0
0
[Bluetooth]: android 平台上BLE连接流程之优化方案

这是一篇关于之前工作成果的补记。我之前在一家可穿戴设备公司工作,主要工作之一是帮助改进和维护本司的android手机App和本司可穿戴设备(下文简称设备)之间蓝牙通信性能。曾经有一个性能问...

teaspring
2017/08/16
0
0
继承BaseAdapter覆写getView()方法解析

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

sometimesno1
2014/12/09
0
0
android 蓝牙 getInputStream()方法得到的数据流中只包含发送出去的数据吗

和同学一起开发一个android蓝牙小程序 单片机控制的蓝牙模块发送来数据 在手机端对数据进行分析 在代码中使用了getInputStream()方法取得数据流 请问getInputStream()得到的数据流只包含传过...

Eanno
2015/03/11
856
0
蓝牙功能

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

云飞扬v5
2016/09/24
24
0
Android开发之蓝牙(Bluetooth)操作(一)--扫描已经配对的蓝牙设备

一. 什么是蓝牙(Bluetooth)? 1.1 BuleTooth是目前使用最广泛的无线通信协议 1.2 主要针对短距离设备通讯(10m) 1.3 常用于连接耳机,鼠标和移动通讯设备等. 二. 与蓝牙相关的API 2.1 Bluetoo...

长平狐
2012/09/03
6.8K
1
iOS端近场围栏检测(二) ——MultipeerConnectivity

前言 P2P已经成为时下很流行的一种交互方式,穿戴设备连手机、智能硬件连手机等等,那么在智能手机领域是否存在这样一种协议,能在没有WIFI,没有中间服务器的情况下,能直接2个手机传输信息...

尛破孩波波
06/04
0
0
Android实现蓝牙耳机连接

前言 最近看了下蓝牙耳机连接的问题,查阅了相关资料,再此做一个总结。 本文参考以下链接: Android实现主动连接蓝牙耳机 再次对作者表示感谢。 今天涉及的内容有: 流程讲解 新建广播Bluet...

奔跑的佩恩
05/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周五乱弹 —— 我们是食物链的最底层

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @温家成 :分享谢安琪的单曲《姿色份子》 《姿色份子》- 谢安琪 手机党少年们想听歌,请使劲儿戳(这里) @贪吃飒:最近p2p怎么了、半个月爆了...

小小编辑
11分钟前
3
1
Android Studio 3.0 之后打包apk出现应用未安装问题

1、废话 出现这个问题的原因,并不是只有一个,而是有多个原因,不懂的估计会被搞得一头雾水,下面我列举的是我遇到的几种问题和网友遇到的几种问题,但不一定是全部,也有可能有些莫名其妙的...

她叫我小渝
30分钟前
0
0
前端基础

1. get请求传参长度的误区 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是...

wenxingjun
今天
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
今天
7
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
今天
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1
fiddler安装和基本使用以及代理设置

项目需求 由于开发过程中客户端和服务器数据交互非常频繁,有时候服务端需要知道客户端调用接口传了哪些参数过来,这个时候就需要一个工具可以监听这些接口请求参数,已经接口的响应的数据,这种...

银装素裹
今天
0
0
Python分析《我不是药神》豆瓣评论

读取 Mongo 中的短评数据,进行中文分词 对分词结果取 Top50 生成词云 生成词云效果 看来网上关于 我不是药神 vs 达拉斯 的争论很热啊。关于词频统计就这些,代码中也会完成一些其它的分析任...

猫咪编程
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部