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

📄 ucls_prn.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:	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 + -