自定义博客皮肤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 的博客

学习和总结

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

原创 【WonderTrader源码详解】【写作大纲】

WonderTrader是一个基于C++的高性能量化交易框架,支持全市场品种交易,具备专业机构级架构和数十亿级实盘管理能力。该框架覆盖数据清洗、回测分析、实盘交易等全流程,通过wtpy应用层实现易用的一站式解决方案。最新0.9版本引入UFT引擎,系统延迟优化至175纳秒以内。文章将首先介绍Anaconda安装和WonderTrader编译等环境搭建步骤。

2025-08-13 21:19:21 607

原创 【车载 AOSP 蓝牙(bluedroid) 协议分析】【整体计划】

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

2025-03-27 14:37:10 4255 6

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【55】【Vol 3 Part G 总结篇:GATT 从 Attribute 表到服务框架的完整闭环】

文章摘要 本文是蓝牙核心规范GATT部分的总结篇,系统梳理了GATT架构的核心要素。GATT是基于ATT协议的服务框架,将Attribute表组织为Service、Characteristic和Descriptor的层级结构,并定义了数据发现、读写、订阅等操作流程。文章通过商场类比形象说明:ATT是货架系统,GATT是运营规则,L2CAP是道路,GAP是进店规则。核心要点包括:1)GATT本质是一张包含Handle、Type、Value和Permissions的Attribute表;2)采用Profile-

2026-07-22 19:00:44 304

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【54】【Appendix B Example Database Hash:Database Hash 是怎么】

本文详细解析了 Bluetooth Core Specification 中关于 GATT Database Hash 的计算方法。Database Hash 是用于标识 GATT 数据库结构指纹的 128 位哈希值,通过选择性包含关键结构属性(如服务声明、特征定义等),排除可变业务数据(如特征值),并按属性句柄升序拼接后,使用全零密钥的 AES-CMAC 算法生成。文章通过解读规范附录 B 的示例,具体说明了参与计算的字段选择规则(HTV/HT/No)、数据拼接方式和最终哈希生成流程,揭示了该机制如何平衡

2026-07-22 18:42:07 139

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【53】【Appendix A Example ATT Server Contents:用一个完整数据库例子串】

摘要 本文解析蓝牙核心规范Appendix A的示例ATT服务器内容,通过一张完整的GATT数据库表示例,将蓝牙协议中的Service、Characteristic、Descriptor等概念串联起来。关键点包括: ATT服务器本质是按属性句柄排序的数据库表,每行包含Handle、Type、Value三要素 示例展示了10个服务的布局,包括GAP/GATT服务、电池状态、温湿度等标准服务,以及厂商自定义服务 Service Declaration(0x2800/0x2801)标记服务起点,Character

2026-07-22 18:37:26 238

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【52】【SDP Interoperability Requirements:BR/EDR 下如何通过 SDP】

本文介绍了蓝牙核心规范中关于在BR/EDR模式下通过SDP(服务发现协议)公开GATT服务的要求。主要内容包括: 在BR/EDR模式下,设备需要通过SDP记录告知对方如何访问其GATT服务,包括入口PSM(协议/服务多路复用器)和GATT服务句柄范围。 关键要求: 必须包含ServiceClassIDList(使用GATT Service UUID) 必须包含ProtocolDescriptorList(指定L2CAP PSM:ATT为0x001F,EATT为0x0027) 必须提供GATT服务的起始和结束

2026-07-22 18:27:29 248

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【51】【Security Considerations:GATT 的认证、授权和加密要求】

GATT安全机制:按特性独立管控的访问控制 核心要点 细粒度控制:GATT采用基于单个特性的独立安全管控,而非整个服务统一控制 安全要素分离: 认证:验证客户端身份和权限等级 加密:确保通信链路安全 授权:执行具体操作权限检查 发现机制开放:服务/特性发现过程不受安全限制,保证基础功能可用性 灵活组合:同一服务内不同特性可配置不同安全要求(如只读/需认证/需授权) 错误处理规范:明确返回特定错误码(如0x05认证不足、0x0F加密不足等) 实现意义 这种设计实现了安全性与可用性的平衡: 保持核心发现功能的开

2026-07-22 18:24:05 334

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【50】【Defined GATT Service Overview:GATT 自己也有一个“系统管理服务” 】

