Added required defines and typedefs for ntoskrnl/io modules.
[reactos.git] / reactos / include / ddk / ntdd8042.h
1 #ifndef _NTDD8042_
2 #define _NTDD8042_
3
4 #define IOCTL_INTERNAL_I8042_HOOK_KEYBOARD CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS)
5 #define IOCTL_INTERNAL_I8042_HOOK_MOUSE CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS)
6
7 typedef enum _KEYBOARD_SCAN_STATE {
8 Normal,
9 GotE0,
10 GotE1
11 } KEYBOARD_SCAN_STATE, *PKEYBOARD_SCAN_STATE;
12
13 typedef
14 NTSTATUS
15 (*PI8042_SYNCH_READ_PORT) (
16 IN PVOID Context,
17 PUCHAR Value,
18 BOOLEAN WaitForACK
19 );
20
21 typedef
22 NTSTATUS
23 (*PI8042_SYNCH_WRITE_PORT) (
24 IN PVOID Context,
25 UCHAR Value,
26 BOOLEAN WaitForACK
27 );
28
29 typedef enum _TRANSMIT_STATE {
30 Idle = 0,
31 SendingBytes
32 } TRANSMIT_STATE;
33
34 typedef struct _OUTPUT_PACKET {
35 PUCHAR Bytes;
36 ULONG CurrentByte;
37 ULONG ByteCount;
38 TRANSMIT_STATE State;
39 } OUTPUT_PACKET, *POUTPUT_PACKET;
40
41 typedef
42 NTSTATUS
43 (*PI8042_KEYBOARD_INITIALIZATION_ROUTINE) (
44 IN PVOID InitializationContext,
45 IN PVOID SynchFuncContext,
46 IN PI8042_SYNCH_READ_PORT ReadPort,
47 IN PI8042_SYNCH_WRITE_PORT WritePort,
48 OUT PBOOLEAN TurnTranslationOn
49 );
50
51 typedef
52 BOOLEAN
53 (*PI8042_KEYBOARD_ISR) (
54 PVOID IsrContext,
55 PKEYBOARD_INPUT_DATA CurrentInput,
56 POUTPUT_PACKET CurrentOutput,
57 UCHAR StatusByte,
58 PUCHAR Byte,
59 PBOOLEAN ContinueProcessing,
60 PKEYBOARD_SCAN_STATE ScanState
61 );
62
63 typedef struct _INTERNAL_I8042_HOOK_KEYBOARD {
64
65 //
66 // Context variable for all callback routines
67 //
68 PVOID Context;
69
70 //
71 // Routine to call after the mouse is reset
72 //
73 PI8042_KEYBOARD_INITIALIZATION_ROUTINE InitializationRoutine;
74
75 //
76 // Routine to call when a byte is received via the interrupt
77 //
78 PI8042_KEYBOARD_ISR IsrRoutine;
79
80 //
81 // Write function
82 //
83 //UNIMPLEMENTED PI8042_ISR_WRITE_PORT IsrWritePort;
84
85 //
86 // Queue the current packet (ie the one passed into the isr callback hook)
87 // to be reported to the class driver
88 //
89 //UNIMPLEMENTED PI8042_QUEUE_PACKET QueueKeyboardPacket;
90
91 //
92 // Context for IsrWritePort, QueueKeyboardPacket
93 //
94 //UNIMPLEMENTED PVOID CallContext;
95
96 } INTERNAL_I8042_HOOK_KEYBOARD, *PINTERNAL_I8042_HOOK_KEYBOARD;
97
98 #endif //_NTDD8042_