高通GAIA V3命令参考手册的研读学习(十三):GAIA通知

如前文《高通GAIA V3命令参考手册的研读学习(四)》所述,PDU一共有四种,前面已经讲了命令、回应以及错误码,现在来看最后一种:通知。

4. QTIL GAIA通知

通知发送的方向,是由设备发送到移动应用。

这些通常是由设备发送到移动应用程序的状态变化。 

表4-1列出的事件以及对应的通知代码。

表4-1通知事件码

事件

代码

描述

低阈值

0 x01

每当接收信号强度指示达到或低于预设阈值时发生。可以设置一个或两个阈值。每个阈值表示为一个以分贝毫瓦为单位的信号电平的八位字节,以二的补码形式表示。

高阈值

0 x02

每当接收信号强度指示上升到或高于预设阈值时发生。可以设置一个或两个阈值。

每个阈值表示为一个以分贝毫瓦为单位的信号电平的八位元,以二的补码形式表示。

电池电量低阈值

0 x03

当测量到的电池电压降至或低于预设阈值时发生。可以设置一个或两个阈值。每一个

阈值用无符号的16位毫伏数表示。

电池高阈值

0 x04

当测量到的电池电压上升到或高于预设阈值时发生。可以设置一个或两个阈值。每一个

阈值用无符号的16位毫伏数表示。

PIO改变

0 x06

当高通®BlueCore™技术硬件的其中一个数字输入发生变化时发生,例如由于按钮被按下或来自设备其他组件的信号。PIO事件的解释取决于应用程序。

电池充电

0x08

当设备硬件检测到电池充电完成时发生。

充电器连接

0 x09

当设备硬件检测到电池充电器连接或断开时发生。

CapacitiveSensor更新

0 x0a

当设备上的一个电容传感器检测到变化时发生。

用户操作

0 x0b

当检测到用户操作(例如长按按钮)时发生。

语音识别

0 x0c

当语音识别引擎检测到输入时发生。

DFU状态

0 x10

当设备固件升级进程进入新状态时发生。

4.1  QTIL GAIA 示例交换

以下是使用通知的示例:

示例中的QTIL GAIA数据包以十六进制形式显示,用冒号分隔报头、有效负载和校验。

示例一:请求低电量通知

假如希望设备里的电池电压降至3.6 V和3.5 V时,能够通知主机。那么首先主机要先发一个如下的Register notification命令先在设备上注册好或者说设定好。

Ff 01 00 05 00 00 a 40 01 :03 0e 10 0d ac :

示例请求描述:

■  0xff:帧开始

■  0x01: QTIL GAIA协议版本1

■  0x00:表示无标志

■  0x05:有效载荷长度(5)

■  0x000a: Vendor ID (CSR)

■  0x4001: Command ID (Register Notification)

■  0x03:事件类型(Battery Low Threshold) (对应上面表4-1里列的事件代码)

■  0x0e10:电池电量(3600mv)

■  0x0dac:电池电量(3500mv)

设备在收到上述命令后,典型的回复是:

Ff 01 00 02 00 0a c0 01:00 03: 35

有载负载也就是两个冒号中的部分就表示:“Battery Low Threshold”事件(0x03)成功(0x00)。

这样设置以后,当设备测量到的电池电压等于或低于配置的阈值时,设备就会发送通知给主机。

图4-1电池阈值提示

设备周期性采样其电池电压,在t1时刻发送:

Ff 01 00 03 00 0a 40 03: 03 03 d f1:

这表明事件0x03(电池低阈值)已经在0x0df1 (3569 mV)级别发生。 主机在收到该通知后,应通过以下方式确认收到通知:

Ff 01 00 02 00 0a c0 03: 00 03:

当电压低于设定的阈值时,设备在t2、t3和t4时刻发送进一步的通知。

示例二:取消电量不足通知

如果设备一直发送低电通知也麻烦,主机也可以主动取消或者让设备停止发送通知。

主机发送的取消低电量通知:

Ff 01 00 01 00 00 a 40 02:03:

取消电池低阈值事件(0x03)的通知(0x4002)。

设备通过以下方式进行确认:

Ff 01 00 02 00 00 a c 00 02 00 03:

表示设备成功(0x00)取消事件0x03。

示例三:请求RSSI低阈值通知

