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

news2025/1/12 8:46:26

问题点4Android BLE具体连接flow 并问询DB的API flow 之第一阶段问询

当前确认原生BT当作为GATT Client 连接上GATT Server时,在连接上后会有自动启动问询的动作(以下Tracing 基于Android 9(P), 测试 8.1的代码和Android 8.0有差异;部分log在Android9中出现,但部分又在8中出现,所以8.1算是一个过渡版本)

-->BlueDroid中,当BLE callback连接上时,触发的API bta_gattc_conn

 

 -->执行到API bta_gattc_start_discover

 -->执行启动第一阶段的第一包主服务问询动作,API 是:bta_gattc_discover_pri_service

对应Sniffe Log中的“Read By Group Type Request +Attribute Type: Primary Service”

这里确认其实第一包的原因是:可以看到其设置的起始Handle值是1,最大值是0xffff;

 

-->最终调用API GATTC_Discover, API内部调用API gatt_act_discovery

 

 -->执行API gatt_act_discoveryAPI内部此时填充opcodeattribute Type(UUID)

 

 -->因基于“问询-->收到回复-->启动下一次问询”形式,

因此当执行gatt_act_discovery后,收到Remote GATT Server回复时,API

gatt_client_handle_server_rsp被触发

因第一阶段问询使用的opcode是Read By Group Type Request

在原生中的表示是GATT_REQ_READ_BY_GRP_TYPE;

所以response的opcode是:GATT_RSP_READ_BY_GRP_TYPE

 -->执行API gatt_process_read_by_type_rsp,在此函数里面最终执行“p_disc_res_cb”和“p_disc_cmpl_cb(在API gatt_end_operation中执行)”,

/***********************************************************************************/

GATT clientBlueDroid中的callback通过API GATT_Register注册 bta_gattc_cl_cback实现;

 /***********************************************************************************/

最终callback bta_gattc_disc_res_cback bta_gattc_disc_cmpl_cback被触发;

此时问询得到的DB通过API bta_gattc_add_srvc_to_list写入到缓存中;

 AttentionAPI gatt_process_read_by_type_rsp不止发送response callback那么简单,其还负责同一阶段的自动后续问询:

 如当前Sample第一阶段,从Sniffer Log中可以看到其问询了4次,但Code显示其只提供执行第一包问询的API bta_gattc_start_discover后续3次的自动执行都是由

gatt_process_read_by_type_rsp中的API gatt_act_discovery完成;

小结:第一阶段问询,对应的启动API 是bta_gattc_start_discover,启动后自动问询在gatt_process_read_by_type_rsp中进行,当最后问询结束触发的API是:

bta_gattc_disc_cmpl_cback;

---其结束时将触发第二阶段的问询动作:bta_gattc_explore_srvc

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

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

相关文章

Web大学生网页作业成品——抗击疫情网站设计与实现(HTML+CSS)实训素材

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 击疫情致敬逆行者感人类题材 | 致敬逆行者网页设计作品 | 大学生抗疫感动专题网页设计作业模板 | 等网站的设计与制作 | HTML期末大学生网页设计作业 …

第3阶段-运维线上实战-3.2企业级nginx使用

企业级nginx使用 nginx实现平滑升级 [rootlnmp nginx-1.16.0]# cd /usr/local/nginx/sbin/ [rootlnmp sbin]# ls nginx nginx.old [rootlnmp sbin]# ./nginx -v nginx version: nginx/1.16.0 [rootlnmp sbin]# ./nginx.old -v nginx version: nginx/1.14.2 [rootlnmp sbin]#操…

【Spring】Spring的AspectJ的AOP

Spring学习笔记(10)Spring的AspectJ的AOP 在Spring中使用AspectJ实现AOP AspectJ 是一个面向切面的框架, 它扩展了 Java 语言。 AspectJ 定义了 AOP 语法所以它有一个专门的编译器用来生成遵守 Java 字节编码规范的 Class 文件。AspectJ 是一个基于 Java 语言的 A…

[附源码]java毕业设计双学位在线考试系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

01-mysql基础

MySQL基础 今日目标: 完成MySQL的安装及登陆基本操作能通过SQL对数据库进行CRUD能通过SQL对表进行CRUD能通过SQL对数据进行CRUD 1,数据库相关概念 以前我们做系统,数据持久化的存储采用的是文件存储。存储到文件中可以达到系统关闭数据不会…

[附源码]SSM计算机毕业设计远程教育系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Springboot项目集成Swagger3.0

目录一,Swagger简介二,集成Swagger1,引依赖2,写配置3,配置说明3.1,暴露接口3.2,补充信息4,加注解注解说明三,测试一,Swagger简介 开发时经常会出现下面这种情…

