Bluetooth Channel Sounding中关于CS Procedure的详细介绍

news2024/11/25 20:47:38

目录

BLE CS 过程定义:

BLE CS 过程的组成部分

开始一个BLE CS 过程

与BLE CS过程相关的参数设置



BLE CS 过程定义:

BLE 的CS特性包含一组LL层和空口协议的组合过程,该过程可以使得两个BLE 设备以紧密互锁的方式,在多个信道上交互RF信息(相位信息),这种交互过程被定义为BLE CS过程(Procedure)[Vol 1, Part A 9.1 Channel Sounding procedure]。

BLE CS 过程的组成部分

一个CS过程包含CS 事件(Event),子事件(Subevent)和步骤(Step)。

一个CS过程可以包含一个或者多个CS事件。而一个CS事件又可以包含一个或者多个子事件。在CS事件中又划分出子事件的主要目的一方面是为了避免在一个固定设备上占用较长的嵌入式物理资源,例如在子事件间隙BLE设备可以处理其他响应信息;另外一方面使得CS过程与需要硬件RF资源的其他技术可以共享共存。

一个CS子事件包含大于等于两个CS步骤。每个CS子事件的第一个CS步骤是为了该子事件后续步骤提供校准信息(主要是即时的频偏误差)。而每个CS步骤必须以T_FCS时间作为起始,该T_FCS时间主要用于两个BLE设备在规定的时间内完成跳频并稳定载波输出。

一个BLE CS过程中各个组成部分的层次机构如图1所示。

图 1 BLE CS过程中Procedure/Event/Subevent/Step层次结构图

开始一个BLE CS 过程

当BLE设备进入连接态,分别变为中心设备(Central role)和周边设备(Peripheral role)。而这两种设备都可以配置成CS过程中的Initiator设备或者reflector设备。BLE CS过程中Initiator还是reflector角色的设定,通过LE CS Create Config完成,具体参考Vol 4, Part E, 7.8.137 LE CS Create Config command。

此时中心或者周边设备都可以发起一个BLE CS 过程,仅需要任意设备在连接态发送LL_CS_REQ类型PDU。当然,前提条件是双方已经为BLE CS过程完成了相应的一些必要配置或者交互,例如已经完成CS Capability Exchange,CS Configuration,FAE table等,具体可以参考Vol 6, Part B 5.1.26 Channel Sounding Start procedure。

当BLE进入连接态后的Central设备,只要收到LL_CS_REQ或者LL_CS_RSP数据包,那么当该Central设备回复LL_CS_IND数据包后就直接进入BLE CS过程。并且当前BLE CS过程的第一个子事件的时间锚点(anchor point),就是包含LL_CS_IND数据包的连接事件。

与BLE CS过程相关的参数设置

BLE CS设备建立连接后,通过CS技术获得设备间的距离。标准中允许设备间运行多次CS过程,这样可以通过平均的方式获得跟高的定位进度,或者动态更新设备间的间距。

Bluetooth规范中,与BLE CS过程相关的用户可配置参数,主要是T_PROCEDURE_INTERVAL和N_PROCEDURE_COUNT,其中:

  1. T_PROCEDURE_INTERVAL:以包含LL_CS_IND数据包的连接事件作为锚点,规范BLE CS过程的间隔;需要注意的是BLE CS过程的间隔不是以绝对时间作为间隔,而是以连接间隔作为计数单位规范每个BLE CS 过程内拥有的连接间隔数量;
  2. N_PROCEDURE_COUNT:说明此次发起的BLE CS具体包含几次CS过程;
  3. Max_Procedure_Len: 说明了每个BLE CS过程的最大时间,也就是每次BLE CS过程的最大时间间隔;需要注意的是,该时间间隔不是每次BLE CS过程的实际运行时间长度。具体每次CS过程的具体运行时间长度,会在BLE CS过程中具体明确。

下图给出了T_PROCEDURE_INTERVAL=4和N_PROCEDURE_COUNT=4的时序图,每次BLE CS过程的时间长度,都需要小于设定的Max_Procedure_Len参数。

图 2 多次BLE CS过程示意

与BLE CS过程相关的三个参数,本地设备通过LE CS Set Procedure Parameters完成设置,然后通过LL_CS_REQ数据包对BLE CS双方设备完成约定。