文章摘要 GATT Service是蓝牙规范中定义的"系统管理服务",用于管理GATT数据库变更通知、客户端能力声明、数据库哈希校验和服务端能力声明。该服务包含4个核心特性:Service Changed(0x2A05)用于通知服务定义变化,Client Supported Features(0x2B29)声明客户端功能,Database Hash(0x2B2A)校验数据库变更,Server Supported Features(0x2B3A)声明服务端功能。每个GATT Server只能包含一个GATT

2026-07-20 20:20:32 11

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【49】【GAP Interoperability Requirements:GATT 的 ATT Bear 】

本文摘要(149字): 本文深入解析蓝牙核心规范v6.2中GATT与GAP的交互机制,重点阐述ATT载体建立流程。核心要点包括:1) GATT依赖GAP建立底层连接,BR/EDR与LE采用不同连接方式;2) BR/EDR下普通ATT载体使用PSM=ATT的通道建立流程,增强型ATT载体需预先确认对端支持;3) LE连接直接建立ATT载体,增强型无需额外检查;4) 断开连接后,若需发送通知/指示,服务端应尝试重连。文章通过交通规则类比(GAP管连接、L2CAP管通道、ATT管传输、GATT管业务),清晰呈现各

2026-07-20 20:19:51 68

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【48】【L2CAP Interoperability Requirements Overview:GATT 】

本文摘要:文章解析了蓝牙规范中GATT、ATT与L2CAP的关系,重点说明ATT bearer如何通过不同L2CAP通道传输数据。核心内容包括:1) ATT bearer是承载ATT PDU的逻辑通道,依托于L2CAP实现;2) 分为Unenhanced(BR/EDR使用面向连接通道,LE使用固定CID 0x0004通道)和Enhanced(基于信用流控模式)两种类型;3) 不同通道的MTU、并发能力和终止方式存在差异,如LE默认ATT_MTU为23,EATT最小64字节;4) 设备必须支持LE固定通道,可

2026-07-20 20:15:16 114

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【47】【Procedure Timeouts:GATT Procedure 超时后会发生什么】

本文摘要(147字): 蓝牙GATT规范4.14节定义了Procedure Timeouts机制,用于处理GATT操作超时问题。核心规则是:当底层ATT事务(包括Request/Response或Indication/Confirmation)超过30秒未完成时,该GATT过程视为失败,必须通知上层;此后当前ATT通道不可再用,新操作需切换至其他通道。这种设计通过交易超时机制防止无限等待,确保协议栈可靠性。特别指出Command和Notification不受此约束,因为它们本身无响应要求。多ATT通道场景下

2026-07-20 20:11:27 107

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【46】【GATT Procedure Mapping:GATT 操作如何映射到 ATT Opcode】

本文摘要: 本文解析了蓝牙核心规范中GATT操作与ATT协议代码的映射关系。主要内容包括: GATT是语义层业务逻辑(如发现服务、读写值),ATT是实际传输的PDU类型(如READ_BY_GROUP_TYPE_REQ) 两者关系: 一个GATT操作可能对应多个ATT代码 同一ATT代码可被多个GATT操作复用 需结合handle、属性类型等上下文才能完整理解语义 典型映射: 发现类操作使用READ_BY_GROUP_TYPE等 读写操作使用READ/WRITE系列代码 通知/指示使用HANDLE_VALUE

2026-07-20 20:07:54 381

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【45】【Characteristic Descriptors:Client 如何读写 Descriptor】

本文介绍了蓝牙GATT规范中Characteristic Descriptors的读写操作,主要内容包括: Descriptor的作用:作为Characteristic的附加信息(如名称、单位、配置开关等),与Value本体区分开。 四个核心操作过程: 短描述符读取(使用ATT_READ_REQ/RSP) 长描述符读取(使用ATT_READ_BLOB_REQ/RSP) 短描述符写入(使用ATT_WRITE_REQ/RSP) 长描述符写入(使用Prepare+Execute流程) 关键区分点:操作时使用的Ha

2026-07-20 19:59:02 252

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【44】【Characteristic Value Indication:Server 如何发送需要确认的 】

