summaryrefslogtreecommitdiffstats
path: root/private/ntos/ndis/irmini/dongle.h
blob: cc8ffd7938ac8762720034d42b939473e9eb9356 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*
 *  DONGLE.H
 *
 *
 *
 */

#ifndef DONGLE_H
	#define DONGLE_H


	#define NDIS_IRDA_SPEED_2400       (UINT)(1 << 0)	// SLOW IR ...
	#define NDIS_IRDA_SPEED_9600       (UINT)(1 << 1)
	#define NDIS_IRDA_SPEED_19200      (UINT)(1 << 2)
	#define NDIS_IRDA_SPEED_38400      (UINT)(1 << 3)
	#define NDIS_IRDA_SPEED_57600      (UINT)(1 << 4)   
	#define NDIS_IRDA_SPEED_115200     (UINT)(1 << 5)
	#define NDIS_IRDA_SPEED_576K       (UINT)(1 << 6)   // MEDIUM IR ...
	#define NDIS_IRDA_SPEED_1152K      (UINT)(1 << 7)   
	#define NDIS_IRDA_SPEED_4M         (UINT)(1 << 8)   // FAST IR 

	typedef unsigned int UINT;
	typedef unsigned char UCHAR;
	typedef unsigned char BOOLEAN;
	#undef VOID
	#define VOID void
	#undef FALSE
	#define FALSE ((BOOLEAN)0)
	#undef TRUE
	#define TRUE (!FALSE)

	typedef struct dongleCapabilities {

			/*
			 *  This is a mask of NDIS_IRDA_SPEED_xxx bit values.
			 *  
			 */
			UINT supportedSpeedsMask;

			/*
			 *  Time (in microseconds) that must transpire between
			 *  a transmit and the next receive.
			 */
			UINT turnAroundTime_usec;

			/*
			 *  Extra BOF (Beginning Of Frame) characters required
			 *  at the start of each received frame.
			 */
			UINT extraBOFsRequired;

	} dongleCapabilities;


	typedef BOOLEAN (_stdcall *IRMINI_INIT_HANDLER)
		(UINT comBase, dongleCapabilities *caps, UINT *context);
	typedef void (_stdcall *IRMINI_DEINIT_HANDLER)
		(UINT comBase, UINT context);
	typedef BOOLEAN (_stdcall *IRMINI_SETSPEED_HANDLER)
		(UINT comBase, UINT bitsPerSec, UINT context);

	typedef struct IRMINI_Dongle_Interface
	{
		IRMINI_INIT_HANDLER initHandler;
		IRMINI_SETSPEED_HANDLER setSpeedHandler;
		IRMINI_DEINIT_HANDLER deinitHandler;
	} IRMINI_Dongle_Interface;


	/*
	 *  A dongle module should not use any NDIS functions directly.
	 *  It should only use these wrapper functions to access hardware.
	 */
	extern void _cdecl IRMINI_RawReadPort(UINT IOaddr, UCHAR *val);
   	extern void _cdecl IRMINI_RawWritePort(UINT IOaddr, UCHAR val);
	extern void _cdecl IRMINI_StallExecution(UINT usec);
	extern UINT _cdecl IRMINI_GetSystemTime_msec();

#endif DONGLE_H