自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

奔跑吧 android 的博客

学习和总结

  • 博客(111)
  • 收藏
  • 关注

原创 【android bluetooth 协议分析】【整体计划】

controller: 蓝牙模组host: android 上层协议栈蓝牙模组 通过uart/spi/sdio 等接口,将数据传递给 host 侧。那host 如何解析controller 的数据。是通过 hci 规定的协议。双方才能正常交流。hci 层将数据解析完成后,会根据对应的分类,将数据继续上报给更高层次的协议。例如 两个设备 连接完成后,建立acl 通道。但是此时 两个设备之间 不知道彼此支持那些功能。

2025-03-27 14:37:10 1686

原创 【nRF52832】【环境搭建 3】【如何新建一个纯单片机开发的工程】

在 ubuntu 平台下, 新建一个 nRF52832 工程

2025-06-28 20:53:42 299

原创 【nRF52832】【环境搭建 2】【如何使用 官方 SDK 开发】

本文介绍了如何在Ubuntu环境下基于Nordic nRF52832芯片进行开发,重点解析了SDK 17.1.0的目录结构和使用方法。主要内容包括: SDK目录结构解析: 核心组件(components)包含BLE、外设驱动等开发必需库文件 示例工程(examples)提供各类参考案例,如蓝牙心率计demo 开发流程演示: 通过蓝牙心率计示例详解工程目录层级 展示了从编译到烧录的完整命令行操作 最终可在手机端nRF connect扫描到设备 关键说明: 不同开发板型号对应不同工程目录 提供了Makefile

2025-06-28 19:48:31 347

原创 【nRF52832】【nRF52832介绍以及写作大纲】

nRF52832 介绍,以及对应写作大纲

2025-06-26 14:50:22 896 1

原创 【nRF52832】【环境搭建 1】【ubuntu下搭建nRF52832开发环境】

本文介绍了在Ubuntu 22.04下开发nRF52832的完整流程。首先安装必备工具链(gcc-arm-none-eabi和build-essential),然后下载并解压nRF5 SDK 15.3版本。配置编译环境时需修改Makefile.posix文件中的工具链路径。以跑马灯示例程序为例,演示了在pca10040开发板上的编译过程,生成可烧录的hex文件。最后安装nRF Command Line Tools和JLink调试工具,为后续烧录做好准备。整个过程涵盖了从环境搭建到生成可执行文件的完整开发流程

2025-06-25 21:49:26 845

原创 【android bluetooth 协议分析 10】【AVRCP详解1】【PlaybackStateCompat类如何查看】

