|
发表于 2008-12-4 16:16:06
|
显示全部楼层
我按照协议看了看,有些地方还是有点糊涂,麻烦高手指点下,谢谢,看我下面理解的对否?
Get_Status(U8 *SetupPacket)
{
U8 temp;
//printf("\nGet Status Request\n");
if(SetupPacket[2]|SetupPacket[3]|SetupPacket[5]|SetupPacket[7])
return 1; //请求错误, 这句不太明白,请楼主帮忙解释下好么?怎么判断的呀?
//接收到setup packet,八个字节,但是我怎么看不出上面的逻辑关系,看者上面的好象有问题呀?
if(SetupPacket[6]!=2)
return 1; ////请求错误, 这句不太明白,请楼主帮忙解释下好么?
if(SetupPacket[0]==0x80) //if the first packet is 0x80, which indicate the bRequest is the
//GET_STATUS and the recipent is the epuipment
{
if(SetupPacket[4])
return 1; //if the windex is not the value that in the tab ,then the
//answer of the epuipment is not define
SetupPacket[0] = USB_Remote_Wake?1:0; //对设备的请求处理并配置包信息
SetupPacket[1] = 0;
}
else
if(SetupPacket[0]==0x81)//if the first packet is 0x81, which indicate the bRequest is the
//GET_STATUS and the recipent is the interface
{
if(SetupPacket[4])
return 1; //请求错误
SetupPacket[0] = 0;
SetupPacket[1] = 0; //发向接口的请求处理
}
else
if(SetupPacket[0]==0x82) //if the first packet is 0x82, which indicate the bRequest is the
//GET_STATUS and the recipent is the endpoint
{
temp=D12_Select_Endpoint((SetupPacket[4]*2)|((SetupPacket[4]&0x80)?1:0));
SetupPacket[1] = (temp&2)?1:0; //麻烦楼主帮忙解释下这句好么?
SetupPacket[0] = 0; //端点的请求处理
}
else
return 1; //请求错误
D12_Write_Endpoint(1, SetupPacket, 2);
return 0; //向端点写配置信息
}
本贴被 haihai 编辑过,最后修改时间:2008-12-04,16:22:43. |
|