Chinaunix首页 | 论坛 | 博客
  • 博客访问: 440442
  • 博文数量: 177
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-22 19:16
文章分类

全部博文(177)

文章存档

2017年(1)

2016年(12)

2015年(112)

2014年(52)

我的朋友

分类: LINUX

2015-03-25 20:06:50

原文地址:usb hub请求 作者:steven_miao

请求

谨以此文纪念过往的岁月

一.  前言

在前文中,我们看过hub的处理并没有对hub的请求命令做个详细的讲解,在本文中,我们会针对这些hub的请求来看hub的处理,也可以说是从另一个方面来看hub,主要是结合usb2.0协议来看。

二.  hub请求命令

1.      Get Hub Status

bRequest

wValue

wIndex

wLength

Data

10100000B

GET_ STATUS

0

0

4

Hub status and Change Status

struct usb_hub_status {

       __le16 wHubStatus;    --hub状态

       __le16 ;   --hub改变

} __attribute__ ((packed));

下面来说明这两个成员各个bit位的含义

该成员表明hub的电源状态

bit 0 : 该位表明hub的电源是依靠本地供电还是外部电源。0表明本地供电良好,1表明本地供电不良。

Bit1 : 该位表明是否有过流存在 0 表明无过流存在 1表明有过流存在。如果所有的端口电流总和超过了hub支持电流的最大值则会设置该位,同时所有的端口都将处于断电状态。

Bit2~bit15 : 保留

wHubChange

而该成员则用于表示电源状态是否改变

Bit 0 本地电源改变。0 本地电源状态没有改变 1 改变。其实该域的变化与否跟上面的wHubStatus的值息息相关,如果wHubStatusbit00->1或从1->0,那该位会设置。clear_feature时其对应的是C_HUB_LOCAL_POWER

Bit1 :过流状态是否改变。该bit的设定与上面相同。在clear_feature时其对应的是C_HUB_OVER_CURRENT

2.      Get Port Status

bRequestType

bRequest

wValue

wIndex

wLength

Data

10100011B

GET_ STATUS

0

Port

4

Port status and Change Status

struct usb_port_status {

       __le16 ;

       __le16 wPortChange;

} __attribute__ ((packed));

wPortStatus

Bit0:当前连接状态(PORT_CONNECTION) 0 无设备连接 1 有设备连接

Bit1:端口使能与否(PORT_ENABLE) 0 禁止端口 1 使能端口 该位仅能有usb系统软件设定。

Bit2:挂起(PORT_SUSPEND) 0 未挂起 1 挂起或恢复

Bit3:过流(PORT_OVER_CURRENT) 0 无过流 1 存在过流

Bit4:复位(PORT_RESET) 0 无复位信号 1 复位信号 如果主机想复位该端口连接的设备则设置该位,该位会一直保留设置直到hub不鸟复位信号。

Bit5~bit7:保留

Bit8:端口电源(PORT_POWER) 0 该端口处于断电 1 该端口供电正常

Bit9:连接设备为低速设备(PORT_LOW_SPEED) 0 全速或高速设备链接在该端口 1 该端口链接的设备为低速设备

Bit10:连接设备为高速设备(PORT_HIGH_SPEED) 0 全速设备连接在该端口 1 高速设备链接在该端口

Bit11:端口测试模式(PORT_TEST) 0 端口未处在端口测试模式 1 处于端口测试模式

Bit12:端口指示灯控制(PORT_INDICATOR) 0 端口指示灯为默认颜色 1 端口指示灯软件控制颜色

Bit13~bit15:保留

wPortChange

bit0:链接状态改变(C_PORT_CONNECTION) 0 没有改变 1 改变

bit1:端口禁止/使能改变(C_PORT_ENABLE) bit位会由于Port_Error条件导致端口禁止时设置1

bit2:挂起改变(C_PORT_SUSPEND) 0 没有改变 1 恢复结束

bit3:过流指示改变(C_PORT_OVER_CURRENT) 0 无过流 1 过流指示改变

bit4:复位改变(C_PORT_RESET) 0 无改变 1 复位结束

bit5~bit15:保留

 

 

阅读(1163) | 评论(0) | 转发(0) |
0

上一篇:usb message 处理

下一篇:Git中文手册

给主人留下些什么吧!~~