kernel/uart: Refactor code

Signed-off-by: EnderIce2 <enderice2@protonmail.com>
This commit is contained in:
2024-12-23 03:52:26 +02:00
parent 0807ea5a9a
commit 81af8a48cb
10 changed files with 102 additions and 249 deletions

View File

@ -20,70 +20,24 @@
#include <types.h>
namespace UniversalAsynchronousReceiverTransmitter
namespace UART
{
/**
* @brief Serial ports. (if available)
*/
enum SerialPorts
{
COMNULL = 0,
COM1 = 0x3F8,
COM2 = 0x2F8,
COM3 = 0x3E8,
COM4 = 0x2E8,
COM5 = 0x5F8,
COM6 = 0x4F8,
COM7 = 0x5E8,
COM8 = 0x4E8
};
class UART
class Driver
{
private:
SerialPorts Port;
bool IsAvailable;
bool DebugAvailable = false;
bool TTYAvailable = false;
public:
UART(SerialPorts Port = COMNULL);
~UART();
void Write(uint8_t Char);
uint8_t Read();
Driver();
~Driver();
void DebugWrite(uint8_t Char);
uint8_t DebugRead();
void TTYWrite(uint8_t Char);
uint8_t TTYRead();
};
class Events
{
private:
SerialPorts Port;
protected:
/**
* @brief UART events.
* @param Port if none, all ports are registered for events.
*/
Events(SerialPorts Port = COMNULL);
~Events();
public:
/**
* @brief Get the Registered Port object
* @return SerialPorts
*/
nsa NIF SerialPorts GetRegisteredPort() { return this->Port; }
/**
* @brief Called when a character is sent.
* @param Char the sent character.
*/
virtual void OnSent(uint8_t Char) { UNUSED(Char); }
/**
* @brief Called when a character is received.
* @param Char the received character.
*/
virtual void OnReceived(uint8_t Char) { UNUSED(Char); }
};
}
#endif // !__FENNIX_KERNEL_UART_H__