本文探讨了如何在AOSP蓝牙源码中查找缺失的PlaybackStateCompat类信息。该问题源于PlaybackStateCompat属于Android Support Library兼容包,而非AOSP系统源码的一部分。作者提供了两种解决方案:1) 直接解压查看预构建的sources.jar文件(位于prebuilts/sdk路径下);2) 通过AndroidX官方文档查询。文中详细展示了从sources.jar中获取的PlaybackStateCompat源码片段,包括其定义的状态常量(如STATE

2025-06-25 14:19:05 310

原创 【android bluetooth 协议分析 05】【蓝牙连接详解2】【acl_interface_t介绍】

acl_interface_t结构体及其子结构体用于封装蓝牙连接相关回调函数,实现HCI事件与上层协议栈的解耦。主要包含四类接口: acl_classic_connection_interface_t - 处理传统蓝牙连接事件 acl_le_connection_interface_t - 处理低功耗蓝牙连接事件 acl_sco_connection_interface_t - 处理SCO/eSCO语音连接事件 acl_classic_link_interface_t - 处理传统蓝牙链路管理事件 这些回调

2025-06-24 19:32:35 748

原创 【android bluetooth 协议分析 05】【蓝牙连接详解1】【连接错误码-0x3E】

蓝牙连接失败分析:0x3E错误码解析 摘要:蓝牙连接过程中出现0x3E错误码(Connection Failed Establishment),表明设备连接或同步失败。该错误主要由两种场景触发: 主设备发起连接后,6个广播周期内未完成连接建立; 周期广播同步超时失败。常见原因包括对端设备未广播、地址不匹配、控制器资源不足或信号干扰。调试建议通过抓包工具确认广播存在性,检查地址类型和间隔设置,并分析控制器资源状态。该错误在AOSP中表现为btm_ble_read_remote_features_complet

2025-06-24 17:15:18 809

原创 【android bluetooth 协议分析 01】【HCI 层介绍 27】【LeReadRemoteFeatures命令介绍】

本文深入解析蓝牙低功耗(BLE)中的LE Read Remote Features命令及其事件响应机制。该命令(HCI Opcode 0x2016)用于查询远程设备支持的BLE特性,通过8字节bitmask表示加密、2M PHY等能力。命令发送后,控制器会异步返回两个事件:HCI_Command_Status表示命令接收状态,HCI_LE_Read_Remote_Features_Complete(事件码0x3E)携带实际查询结果,包含状态、连接句柄和8字节特性位图。文章详细解析了事件结构、特性位定义(如B

2025-06-24 17:04:59 857

原创 【android bluetooth 框架分析 04】【bt-framework 层详解 8】【DeviceProperties介绍】

本文介绍了Android蓝牙框架中的DeviceProperties模块设计。该模块主要用于管理远程蓝牙设备的各类属性信息,解决设备发现、服务解析、配对和连接过程中的信息管理混乱问题。DeviceProperties通过MAC地址唯一标识设备,并缓存名称、UUID、RSSI、配对状态等关键属性数据。该模块提供统一读写接口,并与StorageModule协作实现数据持久化存储。文章详细分析了DeviceProperties的创建时机、数据结构以及所管理的属性类型,包括设备基础信息、服务UUID、设备类型等。该

2025-06-23 21:09:44 1061

原创 【android bluetooth 框架分析 04】【bt-framework 层详解 7】【AdapterProperties介绍】

文章摘要 本文是对蓝牙协议栈中AdapterProperties的补充说明,主要介绍其在Android蓝牙框架中的作用。作为Java层类,AdapterProperties管理蓝牙适配器的属性(如名称、地址、状态等),充当"蓝牙身份证"和"前台秘书"的角色。其核心职责包括属性缓存、更新、同步,以及封装Native层接口。设计上注重解耦、状态缓存和线程安全。文章还详细说明了Java层与Native层之间的交互接口,如setAdapterPropertyNative和ad

2025-06-13 17:57:59 1544

原创 【android bluetooth 框架分析 04】【bt-framework 层详解 6】【Properties介绍】

AOSP蓝牙栈中的设备属性管理与持久化系统主要由4个核心组件构成:AdapterProperties管理本地蓝牙适配器属性(如名称、可发现性等),DeviceProperties管理每个远程设备的属性(如名称、RSSI等),StorageModule负责属性持久化逻辑,最终通过bt_config.conf文件存储。 关键区别: AdapterProperties仅管理本地适配器属性,而DeviceProperties为每个远程设备维护独立实例 只有配对的远程设备属性才会持久化到bt_config.conf,

2025-06-12 16:45:22 758 1

原创 【android bluetooth 框架分析 04】【bt-framework 层详解 5】【AbstractionLayer介绍】

摘要: AbstractionLayer类定义了蓝牙HAL层与Java服务层交互所需的通用常量(如状态、属性、错误码等),核心作用是为跨层通信提供标准化接口。这些常量按功能分为蓝牙状态(如ON/OFF)、扫描模式(可连接/可发现)、属性类型(设备名称/UUID等)、设备类型(双模/BLE等)和错误码(成功/失败等)五大类,确保底层硬件抽象层与上层服务间的数据传递一致性。该设计避免了常量重复定义,集中管理跨模块共享参数,提升蓝牙栈的可维护性。

2025-06-12 11:27:15 1090

原创 【android bluetooth 框架分析 04】【bt-framework 层详解 4】【AdapterState介绍】

摘要:本文介绍了Android蓝牙启动过程中AdapterState状态机的关键阶段和作用。蓝牙启动流程从OFF状态开始,经过BLE_TURNING_ON、BLE_ON、TURNING_ON等中间状态,最终到达完全开启的ON状态。每个状态对应不同的初始化工作,如GattService和ProfileService的启动。文章详细说明了从用户调用enable()到系统服务绑定AdapterService的完整流程,包括状态转换触发的事件和日志输出。该系统通过状态机管理蓝牙适配器生命周期,协调各模块初始化顺序。

2025-06-11 21:02:37 1282

原创 【android bluetooth 框架分析 04】【bt-framework 层详解 2】【如何配置和启动蓝牙profile服务】

文章摘要: 蓝牙协议栈启动时会加载多个Profile服务,这些服务的配置主要在AdapterApp.java中完成。AdapterApp启动时会加载JNI库,并通过AdapterUtil.init()方法初始化协议支持配置。该方法根据系统属性判断是bt0还是bt1服务进程,并为每个适配器设置默认支持的Profile列表。bt0默认包含GATT、A2DP、AVRCP等协议,而bt1支持A2DP、AVRCP、GATT等基础协议。通过sProfiles存储不同适配器支持的Profile清单,后续可通过isProf

2025-06-11 16:15:25 556

原创 【android bluetooth 框架分析 04】【bt-framework 层详解 3】【BluetoothManagerService和BluetoothServiceManager区别】

本文探讨了BluetoothManagerService的获取机制。系统启动时,SystemServer通过BluetoothService创建BluetoothManagerService实例,并在PHASE_SYSTEM_SERVICES_READY阶段将其注册到ServiceManager。应用侧通过BluetoothServiceManager获取服务:BluetoothFrameworkInitializer在进程初始化时创建BluetoothServiceManager实例,BluetoothA

2025-06-10 22:12:54 898

原创 【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

摘要: BluetoothProperties.sysprop是Android系统中用于定义蓝牙相关系统属性的配置文件。该文件采用结构化语法,通过sysprop编译工具自动生成访问接口,供框架层和硬件层调用。主要包含三类属性:1)可读写属性如snoop日志模式、蓝牙恢复出厂设置;2)只读配置属性如设备默认名称、硬件功耗参数;3)功能开关如A2DP配置文件支持、蓝牙状态持久化等。这些属性由厂商通过系统配置预设,在蓝牙初始化时读取,为蓝牙模块提供统一的配置管理机制。文件采用Apache 2.0许可协议,属于An

