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

📄 tiglusb.h

📁 TUSB3410 win9x和win xp 驱动源代码,包含开发测试工具
💻 H
字号:
// 
// TiglUsb driver for Windows 9x/Me & 2000/XP
// Library (user mode) for talking with the driver (kernel mode)
//
// Copyright (c) 2001-2002 Romain Li関in
// roms@lpg.ticalc.org
// http://lpg.ticalc.org/prj_usb
//
// July the 4th, 2002
//

/*++

Module Name:

    TiglUsb.h

Abstract:

    Win32 Prototypes for TiglUsb library.
	This file is the same for both drivers (98DDK & XPDDK)

Environment:

    User mode

Notes:

  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
  PURPOSE.

  Copyright (c) 2001 Romain Li関in.  All Rights Reserved.
Revision History:

	11/17/97: created
	2001: modified
	2002: some adds
	02/12/2002: fixed some problem of calling convention when lib is used with C++ 
	25/05/2002: typo fixes in the function pointers
	04/07/2002: modified for WinDDK (Windows XP)
	06/10/2002: TiglUsbIsDataAvailable added
	08/10/2002: calling convention changed from __cdecl to __stdcall (WINAPI, VB, C++ Builder)
--*/

#ifndef TIGLUSB_INC
#define TIGLUSB_INC

#define NONBLOCKING			// Overlapped I/O operations enabled (default)

#ifdef __cplusplus
extern "C" {
#endif

	// The following ifdef block is the standard way of creating macros which make exporting 
	// from a DLL simpler. All files within this DLL are compiled with the TIGLUSB_EXPORTS
	// symbol defined on the command line. this symbol should not be defined on any project
	// that uses this DLL. This way any other project whose source files include this file see 
	// TIGLUSB_API functions as being imported from a DLL, wheras this DLL sees symbols
	// defined with this macro as being exported.
#ifdef TIGLUSB_EXPORTS
# define TIGLUSB_EXP __declspec(dllexport)
#else
# define TIGLUSB_EXP __declspec(dllimport)
#endif
	// This DLL (should) use the stdcall calling convention.
#define  TIGLUSB_API __cdecl	//__stdcall

/* ----------------------- For Internal/DDK use only --------------------- */

	//
	// Constants
	//

#define TIGLUSB_MAX_PACKET_SIZE	32	// 32 bytes max can be read or written at a time

#define IN_PIPE_0  "PIPE00"	// First link cable, IN pipe (TI->PC)
#define OUT_PIPE_0 "PIPE01"	//					OUT pipe (PC->TI)
#define IN_PIPE_1  "PIPE02" // Second link cable
#define OUT_PIPE_1 "PIPE03"
#define IN_PIPE_2  "PIPE04" // Third link cable
#define OUT_PIPE_2 "PIPE05"
#define IN_PIPE_3  "PIPE06" // Fourth link cable
#define OUT_PIPE_3 "PIPE07"

	//
	// API: Win32 functions
	//

// Returns an handle on the device driver or INVALID_HANDLE_VALUE otherwise
HANDLE open_dev(void);

// Returns an handle on a pipe ("PIPE00": IN or "PIPE01": OUT)
// or INVALID_HANDLE_VALUE otherwise.
HANDLE open_file( char *filename);

// Rarely used
void rw_dev( HANDLE hDEV );
char *usbDescriptorTypeString(UCHAR bDescriptorType );
char *usbEndPointTypeString(UCHAR bmAttributes);
char *usbConfigAttributesString(UCHAR bmAttributes);

// Do a formatted ascii dump to console of USB 
// configuration, interface, and endpoint descriptors
int  dumpUsbConfig(void);

// IOCTL operations: returns 0 if sucessful, -1 otherwise.
int resetPipe(void);				// reset current pipe (??)
int resetDevice(void);				// reset device (dangerous)
int resetPipes(void);				// reset IN & OUT pipes


/* ----------------------- For Developper use --------------------- */

	//
	// API: Win32 functions (exports)
	//

// Versionning
TIGLUSB_EXP PCHAR TIGLUSB_API TiglUsbVersion (VOID);	// Get version

// I/O operations on device
TIGLUSB_EXP INT TIGLUSB_API TiglUsbOpen (VOID);			// Open a device instance
TIGLUSB_EXP INT TIGLUSB_API TiglUsbFlush (VOID);		// Flush buffer
TIGLUSB_EXP INT TIGLUSB_API TiglUsbRead (UCHAR *data);	// Read a byte from cable
TIGLUSB_EXP INT TIGLUSB_API TiglUsbWrite (UCHAR data);	// Write a byte to cable
TIGLUSB_EXP INT TIGLUSB_API TiglUsbClose (VOID);		// Close the device instance

TIGLUSB_EXP INT TIGLUSB_API TiglUsbCheck(INT *status);	// Check whether data is available

TIGLUSB_EXP INT TIGLUSB_API TiglUsbSetTimeout (INT ts);	// Set timeout value (in tenth of seconds)
TIGLUSB_EXP INT TIGLUSB_API TiglUsbGetTimeout (INT *ts);// Retrieve timeout value

// Function pointers for dynamic loading
typedef PCHAR (TIGLUSB_API *TIGLUSB_VERSION) (VOID);

typedef INT	(TIGLUSB_API *TIGLUSB_OPEN)		(VOID);
typedef INT (TIGLUSB_API *TIGLUSB_FLUSH)	(VOID);
typedef INT	(TIGLUSB_API *TIGLUSB_READ)		(PUCHAR);
typedef INT (TIGLUSB_API *TIGLUSB_WRITE)	(UCHAR);
typedef INT (TIGLUSB_API *TIGLUSB_CLOSE)	(VOID);

typedef INT (TIGLUSB_API *TIGLUSB_CHECK)    (PINT);

typedef INT	(TIGLUSB_API *TIGLUSB_SETTIMEOUT)	(INT);
typedef INT	(TIGLUSB_API *TIGLUSB_GETTIMEOUT)	(PINT);

// Error codes
#define TIGLERR_NO_ERROR				0
#define TIGLERR_DEV_ALREADY_OPEN		1
#define TIGLERR_DEV_OPEN_FAILED			2
#define TIGLERR_FLUSH_FAILED			3
#define TIGLERR_WRITE_TIMEOUT			4
#define TIGLERR_READ_TIMEOUT			5
#define TIGLERR_WRITE_ERROR				6
#define TIGLERR_READ_ERROR				7


/* If you need Dynamic Liking, defines your pointers like this:
	TIGLUSB_OPENFILE	dynTiglUsbOpenFile		= NULL;
	TIGLUSB_OPENDEV		dynTiglUsbOpenDev		= NULL;
	TIGLUSB_RESETPIPES	dynTiglUsbResetPipes	= NULL;
	TIGLUSB_SETTIMEOUT	dynTiglUsbSetTimeout	= NULL;

  Sample code:

	hDLL = LoadLibrary("TIGLUSB.DLL");
	if (hDLL == NULL)
	{
	  dERROR("TiglUsb library not found. Have you installed the driver ?\n");
	  return ERR_USB_OPEN;
	}

	dynTiglUsbOpenFile = (TIGLUSB_OPENFILE)GetProcAddress(hDLL,
								    "open_file");
	if (!dynTiglUsbOpenFile)
	{
		dERROR("Unable to load TiglUsbOpenFile symbol.\n");
	    FreeLibrary(hDLL);       
	    return ERR_FREELIBRARY;
	}

  FreeLibrary(hDLL);
*/

#ifdef __cplusplus
}
#endif

#endif // end, #ifndef TIGLUSBH_INC

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -