高通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数据包的函数库。

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

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

相关文章

【Node.js】fs与path模块的基础使用

文章目录 前言一、什么叫做模块二、fs模块2.1 fs模块是干什么的?2.2 fs模块的使用导入fs模块读取文件的内容写入文件内容处理路径问题path路径模块 总结 前言 在Node.js中,fs模块(文件系统模块)是一个重要的核心模块,…

【操作系统】调用硬盘并且实现MBR与Loader的过渡——实战篇

一.概述 有了上一篇文章:【操作系统】调用硬盘并且实现MBR与Loader的过渡——原理篇的理论支持,我们就可以开始代码实操了,接下来我们将优化MBR程序,使其从扇区中读取出loader加载器,并将其存放到内存处,将…

springboot(ssm环保网站 绿色环保宣传系统Java系统

springboot(ssm环保网站 绿色环保宣传系统Java系统 开发语言:Java 框架:springboot(可改ssm) vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7&#xff0…

C++ easyX小程序:画五角星

//本小程序通过调用easyX的moveto、lineto函数画出五角星编写了FiveStar函数&#xff0c;在调用这个函数时setbkcolor、setlinecolor、setfillcolor设置了背景、线及填充颜色&#xff0c;又调用floodfill函数对五角星进行颜色填充。 //代码及注释如下&#xff1a; #include<…

excel怎么设置密码?轻松保护您的工作表

在数字化时代&#xff0c;数据的安全性显得尤为重要。excel作为我们日常工作中广泛使用的办公软件&#xff0c;其中可能包含了大量的敏感数据。为了确保这些数据不被未授权的人访问&#xff0c;本文将为您详细介绍excel怎么设置密码&#xff0c;从而有效地保护您的数据安全。 方…

基于Redis的高可用分布式锁——RedLock

目录 RedLock简介 RedLock工作流程 获取锁 释放锁 RedLock简介 Redis作者提出来的高可用分布式锁由多个完全独立的Redis节点组成&#xff0c;注意是完全独立&#xff0c;而不是主从关系或者集群关系&#xff0c;并且一般是要求分开机器部署的利用分布式高可以系统中大多数存…

delphi fmxui 做的一些跨平台app

pascal语音显然已经没落&#xff0c;但delphi还在坚挺着&#xff0c;每年都会发布新版本&#xff0c; 主要是做跨平台应用。 如果你觉得qt qml 写android app 比较麻烦&#xff0c;那可以尝试delphi 12&#xff0c;可以用c builder 尝试 android&#xff0c;ios 开发 下面的…

【Spring连载】使用Spring Data访问Redis(一)----快速指南

【Spring连载】使用Spring Data访问Redis&#xff08;一&#xff09;----快速指南 一、导入依赖二、Hello World程序 一、导入依赖 在pom.xml文件加入如下依赖就可以下载到spring data redis的jar包了&#xff1a; <dependency><groupId>org.springframework.boot…

适用于 Windows 7/8/10/11电脑的 12 款顶级数据恢复软件

很多时候&#xff0c;我们在 Windows 7 /8/10/11下不小心按了删除键&#xff0c;从而丢失了硬盘或 USB 驱动器中的重要文件和数据。在某些情况下&#xff0c;病毒或软件错误可能会损坏您的硬盘&#xff0c;从而影响您的文件。在这种情况下&#xff0c;您迫切需要一款适用于 Win…

STM32——点灯

STM32——点灯 1.开发准备 开发环境:keil5&#xff0c;STM32CubeMX 开发语言:C语言 烧录工具:ST-Link 库函数:HAL库 2.点灯 常用的GPIO HAL库函数&#xff1a; //GPIO初始化 void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init); //调制电平 void H…

怎么创建docker镜像

创建Docker镜像可以通过以下几个步骤&#xff1a; 编写Dockerfile&#xff1a;Dockerfile是一个文本文件&#xff0c;定义了镜像的构建过程。在Dockerfile中&#xff0c;可以指定基础镜像、添加应用程序代码和依赖、设置环境变量、运行命令等。根据应用程序的需求&#xff0c;编…

Labview 图像处理系统设计

1. 总体主界面设计 前面板界面如下&#xff1a; 界面总共分为一个实时采集加拍照控制模块&#xff0c;两个图像显示模块&#xff08;实时图像显示和直方图显示&#xff09;以及三个图像处理模块 前面板中各模块具体功能及使用说明如下&#xff1a; 1.当实时按钮关闭时&#x…

mysql .ibd 文件过大清理方法

问题 有一个 info_track 表用来临时存储告警推送数据&#xff0c;逻辑处理完成后&#xff0c;会执行 Delete 语句删除对应的记录。 问题&#xff1a;项目现场运行了几个月后&#xff0c;发现磁盘空间莫名占用了过多的存储&#xff0c;> 100GB&#xff0c;且无法释放。 生…

javaScript遍历数组的一些方法

1&#xff0c;for循环 for循环是最基础并且是比较常用的一种 let arr[1,2,3,4,5]for(let i0;i<arr.length;i){//分别输出1,2,3,4,5console.log(arrarr[i])} 2&#xff0c;for...of循环 使用for...of循环可以遍历数组&#xff0c;并且直接获取里面的每个元素 let arr[1,2,…

向上调整向下调整算法

目录 AdjustUp向上调整 AdjustDown向下调整 AdjustUp向上调整 前提是&#xff1a;插入数据之后&#xff0c;除去插入的数据其他的数据还是为堆 应用&#xff1a;插入数据。 先插入一个10到数组的尾上&#xff0c;再进行向上调整算法&#xff0c;直到满足堆。 性质&#xff1…

【每日一题】YACS 473:栈的判断

这是上海计算机学会竞赛 P 473 P473 P473&#xff1a;栈的判断&#xff08; 2021 2021 2021年 8 8 8月月赛 丙组 T 4 T4 T4&#xff09;标签&#xff1a;栈题意&#xff1a;给定 n n n个数字&#xff0c;已知这些数字的入栈顺序为 1 , 2 , 3... , n 1,2,3...,n 1,2,3...,n&…

1.30贪心(简单)

目录 1.分发饼干 2. ​​​​​​​种花问题 3. 赢得比赛需要的最少训练时长 1.分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让…

基础算法(二)

一 高精度计算 int能表示范围为2^32&#xff0c;这看起来很大&#xff0c;但在大数据时代的如今&#xff0c;不说是int 哪怕是long long也是不够的&#xff0c;那么为了使用或计算这些超出或远超整形大小的数&#xff0c;我们这些数的计算方法称为高精度计算。 &#xff08;1)…

代码随想录 Leetcode113. 路径总和 II

题目&#xff1a; 代码(首刷看解析 2024年1月30日&#xff09;&#xff1a; class Solution { public:vector<int> temp;vector<vector<int>> res;void recursion(TreeNode* cur, int sum) {if (!cur->left && !cur->right && sum 0…

QT 打开项目时显示 “No valid settings file could be found” 错误信息

QT 打开项目时显示“No valid settings file could be found”的错误信息&#xff0c;这通常意味着找不到有效的设置文件。此时&#xff0c;可以尝试以下几种解决方案&#xff1a; 删除项目中的.user文件。这是QT自动生成的用户设置文件&#xff0c;有时候会因为某些原因导致文…