|  | 
 
 发表于 2005-9-12 18:30:54
|
显示全部楼层 
| 你看的停仔细的,这个程序大部分是zhaoic提供的,我主要是做移植的工作。 我认为:
 (1)  a3 00 00 00 02 00 04 00 是USBTEST程序里接收到那8个字节 SetupPkt ,但只是get status,除了get status,还有其他的标准的usb设备请求命令。在代码中有如下标准usb设备请求命令,主要通过SetupPkt[1]判断:
 U8 (*StdDevReq[])(U8 *SetupPkt) = {
 UsbGetStatus,
 UsbClrFeature,
 UsbReserved,
 UsbSetFeature,
 UsbReserved,
 UsbSetAddress,
 UsbGetDescriptor,
 UsbReserved,
 UsbGetConfiguration,
 UsbSetConfiguration,
 UsbGetInterface,
 UsbSetInterface,
 UsbReserved,
 UsbReserved,
 UsbReserved,
 UsbReserved
 };
 (2)SetupPkt [6]=0X04 表示设备(lumit4510)向主机回送字节数,
 在usbtest-bushound.txt 中,在get status的下一行四个数据就是的。
 例如:
 13.0  CTL    a3 00 00 00  GET STATUS               2.1.0(2)
 02 00 04 00                           2.1.4
 13.0  DI     01 01 01 00  ....                     2.2.0
 其中,DI     01 01 01 00 就是对get status的响应。
 (3)if(SetupPkt[6]!=2)
 return 1;
 我认为它表示不是标准的请求命令,见代码
 if(!StdDevReq[SetupPkt[1]&0xf](SetupPkt));
 return;
 至于为什么这样编程,我也不是很明白。
 可能实现这个程序的初衷并不是为实现点灯测试程序,而只是用点灯例子来验证这个程序中的部分功能吧?
 | 
 |