Kernel: Move PS2Device to its own file
This commit is contained in:
@@ -7,42 +7,7 @@
|
||||
namespace Kernel::Input
|
||||
{
|
||||
|
||||
class PS2Controller;
|
||||
|
||||
class PS2Device : public CharacterDevice, public Interruptable
|
||||
{
|
||||
public:
|
||||
PS2Device(PS2Controller&);
|
||||
virtual ~PS2Device() {}
|
||||
|
||||
virtual void send_initialize() = 0;
|
||||
|
||||
bool append_command_queue(uint8_t command);
|
||||
bool append_command_queue(uint8_t command, uint8_t data);
|
||||
virtual void handle_irq() final override;
|
||||
|
||||
virtual void handle_byte(uint8_t) = 0;
|
||||
virtual void handle_device_command_response(uint8_t) = 0;
|
||||
|
||||
virtual BAN::StringView name() const override { return m_name; }
|
||||
|
||||
protected:
|
||||
void update();
|
||||
|
||||
private:
|
||||
enum class State
|
||||
{
|
||||
Normal,
|
||||
WaitingAck,
|
||||
};
|
||||
|
||||
private:
|
||||
const BAN::String m_name;
|
||||
|
||||
PS2Controller& m_controller;
|
||||
State m_state = State::Normal;
|
||||
BAN::CircularQueue<uint8_t, 10> m_command_queue;
|
||||
};
|
||||
class PS2Device;
|
||||
|
||||
class PS2Controller
|
||||
{
|
||||
|
||||
43
kernel/include/kernel/Input/PS2Device.h
Normal file
43
kernel/include/kernel/Input/PS2Device.h
Normal file
@@ -0,0 +1,43 @@
|
||||
#include <kernel/Input/PS2Controller.h>
|
||||
|
||||
namespace Kernel::Input
|
||||
{
|
||||
|
||||
class PS2Device : public CharacterDevice, public Interruptable
|
||||
{
|
||||
public:
|
||||
PS2Device(PS2Controller&);
|
||||
virtual ~PS2Device() {}
|
||||
|
||||
virtual void send_initialize() = 0;
|
||||
|
||||
bool append_command_queue(uint8_t command);
|
||||
bool append_command_queue(uint8_t command, uint8_t data);
|
||||
virtual void handle_irq() final override;
|
||||
|
||||
virtual void handle_byte(uint8_t) = 0;
|
||||
virtual void handle_device_command_response(uint8_t) = 0;
|
||||
|
||||
virtual BAN::StringView name() const final override { return m_name; }
|
||||
virtual dev_t rdev() const final override { return m_rdev; }
|
||||
|
||||
protected:
|
||||
void update();
|
||||
|
||||
private:
|
||||
enum class State
|
||||
{
|
||||
Normal,
|
||||
WaitingAck,
|
||||
};
|
||||
|
||||
private:
|
||||
const BAN::String m_name;
|
||||
const dev_t m_rdev;
|
||||
|
||||
PS2Controller& m_controller;
|
||||
State m_state = State::Normal;
|
||||
BAN::CircularQueue<uint8_t, 10> m_command_queue;
|
||||
};
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <kernel/Input/KeyEvent.h>
|
||||
#include <kernel/Input/PS2Controller.h>
|
||||
#include <kernel/Input/PS2Device.h>
|
||||
#include <kernel/Input/PS2Keymap.h>
|
||||
#include <kernel/Semaphore.h>
|
||||
|
||||
@@ -41,15 +41,9 @@ namespace Kernel::Input
|
||||
|
||||
Semaphore m_semaphore;
|
||||
|
||||
public:
|
||||
virtual dev_t rdev() const override { return m_rdev; }
|
||||
|
||||
protected:
|
||||
virtual BAN::ErrorOr<size_t> read_impl(off_t, BAN::ByteSpan) override;
|
||||
virtual bool has_data_impl() const override;
|
||||
|
||||
private:
|
||||
const dev_t m_rdev;
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user