/* * Copyright (c) 2023, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Kernel { class SerialIODevice { public: virtual ~SerialIODevice() = default; virtual void handle_byte_read_from_serial_input(u8 byte) = 0; SerialIOController::PortIndex attached_port_index() const { return m_attached_port_index; } SerialIOController& attached_controller() { return m_serial_io_controller; } SerialIOController const& attached_controller() const { return m_serial_io_controller; } protected: SerialIODevice(SerialIOController const& serial_io_controller, SerialIOController::PortIndex attached_port_index) : m_serial_io_controller(serial_io_controller) , m_attached_port_index(attached_port_index) { } private: NonnullRefPtr const m_serial_io_controller; SerialIOController::PortIndex m_attached_port_index { 0 }; }; }