diff options
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 |