要设置接收信号强度指示下降到- 50dbm的通知,主机发送,例如:

Ff 01 00 02 00 00 a 40 01:01 ce:

这请求0xce (-50 dBm)级别的事件0x01 (RSSI低阈值)通知。

设备用以下命令确认请求:

Ff 01 00 02 00 00 a c 00 01: 00 01;

如果RSSI稍后测量,发现RSSI已经低到-54 dBm处,则设备发送:

Ff 01 00 02 00 00 a 40 03: 01 ca:

这表明事件0x01 (RSSI低阈值)在0xca (-54 dBm)级别发生。

主机通过发送:

Ff 01 00 02 00 00 a c 00 03: 00 01

表示RSSI低阈值事件(0x01)已经被成功收到,处理成功(0x00)。

5  QTIL GAIA供应商扩展

QTIL GAIA包中的供应商Id字段允许添加新命令,而不会与现有或未来的QTIL定义的命令或其他供应商的命令冲突。(所以我们公司就根据这个规则,自定制了一些适应我们的APP功能的命令)

当设备接收到正确帧的QTIL GAIA数据包,该数据包具有供应商Id而不是QTIL的Id时,该数据包将被转发到设备上供应商自己的代码。 然后,供应商的代码应该对该命令进行操作,并以QTIL GAIA格式返回结果。

高通的软件开发工具包提供了编写供应商特定代码的工具,包括用于创建和交换适当框架的QTIL GAIA数据包的函数库。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CI/CD 管道安全:构建和部署之外的最佳实践

鉴于对快速创新和敏捷方法论采用的需求,持续集成/持续部署 (CI/CD) 管道已成为构建所有 DevOps 流程的基础。他们是高效交付的支柱。 事实上,根据持续交付状态报告,使用 CI/CD 工具与所有指标上更好的软件交付性能相关。 这些管道给组织带…

java代码中调用自定义函数

定义函数 CREATE DEFINERrootlocalhost FUNCTION test_fun1(num1 FLOAT,num2 FLOAT) RETURNS float BEGINDECLARE SUM FLOAT DEFAULT 0;SET SUMnum1num2;RETURN SUM; END <select id"cunchu" resultType"java.util.Map">SELECT test_fun1(1,2) as r…

MySQL索引原理以及SQL优化

案例 struct index_failure_t{int id;string name;int cid;int score;string phonenumber;}Map<int,index_failure>; 熟悉C的同学知道&#xff0c;上述案例中&#xff0c;我们map底层是一颗红黑树&#xff0c;一个节点存储了一对kv&#xff08;键值对&#xff09;&…

WPF应用程序(.Net Framework 4.8) 国际化

1、新建两个资源字典文件zh-CN.xaml和en-US.xaml&#xff0c;分别存储中文模板和英文模板 (1) zh-CN.xaml <ResourceDictionary xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml&q…

机器学习:Logistic回归(Python)

Logistic回归&#xff08;二分类&#xff09; logistic_regression_class2.py import numpy as np import matplotlib.pyplot as pltclass LogisticRegression:"""逻辑回归&#xff0c;采用梯度下降算法 正则化&#xff0c;交叉熵损失函数&#xff0c;实现二分…

机器学习 强化学习 深度学习的区别与联系

机器学习 强化学习 深度学习 机器学习 按道理来说&#xff0c; 这个领域&#xff08;机器学习&#xff09;应该叫做 统计学习 &#xff08;Statistical Learning&#xff09;&#xff0c;因为它的方法都是由概率统计领域拿来的。这些人中的领军人物很有商业头脑&#xff0c; 把…

[docker] 利用Dockerfile多级构建缩减镜像大小

一、nginx FROM centos:7 as build #基于centos7镜像 MAINTAINER nginx on centos7 by lxy-20240125 #注释信息 ADD nginx-1.24.0.tar.gz /opt/ #将nginx安装包传输到镜像中 RUN yum -y install pcre-devel zlib-devel gcc gcc-c make && \cd /opt/nginx-1.24.0 &…

什么是DDOS流量攻击,DDoS防护安全方案

随着互联网的发展普及&#xff0c;云计算成新趋势&#xff0c;人们对生活方式逐渐发生改变的同时&#xff0c;随之而来的网络安全威胁也日益严重&#xff01; 目前在网络安全方面&#xff0c;网络攻击是最主要的威胁之一&#xff0c;其中DDoS攻击是目前最为常见的网络攻击手段…

