windows蓝牙驱动开发-蓝牙无线电重置和恢复

蓝牙无线电重置和恢复是 Windows 10 版本 1803 及更高版本中的一种技术,为蓝牙无线电引入了可靠的重置和恢复机制。 此机制使蓝牙无线电能够从导致故障、连接中断或对操作命令无响应的硬件故障中恢复。 目标是自动恢复无线电,使用户体验无缝,并降低需要系统重启的可能性。

蓝牙无线电重置和恢复可以使用或不具有固件依赖项来实现。 硬件合作伙伴可以扩展所有支持设备或固件级重置机制的 Windows 电脑上可用的基于软件的重置机制,以提高成功恢复的可能性。

蓝牙重置和恢复方案

启动重置和恢复时,有三大类问题:

  • 总线枚举失败:基础总线(通常为 USB 或 UART)的无线电失败枚举或重新枚举,如设备管理器中可见故障状态(黄色)指示,这可能是基础硬件错误的症状。

  • 驱动程序枚举失败:由底层总线成功枚举,蓝牙无线电处于失败状态。 为无线电构建驱动程序堆栈时,通常会发生此失败状态。 例如,在蓝牙无线电设备节点上安装筛选器或函数驱动程序时。 如果驱动程序在一个或多个启动操作期间遇到错误,并因此报告 PnP 失败,则可能出现失败。 此类操作的示例可能是固件下载到设备。

  • 非枚举失败: 设备未处于失败状态,但未按驱动程序堆栈确定的方式运行。 这些故障不在枚举路径之外,可能是一般的关键传输特定故障或特定于设备的故障,例如灾难性固件错误。 在这些情况下,使用以下蓝牙重置和恢复机制。

 重置和恢复机制

尽管有不同方法可从失败状态恢复,但蓝牙使用基于 ACPI 的标准化恢复机制尝试将无线电还原到正常工作状态。

GUID_DEVICE_RESET_INTERFACE_STANDARD 定义了两个重置级别。 重置机制仅适用于 内部设备 ,因此不支持外部可插入蓝牙无线电(如保护板)。 重置机制需要 Windows(通常是由功能驱动程序堆栈)和基础固件(通常在 ACPI BIOS 中)支持才能实际执行重置。 实际重置机制因系统而异。

  • 功能级设备重置 (FLDR):重置操作仅限于特定设备,对其他设备不可见。 没有重新枚举。 功能驱动程序必须假定硬件在操作后返回到其原始状态。 不会保留中间状态;
  • 平台级设备重置 (PLDR):重置操作会影响特定设备,以及通过同一电源轨或重置线路连接到此设备的其他所有设备。 重置操作会导致设备被报告为总线中缺少并重新枚举。 这种类型的重置对系统的影响最大,因为共享资源的所有设备都会返回到其原始状态;

若要支持 FLDR,必须在设备范围内定义 __RST 方法,如 ACPI 固件:函数级重置中详述。

若要支持 PLDR,必须在设备范围下定义 __RST 或 __PR3 方法,如 ACPI 固件:平台级重置中详述。 如果使用 PR3 方法,ACPI 将使用 D3Cold 电源周期机制重置。D3Cold 电源周期机制模拟从设备中删除电源,然后还原它。如果任何其他设备共享相同的电源轨,它们也会重置。如果an__RST方法由 _PRR (PowerResource)定义和引用,则使用该 PowerResource 的所有设备都会受到影响。

由于 PLDR 仅适用于内部设备,因此必须在 ACPI 中声明它。 对于 USB 设备,若要指定可以连接到集成设备的内部端口(对用户不可见),请将 UPC.PortIsConnectable 字节设为 0xFF,将 e__PLD.UserVisible 位设为 0。

如果将 _PR3 (D3Cold) 机制用于 PLDR,请确保 SystemWake 和 DeviceWake 等场景继续正常工作。 从名义上说,这意味着为 D2(例如 _PR2)定义了适当的电源资源。 下表可作为实用的指南:

电源状态ACPI 资源行为
D2_PR2此状态的类定义缩减功能所需的任何电源或时钟。
D3 热 (必需)_PR2与支持的下一个更高状态相同的资源(D2、D1 或 D0)。
D3Cold_PR3设备只需电源或时钟即可显示在其总线上,并响应特定于总线的命令。

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

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

相关文章

快速上手——.net封装使用DeekSeek-V3 模型

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,用爱发电,去丈量人心,是否能达到人机合一?开工大吉 新的一年就这么水灵灵的开始了,在这里,祝各位读者新春快乐,万事如意! 新年伊…

国产化创新 守护开放边界网络安全

当今数字化浪潮的席卷下,企业、医院、政府部门等各类机构的信息化建设正以前所未有的速度推进。 在这个数字化转型的关键时期,尤其是在涉及国家核心利益和敏感数据的领域,我们不仅要追求技术的先进性,更要确保安全性和自主可控性…

基于Java的在线购物系统的设计与实现

引言 课题背景 随着Internet国际互联网的发展,越来越多的企业开始建造自己的网站。基于Internet的信息服务,商务服务已经成为现代企业一项不可缺少的内容。很多企业都已不满足于建立一个简单的仅仅能够发布信息的静态网站。现代企业需要的是一个功能强…

cefsharp131升级132测试(WinForms.NETCore)

