📄 ucls_prn.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: UCl_Prn.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_Reg.h"
#include "PHC_HcS.h"
#include "UCls_Prn.h"
/***********************************************/
/* Public Vars for UsbClass_Print */
/***********************************************/
extern UCHAR bVerbose ;
extern UCHAR bIRQL ;
extern DATA_XFER HcS_UsbDataOutStage;
/***********************************************/
/* Funcs for UsbClass_Print */
/***********************************************/
BOOLEAN UsbPrnCls_GetDeviceID(
UCHAR DevAddr,
UCHAR Speed,
UCHAR PktSize,
USHORT ConfigIndex,
USHORT Interface,
USHORT wLength
)
{
// build up SetupStage
HcS_BuildUSBRequestDefault(
DevAddr,
Speed,
PktSize,
USBXFER_DIR_IN|USBXFER_CLASS|USBPRNXFER_INTERFACE,//bmRequestType,
USBPRN_REQUEST_GET_DEVID,//bRequest,
ConfigIndex,//wValue,
Interface,//wIndex
wLength
);
// build up DataInStage
HcS_BuildUSBDataInDefault(
DevAddr,//DevAddr,
0,//Endp,
Speed,//Speed,
FALSE,//IsISO,
TRUE,//Last,
PTD_TOGGLE_DATA1,//DataToggle,
PktSize,//PktSize,
wLength//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 UsbPrnCls_GetPortStatus(
UCHAR DevAddr,
UCHAR Speed,
UCHAR PktSize,
USHORT Interface
)
{
// build up SetupStage
HcS_BuildUSBRequestDefault(
DevAddr,
Speed,
PktSize,
USBXFER_DIR_IN|USBXFER_CLASS|USBPRNXFER_INTERFACE,//bmRequestType,
USBPRN_REQUEST_GET_PORT_STATUS,//bRequest,
0,//wValue,
Interface,//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 UsbPrnCls_SoftReset(
UCHAR DevAddr,
UCHAR Speed,
UCHAR PktSize,
USHORT Interface
)
{
// build up SetupStage
HcS_BuildUSBRequestDefault(
DevAddr,
Speed,
PktSize,
USBXFER_DIR_OUT|USBXFER_CLASS|USBPRNXFER_INTERFACE,//bmRequestType,
USBPRN_REQUEST_SOFT_RESET,//bRequest,
0,//wValue,
Interface,//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;
}
}
void USBClass_print(SHORT hFile)
{
SHORT nBytes;
HcS_InitPHC();
HcS_EnumPHCDevs();
do
{
nBytes = read(hFile,HcS_UsbDataOutStage.Payload,MAX_PAYLOAD);
HcS_BuildUSBDataOutDefault(
0x7E,// UCHAR DevAddr,
0x02,// UCHAR Endp,
PTD_SPEED_FS,// UCHAR Speed,
FALSE,//IsISO,
TRUE,// UCHAR Last,
PTD_TOGGLE_DATA0,// UCHAR DataToggle,
64,// UCHAR PktSize,
nBytes,// USHORT XferLength,
NULL// PUCHAR pPayload
);
HcS_USBBulkXferDataOut();
} while(nBytes == MAX_PAYLOAD);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -