四联光电智能照明论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2362|回复: 0
打印 上一主题 下一主题

usb_control_msg()各参数详解

[复制链接]
  • TA的每日心情
    开心
    2018-11-9 08:52
  • 241

    主题

    691

    帖子

    7652

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    7652
    跳转到指定楼层
    楼主
    发表于 2016-11-21 09:49:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    原文地址:http://blog.csdn.net/aric_zc/article/details/7063488

    int usb_control_msg(usb_dev_handle *dev, int requesttype, int request, int value, int index, char *bytes, int size, int timeout)

    - RequestType:D7D6D5D4D3D2D1D0
         D7=0主机到设备, =1设备到主机;
         D6D5 =00标准请求命令, 01 类请求命令,10用户定义的命令,11保留值
         D4D3D2D1D0= 0表示接收者为设备,1表示接收者为接口,2表示接收者为端点,3表示接收者为其他,其他值保留

    - Request
        命令的序号(其实就是命令);所有的命令都是以不同编码值的方式传递给设备的,bRequest就表示USB命令的编码值。可以是USB标准命令,也可以用户自定义命令:

    - Value
        2个字节,高字节是msg的类型(1为输入,2为输出,3为特性);低字节为msg的ID(预设为0)


    - Index
        索引字段同样是2个字节,描述的是接口号

    - Size
        msg的长度。当命令不需要传输数据时,此字段设为0

    USB标准命令:
    --------------------------------------------------------------
    1.获取状态 Get Status (00H)
        A:[To Device]获取设备的状态:
       *.位0:自供电(0表示总线供电;1表示自供电).
       *.位1:远程唤醒(0表示不支持远程唤醒;1表示远程唤醒).
       *.位2~15:保留.
       *.一般选择总线供电,不支持远程唤醒,所以返回数据就是0x0000.
       B:[To Interface]获取接口的状态:
       *.接口状态的16位字节全部保留,所以返回数据就是0x0000.
       C:[To Endpoint]获取端点的状态:
       *.位0:Halt(0表示端点允许;1表示端点禁止).
       *.位1~15:保留(复位为0).
    2.清除特性 Clear Feature (01H)
       A:[To Device]清除设备的远程唤醒功能,并返回一个空包.
       B:[To Endpoint]解禁端点.
    3.设置特性 Set Feature (03H)
       A:[To Device]设置设备的远程唤醒功能,并返回一个空包.
       B:[To Endpoint]禁止端点.
    4.设置地址 Set Address (05H)
       A:设置设备地址.
    5.获取描述符 Get Descriptor (06H)
       A:[To Device]获取设备描述符:
       *.描述当前USB协议的版本号.设备端点0的FIFO大小.USB设备的ID号等.
       B:[To Configuration]获取配置描述符:
       *.描述USB设备接口个数及是否有自供电能力等.
       C:[To Interface]获取接口描述符:
       *.描述端点0以外的物理端点个数等信息.
       D:[To Endpoint]获取端点描述符:
       *.描述端点0各端点的传输类型和最大信息包大小和端点的传输方向(IN/OUT).
    6.设置描述符(可选,无法更新) Set Descriptor (07H)
    7.获取配置信息 Get Configuration (08H)
    8.设置配置 Set Configuration (09H)
    A:[To Configuration]设置配置描述符.
    B:[To Interface]设置接口描述符.
    C:[To Endpoint]设置端点描述符.
    9.获取接口信息 Get Interface (0AH)   
    10.设置接口 Set Interface (0BH)
    11.SYNCH_FRAME(0CH)
    用于设备设置和报告一个端点的同步帧.


    USB非标准命令,即VENDOR自定义的命令如:
    ------------------------------------------------------------------------------------------------------------------------------

    bRequest                 SEND_ENCAPSULATED_COMMAND  = 0x00 (defined by VENDOR, could beany value)
    bRequestType         0x21 (host2dev/用户定义的命令/接收者为端点)
    description               this requests sends a packet within a specific encapsulation protocol
    ------------------------------------------------------------------------------------------------------------------------------

    bRequest                 GET_ENCAPSULATED_RESPONSE = 0x01 (defined by VENDOR, could be any value)
    bRequestType         0xA1 (dev2host/用户定义的命令/接收者为端点)
    description              this request gets a packet within a specific encapsulation protoco
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Silian Lighting+ ( 蜀ICP备14004521号-1 )

    GMT+8, 2024-5-16 01:07 , Processed in 1.062500 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表