FiRa Consortium UCI Generic Technical Specification | UCI协议讲解
什么是UCI协议
UCI协议是应用层与UWB子系统交互的规范。有了UCI协议,我们就能用简短的命令向UWB子系统发送指令,并且得到回复。
UCI架构
UCI核心的功能
UCI核心包括以下所需的核心功能
•通过UCI传输命令、响应和通知消息的数据包格式
•命令、响应和通知的定义用于主机和UWBS之间的不同操作
•用于命令/响应消息交换的流控制机制
•所有UCI消息的分段和重组
•UWBS的重置、初始化和配置
UCI控制包格式
通过这些控制包,我们就能向UWB子系统发送指令。
以下是UCI解析软件以及方便查看的电子文档
链接:https://pan.baidu.com/s/1wWlL2HRISIVoHGpmh0l2CQ?pwd=yc2e
提取码:yc2e
UWBS状态机
5.1状态DEVICE_State_READY
该状态是UWBS在通电后或从主机接收到CORE_DEVICE_RESET_CMD后的第一个状态。在这种状态下,UWBS可以接受所有UCI命令。一旦至少一个UWB会话移动到活动状态,即测距开始,UWBS应立即移动到DEVICE_STATE_ACTIVE设备状态。在DEVICE_STATE_READY设备状态下,UWBS可以进入低功率模式。当LOW_POWER_MODE配置被启用时,当UWBS进入低功率模式时,它是特定于实现的。在所有会话从活动状态移动到空闲状态后,UWBS应设置为DEVICE_STATE_READY设备状态。
5.2状态DEVICE_State_ACTIVE
如果至少有一个UWB会话处于session_STATE_ACTIVE会话状态,则UWBS可以从DEVICE_STATE_READY移动到DEVICE_TATE_ACTIVE设备状态。在这种状态下,UWBS可以接受UWB会话配置命令。如果没有活动的UWB会话,意味着没有UWB会话处于SESSION_STATE_IDLE会话状态,则UWBS应移至DEVICE_STATE_READY设备状态。当在发送会话状态通知之前激活第一个会话时,UWBS应设置为DEVICE_STATE_ACTIVE设备状态。
在这种状态下,UWBS应接受除核心控制命令外的所有命令,以下情况除外。
UWBS应在任何设备状态下接受CORE_DEVICE_RESET_CMD命令
5.3状态DEVICE_ERROR_State
如果遇到任何不可恢复的错误,UWBS可以移动到DEVICE_STATE_ERROR设备状态。如果UWBS未响应DEVICE_RESET_CMD命令,主机应发出DEVICE_ESET_CMD指令以重置UWBS,或者主机应执行UWBS的电源循环
UWB session状态机
上图展示了在某个状态接收到某个指令后的状态转变以及可能执行的操作。
UWB会话deinit时,意味着会话从子系统移除,相关的数据被清除
如果有host发送的指令导致session状态发生变化,那么uwbs应该发送SESSION_STATUS_NTF来通知会话状态发生改变,并且附带原因
UWB session初始化
host应该通过SESSION_INIT_CMD命令去创建一个新的uwb会话,之后uwbs应该返回rsp。
host应该在配置uwb会话之前等待NTF通知状态发生改变
如果没有初始化就使用会话,则STATUS_ERROR_SESSION_NOT_EXIST
如果已经初始化过,则STATUS_ERROR_SESSION_DUPLICATE