2025-06-09 21:26:21 377

原创 【android bluetooth 协议分析 15】【SPP详解 3】【BluetoothSocket是如何实现app和bt.server之间相互数据传递的】

本文分析了Android蓝牙模块中BluetoothSocket的跨进程通信机制。通过调用BluetoothSocketManagerBinder.createSocketChannel在协议栈进程(bt.server)创建socket通道,并返回ParcelFileDescriptor给应用进程。应用进程将该文件描述符封装为LocalSocket,从而实现与native层蓝牙守护进程的双向通信。整个过程基于socketpair创建的全双工管道,一端保留在协议栈进程,另一端通过Binder传递给应用进程。这

2025-06-07 19:19:22 857 6

原创 【android bluetooth 协议分析 15】【SPP详解 1】【SPP 介绍】

SPP蓝牙串口协议及其应用解析 SPP(Serial Port Profile)是一种基于RFCOMM的蓝牙协议,用于模拟串口通信。其应用场景包括串口打印机、OBD诊断仪等设备间简单数据传输。SPP通信流程包括UUID识别、Socket创建、连接建立、数据传输和关闭连接五个阶段。 在实现上,服务器端通过listenUsingRfcommWithServiceRecord监听连接,客户端使用createRfcommSocketToServiceRecord主动连接。SPP在车机领域应用广泛,如调试端口、OBD

2025-06-07 14:08:42 854

原创 【android bluetooth 协议分析 02】【bluetooth hal 层详解 8】【高通蓝牙hal-进程被杀之前日志收集流程】

这篇文章分析了高通蓝牙HAL层中的SSR(子系统重启)日志收集机制。当蓝牙进程出现错误时,系统会触发SSR机制自动收集相关日志,包括Rx线程超时、错误原因(如"Rx Thread Stuck")、时间戳等信息。文章展示了完整的错误日志示例,并提出了三个关键问题:SSR机制的触发与流程、如何从日志中获取有用信息,以及如何扩展日志收集系统。日志显示系统尝试从多个路径(如/sys/kernel/debug/ipc_logging/)获取信息,并将最终数据写入/data/vendor/ssrdu

2025-06-06 22:26:21 884

原创 【android bluetooth 协议分析 02】【bluetooth hal 层详解 7】【高通蓝牙hal-读流程介绍】

本文分析了高通蓝牙HAL进程中出现的RxThreadTimeOut问题。该问题是由UartController模块中的3秒定时器超时触发,表明串口数据读取线程被阻塞无法正常运行。文章详细介绍了定时器的实现机制:1) StartRxThreadTimer创建3秒定时器;2) 超时后触发RxThreadTimeOut进行错误处理;3) 正常运行时通过StopRxThreadTimer停止定时器。该定时器监控HAL从/dev/ttyHSx读取数据并上报至bt.server的过程,超时意味着数据传输链路出现异常,最

2025-06-05 21:28:34 1272 4

原创 【android bluetooth 协议分析 12】【A2DP详解 2】【开启ble扫描-蓝牙音乐卡顿分析】

蓝牙音乐卡顿问题分析:当车机作为A2DP Sink接收音频时,若同时进行BLE扫描会导致音乐卡顿。根本原因在于蓝牙控制器无法支持BLE与BR/EDR物理层并发操作,导致ACL音频数据接收中断。具体表现为:控制器资源竞争、ACL数据接收窗口缩小、解码缓冲不足、主线程抢占以及音频HAL层堵塞等问题。可通过开启蓝牙日志(dump pcm数据)、检查AudioTrack的underrun情况以及调整BLE扫描策略来验证和缓解问题。AOSP源码分析显示,音频流的性能模式设置对播放稳定性有关键影响。

2025-06-04 21:20:34 1090

原创 【android bluetooth 协议分析 14】【HFP详解 1】【案例一: 手机侧显示来电,但车机侧没有显示来电: 讲解AT+CLCC命令】

通过一个案例, 讲解 :AT+CLCC 、 +CLCC: 并附带分析 aosp 中的实现。涉及 HeadsetClientStateMachine ,以及协议栈分析。

2025-06-04 16:28:14 1619

原创 将多个分段btsnoop文件合并为一个

btsnoop.log蓝牙日志文件合并指南 标准btsnoop.log文件具有16字节头部(含"btsnoop"标识)。合并多个日志文件时,仅保留第一个文件的头部,其余文件需去掉前16字节。 合并方法: 命令行方式:使用tail命令去掉头部后合并 cat btsnoop1.log > merged.log tail -c +17 btsnoop2.log >> merged.log Vim方式: 用Vim打开文件执行:%!tail -c +17 使用:r命令合并文件 提供一键合并脚本me

2025-06-04 14:23:06 256

原创 【android bluetooth 协议分析 25】【controller 相关 1】【固件 Golden Range 参数】

蓝牙Golden Range参数解析 Golden Range是蓝牙芯片的关键射频参数,用于定义理想的RSSI信号强度范围(如-70dBm至-30dBm)。其主要功能包括评估链路质量、自动功率控制(通过LMP协议调整发射功率)以及触发纠错机制。在车载蓝牙等复杂场景中,调整该参数可优化连接稳定性(如解决音乐卡顿问题),但会因提高RSSI强度而增加设备功耗。该参数通常需通过固件或厂商工具配置,普通用户无法直接修改。合理设置Golden Range能有效平衡信号质量与能耗,是蓝牙认证测试(BQB)的重要指标之一。

2025-06-03 20:09:07 298

原创 【android bluetooth 案例分析 04】【Carplay 详解 3】【Carplay 连接之车机主动连手机】