本文介绍了蓝牙规范中的 Characteristic Value Indication 机制,这是 Server 向 Client 发送需要确认的 Value 更新的方式。核心要点: Indication 是 Server 主动发送的"挂号信",Client 必须回复确认(ATT_HANDLE_VALUE_CFM)才能完成传输闭环。 与 Notification 的区别: Notification:单向推送,无需确认(类似普通快递) Indication:需要 Client 签收(类似挂号信) 技术细节:

2026-07-20 19:52:07 200

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【43】【Characteristic Value Notification:Server 如何主动通知 ..】

本文介绍了蓝牙GATT协议中的Characteristic Value Notification机制,主要内容包括: Notification是Server主动向Client推送Characteristic Value的机制,无需ATT层确认。 使用前需通过Client Characteristic Configuration Descriptor(CCCD)配置,设置Notification bit位开启功能。 支持两种通知方式: Single Notification:使用ATT_HANDLE_VALU

2026-07-20 19:42:01 515

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【42】【Characteristic Value Write Overview:Client 如何写入 Ch】

本文介绍了蓝牙规范中Client向Server写入Characteristic Value的五种方法。核心内容包括: 写入操作必须使用Characteristic Value Handle,而非Declaration Handle; 五种写入方式: Write Without Response:无响应写入,使用ATT_WRITE_CMD,适合高频低延迟场景; Signed Write Without Response:带签名无响应写入,用于未加密链路; Write Characteristic Value:

2026-07-20 19:34:43 584

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【41】【Characteristic Value Read Overview:Client 如何读取 ..】

蓝牙GATT特性值读取概述 本文解析蓝牙核心规范v6.2中GATT关于特性值读取的机制,主要涵盖五种读取方式: 基础读取:已知特性值句柄时使用ATT_READ_REQ/RSP UUID查询读取:未知句柄时通过特性UUID查询 长值读取:值超过MTU大小时采用分片机制 批量读取:同时获取多个已知句柄的特性值 变长批量读取:处理多个变长值的边界问题 核心区别在于客户端已知信息(句柄/UUID)、值长度及读取数量。所有读取操作都基于ATT协议,但根据场景选用不同PDU类型,如READ_BLOB_REQ用于分段读取

2026-07-20 19:28:23 400

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【四十】【Characteristic Descriptor Discovery:Client 如何找到 CC】

本文摘要(≤150字): 本文重点解析蓝牙GATT协议中的Characteristic Descriptor Discovery机制,该过程使Client能够发现Characteristic Value之后的所有描述符(Descriptors),包括CCCD(0x2902)、用户描述(0x2901)和呈现格式(0x2904)等。核心流程是通过ATT_FIND_INFORMATION_REQ请求,从Value Handle+1开始扫描至当前Characteristic结束句柄,获取各描述符的Handle和UU

2026-07-17 15:11:53 18

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【三十九】【Characteristic Discovery Overview:Client 如何找到 Ser】

BLE GATT特性发现机制解析:客户端如何定位服务中的特性 本文重点解析蓝牙核心规范中GATT层的特性发现流程。特性发现是客户端在确定服务范围后,进一步获取服务内特性的关键步骤,主要回答三个问题:特性属性(读/写/通知等权限)、特性值句柄和特性UUID。 核心要点: 特性发现通过扫描服务范围内的特性声明(0x2803类型)实现,返回三个关键信息:特性属性、特性值句柄和特性UUID。 包含两种方式:发现服务所有特性(Discover All)和按UUID查找特性(Discover by UUID)。 特性声

2026-07-17 15:08:58 87

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【三十八】【Relationship Discovery:Find Included Services 如何找】

服务引用关系发现:查找包含的服务 本文介绍了蓝牙GATT规范中Relationship Discovery的核心内容,重点关注如何发现服务之间的包含关系。关键点包括: 核心概念:Relationship Discovery用于发现服务间的包含关系,仅包含一个子过程"Find Included Services"。 实现方式:通过在指定服务范围内(handle range)查找类型为0x2802(Include)的属性声明来发现包含关系。 技术细节: 使用ATT_READ_BY_TYPE_REQ请求 响应包含

2026-07-17 15:05:19 69

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【三十七】【Primary Service Discovery Overview:Client 如何发现 Se】

