📄 usb_serv.c
字号:
/*
//*************************************************************************
//
// P H I L I P S P R O P R I E T A R Y
//
// COPYRIGHT (c) 2000 BY PHILIPS SINGAPORE.
// -- ALL RIGHTS RESERVED --
//
// File Name: Usb_Serv.c
// Author: ZhenYu Zhang
// Created: Jun. 8, 2000
// Modified:
// Revision: 0.0
//
//*************************************************************************
// Notes:
//
//*************************************************************************
*/
#include <stdio.h>
#include <dos.h>
#include <string.h>
#include "BasicTyp.h"
#include "common.h"
#include "SysCnfg.h"
#include "hal4sys.h"
#include "hal4ISA.h"
#include "hal4Hc.h"
#include "PHC_Reg.h"
#include "USB100.h"
#include "PHC_HcS.h"
#include "USB_Serv.h"
/*
//*************************************************************************
// Public static data
//*************************************************************************
*/
extern UCHAR bVerboseHCS;
extern UCHAR bIRQL;
extern DATA_XFER HcS_UsbDataInStage;
/*
//*************************************************************************
// Private static data
//*************************************************************************
*/
void USB_StructDescriptorPrinter(UCHAR DescripType, PUCHAR ptr)
{
UCHAR i,j;
UCHAR bLength;
UCHAR bIF, bEndp;
// PUCHAR ptr;
// ptr = HcS_UsbDataInStage.Payload;
// bLength = ((PUSB_COMMON_DESCRIPTOR)ptr)->bLength;
switch(DescripType)
{
case USB_DEVICE_DESCRIPTOR_TYPE:
printf("UsbDevDescriptor.bLength=0x%x\n",((PUSB_DEVICE_DESCRIPTOR)ptr)->bLength) ;
printf("UsbDevDescriptor.bDescriptorType=0x%x\n",((PUSB_DEVICE_DESCRIPTOR)ptr)->bDescriptorType) ;
printf("UsbDevDescriptor.bcdUSB=0x%x\n",((PUSB_DEVICE_DESCRIPTOR)ptr)->bcdUSB) ;
printf("UsbDevDescriptor.bDeviceClass=0x%x\n",((PUSB_DEVICE_DESCRIPTOR)ptr)->bDeviceClass) ;
printf("UsbDevDescriptor.bDeviceSubClass=0x%x\n",((PUSB_DEVICE_DESCRIPTOR)ptr)->bDeviceSubClass) ;
printf("UsbDevDescriptor.bDeviceProtocol=0x%x\n",((PUSB_DEVICE_DESCRIPTOR)ptr)->bDeviceProtocol) ;
printf("UsbDevDescriptor.bMaxPacketSize0=0x%x\n",((PUSB_DEVICE_DESCRIPTOR)ptr)->bMaxPacketSize0) ;
printf("UsbDevDescriptor.idVendor=0x%x\n",((PUSB_DEVICE_DESCRIPTOR)ptr)->idVendor) ;
printf("UsbDevDescriptor.idProduct=0x%x\n",((PUSB_DEVICE_DESCRIPTOR)ptr)->idProduct) ;
printf("UsbDevDescriptor.bcdDevice=0x%x\n",((PUSB_DEVICE_DESCRIPTOR)ptr)->bcdDevice) ;
printf("UsbDevDescriptor.iManufacturer=0x%x\n",((PUSB_DEVICE_DESCRIPTOR)ptr)->iManufacturer) ;
printf("UsbDevDescriptor.iProduct=0x%x\n",((PUSB_DEVICE_DESCRIPTOR)ptr)->iProduct) ;
printf("UsbDevDescriptor.iSerialNumber=0x%x\n",((PUSB_DEVICE_DESCRIPTOR)ptr)->iSerialNumber) ;
printf("UsbDevDescriptor.bNumConfigurations=0x%x\n",((PUSB_DEVICE_DESCRIPTOR)ptr)->bNumConfigurations) ;
break;
case USB_CONFIGURATION_DESCRIPTOR_TYPE:
printf("UsbConfigDescriptor.bLength=0x%x\n",((PUSB_CONFIGURATION_DESCRIPTOR)ptr)->bLength) ;
printf("UsbConfigDescriptor.bDescriptorType=0x%x\n",((PUSB_CONFIGURATION_DESCRIPTOR)ptr)->bDescriptorType) ;
printf("UsbConfigDescriptor.wTotalLength=0x%x\n",((PUSB_CONFIGURATION_DESCRIPTOR)ptr)->wTotalLength) ;
printf("UsbConfigDescriptor.bNumInterfaces=0x%x\n",((PUSB_CONFIGURATION_DESCRIPTOR)ptr)->bNumInterfaces) ;
printf("UsbConfigDescriptor.bConfigurationValue=0x%x\n",((PUSB_CONFIGURATION_DESCRIPTOR)ptr)->bConfigurationValue) ;
printf("UsbConfigDescriptor.iConfiguration=0x%x\n",((PUSB_CONFIGURATION_DESCRIPTOR)ptr)->iConfiguration) ;
printf("UsbConfigDescriptor.bmAttributes=0x%x\n",((PUSB_CONFIGURATION_DESCRIPTOR)ptr)->bmAttributes) ;
printf("UsbConfigDescriptor.MaxPower=0x%x\n",((PUSB_CONFIGURATION_DESCRIPTOR)ptr)->MaxPower);
break;
case USB_INTERFACE_DESCRIPTOR_TYPE:
printf("UsbIFDescriptor.bLength=0x%x\n",((PUSB_INTERFACE_DESCRIPTOR)ptr)->bLength) ;
printf("UsbIFDescriptor.bDescriptorType=0x%x\n",((PUSB_INTERFACE_DESCRIPTOR)ptr)->bDescriptorType) ;
printf("UsbIFDescriptor.bInterfaceNumber=0x%x\n",((PUSB_INTERFACE_DESCRIPTOR)ptr)->bInterfaceNumber) ;
printf("UsbIFDescriptor.bAlternateSetting=0x%x\n",((PUSB_INTERFACE_DESCRIPTOR)ptr)->bAlternateSetting) ;
printf("UsbIFDescriptor.bNumEndpoints=0x%x\n",((PUSB_INTERFACE_DESCRIPTOR)ptr)->bNumEndpoints) ;
printf("UsbIFDescriptor.bInterfaceClass=0x%x\n",((PUSB_INTERFACE_DESCRIPTOR)ptr)->bInterfaceClass) ;
printf("UsbIFDescriptor.bInterfaceSubClass=0x%x\n",((PUSB_INTERFACE_DESCRIPTOR)ptr)->bInterfaceSubClass) ;
printf("UsbIFDescriptor.bInterfaceProtocol=0x%x\n",((PUSB_INTERFACE_DESCRIPTOR)ptr)->bInterfaceProtocol) ;
printf("UsbIFDescriptor.iInterface=0x%x\n",((PUSB_INTERFACE_DESCRIPTOR)ptr)->iInterface) ;
break;
case USB_ENDPOINT_DESCRIPTOR_TYPE:
printf("UsbEndpDescriptor.bLength=0x%x\n",((PUSB_ENDPOINT_DESCRIPTOR)ptr)->bLength) ;
printf("UsbEndpDescriptor.bDescriptorType=0x%x\n",((PUSB_ENDPOINT_DESCRIPTOR)ptr)->bDescriptorType) ;
printf("UsbEndpDescriptor.bEndpointAddress=0x%x\n",((PUSB_ENDPOINT_DESCRIPTOR)ptr)->bEndpointAddress) ;
printf("UsbEndpDescriptor.bmAttributes=0x%x\n",((PUSB_ENDPOINT_DESCRIPTOR)ptr)->bmAttributes) ;
printf("UsbEndpDescriptor.wMaxPacketSize=0x%x\n",((PUSB_ENDPOINT_DESCRIPTOR)ptr)->wMaxPacketSize) ;
printf("UsbEndpDescriptor.bInterval=0x%x\n",((PUSB_ENDPOINT_DESCRIPTOR)ptr)->bInterval) ;
break;
case USB_POWER_DESCRIPTOR_TYPE:
printf("UsbPowerDescriptor.bLength=0x%x\n",((PUSB_POWER_DESCRIPTOR)ptr)->bLength) ;
printf("UsbPowerDescriptor.bDescriptorType=0x%x\n",((PUSB_POWER_DESCRIPTOR)ptr)->bDescriptorType) ;
printf("UsbPowerDescriptor.bCapabilitiesFlags=0x%x\n",((PUSB_POWER_DESCRIPTOR)ptr)->bCapabilitiesFlags) ;
printf("UsbPowerDescriptor.EventNotification=0x%x\n",((PUSB_POWER_DESCRIPTOR)ptr)->EventNotification) ;
printf("UsbPowerDescriptor.D0PowerConsumption=0x%x\n",((PUSB_POWER_DESCRIPTOR)ptr)->D0PowerConsumption) ;
printf("UsbPowerDescriptor.D1LatencyTime=0x%x\n",((PUSB_POWER_DESCRIPTOR)ptr)->D1LatencyTime) ;
printf("UsbPowerDescriptor.D2LatencyTime=0x%x\n",((PUSB_POWER_DESCRIPTOR)ptr)->D2LatencyTime) ;
printf("UsbPowerDescriptor.D3LatencyTime=0x%x\n",((PUSB_POWER_DESCRIPTOR)ptr)->D3LatencyTime) ;
printf("UsbPowerDescriptor.PowerUnit=0x%x\n",((PUSB_POWER_DESCRIPTOR)ptr)->PowerUnit) ;
printf("UsbPowerDescriptorD1PowerConsumption.=0x%x\n",((PUSB_POWER_DESCRIPTOR)ptr)->D1PowerConsumption) ;
printf("UsbPowerDescriptorD2PowerConsumption.=0x%x\n",((PUSB_POWER_DESCRIPTOR)ptr)->D2PowerConsumption) ;
break;
case USB_OTG_DESCRIPTOR_TYPE:
printf("UsaOTGPDescriptor.bLength=0x%x\n",((PUSB_OTG_DESCRIPTOR)ptr)->bLength);
printf("UsbOTGDescriptor.bDescriptorType=0x%x\n",((PUSB_OTG_DESCRIPTOR)ptr)->bDescriptorType);
printf("UsbOTGDescriptor.bmAttribute=0x%x\n",((PUSB_OTG_DESCRIPTOR)ptr)->bmAttribute);
break;
case USB_STRING_DESCRIPTOR_TYPE:
default:
break;
}
if(bVerboseHCS == 1) {
Hal4Sys_Pause();
}
}
void USB_StringDescriptorPrinter(UCHAR DescripIndex)
{
PUCHAR ptr;
UCHAR i,j;
UCHAR bLength;
ptr = HcS_UsbDataInStage.Payload;
bLength = ((PUSB_COMMON_DESCRIPTOR)ptr)->bLength;
switch(DescripIndex)
{
case STR_INDEX_LANGUAGE:
// printf("UsbLangStrDescriptor.bLength=0x%x\n",((PUSB_STRING_LANGUAGE_DESCRIPTOR)ptr)->bLength) ;
// printf("UsbLangStrDescriptor.bDescriptorType=0x%x\n",((PUSB_STRING_LANGUAGE_DESCRIPTOR)ptr)->bDescriptorType) ;
ptr += sizeof(USB_COMMON_DESCRIPTOR);
for(i = 0; i < (bLength - 2)/sizeof(USHORT); i++ )
{
printf("UsbLangStrDescriptor.ulanguageID%d=0x%x\n",i, *((PUSHORT)ptr) ) ;
ptr += sizeof(USHORT);
}
break;
case STR_INDEX_MANUFACTURER:
case STR_INDEX_PRODUCT:
case STR_INDEX_SERIALNUMBER:
case STR_INDEX_CONFIGURATION:
case STR_INDEX_INTERFACE:
// printf("UsbStrDescriptor.bLength=0x%x\n",((PUSB_COMMON_DESCRIPTOR)ptr)->bLength) ;
// printf("UsbStrDescriptor.bDescriptorType=0x%x\n",((PUSB_COMMON_DESCRIPTOR)ptr)->bDescriptorType) ;
ptr += sizeof(USB_COMMON_DESCRIPTOR);
RaiseIRQL();
for(i = 0; i < (bLength - 2)/2; i++ )
{
cprintf("%c", *ptr) ;
ptr += sizeof(USHORT);
}
LowerIRQL();
printf("\n");
break;
default:
break;
}
if(bVerboseHCS == 1) {
Hal4Sys_Pause();
}
}
void USB_StructDescriptorPrnProcessor(UCHAR DescripType)
{
UCHAR bNumEndpoints;
UCHAR bNumInterfaces;
PUCHAR ptr;
UCHAR i,j;
ptr = HcS_UsbDataInStage.Payload;
switch(DescripType)
{
case USB_CONFIGURATION_DESCRIPTOR_TYPE:
printf("************ Single Configuration *****************\n");
USB_StructDescriptorPrinter(USB_CONFIGURATION_DESCRIPTOR_TYPE,ptr);
bNumInterfaces = ((PUSB_CONFIGURATION_DESCRIPTOR)ptr)->bNumInterfaces;
ptr += sizeof(USB_CONFIGURATION_DESCRIPTOR);
for(i = 0; i < bNumInterfaces; i++ )
{
printf("************ Interface -- %d *****************\n",i);
USB_StructDescriptorPrinter(USB_INTERFACE_DESCRIPTOR_TYPE,ptr);
bNumEndpoints = ((PUSB_INTERFACE_DESCRIPTOR)ptr)->bNumEndpoints;
ptr += sizeof(USB_INTERFACE_DESCRIPTOR);
for(j = 0; j < bNumEndpoints; j ++)
{
printf("************ Endpoint -- %d *****************\n",j);
USB_StructDescriptorPrinter(USB_ENDPOINT_DESCRIPTOR_TYPE,ptr);
ptr += sizeof(USB_ENDPOINT_DESCRIPTOR);
}
}
printf("************ OTG Capability *****************\n");
USB_StructDescriptorPrinter(USB_OTG_DESCRIPTOR_TYPE,ptr);
break;
case USB_INTERFACE_DESCRIPTOR_TYPE:
USB_StructDescriptorPrinter(USB_INTERFACE_DESCRIPTOR_TYPE,ptr);
bNumEndpoints = ((PUSB_INTERFACE_DESCRIPTOR)ptr)->bNumEndpoints;
ptr += sizeof(USB_INTERFACE_DESCRIPTOR);
for(i = 0; i < bNumEndpoints; i ++)
{
printf("************ Endpoint -- %d *****************\n");
USB_StructDescriptorPrinter(USB_ENDPOINT_DESCRIPTOR_TYPE,ptr);
ptr += sizeof(USB_ENDPOINT_DESCRIPTOR);
}
break;
case USB_DEVICE_DESCRIPTOR_TYPE:
USB_StructDescriptorPrinter(DescripType,ptr);
break;
case USB_ENDPOINT_DESCRIPTOR_TYPE:
USB_StructDescriptorPrinter(DescripType,ptr);
break;
case USB_POWER_DESCRIPTOR_TYPE:
USB_StructDescriptorPrinter(DescripType,ptr);
break;
case USB_OTG_DESCRIPTOR_TYPE:
USB_StructDescriptorPrinter(DescripType,ptr);
break;
case USB_STRING_DESCRIPTOR_TYPE:
default:
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -