Android BLE HIDS Data ,从问询DB 到写入Android 节点的flow 之三

news2025/1/12 11:58:45

问题点5:Android BLE具体连接flow 并问询DB的API flow 之第二阶段问询;

表示第二阶段的log Start service discovery: srvc_idx =”在Android9没有,但在Android 8.0中有,所以后续截图基于Android8.0。

 -->执行API bta_gattc_start_disc_include_srvc

-->执行API bta_gattc_discover_procedure,入参是GATT_DISC_INC_SRVC

最终执行的API 和第一阶段一致,也是GATTC_Discover

-->执行GATTC_Discover,内部执行API gatt_act_discovery

此时使用的Opcode是“Read By Type Request”,

原生BT中的宏是:GATT_REQ_READ_BY_TYPE;

此时使用的Attribute ID 是GATT_UUID_INCLUDE_SERVICE(0x2802)

-->问询结果在API gatt_client_handle_server_rsp中返回,如果此服务中没有包含Include,则返回的 opcode0x01(原生BT中使用GATT_RSP_ERROR表示0x01);执行到“case GATT_RSP_ERROR”

-->执行API gatt_process_error_rsp

 -->执行gatt_proc_disc_error_rsp,最终执行到gatt_end_operation,进而触发

p_disc_cmpl_cb,使得实作API bta_gattc_disc_cmpl_cback被执行;

-->执行到bta_gattc_disc_cmpl_cback,此时的disc_typeGATT_DISC_INC_SRVC

 -->此时执行触发第二阶段的第二步,使用Read By Type Request+ Attribute Type :Characteristic Declaration”问询是否支援Characteristic

执行API bta_gattc_incl_srvc_disc_cmpl;

-->第二阶段的第二步启动API bta_gattc_start_disc_char

此API 也是使用GATTC_Discover,设置的op_subtype是GATT_DISC_CHAR

对应的opcode是:GATT_REQ_READ_BY_TYPE

对应的Attribute ID是:GATT_UUID_CHAR_DECLARE

 

-->问询结果在API gatt_client_handle_server_rsp中返回:

若当前Service不包含特征时,返回的是response0x01 (GATT_RSP_ERROR);

 若当前Service 包含特征(Characteristic), 返回的reponse

0x09(GATT_RSP_READ_BY_GRP_TYPE),

 

 -->当前假定有特征值,此次执行gatt_process_read_by_type_rsp

(问询Read By Group Type Request 和Read By Type Request)返回内容的处理API是同一个:gatt_process_read_by_type_rsp

因此第二阶段的第二步也是在API gatt_process_read_by_type_rsp内部,使用

gatt_act_discovery自动后续问询当前Service中的其他特征;

-->当第二阶段的第二步全部问询完成时,callback API bta_gattc_disc_cmpl_cback被执行,此时的disc_type是GATT_DISC_CHAR,因此执行API bta_gattc_char_disc_cmpl;

-->执行 API bta_gattc_char_disc_cmpl

(需注意的是:第二阶段可能还有第三步操作:通过“Find Information Request”进行问询Information)

-->通过执行API bta_gattc_start_disc_char_dscp进行第二阶段的第三步问询;

 -->执行API bta_gattc_discover_procedure,入参是GATT_DISC_CHAR_DSCPT

最终执行的API GATTC_Discover

此时对应的opcode:GATT_REQ_FIND_INFO(0x04)

此时对应的Attribute:没有;

 

-->第二阶段第三步的问询结果通过gatt_client_handle_server_rsp返回,此时对应的op_codeGATT_RSP_FIND_INFO(0x05),

-->执行API gatt_process_read_info_rsp

 需注意的是:虽然API gatt_process_read_info_rsp最后也执行了gatt_act_discovery用于触发后续同类型的自动问询,但如果handle值已经满,那么也将通过执行gatt_end_operation,触发callback API bta_gattc_disc_cmpl_cback;

