diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2017-07-18 21:23:22 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2017-07-18 21:23:22 +0200 |
commit | ee3e51aa1624693217b1a4ae7bfb2730424c08f2 (patch) | |
tree | bebd430417bad79c9cd1aa91f48d168f90795621 /src/drivers/hdi/ps2/ps2mouse.h | |
parent | 3a1570d0e6531e3f49e79bbbe4e24d6280e49b1a (diff) | |
download | abaos-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.h | 35 |
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 |