📄 ucls_hub.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: UCls_Hub.C
// Author: ZhenYu Zhang
// Created: Jun. 8, 2000
// Contact: hilbert.zhang@philips.com
// Modified:
// Revision: 0.0
//
//*************************************************************************
// Abstract:
// UsbClass: Printing Class
//
//*************************************************************************
*/
#include <stdio.h>
#include <string.h>
#include <dos.h>
#include <bios.h>
#include <io.h>
#include <fcntl.h>
#include <process.h>
#include <sys\stat.h>
#include "BasicTyp.h"
#include "common.h"
#include "SysCnfg.h"
#include "usb100.h"
#include "Hal4sys.h"
#include "Hal4ISA.h"
#include "Hal4IKit.h"
#include "Hal4Hc.h"
#include "PHC_HcS.h"
#include "USB100.h"
#include "UCls_Hub.h"
/*
//*************************************************************************
// Public static data
//*************************************************************************
*/
extern UCHAR bVerbose ;
extern UCHAR bIRQL ;
/***********************************************/
/* Funcs for UsbClass_Hub */
/***********************************************/
BOOLEAN UsbHubCls_ClearHubFeature(
UCHAR DevAddr,
UCHAR Speed,
UCHAR PktSize,
USHORT wFeatureSelector
)
{
// build up SetupStage
HcS_BuildUSBRequestDefault(
DevAddr,
Speed,
PktSize,
USBXFER_DIR_OUT|USBXFER_CLASS|USBHUBXFER_DEV,//bmRequestType,
USBHUB_REQUEST_CLEAR_FEATURE,//bRequest,
wFeatureSelector,//wValue,
0,//wIndex,
0//wLength
);
// build up StatusStage
HcS_BuildUSBDataInDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
PktSize//XferLength
);
if(HcS_USBCtrlOnly())
{
return TRUE;
}
else
{
return FALSE;
}
}
BOOLEAN UsbHubCls_SetHubFeature(
UCHAR DevAddr,
UCHAR Speed,
UCHAR PktSize,
USHORT wFeatureSelector
)
{
// build up SetupStage
HcS_BuildUSBRequestDefault(
DevAddr,
Speed,
PktSize,
USBXFER_DIR_OUT|USBXFER_CLASS|USBHUBXFER_DEV,//bmRequestType,
USBHUB_REQUEST_SET_FEATURE,//bRequest,
wFeatureSelector,//wValue,
0,//wIndex,
0//wLength
);
// build up StatusStage
HcS_BuildUSBDataInDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
PktSize//XferLength
);
if(HcS_USBCtrlOnly())
{
return TRUE;
}
else
{
return FALSE;
}
}
BOOLEAN UsbHubCls_ClearPortFeature(
UCHAR DevAddr,
UCHAR Speed,
UCHAR PktSize,
USHORT wPort,
USHORT wFeatureSelector
)
{
// build up SetupStage
HcS_BuildUSBRequestDefault(
DevAddr,
Speed,
PktSize,
USBXFER_DIR_OUT|USBXFER_CLASS|USBHUBXFER_HUBPORT,//bmRequestType,
USBHUB_REQUEST_CLEAR_FEATURE,//bRequest,
wFeatureSelector,//wValue,
wPort,//wIndex,
0//wLength
);
// build up StatusStage
HcS_BuildUSBDataInDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
PktSize//XferLength
);
if(HcS_USBCtrlOnly())
{
return TRUE;
}
else
{
return FALSE;
}
}
BOOLEAN UsbHubCls_SetPortFeature(
UCHAR DevAddr,
UCHAR Speed,
UCHAR PktSize,
USHORT wPort,
USHORT wFeatureSelector
)
{
// build up SetupStage
HcS_BuildUSBRequestDefault(
DevAddr,
Speed,
PktSize,
USBXFER_DIR_OUT|USBXFER_CLASS|USBHUBXFER_HUBPORT,//bmRequestType,
USBHUB_REQUEST_SET_FEATURE,//bRequest,
wFeatureSelector,//wValue,
wPort,//wIndex,
0//wLength
);
// build up StatusStage
HcS_BuildUSBDataInDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
PktSize//XferLength
);
if(HcS_USBCtrlOnly())
{
return TRUE;
}
else
{
return FALSE;
}
}
BOOLEAN UsbHubCls_GetBusState(
UCHAR DevAddr,
UCHAR Speed,
UCHAR PktSize,
USHORT wPort
)
{
// build up SetupStage
HcS_BuildUSBRequestDefault(
DevAddr,
Speed,
PktSize,
USBXFER_DIR_IN|USBXFER_CLASS|USBHUBXFER_HUBPORT,//bmRequestType,
USBHUB_REQUEST_GET_STATE,//bRequest,
0,//wValue,
wPort,//wIndex,
1//wLength
);
// build up DataInStage
HcS_BuildUSBDataInDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
1//XferLength
);
// build up StatusStage
HcS_BuildUSBDataOutDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
0,//XferLength,
NULL//pPayload
);
if(HcS_USBCtrlRead())
{
return TRUE;
}
else
{
return FALSE;
}
}
BOOLEAN UsbHubCls_GetHubDescriptor(
UCHAR DevAddr,
UCHAR Speed,
UCHAR PktSize,
UCHAR byDescriptorType,
UCHAR byDescriptorIndex,
USHORT wLanguageID,
USHORT wLength
)
{
// build up SetupStage
HcS_BuildUSBRequestDefault(
DevAddr,
Speed,
PktSize,
USBXFER_DIR_IN|USBXFER_CLASS|USBHUBXFER_HUBPORT,//bmRequestType,
USBHUB_REQUEST_GET_DESCRIPTOR,//bRequest,
(byDescriptorType<<8)|byDescriptorIndex,//wValue,
wLanguageID,
wLength
);
// build up DataInStage
HcS_BuildUSBDataInDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
1//XferLength
);
// build up StatusStage
HcS_BuildUSBDataOutDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
0,//XferLength,
NULL//pPayload
);
if(HcS_USBCtrlRead())
{
return TRUE;
}
else
{
return FALSE;
}
}
BOOLEAN UsbHubCls_SetHubDescriptor(
UCHAR DevAddr,
UCHAR Speed,
UCHAR PktSize,
UCHAR byDescriptorType,
UCHAR byDescriptorIndex,
USHORT wLanguageID,
USHORT wLength,
PUCHAR pPayload
)
{
// build up SetupStage
HcS_BuildUSBRequestDefault(
DevAddr,
Speed,
PktSize,
USBXFER_DIR_OUT|USBXFER_CLASS|USBHUBXFER_HUBPORT,//bmRequestType,
USBHUB_REQUEST_SET_DESCRIPTOR,//bRequest,
(byDescriptorType<<8)|byDescriptorIndex,//wValue,
wLanguageID,
wLength
);
// build up DataOutStage
HcS_BuildUSBDataOutDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
wLength,//XferLength
pPayload
);
// build up StatusStage
HcS_BuildUSBDataInDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
PktSize//XferLength,
);
if(HcS_USBCtrlWrite())
{
return TRUE;
}
else
{
return FALSE;
}
}
BOOLEAN UsbHubCls_GetHubStatus(
UCHAR DevAddr,
UCHAR Speed,
UCHAR PktSize
)
{
// build up SetupStage
HcS_BuildUSBRequestDefault(
DevAddr,
Speed,
PktSize,
USBXFER_DIR_IN|USBXFER_CLASS|USBHUBXFER_DEV,//bmRequestType,
USBHUB_REQUEST_GET_STATUS,//bRequest,
0,//wValue,
0,//wIndex,
4//wLength
);
// build up DataInStage
HcS_BuildUSBDataInDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
1//XferLength
);
// build up StatusStage
HcS_BuildUSBDataOutDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
0,//XferLength,
NULL//pPayload
);
if(HcS_USBCtrlRead())
{
return TRUE;
}
else
{
return FALSE;
}
}
BOOLEAN UsbHubCls_GetPortStatus(
UCHAR DevAddr,
UCHAR Speed,
UCHAR PktSize,
USHORT wPort
)
{
// build up SetupStage
HcS_BuildUSBRequestDefault(
DevAddr,
Speed,
PktSize,
USBXFER_DIR_IN|USBXFER_CLASS|USBHUBXFER_HUBPORT,//bmRequestType,
USBHUB_REQUEST_GET_STATUS,//bRequest,
0,//wValue,
wPort,//wIndex,
4//wLength
);
// build up DataInStage
HcS_BuildUSBDataInDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
1//XferLength
);
// build up StatusStage
HcS_BuildUSBDataOutDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
0,//XferLength,
NULL//pPayload
);
if(HcS_USBCtrlRead())
{
return TRUE;
}
else
{
return FALSE;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -