高通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 find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间

使用mvn deploy命令上传jar包的实现

《使用mvndeploy命令上传jar包的实现》本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学... 目录一、背景二、环境三、配置nexus上传账号四、执行deploy命令上传包1. 首先需要把本地仓中要

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Windows命令之tasklist命令用法详解(Windows查看进程)

《Windows命令之tasklist命令用法详解(Windows查看进程)》tasklist命令显示本地计算机或远程计算机上当前正在运行的进程列表,命令结合筛选器一起使用,可以按照我们的需求进行过滤... 目录命令帮助1、基本使用2、执行原理2.1、tasklist命令无法使用3、筛选器3.1、根据PID

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

linux打包解压命令方式

《linux打包解压命令方式》文章介绍了Linux系统中常用的打包和解压命令,包括tar和zip,使用tar命令可以创建和解压tar格式的归档文件,使用zip命令可以创建和解压zip格式的压缩文件,每... 目录Lijavascriptnux 打包和解压命令打包命令解压命令总结linux 打包和解压命令打

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

一文详解Java Condition的await和signal等待通知机制

《一文详解JavaCondition的await和signal等待通知机制》这篇文章主要为大家详细介绍了JavaCondition的await和signal等待通知机制的相关知识,文中的示例代码讲... 目录1. Condition的核心方法2. 使用场景与优势3. 使用流程与规范基本模板生产者-消费者示例

Redis的Zset类型及相关命令详细讲解

《Redis的Zset类型及相关命令详细讲解》:本文主要介绍Redis的Zset类型及相关命令的相关资料,有序集合Zset是一种Redis数据结构,它类似于集合Set,但每个元素都有一个关联的分数... 目录Zset简介ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZