Kernel: Move PS2Device to its own file

This commit is contained in:
2024-01-04 10:49:51 +02:00
parent 8f8d6bddc0
commit 891ced4da2
7 changed files with 126 additions and 115 deletions

View File

@@ -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
{

View 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;
};
}

View File

@@ -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;
};
}