本文介绍了蓝牙GATT协议中的Primary Service Discovery机制,这是GATT Client发现Server上可用服务的首要步骤。文章通过商场逛店的类比,解释了该机制的作用和流程。 核心要点包括: Primary Service Discovery用于Client发现Server上的Primary Service及其handle范围 提供两种发现方式:Discover All Primary Services(全量扫描)和Discover Primary Service by Servi

2026-07-17 15:02:38 63

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【三十六】【Server Configuration:Exchange MTU 为什么是 GATT 的第一步】

本文介绍了蓝牙核心规范中GATT(通用属性配置文件)的服务器配置功能,重点讲解了Exchange MTU子过程。Exchange MTU用于协商ATT协议数据单元(PDU)的最大传输尺寸(ATT_MTU),是GATT通信的首要步骤。通过客户端的请求(ATT_EXCHANGE_MTU_REQ)和服务器的响应(ATT_EXCHANGE_MTU_RSP),双方交换各自能接收的最大MTU值,最终取较小值作为通信的ATT_MTU。这一过程确保双方都能处理传输的数据包,避免因MTU不匹配导致的问题。文章还通过通俗类比解

2026-07-17 14:59:26 294

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【三十五】【GATT Feature Requirements Overview:Client 如何真正“操作】

GATT功能与操作流程概述 本文介绍了蓝牙核心规范中GATT(通用属性协议)第4章的核心内容,重点解析了GATT功能与操作流程的关系。主要内容包括: 功能概述 GATT第4章定义了11种功能特性,涵盖服务器配置、服务发现、特征操作等 每种功能通过特定流程实现,本质是对ATT协议数据单元(PDU)的使用 功能分类 发现类:主服务发现、关系发现、特征发现、特征描述符发现 访问类:特征值读写、描述符读写 推送类:通知(Notification)和指示(Indication) 配置类:服务器配置(MTU交换) 与第

2026-07-17 14:43:49 246

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【三十四】【Summary of GATT Profile Attribute Types:GATT 标准 A】

本文总结了蓝牙GATT规范中定义的标准属性类型(Attribute Types),主要包括两类: 结构声明类(0x2800-0x2803):用于定义服务框架,包括主服务声明(0x2800)、次服务声明(0x2801)、包含声明(0x2802)和特征声明(0x2803)。 特征描述符类(0x2900-0x2905):用于描述特征值的属性和配置,如客户端特征配置描述符CCCD(0x2902)、特性展示格式描述符(0x2904)等。 文章通过表格和流程图形象展示了这些属性类型在GATT数据库中的角色,并特别说明在

2026-07-17 14:39:32 192

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【三十三】【Characteristic Aggregate Format:聚合 Value 如何拆成多个格式】

文章摘要(149字) 本文解析蓝牙核心规范v6.2中GATT的Characteristic Aggregate Format(UUID 0x2905),该描述符用于定义聚合特征值的解析规则。当特征值包含多个子值(如温湿度复合数据)时,Aggregate Format通过提供一组指向Presentation Format的句柄列表(至少2个),明确各子值的格式、单位等解释方式。其核心作用是为客户端提供"数据分区图",确保能正确拆解复合数据。规范要求聚合格式必须位于特征值后,且列表顺序决定子值解析顺序,支持跨特

2026-07-17 14:36:33 236

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【三十二】【Characteristic Presentation Format:Value 如何显示、单位是】

摘要 本文介绍了蓝牙规范中的Characteristic Presentation Format描述符(UUID 0x2904),它定义了如何显示特征值的格式。该可选描述符包含5个字段:Format(数据格式)、Exponent(小数缩放)、Unit(单位)、Name Space(命名空间)和Description(描述)。它解决了特征值原始字节的显示问题,例如将"0x0100"解释为"25.6°C"而不是单纯数字256。规范要求该描述符必须位于特征值之后,且同一特征定义中有多个Presentation F

2026-07-17 14:33:48 205

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【三十一】【Server Characteristic Configuration:SCCD 如何控制】

SCCD:服务端广播控制描述符 SCCD(Server Characteristic Configuration Descriptor)是GATT协议中用于控制服务端广播特性的可选描述符,与CCCD形成互补机制。核心要点包括: 功能定位:SCCD决定是否将特性值包含在广播数据中(0x2903 UUID),类似"商场大屏"的公共广播开关,而CCCD是客户端的私有订阅。 配置规则: 2字节位域结构,当前仅定义bit0(Broadcast位) 需特性属性声明Broadcast支持(0x01)才可启用 广播使能状态

