summaryrefslogtreecommitdiff
path: root/src/drivers/hdi/ps2/ps2mouse.h
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2017-07-18 21:23:22 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2017-07-18 21:23:22 +0200
commitee3e51aa1624693217b1a4ae7bfb2730424c08f2 (patch)
treebebd430417bad79c9cd1aa91f48d168f90795621 /src/drivers/hdi/ps2/ps2mouse.h
parent3a1570d0e6531e3f49e79bbbe4e24d6280e49b1a (diff)
downloadabaos-ee3e51aa1624693217b1a4ae7bfb2730424c08f2.tar.gz
abaos-ee3e51aa1624693217b1a4ae7bfb2730424c08f2.tar.bz2
added a virtual mouse driver interface, made the PS/2 mouse a specialization of it
Diffstat (limited to 'src/drivers/hdi/ps2/ps2mouse.h')
-rw-r--r--src/drivers/hdi/ps2/ps2mouse.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/drivers/hdi/ps2/ps2mouse.h b/src/drivers/hdi/ps2/ps2mouse.h
new file mode 100644
index 0000000..4c59089
--- /dev/null
+++ b/src/drivers/hdi/ps2/ps2mouse.h
@@ -0,0 +1,35 @@
+#ifndef PS2MOUSE_H
+#define PS2MOUSE_H
+
+#include "string.h"
+
+#include "interrupts.h"
+#include "port.h"
+
+#include "mouse.h"
+
+#define MAX_NOF_MOUSE_PACKETS 5
+
+typedef struct {
+ mouse_t base;
+ port8_t command_port;
+ port8_t data_port;
+ int nof_packets; // 3 or more mouse packets
+ uint8_t buf[MAX_NOF_MOUSE_PACKETS];
+ uint8_t buttons;
+ uint8_t offset;
+ interrupt_handler_t interrupt_handler;
+} ps2mouse_t;
+
+typedef struct {
+ mouse_vtable_t base;
+} ps2mouse_vtable_t;
+
+void ps2mouse_init( ps2mouse_t *mouse, mouse_event_handler_t handler, interrupt_t *interrupt, void *context );
+void ps2mouse_activate( void *obj );
+void ps2mouse_deactivate( void *obj );
+void ps2mouse_print_info( void *obj );
+
+uint32_t ps2mouse_handle_interrupt( interrupt_handler_t *handler, uint32_t esp );
+
+#endif // PS2MOUSE_H