GitOS
Operating system exercise
Loading...
Searching...
No Matches
PS2Mouse.hpp
Go to the documentation of this file.
1//
2// Created by Pawel Reich on 1/26/25.
3//
4#pragma once
5#include <stdint-gcc.h>
6#include <fs/pipe/PipeFS.hpp>
7
8class PS2Mouse {
9 public:
10 void handle_cycle();
11 void wait(uint8_t type) const;
12 void write(uint8_t byte) const;
13 uint8_t read() const;
14
15 static PS2Mouse* instance();
16
17 struct mouse_packet { // TODO: Make this smaller
18 int32_t x;
19 int32_t y;
20 unsigned char buttons;
21 };
22 uint32_t pipe_size = 128;
23
24 private:
25 PS2Mouse();
26 int mouse_cycle = 0;
27 char mouse_byte[3] = {0};
28 PipeFS* pipe;
29
30 const int MOUSE_IRQ = 12;
31 const int MOUSE_PORT = 0x60;
32 const int MOUSE_STATUS = 0x64;
33 const int MOUSE_ABIT = 0x02; // Input buffer status
34 const int MOUSE_BBIT = 0x01; // Output buffer status
35 const int MOUSE_WRITE = 0xD4;
36 const int MOUSE_F_BIT = 0x20; // Check mouse data validity
37 const int MOUSE_V_BIT = 0x08; // Packet validity
38
39 const int TIMEOUT = 100000;
40};
uint32_t type
Definition GitBoot.hpp:2
Definition PS2Mouse.hpp:8
void write(uint8_t byte) const
Definition PS2Mouse.cpp:137
static PS2Mouse * instance()
Definition PS2Mouse.cpp:151
uint8_t read() const
Definition PS2Mouse.cpp:146
void handle_cycle()
Definition PS2Mouse.cpp:22
uint32_t pipe_size
Definition PS2Mouse.hpp:22
void wait(uint8_t type) const
Definition PS2Mouse.cpp:117
Definition PipeFS.hpp:13
Definition PS2Mouse.hpp:17
unsigned char buttons
Definition PS2Mouse.hpp:20
int32_t y
Definition PS2Mouse.hpp:19
int32_t x
Definition PS2Mouse.hpp:18