本文分析了车机主动连接iPhone实现CarPlay的过程。首先回顾CarPlay连接流程的6个步骤,重点聚焦蓝牙相关的前3步:EIR广播识别、蓝牙连接和IAP2协议交互。在车机主动连接场景中,通过调用createRfcommSocketToServiceRecord函数创建指向手机IAP服务的蓝牙Socket,建立RFCOMM通道进行通信。文章详细解读了btsnoop日志中的SDP查询、RFCOMM通道建立过程,并与手机主动连接车机的场景进行对比,指出调用方与服务提供方的角色互换现象。最后说明IAP通信完

2025-05-31 19:59:06 1468 2

原创 【android bluetooth 案例分析 04】【Carplay 详解 2】【Carplay 连接之手机主动连车机】

本文详细分析了iPhone手机主动连接车机CarPlay的蓝牙通信过程。主要分为三个步骤:1)EIR广播识别,双方通过特定UUID(如2d8d2466-e14d-451c-88bc-7301abea291a)互相识别支持CarPlay的设备;2)蓝牙连接阶段,涉及SPP服务建立和无配对连接;3)IAP2协议交互,交换设备信息和认证令牌。文中通过代码示例展示了车机如何通过listenUsingRfcommWithServiceRecord方法创建SPP服务并监听连接,为后续Wi-Fi建链和CarPlay服务启

2025-05-31 18:25:24 1498 2

原创 【android bluetooth 协议分析 03】【蓝牙扫描详解 1】【扫描关键函数 btif_dm_search_devices_evt 分析】

