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

2024-02-01 08:36

本文主要是介绍高通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数据包的函数库。

这篇关于高通GAIA V3命令参考手册的研读学习(十三):GAIA通知的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/666700

相关文章

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.