21 #include "pedigree/kernel/Log.h" 23 X86Serial::X86Serial() : m_Port(
"COM")
27 X86Serial::~X86Serial()
33 m_Port.allocate(nBaseAddr, 8);
35 m_Port.write8(0x00, serial::inten);
36 m_Port.write8(0x80, serial::lctrl);
39 m_Port.write8(0x00, serial::inten);
40 m_Port.write8(0x03, serial::lctrl);
44 m_Port.write8(0x0B, serial::mctrl);
45 m_Port.write8(0x0C, serial::inten);
47 NOTICE(
"Modem status: " <<
Hex << m_Port.read8(serial::mstat));
48 NOTICE(
"Line status: " <<
Hex << m_Port.read8(serial::lstat));
51 char X86Serial::read()
55 while (!(m_Port.read8(serial::lstat) & 0x1))
58 return m_Port.read8(serial::rxtx);
61 char X86Serial::readNonBlock()
65 if (m_Port.read8(serial::lstat) & 0x1)
66 return m_Port.read8(serial::rxtx);
71 void X86Serial::write(
char c)
75 while (!(m_Port.read8(serial::lstat) & 0x20))
78 m_Port.write8(static_cast<unsigned char>(c), serial::rxtx);
81 bool X86Serial::isConnected()
virtual void setBase(uintptr_t nBaseAddr)