usbredir-0.7内容详解(二)

usbredir-0.7内容详解(二)

usb_redir_interface_info

/*****************************************
usb_redir_header.type:    usb_redir_interface_info 
usb_redir_header.length:  sizeof(usb_redir_interface_info_header) 
usb_redir_header.id:      0 (always as this is an unsolicited packet) 
**************************************************/
struct usb_redir_interface_info_header { 
    uint32_t interface_count; //接口数量
    uint8_t interface[32]; //接口
    uint8_t interface_class[32]; //接口类
    uint8_t interface_subclass[32]; //子类
    uint8_t interface_protocol[32]; //接口协议
} 
/* usb-host发送这个消息包,告知usb-guest这个设备的接口.它包括接口数量,类和协议信息.这个信息将会在初始化链接成功set_config和set_alt_setting后才会被发送*/ 

usb_redir_ep_info

usb_redir_header.type:    usb_redir_ep_info 
usb_redir_header.length:  sizeof(usb_redir_ep_info_header) 
usb_redir_header.id:      0 (always as this is an unsolicited packet) 

enum { 
    /* Note these 4 match the usb spec! */ //四种匹配类型
    usb_redir_type_control, //控制
    usb_redir_type_iso, 
    usb_redir_type_bulk, 
    usb_redir_type_interrupt, //中断
    usb_redir_type_invalid = 255 
} 

struct usb_redir_ep_info_header { 
    uint8_t type[32]; 
    uint8_t interval[32]; 
    uint8_t interface[32]; 
    uint16_t max_packet_size[32]; 
    uint32_t max_streams[32]; 
} 
/*usb-host发送这个包,让usb-guest得知端点类型,分区,和接口,他包含所有可能的端点,先是0-15 out端点,再是0-15in 端点.这个包是在初始化链接成功set_config和set_alt_setting后才会被发送.
当双方(usb-host和usb-guest)都含有sb_redir_cap_ep_info_max_packet_size时仅仅会发送max_packet_size,如果不是这种情况,这个包的大小至少是64字节!
当双方都含有usb_redir_cap_bulk_streams时max_streams才会被发送,如果不是这种情况这个包至少长度为128字节!
注意在使用usb_redir_cap_bulk_streams 的时候必须要含有usb_redir_cap_ep_info_max_packet_size,缺少了usb_redir_cap_ep_info_max_packet_size是不合法的.
*/

usb_redir_set_configuration

usb_redir_header.type:    usb_redir_set_configuration 
usb_redir_header.length:  sizeof(usb_redir_set_configuration_header) 

struct usb_redir_set_configuration_header { 
    uint8_t configuration; 
} 
/*usb-guest发送这个包去设置或者改变usb-device的配置*/

usb_redir_get_configuration

usb_redir_header.type:    usb_redir_get_configuration 
usb_redir_header.length:  0 

/*usb-guest来发送它,今儿得到(查询)usb-device的主动配置*/

usb_redir_configuration_status

usb_redir_header.type:    usb_redir_configuration_status 
usb_redir_header.length:  sizeof(usb_redir_configuration_status_header) 

struct usb_redir_configuration_status_header { 
    uint8_t status; 
    uint8_t configuration; 
} 
/*这个包就是usb-host回应usb_redir_set_configuration和
usb_redir_get_configuration ,它包含状态码和陈宫的配置信息*/
/*注意:在usb_redir_set_configuration命令成功后,usbredir-host 必须首先发送一个usb_redir_ep_info包,其次在发送usb_redir_configuration_status之前发送usb_redir_interface_info,当开始使用新的配置时,来确保usb-guest含有新的信息*/

usb_redir_set_alt_setting

usb_redir_header.type:    usb_redir_set_alt_setting 
usb_redir_header.length:  sizeof(usb_redir_set_alt_setting_header) 

struct usb_redir_set_alt_setting_header { 
    uint8_t interface; 
    uint8_t alt; 
} 
/*usb-guest发送这个包,设置(修改)接口的alt_setting 由<interface> 到<alt>

usb_redir_get_alt_setting

usb_redir_header.type:    usb_redir_get_alt_setting 
usb_redir_header.length:  sizeof(usb_redir_get_alt_setting_header) 

struct usb_redir_get_alt_setting_header { 
    uint8_t interface; 
} 
/*usb-guest发送,来获取(查询)一个usb-device接口的主动alt_setting*/

usb_redir_alt_setting_status

usb_redir_header.type:    usb_redir_alt_setting_status 
usb_redir_header.length:  sizeof(usb_redir_alt_setting_status_header) 

struct usb_redir_alt_setting_status_header { 
    uint8_t status; 
    uint8_t interface; 
    uint8_t alt; 
} 
/*这个包是usb-host用来回应usb_redir_set_alt_setting 和
usb_redir_get_alt_setting ,他包含状态码,响应接口,和接口的alt_setting*/
/*注意:在usb_redir_set_alt_setting 命令成功后,usbredir-host 必须首先发送一个usb_redir_ep_info包,其次在发送usb_redir_alt_setting_status之前发送usb_redir_interface_info,当开始使用新的配置时,来确保usb-guest含有新的信息*/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值