本文分析了蓝牙协议栈中的关键函数btif_dm_search_devices_evt,该函数负责处理设备扫描阶段的核心事件。其主要职责包括:接收底层扫描结果事件(如新设备发现、扫描完成等)、解析设备基础信息(名称、RSSI、配对状态等)、封装数据并通知上层应用。文章详细阐述了该函数处理的三个关键事件类型:BTA_DM_INQ_RES_EVT(设备发现时触发,需解析EIR数据获取设备信息)、BTA_DM_INQ_CMPL_EVT(扫描结束事件)和BTA_DM_SEARCH_CANCEL_CMPL_EVT(取消

2025-05-31 15:27:05 707

原创 【android bluetooth 案例分析 04】【Carplay 详解 1】【CarPlay 在车机侧的蓝牙通信原理与角色划分详解】

本文详解CarPlay车机侧的蓝牙通信原理,主要分析了车机作为蓝牙Server和Client的双重角色划分。作为Server时,车机通过特定UUID(00000000-deca-fade-deca-deafdecacaff)监听iPhone连接请求;作为Client时则使用另一UUID(00000000-deca-fade-deca-deafdecacafe)。文章详细介绍了CarPlay涉及的四个关键UUID及其用途,包括设备识别、握手连接和数据传输等不同阶段的使用场景。还对比了两种Wi-Fi架构模式下蓝

2025-05-30 16:13:05 1251

原创 【android bluetooth 协议分析 02】【bluetooth hal 层详解 6】【bt_vendor_opcode_t 介绍】

bt_vendor_opcode_t是AOSP蓝牙供应商接口中定义的一组操作指令,用于协议栈(如Bluedroid)控制蓝牙芯片底层行为。主要功能包括:电源管理(BT_VND_OP_POWER_CTRL)、固件配置(BT_VND_OP_FW_CFG)、串口操作(BT_VND_OP_USERIAL_OPEN/CLOSE)、低功耗模式控制(BT_VND_OP_LPM_SET_MODE)以及音频状态处理(BT_VND_OP_SET_AUDIO_STATE)等。这些操作码通过vendor_call()接口调用,允许

2025-05-29 14:43:22 1134

原创 【android bluetooth 协议分析 02】【bluetooth hal 层详解 5】【高通蓝牙hal主要流程介绍-下】

本文主要分析了高通蓝牙HAL层中的固件下载流程,重点介绍了PatchDLManager的创建和使用过程。文章首先说明需要了解的四个核心问题:芯片电源控制、串口控制、固件下载和初始化流程。随后详细讲解了PatchDLManager对象的创建过程,包括LoadPatchMaptable函数加载补丁映射表,并对比了标准HCI与统一HCI的区别。 在PerformChipInit函数分析中,文章将其分解为五个关键步骤:获取芯片版本信息并匹配对应补丁路径、设置芯片波特率、下载TLV固件文件、切换LDO供电方式、获取芯

2025-05-27 21:41:28 1141

原创 【android bluetooth 协议分析 02】【bluetooth hal 层详解 4】【高通蓝牙hal主要流程介绍-中】

本文主要探讨了高通蓝牙HAL层中的关键流程,包括芯片电源控制、串口管理、固件下载及初始化流程。文章首先介绍了如何通过PowerManager类控制芯片电源,包括初始化电源管理器和设置电源状态。接着,详细描述了如何通过rfkill机制控制蓝牙设备的电源,包括获取rfkill文件描述符和通过rfkill节点控制电源。此外,文章还涉及了HciTransport的初始化、固件补丁管理器的创建以及固件下载的过程。最后,总结了整个初始化流程,包括芯片上电、HciTransport初始化和固件下载。本文适合对高通蓝牙HA

2025-05-23 17:50:19 1118

原创 【android bluetooth 协议分析 02】【bluetooth hal 层详解 3】【高通蓝牙hal主要流程介绍-上】

本文主要探讨了高通蓝牙HAL中的关键流程,包括芯片电源控制、串口控制、固件下载和初始化流程。文章首先回顾了bt.server如何触发HAL通信,详细描述了HciHal模块的Start函数,该函数通过向SM获取hal_1.0服务、调用hal的initialize接口并等待其完成来启动蓝牙服务。接着,文章深入分析了HAL侧的逻辑,包括服务的启动和注册过程,以及如何通过HIDL接口实现蓝牙服务的注册。此外,文章还提到了双蓝牙支持,通过编译控制生成不同的二进制文件以适应不同的蓝牙适配器。整体而言,本文为理解高通蓝牙

2025-05-21 21:47:11 1289

原创 【android bluetooth 协议分析 02】【bluetooth hal 层详解 2】【蓝牙hal层hidl_1.0和hidl_1.1层接口的区别是什么】

[email protected][email protected] 的扩展版本,两者均基于 Android 的 HIDL 架构,用于标准化蓝牙 HAL 接口。1.0 版本提供了基本的蓝牙操作接口,如初始化、发送 HCI 命令、ACL 和 SCO 数据传输等。1.1 版本在继承 1.0 的基础上,新增了对 ISO 数据传输的支持,包括 sendIsoData() 方法和 isoDataReceived() 回调,主要用于 LE Audio 和蓝牙音频

2025-05-21 11:10:05 708

原创 【android bluetooth 协议分析 01】【HCI 层介绍 9】【ReadLocalSupportedCommands命令介绍】

HCI_Read_Local_Supported_Commands 是 HCI 层中的关键查询命令,用于获取蓝牙控制器支持的所有 HCI 命令列表。该命令通过一个 64 字节的位图(Supported_Commands)表示每个命令的支持情况,每一位对应一个 HCI 命令。命令无参数,成功执行后会通过 HCI_Command_Complete 事件返回状态和支持的命令位图。位图中的每个字节和位对应具体的 HCI 命令,如 HCI_Inquiry、HCI_LE_Set_Advertise_Enable 等。在

2025-05-19 20:17:28 1427

原创 【android bluetooth 协议分析 01】【HCI 层介绍 8】【ReadLocalVersionInformation命令介绍】

HCI_Read_Local_Version_Information 命令用于读取本地蓝牙控制器的版本信息,包括 HCI 和 LMP 层的版本、厂商 ID 及子版本号。这些信息主要用于协议栈兼容性判断、厂商定制功能的启用以及调试定位问题。命令无需参数,执行成功后通过 HCI_Command_Complete 事件返回结果。返回参数包括状态、HCI 版本、LMP 版本、厂商 ID 和子版本号等。在 AOSP 中,这些信息用于判断功能支持、加载厂商特定补丁、调试分析以及日志记录。例如,Controller::i

2025-05-19 16:30:52 1181

原创 【android bluetooth 协议分析 01】【HCI 层介绍 7】【ReadLocalName命令介绍】

HCI_Read_Local_Name 是蓝牙主机控制器接口(HCI)中的一个命令,用于读取蓝牙控制器存储的本地设备名称(Local Name),即设备的蓝牙名称。该命令无需参数,直接发送后,控制器会返回一个 HCI_Command_Complete 事件,包含命令执行状态和设备名称。设备名称最多为248字节,通常用于蓝牙配对时显示设备身份。在实际应用中,如手机蓝牙配对时显示的设备名称,就是通过该命令获取的。此外,设备名称可以通过 HCI_Write_Local_Name 命令进行修改,并在扩展查询响应(E

2025-05-19 15:34:39 1114

原创 【android bluetooth 协议分析 01】【HCI 层介绍 6】【WriteLeHostSupport命令介绍】

HCI_Write_LE_Host_Support 是 Bluetooth Host 向 Controller 发送的指令,用于启用或禁用主机对 Bluetooth Low Energy(LE)的支持。该指令属于 HCI 命令集合,规范位于 Core Spec v5.x,Vol 2, Part E, Section 7.3.79。指令包含两个参数:LE_Supported_Host 用于设置主机是否支持 LE,Unused 为历史遗留字段,通常被忽略。指令执行后,Controller 会发送 HCI_Com

2025-05-18 18:02:23 958

原创 【android bluetooth 协议分析 01】【HCI 层介绍 5】【SetEventMask命令介绍】

HCI_Set_Event_Mask 命令用于主机设置控制器的事件掩码,以控制哪些事件需要通知主机,从而减少不必要的中断。事件掩码是一个 8 字节(64 位)的位掩码,每个位对应一个特定事件,设置为 1 表示启用该事件,设置为 0 则屏蔽。控制器会自动忽略不支持的事件或保留位。在 BLE 场景中,第 61 位(LE Meta Event)必须设置为 1,以确保所有 BLE 相关事件能够被启用。事件掩码的各位对应不同的事件类型,如连接完成、断开完成、加密状态变化等,用于在蓝牙通信中通知主机各种状态变化。

2025-05-18 17:39:23 724

原创 【android bluetooth 协议分析 01】【HCI 层介绍 4】【LeSetEventMask命令介绍】

HCI_LE_Set_Event_Mask 是蓝牙协议栈中主机控制接口(HCI)层的一个命令,属于低功耗(LE)控制指令集。该命令用于配置控制器向主机报告哪些LE事件,通过设置8字节的LE_Event_Mask参数,主机可以启用或禁用特定的事件类型。命令的Opcode为0x2001,参数总长度为8字节。通过该命令,主机可以灵活控制需要接收的LE事件,例如LE请求对等SCA完成、LE终止BIG完成、LE创建BIG完成等。这种机制有助于优化主机与控制器之间的通信效率,减少不必要的中断。

2025-05-18 17:07:29 1005

nRF52832 17.1.0 SDK

nRF52832 17.1.0 SDK

2025-06-26

ubuntu 下搭建 nrf52832 开发环境所需要的 软件包. md5sum : b61a6911bab6684f9721648740448926 nrf-52832-env-soft.7z

├── IK-52832DK-V2-TEST.hex ├── nrf52832_xxaa.hex ├── nrf5sdk153059ac345.zip └── nrfcommandlinetools1090linuxamd64.tar.gz

2025-06-25

jadx 可执行文件 压缩包

jadx 可执行文件 压缩包

2025-06-25

qemu 调试 linux 6.0.9 资源包

qemu 调试 linux 6.0.9 资源包 编译好的环境,直接可以解压调试

2025-04-03

qemu 调试 linux 6.0.9 源码没有编译版本

qemu 调试 linux 6.0.9 源码没有编译版本

2025-04-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除