2 * Copyright 2005-2014 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
5 * Authors (in chronological order):
6 * Marcus Overhagen (marcus@overhagen.de)
7 * Clemens Zeidler (haiku@clemens-zeidler.de)
14 typedef struct ps2_dev ps2_dev
;
16 #include "ps2_common.h"
35 data_history history
[2];
40 void (*disconnect
)(ps2_dev
*);
41 int32 (*handle_int
)(ps2_dev
*);
42 status_t (*command
)(ps2_dev
*dev
, uint8 cmd
, const uint8
*out
,
43 int out_count
, uint8
*in
, int in_count
, bigtime_t timeout
);
46 #define PS2_DEVICE_COUNT 6
48 extern ps2_dev ps2_device
[PS2_DEVICE_COUNT
];
50 #define PS2_DEVICE_MOUSE 0
51 #define PS2_DEVICE_SYN_PASSTHROUGH 4
52 #define PS2_DEVICE_KEYB 5
54 #define PS2_FLAG_KEYB (1 << 0)
55 #define PS2_FLAG_OPEN (1 << 1)
56 #define PS2_FLAG_ENABLED (1 << 2)
57 #define PS2_FLAG_CMD (1 << 3)
58 #define PS2_FLAG_ACK (1 << 4)
59 #define PS2_FLAG_NACK (1 << 5)
60 #define PS2_FLAG_GETID (1 << 6)
61 #define PS2_FLAG_RESEND (1 << 7)
68 void ps2_dev_send(ps2_dev
*dev
, uint8 data
);
70 status_t
ps2_dev_detect_pointing(ps2_dev
*dev
, device_hooks
**hooks
);
72 status_t
ps2_dev_init(void);
73 void ps2_dev_exit(void);
75 status_t
standard_command_timeout(ps2_dev
*dev
, uint8 cmd
, const uint8
*out
,
76 int out_count
, uint8
*in
, int in_count
, bigtime_t timeout
);
78 status_t
ps2_dev_command(ps2_dev
*dev
, uint8 cmd
, const uint8
*out
= NULL
,
79 int out_count
= 0, uint8
*in
= NULL
, int in_count
= 0);
80 status_t
ps2_dev_command_timeout(ps2_dev
*dev
, uint8 cmd
, const uint8
*out
,
81 int out_count
, uint8
*in
, int in_count
, bigtime_t timeout
);
82 status_t
ps2_dev_sliced_command(ps2_dev
*dev
, uint8 cmd
);
84 status_t
ps2_reset_mouse(ps2_dev
*dev
);
86 void ps2_dev_publish(ps2_dev
*dev
);
87 void ps2_dev_unpublish(ps2_dev
*dev
);
89 int32
ps2_dev_handle_int(ps2_dev
*dev
);
96 #endif /* __PS2_DEV_H */