-->执行bta_gattc_disc_cmpl_cback, 此时disc_type GATT_DISC_CHAR_DSCPT;

-->执行API bta_gattc_char_dscpt_disc_cmpl

 当同一服务内的特征全部完成完成时,此时执行else部分,执行API bta_gattc_explore_srvc

-->当前假定全部问询结束,触发log “no more services found”;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/19645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ORB-SLAM2 ---- Initializer::ReconstructH函数

目录 1.函数作用 2.函数解析 2.1 调用函数解析 2.2 Initializer::ReconstructH函数总体思路 2.2.1 代码 2.2.2 总体思路解析 3.Initializer::CheckRT 3.1 函数作用 3.2 构造函数 3.3 代码 3.4 流程解析 3.4.0 初始化参数 3.4.1 计算初始化两帧的投影矩阵 3.…

[计算机毕业设计]基于SM9的密钥交换方案的实现与应用

前言 📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

VMware虚拟机安装黑苹果步骤与常见问题,VMware16,MacOS12.01(Moterey)

资源准备: 链接:https://pan.baidu.com/s/1JFtpMVrULiky9l3SvCXX-w 提取码:c452 说明: 1.镜像版本10.14和12.01根据需要选择其一即可,10.14的后缀为cdr,12.01的后缀为ISO,这两种文件VMware都支…

排名前十的运动蓝牙耳机品牌,2022年值得推荐的运动耳机

现在越来越多人使用耳机了,无论是在公交上还是地铁上又或者在运动时,都能看见很多人使用耳机。大多数人群都喜欢在运动健身的时候佩戴着耳机听音乐,音乐能让我们释放压力,并且心情也能够得到愉悦,相比传统有线运动耳机…

抖店token的生成和刷新的实际开发笔记

目录 前言 一、获取token准备事宜 第1点,app_key的获取 第2点,获取method 第3点,获取grant_type 二、token的生成使用步骤 1.token的生成的代码逻辑 三、刷新token的准备事宜 1.refresh_token的获取 2.grant_type的获取 四、token的刷…

AIOT在数字化转型中的机遇和挑战

目录 引言 为什么 IOT 要结合 AI 数字化转型机遇 什么是企业数字化转型 AIOT 在数字化转型中的作用 面临的挑战 架构挑战 安全风险 安全挑战分析 常见安全问题 如何应对 产业赋能 问题分析 如何应对 算力建设 总结 引言 传统的安防市场已经逐渐接近业务成长天花…

一棵完全二叉树的第7层(根节点为第0层)有12个叶子节点,求整棵树最多有多少个节点和最少有多少个节点

答案 一棵完全二叉树的第7层(根节点为第0层)有12个叶子节点,求整棵树最多有487487487个节点和最少有139139139个节点。 完全二叉树 定义:一棵深度为kkk的有nnn个节点的二叉树,对树中的节点按从上至下、从左到右的顺序进行编号&am…

Python 对象保存优化机制

Python 为了减少开销与内存的使用而设置一些规则: * 1. 但凡是不可变对象, 在同一个代码块中的对象, 只要是值相同的对象, 就不会重复创建, 而是直接引用已经存在的对象.交互环境下: 不写在一行, 字符类型数据指向一个内存地址, 整型超出小整数则执指向不同的地址. 代码块缩进相…

Hexo搭建Github博客教程

CONTENTS1. 环境配置2. 本地博客搭建3. 部署至Github4. 博客主题设置1. 环境配置 (1)安装Git Bash:Windows安装配置Git教程(2022.11.18 Git2.38.1)。 (2)安装NodeJS:NodeJS的安装及…

基于51单片机的花样流水灯设计

资料编号:113 下面是相关功能视频演示: 113-基于51单片机的花样流水灯设计(源码仿真设计报告)功能讲解: 采用51单片机的IO控制多个LED灯,实现多种模式的流水灯,全套资料齐全:流水灯…

Aspose.OCR for Java Crack by Xacker