【Redis从入门到进阶】第 1 讲:Redis的五大基本数据类型

本文已收录于专栏🍅《Redis从入门到进阶》🍅专栏前言 本专栏开启,目的在于帮助大家更好的掌握学习Redis,同时也是为了记录我自己学习Redis的过程,将会从基础的数据类型开始记录,直到一些更多的应用&#xf…

《十八》JS 中的错误处理

error 对象: error 对象是当错误发生时提供错误信息的 JS 内置对象。 当错误发生时,浏览器会生成 error 对象并抛出,并且中断后面代码的执行。 console.log(person.name) console.log(不会被执行到)也可以通过 Error() 构造函数自定义 err…

使用Resnet网络对人脸图像分类识别出男女性别(包含数据集制作+训练+测试)

文章目录前言一、数据预处理1.分类数据存放2.生成train.txt与val.txt二、更改配置文件1.自定义修改三、定义resnet网络四、train.py训练五、预测predict.py实现六、预测结果七、完整项目代码数据集(大于1500张)总结前言 本打算昨天写这篇博客的,推迟到今天晚上。实…

章节3 配置CentOS

3.1-什么是虚拟机 什么是虚拟机? Virtual Machine,虚拟软件/平台虚拟出来的操作系统。 虚拟机/物理机 虚拟化技术 虚拟化软件:VMware Workstation、VirtualBox、Virtual PC、Citrix Xen Desktop、Parallels Desktop(MacOS&am…

刷题日记【第十五篇】-笔试必刷题【有假币+求正数数组的最小不可组成和+最难的问题+因子个数】

1.实例方法需要通过super来调用超类中的实例方法;实例方法需要通过类名称来调用超类的类方法;实例方法需要向下转型才能调用子类的实例方法;实例方法可以直接调用本类的实例方法。 2.HashSet子类依靠【hashCode();equals()】方法区分重复元素…

2.6 场效应管放大电路

一、场效应管放大电路的三种接法 场效应管的源极、栅极和漏极与晶体管的发射极、基极和集电极相对应,因此在组成放大电路时也有三种接法,即共源放大电路、共漏放大电路和共栅放大电路。以 NNN 沟道结型场效应管为例,三种接法的交流通路如图2…

Python 3.11 有什么新功能?

详细概述Python 3.11中最重要功能,包括如何安装 beta 版本以及何时可以获得官方稳定版本。 长按关注《Python学研大本营》,加入读者群,分享更多精彩 扫码关注《Python学研大本营》,加入读者群,分享更多精彩 Python在过…

【毕业设计】24-基于单片机的电子显示屏的设计与应用(原理图+源码+仿真工程+论文+答辩PPT)

【毕业设计】24-基于单片机的电子显示屏的设计与应用(原理图源码仿真工程论文答辩PPT) 文章目录资料下载链接任务书设计说明书摘要设计框架架构设计说明书及设计文件源码展示资料下载链接 资料下载链接 资料链接:https://www.cirmall.com/ci…

SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.13 ES 下载与安装

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇4 数据层解决方案4.13 ES 下载与安装4.13.1 下载4.13.2 安装4.13.3 使…

网页设计作业学生网页课程设计作业成品DIV+CSS-关于家乡的HTML网页设计

Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业,游景点介绍 | 旅游风景区 | 家乡介绍 | 等网站的设计与制作 | HTML期末大学生网页设计作业 HTML:结构 CSS:样式 在操作方面上运用了html5和cs…

卷积神经网络总结

卷积操作特征图大小计算 图中蓝色部分为55大小的输入卷积层的特征图,黄色部分 为33大小的卷积核,其内部黑色数字为卷积核权重参数,经过卷积操作以后得 到右侧绿色33大小的输出特征图。 如果使用input_N表示输入图像的大小,n表示参…

DJYOS驱动开发系列二:基于DJYOS的IIC驱动编写指导手册

1.概述 DJYOS的DjyBus总线模型为IIC、SPI之类的器件提供统一的访问接口,IICBUS模块是DjyBus模块的一个子模块,为IIC器件提供统一的编程接口,实现通信协议层与器件层的分离。也标准化了IIC总线和 Device驱动接口,本手册指导驱动工…

树与二叉树(二)

**🛀 ♡ ♢ ♤ ♧ ♣ ♦ ♥ ♠🛀** 💥**欢迎来到半之半的博客**,**这篇文章主要讲述数据结构中非常重要的一块内容, 即树与二叉树,相信大家学完必会加深自己的理解。💥****🕝我是半只…