Max OS 0.3
Loading...
Searching...
No Matches
driver.cpp
Go to the documentation of this file.
1
9#include <drivers/driver.h>
11
12using namespace MaxOS;
13using namespace MaxOS::common;
14using namespace MaxOS::drivers;
15using namespace MaxOS::memory;
16using namespace MaxOS::hardwarecommunication;
17
18Driver::Driver() = default;
19
20Driver::~Driver() = default;
21
26
27}
28
33
34}
35
40
41}
42
49 return 0;
50}
51
58 return "Generic";
59}
60
67 return "Unknown Driver";
68}
69
70DriverSelectorEventHandler::DriverSelectorEventHandler() = default;
71
72DriverSelectorEventHandler::~DriverSelectorEventHandler() = default;
73
81
82DriverSelector::DriverSelector() = default;
83
84DriverSelector::~DriverSelector() = default;
85
93
98
99 Logger::INFO() << "Setting up Driver Manager \n";
101 // add_driver_selector(new UniversalSerialBusController);
102}
103
108
109 // Remove any drivers that are still attached
110 while (!m_drivers.empty())
111 remove_driver(*m_drivers.begin());
112
113 // Free the driver selectors
114 for (auto &driver_selector: m_driver_selectors)
115 delete driver_selector;
116
117}
118
125 m_drivers.push_back(driver);
126}
127
134
135 driver->deactivate();
136 m_drivers.erase(driver);
137
138}
139
148
155
156 m_driver_selectors.push_back(driver_selector);
157
158}
159
166
167 m_driver_selectors.erase(driver_selector);
168
169}
170
175
176 Logger::INFO() << "Finding Drivers \n";
177
178 // Select the drivers
179 for (auto &driver_selector: m_driver_selectors)
180 driver_selector->select_drivers(this);
181}
182
189
190 Logger::INFO() << "Resetting Devices \n";
191
193 for (auto &driver: m_drivers) {
194 // Reset the driver
195 uint32_t wait_time = driver->reset();
196
197 // If the wait time is longer than the current longest wait time, set it as the new longest wait time
200 }
201
202 return reset_wait_time;
203}
204
209
210 Logger::INFO() << "Initialising Drivers \n";
211
212 // Initialise the drivers
213 for (auto &driver: m_drivers)
214 driver->initialise();
215
216}
217
222
223 // Deactivate the drivers
224 for (auto &driver: m_drivers)
225 driver->deactivate();
226
227}
228
233
234
235 Logger::INFO() << "Activating Drivers \n";
236
237 // Activate the drivers
238 for (auto &driver: m_drivers)
239 driver->activate();
240
241}
static Logger INFO()
Gets active logger set to info level.
Definition logger.cpp:171
Stores the left, top, width and height of a rectangle.
Definition rectangle.h:22
DriverManager()
Constructs the Driver Manager, adding any default driver selectors.
Definition driver.cpp:97
void add_driver(Driver *)
Adds a driver to the manager.
Definition driver.cpp:124
void activate_drivers()
Activate the drivers.
Definition driver.cpp:232
void on_driver_selected(Driver *) final
When a driver is selected add it to the manager.
Definition driver.cpp:145
uint32_t reset_devices()
Reset all the devices.
Definition driver.cpp:188
void remove_driver_selector(DriverSelector *)
Remove a driver selector from the manager.
Definition driver.cpp:165
void add_driver_selector(DriverSelector *)
Add a driver selector to the manager.
Definition driver.cpp:154
void deactivate_drivers()
Deactivate the drivers.
Definition driver.cpp:221
void initialise_drivers()
Initialise the drivers.
Definition driver.cpp:208
void find_drivers()
Find the drivers.
Definition driver.cpp:174
~DriverManager()
Destructor for the Driver Manager, removes all drivers and driver selectors.
Definition driver.cpp:107
void remove_driver(Driver *)
Removes a driver from the driver vector.
Definition driver.cpp:133
Event handler for the DriverSelector class, handles the event when a driver is selected.
Definition driver.h:47
virtual void on_driver_selected(Driver *)
This function is called when a driver is selected.
Definition driver.cpp:79
Selects the drivers to be used.
Definition driver.h:58
virtual void select_drivers(DriverSelectorEventHandler *handler)
Select the drivers available on the system.
Definition driver.cpp:91
base class for all drivers, handles the activation, deactivation, initialisation and reset of the dri...
Definition driver.h:27
virtual string vendor_name()
Get who created the device.
Definition driver.cpp:57
virtual uint32_t reset()
Reset the driver.
Definition driver.cpp:48
virtual string device_name()
Get the device name of the driver.
Definition driver.cpp:66
virtual void initialise()
Initialise the driver.
Definition driver.cpp:39
virtual void activate()
Activate the driver.
Definition driver.cpp:25
virtual void deactivate()
Deactivate the driver.
Definition driver.cpp:32
Handles the selecting and loading of drivers for PCI devices.
Definition pci.h:88
Defines a base Driver class and DriverManager for managing drivers.
Defines a Peripheral Component Interconnect (PCI) controller for managing PCI devices and loading the...