2026-07-17 14:24:37 320

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【三十】【Client Characteristic Configuration:CCCD 如何控制 Noti】

本文介绍了蓝牙规范中的Client Characteristic Configuration Descriptor(CCCD),它是控制客户端接收特征值通知(Notification)和指示(Indication)的关键描述符。CCCD的UUID为0x2902,是一个2字节的位字段,其中bit0控制Notification,bit1控制Indication。只有当特征的Properties中设置了Notify或Indicate时,才能启用对应的CCCD配置位。每个客户端都有自己独立的CCCD配置实例,已绑定

2026-07-16 15:48:42 95

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【二十九】【Characteristic User Description:给 Value 起一个人类能看懂的】

本文介绍了蓝牙规范中的Characteristic User Descriptor(UUID 0x2901),它是一种可选的描述符,用于为Characteristic Value提供人类可读的文本描述。主要内容包括: User Descriptor的作用是让调试工具和用户更容易理解Value的含义,如"Outside Temperature"比原始UUID更直观。 关键特性: 存储UTF-8格式字符串 可变长度 必须位于Characteristic Value之后 每个Characteristic只能有一个

2026-07-16 15:45:32 57

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【二十八】【Characteristic Extended Properties:Reliable Write】

文章摘要 本文深入解析了蓝牙规范中的Characteristic Extended Properties特性。作为Characteristic Value后的标准Descriptor(UUID=0x2900),它在主Properties字段(1字节)不足以表达全部特性时提供扩展说明。当主Properties中Extended Properties位(0x80)被设置时,此Descriptor必须存在。目前定义了两种扩展属性:Reliable Write(可靠写入)和Writable Auxiliaries(

2026-07-16 15:19:44 84

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【二十七】【Characteristic Descriptor Declarations:Value 后面的标】

本文介绍了蓝牙GATT规范中的Characteristic Descriptor Declarations概念,主要内容包括: Descriptor是跟在Characteristic Value Declaration后面的可选属性,用于描述或配置Value相关的信息 一个Characteristic可以有0个或多个Descriptor,顺序不重要 每个Descriptor由UUID标识,Client必须支持16-bit和128-bit UUID Descriptor类型包括:扩展属性、用户描述、客户端配置

2026-07-16 15:18:28 52

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【二十六】【Characteristic Value Declaration:Value 真正住在哪个 Att】

本文深入解析蓝牙规范中的特性值声明(Characteristic Value Declaration),指出它是真正存储特性值的属性(Attribute)。文章通过电池电量示例说明特性值声明必须紧跟在特性声明之后,包含特性UUID作为属性类型,特性值本体作为属性值,权限由上层配置文件或实现决定。核心结论强调特性值声明是数据存储的核心位置,所有特性定义都必须包含它,且读取/写入/通知等操作都围绕该属性展开。文中用流程图清晰展示了特性声明、特性值声明和描述符之间的关系,帮助理解蓝牙GATT服务中特性值的存储和访

2026-07-16 14:30:27 290

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【二十五】【Characteristic UUID:Value 的类型身份证】

摘要 本文深入解析蓝牙GATT规范中的Characteristic UUID概念。作为Characteristic Declaration的第三个字段,Characteristic UUID用于标识Characteristic Value的数据类型(如0x2A19表示电池电量),而非表示Declaration本身(0x2803)。关键点包括: Characteristic UUID位于Declaration的Attribute Value中,描述Value的类型 支持16位和128位两种UUID格式 与Ha

2026-07-16 11:45:05 158

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【二十四】【Characteristic Value Attribute Handle:为什么 Declar 】

本文重点解析了蓝牙规范中Characteristic Value Attribute Handle的作用与意义。核心要点包括: Characteristic Value Attribute Handle是Characteristic Declaration中的一个2字节字段,指向实际存储Characteristic Value的Attribute位置。 它相当于"商品在货架的编号",与Characteristic Declaration Handle(菜单)是不同的概念。 Client通过发现过程获取该Ha

2026-07-16 11:22:13 160

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【二十三】【Characteristic Properties:Read、Write、Notify、Indic】

本文解析了蓝牙GATT规范中Characteristic Properties字段的含义和作用。该字段是1字节的位域,位于Characteristic Declaration中,定义了Characteristic支持的操作类型,包括读、写、通知、指示等8种属性。关键点包括: Properties表示能力而非权限,多个属性可同时设置 通知/指示需要CCCD,广播需要SCCD,扩展属性需额外描述符 与权限、安全要求和运行时配置区分开来 通过位掩码组合,如0x12表示同时支持读和通知 实际能否操作还受其他因素限制

2026-07-16 10:36:20 172

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【二十二】【Characteristic Definition:Characteristic 在 Attrib】

本文主要介绍了蓝牙核心规范中GATT的Characteristic定义在Attribute Database中的实现方式。核心内容包括: Characteristic定义的结构组成:必须包含Characteristic Declaration和Characteristic Value Declaration,可选包含Descriptor Declarations。 各部分的排列顺序:Characteristic Value必须紧跟在Declaration后面,Descriptors放在最后且顺序不限。 Ch

2026-07-16 10:20:02 233

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【二十一】【Include Definition:Include Declaration 】

| --------------------------------------------------------------------- | | Attribute Type | «Include» (UUID 0x2802) | | Attribute Value | 两个或三个字段:<br/>- Included Service Attribute Handle<br/>- End Group Handle<br/>- Service UUID (可选) | | Attribute Permiss

2026-07-16 10:02:30 148

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【二十】【Service Definition:Service 在 Attribute Database 中如】

蓝牙服务定义在属性数据库中的实现 本文解析蓝牙核心规范中服务定义在属性数据库中的具体实现方式: 服务定义结构 必须包含服务声明(Service Declaration) 可包含0或多个包含定义(Include Definitions) 可包含0或多个特征定义(Characteristic Definitions) 以服务声明开头,以下一个服务声明或最大属性句柄结束 服务声明要求 属性类型为«Primary Service»(0x2800)或«Secondary Service»(0x2801) 属性值为16

2026-07-14 15:28:32 242

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【十九】【Configured Broadcast:把 Characteristic Value 放进广播数据】

文章摘要 本文介绍了蓝牙规范中Configured Broadcast机制,它允许Client通过Server Characteristic Configuration Descriptor(SCCD)配置Server,将特定的Characteristic Value放入LE广播数据中。关键点包括: 仅支持LE物理链路,不支持BR/EDR Client通过设置SCCD的Broadcast bit来配置 广播数据以Service Data Advertising Data类型发送 相比连接方式更高效,适合广播

2026-07-14 14:16:32 360

原创 【Bluetooth-SIG】【CoreV6.2】【Vol3 Part G】【GATT】【十八】【Characteristic:Value、Properties、Descriptor 如何组成一个数】

摘要:GATT中的Characteristic结构解析 Characteristic是GATT服务中的核心数据项,它并非简单等同于一个值(Value),而是由Value、Properties和可选Descriptors组成的完整结构。Properties定义了访问方式(如Read/Write/Notify),Descriptors用于描述Value或配置相关行为。在属性数据库(Attribute Database)中,一个Characteristic通常对应多条Attribute,包括强制性的Charact

2026-07-13 20:09:50 27

ollama v0.20.3 part04

ollama v0.20.3 part04

2026-04-07

ollama v0.20.3 part03

ollama v0.20.3 part03

2026-04-07

ollama v0.20.3 part02

ollama v0.20.3 part02

2026-04-07

ollama v0.20.3 part01

ollama v0.20.3 part01

2026-04-07

mbt reset 可以测试 蓝牙芯片通路

adb push mbt /data adb shell cd data echo 0 > /sys/class/rfkill/rfkill0/state (对应的rfkill) echo 1 > /sys/class/rfkill/rfkill0/state chmod 777 mbt export MBT_TRANSPORT=/dev/ttyS1 (对应的uart口) ./mbt reset ./mbt download /vendor/firmware/quectel/BCM20703A1_001.001.005.0433.0981.hcd --minidriver3M

2026-04-03

qt 5.12.9 源码 编译 需要的可以下载

qt 5.12.9 源码

2025-11-08

qt5.12 ubuntu20.04 docker 环境

qt5.12 ubuntu20.04 docker 环境

2025-10-30

rk3128 docker 编译环境

rk3128 docker 编译环境

2025-10-26

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关注的人

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