BLE开发

BLE是低功耗蓝牙的缩写,是更新版本的蓝牙通讯协议,能够让设备以更低能耗工作

扫描:BluetoothLeScanner.startScan

ancientcc发表了文章 0 人赞同 0 评论 2022-11-02 16:42:42

必务先看“connectGatt(1/4):从frameworks到bt-JNI”,看过它才能知道sGattIf指向bt协议栈的btgattInterface等概念。图1 BluetoothLeScanner.startScan一、ap......查看全部

connectGatt(1/4):从frameworks到bt-JNI

ancientcc发表了文章 0 人赞同 0 评论 2022-10-29 07:46:15

Android启动时会运行com.android.bluetooth,后者一启动便会加载由<aosp>/system/bt编译出的BLE HAL模块libbluetooth.so。针对ROC-RK3588S-PC,BLE HAL模块源......查看全部

bta_sys_sendmsg、bta_gattc_cback、HAL_CBACK

ancientcc发表了文章 0 人赞同 0 评论 2022-10-28 11:01:41

一、bta_sys_sendmsgvoid bta_sys_sendmsg(void* p_msg)功能:在bt_main_thread线程执行bta_sys_cb.reg[id]->evt_hdlr(p_msg),其中......查看全部

tble:tblebuf和tsendbuf

ancientcc发表了文章 0 人赞同 0 评论 2022-10-22 19:54:26

tblebuf、tsendbuf不属于tble。tblebuf提供了基于lipdp格式的数据接收功能,tsendbuf则适应了蓝牙发送带有反馈机制这个特点。tblebuf用于在接收端缓存数据。数据按着lipdp格式,一个消息、一个消息的发来。它自......查看全部

tble:概述

ancientcc发表了文章 0 人赞同 0 评论 2022-10-11 15:15:02

要求peripheral的广播包必须出现一个uuid。不要让一个特征同时具有notify、indicate属性。原因:iOS设置notify、indicate用的是一个函数,当属性只有这们中一个时,它会正确设置,如果同时存在,它只会设置indic......查看全部

tble:扫描、连接、断开

ancientcc发表了文章 0 人赞同 0 评论 2022-10-10 14:17:00

任一时刻,tble只支持最多连接着一个设备。只要6字节中有一个不是0,tble就认为这是一个有效的mac地址。连接溢出时间固定为10秒。persist_scan_功能是用于持久扫描,即连接着一个peripheral,还要继续扫描。用于一个app要......查看全部

tble:lipdp格式

ancientcc发表了文章 0 人赞同 0 评论 2022-10-09 19:52:23

在收发数据时,像蓝牙,数据往往封装成某种格式的消息。lipdp是用于封装消息的一种格式。这格式名称来自“Leagor IP Discovery Protocol(LIPDP)”。图1 lipdp格式的消息示例图1是数个lipdp格式的消息示例。h......查看全部

tble:任务(task)

ancientcc发表了文章 0 人赞同 0 评论 2022-10-08 21:00:25

tble2是app实现的、从tble派生的类。特征写导致出的反馈,不管这次写的数据有多少,都是一次写对应一个反馈吗?须要增加执行任务的时间溢出机制。 任务由一组有序的操作组成,操作可能是notify特征、写特征或读特征。一个tble::......查看全部

扫描peripheral

ancientcc发表了文章 0 人赞同 0 评论 2022-09-30 10:12:35

在看本文前,请先看“BLE广播中的数据包”,至少要知道什么是定时包、扫描回复包。广播数据由定时包和扫描回复包组成。绝大多数情部下,等回调到didDiscoverPeripheral,会已收到这个包。但偶尔会出现只收到定时包,至少ios14、ios......查看全部

BLE广播中的数据包

ancientcc发表了文章 0 人赞同 0 评论 2022-09-22 21:23:21

在android,依照协议,虽然定时包可以最多31字节,但app其实最多只能28字节。扫描回复包则是31字节。Bluetooth SIG关于16-bit UUID的已分配列表:Assigned Numbers下的“16-bit UUIDS“(pd......查看全部

HCI

ancientcc发表了文章 0 人赞同 0 评论 2021-04-09 13:56:27

可这么认为,bt协议栈、HDIL-bt都和硬件无关。HDIL-vendor,以及它要打开的linux驱动,和硬件相关。Android设备怎么确定蓝牙地址?——为让同一个android镜像能生成不同蓝牙地址,烧写镜像后,是没有确定地址。androi......查看全部

class BluetoothGatt

ancientcc发表了文章 0 人赞同 0 评论 2021-03-31 21:22:49

discoverServices()。把连接时存储在HAL层的gatt db存储到GattService、BluetoothGatt,并通过回调onServicesDiscovered,告知app这个过程完成了。会依次回调JNI注册的两个函数:b......查看全部

connectGatt(3/4):btif_gattc_open

ancientcc发表了文章 0 人赞同 0 评论 2021-03-28 11:28:45

必务先看“BLE(2/6):连接之BluetoothDevice.connectGatt”,看过它才能清楚Android BLE何时调用btif_gattc_open。在BluetoothDevice.connectGatt,如果mSe......查看全部

connectGatt(4/4):bta_gattc_start_discover

ancientcc发表了文章 0 人赞同 0 评论 2021-03-31 11:16:33

必务先看“BLE(3/6):连接之btif_gattc_open”,看过它才能清楚Android BLE何时调用bta_gattc_start_discover。bta_gattc_conn主要做了两件事:bta_gattc_start_disc......查看全部

connectGatt(2/4):btif_gattc_register_app

ancientcc发表了文章 0 人赞同 0 评论 2021-03-21 11:54:17

依次执行两个函数:mService.registerClient()和mService.clientConnect()。对mService.registerClient(),主要两个操作。1)向GATT协议栈注册,并获得新的client_if。此......查看全部

概述

ancientcc发表了文章 0 人赞同 0 评论 2021-03-21 09:22:17

本系列文章目的是描述aosp如何处理蓝牙,把蓝牙代码分为三个部分,从上到下依次是bt-frameworks、bt-JNI、bt协议栈。bt-framewarks。<aosp>/frameworks目录中和蓝牙相关代码。都是Java代码......查看全部
BLE是低功耗蓝牙的缩写,是更新版本的蓝牙通讯协议,能够让设备以更低能耗工作