Android studio打包apk比较大

1.遇到的问题 在集成linphone打包时发现有118m&#xff0c;为什么如此之大额。用studio打开后发现都是c不同的pu架构。 2.解决办法 增加ndk配置&#xff0c;不选配置那么多的cpu结构&#xff0c;根据自己需要调整。 defaultConfig { applicationId "com.matt.linphoneca…

2023美赛A题之Lotka-Volterra【完整思路+代码】

这是2023年的成功&#xff0c;考虑到曾经付费用户的负责&#xff0c;2024年可以发出来了。去年我辅导队伍数量&#xff1a;15&#xff0c;获奖M为主&#xff0c;个别F&#xff0c;H&#xff0c;零S。言归正传&#xff0c;这里我开始分享去年的方案。由于时间久远&#xff0c;我…

FPGA——芯片手册学习(AD7606)

芯片手册学习&#xff08;AD7606&#xff09; 芯片封装图引脚功能图总结要操作的端口芯片时序 芯片封装图 引脚功能图 总结要操作的端口 6 PAR/SER/BYTE/ SEL :并行、串行、字节选择&#xff0c;我们使用并行&#xff0c;设置为0 7 STBY:睡眠控制&#xff0c;0电平睡眠 9 10 C…

8-小程序数据promise化、共享、分包、自定义tabbar

小程序API Promise化 wx.requet 官网入口 默认情况下&#xff0c;小程序官方异步API都是基于回调函数实现的 wx.request({method: , url: , data: {},header: {content-type: application/json // 默认值},success (res) {console.log(res.data)},fail () {},complete () { }…

银行数据仓库体系实践(14)--数据应用之内部报表及数据分析

在银行日常经营中&#xff0c;每个部门、分支行随时随地都需要进行数据统计和分析&#xff0c;才能对银行当前业务状况及时了解&#xff0c;以进行后续经营策略、营销活动、风险策略的调整和决策。那在平时进行数据分析时除了各数据应用系统&#xff08;如各类监管报表系统、财…

数据可视化 pycharts实现时间数据可视化

自用版 数据格式为&#xff1a; 运行效果为&#xff1a; from pyecharts import options as opts from pyecharts.charts import Polar, Page import csv filename "./hot-dog-places.csv" data_x [] data_y [] with open(filename) as f:reader csv.reade…

Android悬浮窗实现步骤详解

最近想做一个悬浮窗秒表的功能&#xff0c;所以看下悬浮窗具体的实现步骤 1、初识WindowManager 实现悬浮窗主要用到的是WindowManager SystemService(Context.WINDOW_SERVICE) public interface WindowManager extends ViewManager {... }WindowManager是接口类&#xff0c…

基于springboot招生管理系统源码和论文

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括招生管理系统的网络应用&#xff0c;在外国招生管理系统已经是很普遍的方式&#xff0c;不过国内的管理网站可能还处于起步阶段。招生管理系统具有招生公告信息管理功能的选择…

三款精选数字孪生产品大比拼

作为一名数据可视化领域的资深用户&#xff0c;我接触过众多数据可视化产品。本文将介绍三款备受关注的数据可视化工具&#xff0c;并对它们进行详细的比较。 首先&#xff0c;让我们了解一下数据可视化产品的核心价值。在信息爆炸的时代&#xff0c;数据可视化成为快速理解复…

Kubernetes k8s

Kubernetes k8s 一个开源的容器编排引擎&#xff0c;用来对容器化应用进行自动化部署、 扩缩和管理。 从架构设计层面&#xff0c;k8s能很好的解决可用性&#xff0c;伸缩性&#xff1b;从部署运维层面&#xff0c;服务部署&#xff0c;服务监控&#xff0c;应用扩容和故障处…

C++——特殊类

特殊类 文章目录 特殊类一、请设计一个类&#xff0c;不能被拷贝二、请设计一个类&#xff0c;只能在堆上创建对象方案一&#xff1a;析构函数私有化方案二&#xff1a;构造函数私有化 三、请设计一个类&#xff0c;只能在栈上创建对象四、请设计一个类&#xff0c;不能被继承五…

互联网加竞赛 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 毕业设计…