Aspose.OCR for Java 允许您从图像、屏幕截图、图像的特定区域中提取文本,并在任何支持 Java 的平台上从扫描文件创建可搜索的 PDF。凭借其强大且易于使用的 API,即使是复杂的 OCR 任务也只需不到 10 行代码。您无需使用公式和机器学习 - 该库将处理所有…

<C++>深度学习继承

目录 一、继承概念 二、继承的语法 2.1继承关系和访问限定符 2.2派生类继承基类后的成员权限 三、基类和派生类的对象赋值转换 四、继承中的作用域 五、派生类的默认成员函数 六、继承与友元 七、继承与静态成员 八、复杂的菱形继承及菱形虚拟继承 单继承&am…

CS下载、安装以及简单使用

Cobalt Strike4.0中文版下载 渗透利器CobaltStrike 4.0 免费汉化版(含原版补丁) 下载-脚本之家 (jb51.net)下载解压,有中文版本和原版 server:kali(自带Java环境) clinet:win10 这里直接把原版拖进kali运行不了&#x…

买卖股票的最好时机(一、二)

目录 买卖股票的最好时机(一) 动态规划解决 贪心思想解决 买卖股票的最好时机(二) 贪心思想解决 动态规划解决 买卖股票是经典的动态规划问题,在动态规划的学习与练习中,最令我煎熬的就是状态方程递推,经常出现状态定义好后&#xff0c…

【毕业设计】10-基于单片机的车站安检门/磁性霍尔传感器系统设计(原理图+源码+仿真工程+论文)

【毕业设计】10-基于单片机的车站安检门/磁性霍尔传感器系统设计(原理图源码仿真工程论文) 文章目录【毕业设计】10-基于单片机的车站安检门/磁性霍尔传感器系统设计(原理图源码仿真工程论文)资料下载链接任务书设计说明书摘要设计…

css的三种引入方式

目录 三种引入方式 1.行内样式 2.内部样式(内嵌式) 3.外部样式 3.1外链式 3.2导入式 引入方式的优先级 三种引入方式 1.行内样式 行内样式就是直接把css样式添加在HTML标签中,作为style样式的属性值 <!-- 行内/内嵌/嵌入式/内联样式 --><!-- 背景颜色 backgr…

动力节点索引优化解决方案学习笔记——查询优化

3.查询优化 创建一张测试表并插入数据&#xff1a; drop table if exists students; CREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT COMMENT "主键id",sname VARCHAR (24) COMMENT 学生姓名,age INT COMMENT 年龄,score INT COMMENT 分数,time TIMEST…

微服务与中间件系列——GateWay整合Swagger3增强Knife4j

微服务与中间件系列——GateWay整合Swagger3增强Knife4jGateWay整合Swagger3增强Knife4j&#xff08;easy模式&#xff09;目的服务端1.导入依赖2.编写配置类3.yaml配置GateWay网关1.文档枚举2.SwaggerProvider3.yaml配置结果增强版服务端1.增加配置参数类2.修改配置类3.修改ya…

Spring框架一文带你吃透IOC技术

本文目录 文章目录本文目录✨loC的技术实现✨实现步骤✨创建接口和实现类✨创建Spring的配置文件和声明bean✨创建spring容器对象✨spring容器创建对象的特点✨创建非自定义类的对象✨创建没有接口的类的对象✨获取容器中对象的信息loC&#xff0c;Inversion ofControl:控制反转…

肿瘤NGS测序行业背景介绍

肿瘤NGS测序行业背景介绍1、行业基本情况1.1 行业分类1.2 主管部门1.3 行业监管1.4 行业法规1.5 医保报销流程2、肿瘤基本介绍2.1 肿瘤基础概念2.2 癌症分期2.3 致癌风险2.4 肿瘤早期检测3、分子诊断在肿瘤早检的场景3.1 传统肿瘤早期检测方式3.2 分子诊断3.3 技术性能评价指标…