一、升级(Nuget) 版本说明(readme):最低.NET Core3.1 (NET5.0) Visual C 2019 Redist 二、试运行、兼容性测试 三、后记说明 支持H264版本推荐版本63,79,84,88,100,111,125(支持h264和pdf预览) 其他H264版…

C#中深度解析BinaryFormatter序列化生成的二进制文件

C#中深度解析BinaryFormatter序列化生成的二进制文件 BinaryFormatter序列化时,对象必须有 可序列化特性[Serializable] 一.新建窗体测试程序BinaryDeepAnalysisDemo,将默认的Form1重命名为FormBinaryDeepAnalysis 二.新建测试类Test Test.cs源程序如下: using System; us…

【实用教程】在 Android Studio 中连接 MuMu 模拟器

MuMu 模拟器是一个非常流行的安卓模拟器,特别适合开发人员进行应用测试,我使用它的根本原因在于Android Studio自带的AVM实现是太难用了,但是Mumu模拟器启动以后不会自动被Android Studio识别到,但是其他模拟器都是能够正常被Andr…

LLAMA-Factory安装教程(解决报错cannot allocate memory in static TLS block的问题)

步骤一: 下载基础镜像 # 配置docker DNS vi /etc/docker/daemon.json # daemon.json文件中 { "insecure-registries": ["https://swr.cn-east-317.qdrgznjszx.com"], "registry-mirrors": ["https://docker.mirrors.ustc.edu.c…

Ollama 部署 DeepSeek-R1 及Open-WebUI

Ollama 部署 DeepSeek-R1 及Open-WebUI 文章目录 Ollama 部署 DeepSeek-R1 及Open-WebUI〇、说明为什么使用本方案 一、 安装Ollama1、主要特点:2、安装3、验证 二、Ollama 部署 DeepSeek1、部署2、模型选用3、Ollama 常用命令4、Ollama模型默认存储路径 安装open-w…

基于微信小程序的医院预约挂号系统的设计与实现

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的在校大学生…

redis项目

短信登录 这一块我们会使用redis共享session来实现 商户查询缓存 通过本章节,我们会理解缓存击穿,缓存穿透,缓存雪崩等问题,让小伙伴的对于这些概念的理解不仅仅是停留在概念上,更是能在代码中看到对应的内容 优惠…

【嵌入式 Linux 音视频+ AI 实战项目】瑞芯微 Rockchip 系列 RK3588-基于深度学习的人脸门禁+ IPC 智能安防监控系统

前言 本文主要介绍我最近开发的一个个人实战项目,“基于深度学习的人脸门禁 IPC 智能安防监控系统”,全程满帧流畅运行。这个项目我目前全网搜了一圈,还没发现有相关类型的开源项目。这个项目只要稍微改进下,就可以变成市面上目前…

RabbitMQ 从入门到精通:从工作模式到集群部署实战(四)

#作者:闫乾苓 系列前几篇: 《RabbitMQ 从入门到精通:从工作模式到集群部署实战(一)》:link 《RabbitMQ 从入门到精通:从工作模式到集群部署实战(二)》: lin…

RabbitMQ 从入门到精通:从工作模式到集群部署实战(五)

#作者:闫乾苓 系列前几篇: 《RabbitMQ 从入门到精通:从工作模式到集群部署实战(一)》:link 《RabbitMQ 从入门到精通:从工作模式到集群部署实战(二)》: lin…

mysql 学习11 事务,事务简介,事务操作,事务四大特性,并发事务问题,事务隔离级别

一 事务简介, 数据库准备: create table account(id int auto_increment primary key comment 主键ID,name varchar(128) not null comment 姓名,backaccountnumber char(18) unique comment 银行账号,money float comment 余额 )comment 银行账号表;…

C语言的灵魂——指针(3)

前言:上期我们介绍了const修饰指针,saaert断言都是针对指针本身的,文章后面我们用指针与数组建立了联系,这种联系或者是关系就是这篇文章所要介绍的。上一篇文章的传送门:指针2 指针3 一,数组名的含义及理解…

企业FTP替代升级,实现传输大文件提升100倍!

随着信息技术的飞速发展,网络安全环境也变得越来越复杂。在这种背景下,传统的FTP(文件传输协议)已经很难满足现代企业对文件传输的需求了。FTP虽然用起来简单,但它的局限性和安全漏洞让它在面对高效、安全的数据交换时…

树和二叉树_7

树和二叉树_7 一、leetcode-102二、题解1.引库2.代码 一、leetcode-102 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 样例输入:root [3,9,20,null,nu…

2.8作业

作业 优化登录框: 当用户点击取消按钮,弹出问题对话框,询问是否要确定退出登录,并提供两个按钮,yes|No,如果用户点击的Yes,则关闭对话框,如果用户点击的No,则继续登录 当…

【WB 深度学习实验管理】使用 PyTorch Lightning 实现高效的图像分类实验跟踪

本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到,别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在机器学习项目中,实验跟踪和结果可视化是至关重要的环节。无论是调整超参数、优化模型架构,还是监…

人工智能入门 数学基础 线性代数 笔记

必备的数学知识是理解人工智能不可或缺的要素,今天的种种人工智能技术归根到底都建立在数学模型之上,而这些数学模型又都离不开线性代数(linear algebra)的理论框架。 线性代数的核心意义:世间万事万物都可以被抽象成某…