本地设备通过LE CS Set Procedure Parameters设置具体BLE CS过程的参数如下图所示,其中包含Max_Procedure_Len,Min_Procedure_Interval,Max_Procedure_Interval和Max_Procedure_Count这四个参数。需要注意的是,BLE CS过程参数设置需要指定Config_ID,换句话说,BLE CS设备可以设定不同CS具体参数,并以Config_ID作为区分。实际BLE CS使用的具体哪个Config_ID的配置,可以在BLE CS使能时,具体明确Config_ID号即可。另外,上述参数仅代表当前用户希望实现BLE CS过程能够分配到的BLE CS过程间隔范围和BLE CS过程个数,实际当前Config_ID能够分配到的具体参数,由当前设备根据资源情况分配后确定。

图 3 LE CS Set Procedure Parameters中CS过程相关参数配置

当前BLE CS设备分配完成具体BLE CS过程相关参数后,通过LL_CS_REQ数据包完成BLE CS设备间的约定,如下图所示。

图 4 与BLE CS过程相关的参数约定

  1. Max_Procedure_Len:约定当前Config_ID下BLE CS过程最长占用时间,单位为625us,可以设置的时间范围为0.625ms~40.959375s;
  2. Procedure_Interval:约定当前Config_ID下BLE CS过程的间隔,以当前BLE CS双方连接态的连接间隔作为单位,可以设置的范围为0~65535。该参数对应图2中的T_PROCEDURE_INTERVAL。如果当前Config_ID下BLE CS过程仅运行一次,那么Procedure_Interval参数可以设置为0;
  3. Procedure_Count:约定当前Config_ID下BLE CS过程连续运行次数,可以设置的范围为0~65535。该参数对应图2中的N_PROCEDURE_COUNT。需要注意的是,如果该参数设置为0,那么当前Config_ID下的BLE CS过程将一直重复,直至BLE CS双方命令终止。

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

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

相关文章

Ubuntu 上安装 MySQL 并且实现远程登录

目录 1. 安装MySQL 2. 安全配置MySQL 3. 配置MySQL远程登录 3.1. 允许远程连接 3.2. 重启MySQL服务 3.3. 为用户分配远程访问权限 进入MySQL后,执行以下命令: 3.4. 创建新用户 3.5. 授予权限 3.6. 刷新权限 3.7. 退出 MySQL 控制台 4. 配置防火…

2024.9月29日~10月6日 SSM框架项目-《电信资费管理系统》

一、数据库介绍: 1、account:帐务信息表 2、admin_info:管理员信息表 3、admin_role:管理员角色信息表 4、cost:资费信息表 5、privilege_info:权限信息表 6、role_info:角色信息表 7、role_pri…

在CentOS7上安装mysql

目录 1.下载安装文件 2.上传到CentOS7上 3.解压MySQL文件 4.清理系统中残留的MySQL 5.安装MySQL 6.启动MySQL 并 设置开机自启动 7.查找临时密码,并修改密码 注意: 教程:在Linux上安装mysql(超详细版)_哔哩哔哩…

人工智能新闻和发展 (24001)- By 10/4/2024

1. 谷歌增强了搜索中的人工智能,允许对图像进行语音提问。 Google adding AI to answer voiced questions about images | AP NewsGoogle is pumping more artificial intelligence into its search engine. New features will enable people to voice questions a…

[C#]使用onnxruntime部署yolov11-onnx实例分割模型

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 在C#中使用ONNX Runtime部署YOLOv11-ONNX实例分割模型,涉及到模型的加载、数据预处理、模型推理和后处理几个关键步骤。 首先,需要确保已经安装了ONNX Runtime的NuGe…

【数据结构】【链表代码】随机链表的复制

/*** Definition for a Node.* struct Node {* int val;* struct Node *next;* struct Node *random;* };*/typedef struct Node Node; struct Node* copyRandomList(struct Node* head) {if(headNULL)return NULL;//1.拷贝结点,连接到原结点的后面Node…

[Linux] 进程创建、退出和等待

标题:[Linux] 进程创建、退出和等待 个人主页水墨不写bug (图片来源于AI) 目录 一、进程创建fork() 1) fork的返回值: 2)写时拷贝 ​编辑3)fork常规用法 4&#xff…

目标侦测划分数据集代码--->voc

