USB设备请求命令 :bmRequestType + bRequest + wValue + wIndex + wLength

编号 值  名称

(0) 0  GET_STATUS:用来返回特定接收者的状态
(1) 1  CLEAR_FEATURE:用来清除或禁止接收者的某些特性

(x) 2 为将来保留
(2) 3  SET_FEATURE:用来启用或激活命令接收者的某些特性

(x) 2 为将来保留
(3) 5  SET_ADDRESS:用来给设备分配地址
(4) 6  GET_DESCRIPTOR:用于主机获取设备的特定描述符
(5) 7  SET_DESCRIPTOR:修改设备中有关的描述符,或者增加新的描述符
(6) 8  GET_CONFIGURATION:用于主机获取设备当前设备的配置值(注同上面的不同)  
(7) 9  SET_CONFIGURATION:用于主机指示设备采用的要求的配置
(8) 10  GET_INTERFACE:用于获取当前某个接口描述符编号
(9) 11  SET_INTERFACE:用于主机要求设备用某个描述符来描述接口
(10)12 SYNCH_FRAME:用于设备设置和报告一个端点的同步帧

下表列出了标准设备请求:

下表为标准请求代码:

下表为描述符种类:

USB设备必须响应标准设备请求,不管设备是否被分配地址或者是否被配置。

设备特性选择符是在设置特性时候使用,如下表

如果有个未支持或未定义的对USB设备的请求,设备将在Data或Status阶段返回一个STALL。如果设备在SETUP阶段就发现一个错误,那么设备优先在Data或Stauts之前就返回一个STALL。非法请求不会使得设备HALT。如果因为某个原因,设备因为某个错误无法通过缺省控制管道来与主机通信,设备必须被reset来清除错误状态并重启缺省状态。

以下描述参考图9-3

1,Clear Feature。这个请求用来清除或使否某个指定的属性。

wValue必须根据接收者来选择特定的值。接收者是设备就用设备描述符,是接口就用接口描述符,是端口就用端口描述符。一个Clear Feature请求一个不能被清除或不存在的特性,或指的是一个不存在的接口或端口的时候,将返回一个Request Error。如果wLength不为0,则设备响应无定义。

缺省状态下,此时对请求的响应无定义。

地址状态下,此时对请求的响应有定义,但是不能是对接口或者端口的请求,只能是端口0,否则响应为Request Error。

配置状态下,此时对请求的响应有定义。

2,Get Configuration。这个请求用来得到当前设备的配置值。如果wValue,wIndex,wLength不是默认值,那么设备响应无定义。

缺省状态下,设备响应无定义。

地址状态下,返回0值。

配置状态下,非0的bConfiguration值被返回。

3,Get Descriptor。这个请求返回存在的描述符。wValue中高位给出描述符种类,低位给出描述符索引。描述索引符用来给出特定的描述符。wIndex给出0或者Language ID。wLength给出要返回的byte数目。如果描述表长度大于wLegnth,那么只有描述表的初始部分被返回;否则发送一个短包来描述中断传输的完成。在3种状态下,请求都是合法的。

4,Get Interface。这个请求返回选定接口的可选配置。有些USB有接口间互斥设置的配置。这个请求使得主机决定设置。wValue和wLength不是默认数值,设备响应无定义。如果所指的借口不存在,就会返回请求错误。

缺省状态下,此时设备对此请求响应无定义。

地址状态下,设备返回请求错误。

配置状态下,请求合法。

5,Get Status。这个请求返回选定接收者的状态。bmRequestType中的Recipient位指明接收者。返回值是指定接收者的状态。如果wValue和wLength不是默认值或者wIndex在取状态时,设备响应无定义。

缺省状态下,设备响应无定义。

地址状态下,如果所指的是接口或者一个非0的端口,设备返回请求出错。

配置状态下,如果所指的接口或端口不存在,返回请求错误。

6,Set Address。这个请求为将来的设备存取设置设备地址。USB设备只有在status阶段后成功完成后才能改变设备地址。如果设备地址大于127,或者wIndex或者wLength非0,设备响应无定义。设备对SetAddress(0)无响应。

缺省状态下,如果地址值非0,那么设备进入地址态,否则仍位于缺省态。

地址状态下,如果新地址为0,那么设备进入缺省态,否则仍位于地址态。

配置状态下,设备对此请求的响应无定义。

7,Set Configuration。设置配置值。此请求设置设备配置值。wValue的低字节指出指定的配置。这个配置值必须为0或者和配置描述表中的一个配置相配。如果配置值为0,设备为地址状态。wValue的高字节保留。如果wIndex,wLength,wValue的高字节非0,那么设备对此请求响应未定义。

缺省状态下,对此请求响应未定义。

地址状态下,如果指定的配置值为0,那么设备仍然在地址态下。如果所指的配置和配置表中相符,那么就转到相应配置。否则返回请求错误。

配置状态下,如果指定的配置值为0,那么设备进入地址状态下。如果所指的配置和配置表中相符,那么就转到相应配置。否则返回请求错误。

8,Set Descriptor。 设置描述符。此请求可选,以用于添加或更新新的描述表。wValue的高字节指明描述符种类,低字节指明描述符索引。描述符索引用来给出正确的描述符。因为一个设备可以有不同的描述符。对于可以通过SetDescriptor()设定描述表的,其描述符索引一定为0。描述符索引的范围从0到描述符范围值减1。wIndex指出字符串描述符Language ID,对于其他描述符设置为0。wLength指明传输数据长度。设备支持的描述符有设备,配置和字符串这3种描述符。如果设备不支持该请求,返回一个请求错误。

缺省状态下,设备对请求响应无定义。

地址状态下,如果支持请求,则合法。

配置状态下,如果支持请求,则合法。

9,Set Feature。设置特性生效。

http://www.cnblogs.com/artechliu/archive/2011/06/20/1945137.html

USB设备请求命令详解的更多相关文章

  1. android adb 命令详解

    ADB (Android Debug Bridge)  是android SDK中的工具,需要先配置环境变量才能使用.起调试桥的作用,可以管理安卓设备.(也叫debug工具) ---------查看设 ...

  2. Android ADB命令教程二——ADB命令详解

    Android ADB命令教程二——ADB命令详解 转载▼ 原文链接:http://www.tbk.ren/article/249.html       我们使用 adb -h 来看看,adb命令里面 ...

  3. kill 命令详解 系统信号

    kill  命令详解  系统信号 参考: 了解Linux的进程与线程 http://www.cnblogs.com/MYSQLZOUQI/p/4234005.html Linux就这个范儿 P532 ...

  4. adb调试命令详解-2016.02.01

    adb(Android Debug Bridge),调试桥可以让设备的调试监测过程在远端进行,而不必在运行实际运行应用的设备上,方便调试的输出. 1 命令详解 a 查看帮助信息         adb ...

  5. linux iostat命令详解 磁盘操作监控工具

    Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视. 它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况. ...

  6. xm 命令详解

    xm 命令详解 xm addlabel label dom configfile [policy] xm addlabel label res resource [policy] 增加了名称为labe ...

  7. Topas命令详解

    Topas命令详解 执行topas命令后如图所示: #topas 操作系统的最全面动态,而又查看方便的性能视图就是topas命令了,下面以topas输出为例,对AIX系统的性能监控做简要描述,供运维工 ...

  8. linux sar 命令详解(转载)

    linux sar 命令详解 2013-04-01 11:05 [小 大] 来源: 开源中国社区 评论: 0 分享至: 百度权重查询 词库网 网站监控 服务器监控 SEO监控 手机游戏 iPhone游 ...

  9. adb shell 命令详解,android

    http://www.miui.com/article-275-1.html http://noobjava.iteye.com/blog/1914348 adb shell 命令详解,android ...

随机推荐

  1. 贪吃蛇 javaScript 谷歌浏览器浏览

    1.代码:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  2. 揭开自然拼读法(Phonics)的神秘面纱

    揭开自然拼读法(Phonics)的神秘面纱 自然拼读法  (Phonics),是指看到一个单词,就可以根据英文字母在单词里的发音规律把这个单词读出来的一种方法.即从“字母发音-字母组合发音-单词-简单 ...

  3. gdb core调试

    原文链接 http://blog.163.com/lanka83/blog/static/32637615200801793020182/http://blog.csdn.net/taina2008/ ...

  4. DOS命令汇总

    汇总如下: Dos基础命令梳理思路 小编初来乍道, 不清楚我的插图在我发布后会不会不清晰, 因为我在排版时看到插入的图片是清晰的, 以前见其他条友发布的文章中总有不晰的图片, 很是不爽. 所以如果有不 ...

  5. css3 混合模式mix-blend-mode background-blend-mode 以及混合模式的隔断 isolation

    css 混合模式 mix-blend-mode: 让 元素内容 和 这个元素 以及 下面的元素 发生混合 background-blend-mode 背景的混合模式 可以是背景图片的混合也可以是背景图 ...

  6. 《StackGAN: Text to Photo-realistic Image Synthesis with Stacked GAN》论文笔记

    出处:arxiv 2016 尚未出版 Motivation 根据文字描述来合成相片级真实感的图片是一项极具挑战性的任务.现有的生成手段,往往只能合成大体的目标,而丢失了生动的细节信息.StackGAN ...

  7. VS2010打包回顾

    1.  在vs2010 选择“新建项目”à“ 其他项目类型”à“ Visual Studio Installerà “安装项目”: 命名为:Setup1 . 这是在VS2010中将有三个文件夹, 1. ...

  8. java笔记之IO3读操作

    * 字节输入流操作步骤: * A:创建字节输入流对象 * B:调用read()方法读取数据,并把数据显示在控制台 * C:释放资源 *  * 读取数据的方式: * A:int read():一次读取一 ...

  9. 阿里DNS 223.5.5.5 223.6.6.6 (转载)

    转自:http://it.oyksoft.com/post/6780/ 阿里DNS:   223.5.5.5       223.6.6.6 为何用它? 一.选择阿里DNS让你购物更爽,如果是淘宝狂人 ...

  10. 在Centos中yum安装和卸载软件的使用方法(转载)

    转自: http://gzmaster.blog.51cto.com/299556/72278 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. ...