Max OS 0.3
Loading...
Searching...
No Matches
port.h
Go to the documentation of this file.
1
9#ifndef MAX_OS_HARDWARECOMMUNICATION_PORT_H
10#define MAX_OS_HARDWARECOMMUNICATION_PORT_H
11
12#include <cstdint>
13
14namespace MaxOS::hardwarecommunication {
15
20 class Port {
21 protected:
22 uint16_t m_port_number;
23
24 explicit Port(uint16_t port_number);
25 ~Port();
26 };
27
32 class Port8Bit : public Port {
33 public:
34 explicit Port8Bit(uint16_t port_number);
35 ~Port8Bit();
36
37 virtual void write(uint8_t data);
38 virtual uint8_t read();
39 };
40
45 class Port8BitSlow : public Port8Bit {
46 public:
47 explicit Port8BitSlow(uint16_t port_number);
49
50 void write(uint8_t data) final;
51 };
52
57 class Port16Bit : public Port {
58 public:
59 explicit Port16Bit(uint16_t port_number);
60 ~Port16Bit();
61
62 virtual void write(uint16_t data);
63 virtual uint16_t read();
64 };
65
70 class Port32Bit : public Port {
71 public:
72 explicit Port32Bit(uint16_t port_number);
73 ~Port32Bit();
74
75 virtual void write(uint32_t data);
76 virtual uint32_t read();
77 };
78}
79
80
81#endif //MAX_OS_HARDWARECOMMUNICATION_PORT_H
Handles 16 bit ports.
Definition port.h:57
virtual void write(uint16_t data)
write a word to the port
Definition port.cpp:95
virtual uint16_t read()
read a word from the port
Definition port.cpp:105
Handles 32 bit ports.
Definition port.h:70
virtual uint32_t read()
read a double word from the port (32Bit)
Definition port.cpp:138
virtual void write(uint32_t data)
write a double word to the port (32Bit)
Definition port.cpp:128
Handles 8 bit ports (slow)
Definition port.h:45
void write(uint8_t data) final
write a byte to the port (slow)
Definition port.cpp:74
virtual uint8_t read()
read a byte from the port
Definition port.cpp:51
virtual void write(uint8_t data)
write a byte to the port
Definition port.cpp:41
base class for all ports
Definition port.h:20
uint16_t m_port_number
The port to write to / read from.
Definition port.h:22