代码如下: import glob import os import random import shutil # 划分比例 p3/4#训练集 xmlpathE:\\shujuji\\MASK\\Annotations\\* imgpathE:\\shujuji\\MASK\\JPEGImages\\* xmlpathsglob.glob(xmlpath) imgpathsglob.glob(imgpath) my_list[i for i in range(l…

MATLAB图像去雾系统

应用背景 现在工业发展迅速,产生的废气很严重,导致雾霾厉害,现在虽然有硬件来拍摄,可以清晰化视野,但是硬件成本昂贵,急需寻求一种算法来帮助雾霾的清晰处理。显得经济。 采用算法原理 本文采用全局直方…

走进异常类的世界,自定义业务异常类实现指南

接下来这篇文章,小编将带领大家走进异常类的世界,探索异常类的奥秘。 引言 学习Java异常类,需掌握其基础概念,如try-catch语句、throw与throws关键字。通过实例理解异常层次结构,区分已检查与未检查异常。实践编写自定…

springboot文件上传(阿里云oss)

本地存储 使用uuid是为了避免文件名的重复&#xff0c;防止覆盖 RestController public class FIleUploadController {PostMapping("/upload")public Result<String> upload(MultipartFile file) throws IOException {//把文件的内容存储到本地磁盘上String …

基于SpringBoot+Vue的在线投票系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

C++的STL标准模版库容器--list类

前言 list(双向链表)类属于STL标准模版库容器模块&#xff0c;它的迭代器是双向迭代器&#xff0c;也比较好理解&#xff0c;它申请空间不是一次申请一块空间而是每一个节点各自独立的空间&#xff0c;它不再能够支持随机访问和[]&#xff0c;如果想要和string类容器或者vecto…

集合源码1

一、List接口分析 1、list接口的特点 ①List集合的所有元素是由一种线性方式进行存储的。 ②它是一个元素存储有序的集合。即元素的存入顺序和取出顺序有保证。 ③他是一个带有索引的集合&#xff0c;通过索引就可以精确的操作集合中的元素 ④集合中可以有重复的元素&#xff0…

二分查找算法——寻找旋转排序数组中的最小值点名

1.题目解析 题目来源&#xff1a;LCR173.点名——力扣 原名&#xff1a;剑指offer——0~n-1中消失的数字 测试用例 题目来源&#xff1a;153.寻找旋转排序数组中的最小值——力扣 测试用例 2.算法原理 点名 如果要寻找消失的数字&#xff0c;可以判断对应下标的数字是否和下标对…

视觉定位Revisit Anything

Revisit Anything: Visual Place Recognition via Image Segment Retrieval 项目地址 摘要&#xff1a; 准确识别重游地点对于嵌入代理的定位和导航至关重要。这要求视觉表现清晰&#xff0c;尽管摄像机视点和场景外观有很大变化。现有的视觉地点识别管道对“整个”图像进行编码…

制作离线版Koczkatamas工具包

一、下载源码 从https://github.com/koczkatamas/koczkatamas.github.io下载koczkatamas.github.io-master.zip 二、解压 $ unzip koczkatamas.github.io-master.zip三、运行index.html 可以看到输入一个字符后&#xff0c;下面的各种编码都没有显示&#xff0c;则表示运行…

【玩转 JS 函数式编程_008】3.1.2 JavaScript 函数式编程筑基之:箭头函数——一种更流行的写法

文章目录 3.1.2 箭头函数——更流行的方式 Arrow functions - the modern way1. 返回值 Returning values2. this 值的处理 Handling the this value3. arguments 的处理 Working with arguments4. 单参数还是多参数&#xff1f; One argument or many? 写在前面 故天将降大任…

儿童需要学习C++多久才能参加信息学奥赛的CSP-J比赛?

信息学奥赛&#xff08;NOI&#xff09;是国内编程竞赛领域的顶尖赛事&#xff0c;而对于初学者来说&#xff0c;参加NOI的第一步通常是通过CSP-J&#xff08;全国青少年信息学奥林匹克联赛初赛&#xff09;&#xff0c;这也是面向青少年程序员的入门级竞赛。作为信息学奥赛的基…

vue3使用three.js加载.obj模型示例

vue3使用three.js加载.obj模型示例 效果&#xff1a; 代码&#xff1a; 需要先安装three.js npm install three<template><div ref"threeContainer" class"three-container"></div> </template><script> import * as TH…