⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb_serv.c

📁 此為philip 1362 USB DOS下的驅動程式包, 已經共測試並內含有說明文件
💻 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 + -