#pragma once

#include <efi.h>
#include <efiser.h>
#include <string_utils.h>

// 串行通信上下文
struct serial_context {
    EFI_SERIAL_IO_PROTOCOL *SerialIo;
};

extern serial_context g_serial;

// 初始化串行驱动
void serial_init(EFI_SERIAL_IO_PROTOCOL *SerialIo);
// 写字符串到串行
void serial_write(String str);
// 写单个字符到串行（不推荐直接使用）
void serial_write_char(char c);
// 写十六进制数字到串行
void serial_write_hex(UINTN val);
// 从串行读取一个字符
char serial_read_char();