设为首页 加入收藏

TOP

2.7 usb摄像头之usb摄像头描述符打印(二)
2019-09-01 23:08:45 】 浏览:67
Tags:2.7 usb 摄像头 描述 打印
c->bFunctionSubClass, 84 assoc_desc->bFunctionProtocol, 85 assoc_desc->iFunction); 86 87 for (j = 0; j < intf->num_altsetting; j++) 88 { 89 interface = &intf->altsetting[j].desc; //第j个设置的描述符 接口描述符 90 printk(" Interface Descriptor altsetting %d:\n" 91 " bLength %5u\n" 92 " bDescriptorType %5u\n" 93 " bInterfaceNumber %5u\n" 94 " bAlternateSetting %5u\n" 95 " bNumEndpoints %5u\n" 96 " bInterfaceClass %5u\n" 97 " bInterfaceSubClass %5u\n" 98 " bInterfaceProtocol %5u\n" 99 " iInterface %5u\n", 100 j, 101 interface->bLength, interface->bDescriptorType, interface->bInterfaceNumber, 102 interface->bAlternateSetting, interface->bNumEndpoints, interface->bInterfaceClass, 103 interface->bInterfaceSubClass, interface->bInterfaceProtocol, 104 interface->iInterface); 105 /* 打印端点描述符 */ 106 for (m = 0; m < interface->bNumEndpoints; m++) 107 { 108 endpoint = &intf->altsetting[j].endpoint[m].desc; 109 dump_endpoint(endpoint); 110 } 111 112 } 113        /*自定义描述符*/ 114 buffer = intf->cur_altsetting->extra; 115 buflen = intf->cur_altsetting->extralen; 116 printk("extra buffer of interface %d:\n", cnt-1); 117 k = 0; 118 desc_cnt = 0; 119 while (k < buflen) 120 { 121 desc_len = buffer[k]; 122 printk("extra desc %d: ", desc_cnt); 123 for (l = 0; l < desc_len; l++, k++) 124 { 125 printk("%02x ", buffer[k]); 126 } 127 desc_cnt++; 128 printk("\n"); 129 } 130         //模拟lsusb打印内核usb摄像头信息 131 interface = &intf->cur_altsetting->desc; 132 if ((buffer[1] == USB_DT_CS_INTERFACE) && (interface->bInterfaceSubClass == 1)) 133 { 134 parse_videocontrol_interface(intf, buffer, buflen); 135 } 136 if ((buffer[1] == USB_DT_CS_INTERFACE) && (interface->bInterfaceSubClass == 2)) 137 { 138 parse_videostreaming_interface(intf, buffer, buflen); 139 } 140 141 } 142 143 144 return 0; 145 }

分析:

1. VideoControl Interface的自定义描述符:

[318044.582155] extra buffer of interface 0:
[318044.582156] extra desc 0: 0d 24 01 00 01 4d 00 80 c3 c9 01 01 01 
[318044.582161] extra desc 1: 12 24 02 01 01 02 00 00 00 00 00 00 00 00 03 0e 00 00 
[318044.582166] extra desc 2: 09 24 03 02 01 01 00 04 00 
[318044.582170] extra desc 3: 0b 24 05 03 01 00 00 02 7f 14 00 
[318044.582174] extra desc 4: 1a 24 06 04 ad cc b1 c2 f6 ab b8 48 8e 37 32 d4 f3 a3 fe ec 08 01 03 01 3f 00 

解析:

extra buffer of interface 0:
extra desc 0: 0d 24   01  00 01 4d 00 80 c3 c9 01 01 01
                       VC_HEADER
extra desc 1: 12 24   02                 01 01 02 00 00 00 00 00 00 00 00 03 0e 00 00
                    VC_INPUT_TERMINAL  ID
extra desc 2: 09 24   03                 02 01 01          00             0
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇网络中的NAT模式 下一篇什么是TLB?

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目