Add i8042 back
[qemupp.git] / include / ps2.hpp
blob9563364046df60f8f6eaefd0ca83d7c429621039
1 #ifndef PS2_HPP
2 #define PS2_HPP
4 #include "device.hpp"
5 #include "pin.hpp"
6 #include "util.hpp"
8 #define PS2_QUEUE_SIZE 256
10 class PS2Controller;
11 class PS2Device;
13 class PS2Controller
15 public:
16 virtual void data_ready(PS2Device *device) = 0;
19 class PS2Device : public Device
21 public:
22 virtual ~PS2Device(void) = 0;
24 virtual void write(int val) = 0;
25 uint32_t read(void);
26 bool can_read(void);
28 virtual void pickle(Marshaller *m, const char *name);
29 virtual void reset(void);
31 void queue(int b);
33 Socket<PS2Controller> bus;
35 protected:
36 bool queue_has_space(int count);
38 int32_t write_cmd;
40 private:
41 Array<uint8_t, PS2_QUEUE_SIZE> data;
42 int rptr, wptr, count;
45 #endif