Max OS 0.3
Loading...
Searching...
No Matches
MaxOS::drivers::DriverManager Class Reference

Manages the drivers, handles the adding and removing of drivers. More...

#include <driver.h>

Inheritance diagram for MaxOS::drivers::DriverManager:
MaxOS::drivers::DriverSelectorEventHandler

Public Member Functions

 DriverManager ()
 Constructs the Driver Manager, adding any default driver selectors.
 
 ~DriverManager ()
 Destructor for the Driver Manager, removes all drivers and driver selectors.
 
void add_driver_selector (DriverSelector *)
 Add a driver selector to the manager.
 
void remove_driver_selector (DriverSelector *)
 Remove a driver selector from the manager.
 
void add_driver (Driver *)
 Adds a driver to the manager.
 
void remove_driver (Driver *)
 Removes a driver from the driver vector.
 
void on_driver_selected (Driver *) final
 When a driver is selected add it to the manager.
 
void find_drivers ()
 Find the drivers.
 
uint32_t reset_devices ()
 Reset all the devices.
 
void initialise_drivers ()
 Initialise the drivers.
 
void deactivate_drivers ()
 Deactivate the drivers.
 
void activate_drivers ()
 Activate the drivers.
 

Detailed Description

Manages the drivers, handles the adding and removing of drivers.

Definition at line 69 of file driver.h.

Constructor & Destructor Documentation

◆ DriverManager()

DriverManager::DriverManager ( )

Constructs the Driver Manager, adding any default driver selectors.

Definition at line 97 of file driver.cpp.

97 {
98
99 Logger::INFO() << "Setting up Driver Manager \n";
101 // add_driver_selector(new UniversalSerialBusController);
102}
static Logger INFO()
Gets active logger set to info level.
Definition logger.cpp:171
void add_driver_selector(DriverSelector *)
Add a driver selector to the manager.
Definition driver.cpp:154
Handles the selecting and loading of drivers for PCI devices.
Definition pci.h:88

References add_driver_selector(), and MaxOS::Logger::INFO().

◆ ~DriverManager()

DriverManager::~DriverManager ( )

Destructor for the Driver Manager, removes all drivers and driver selectors.

Definition at line 107 of file driver.cpp.

107 {
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)
116
117}
Stores the left, top, width and height of a rectangle.
Definition rectangle.h:22
void remove_driver(Driver *)
Removes a driver from the driver vector.
Definition driver.cpp:133

References remove_driver().

Member Function Documentation

◆ activate_drivers()

void DriverManager::activate_drivers ( )

Activate the drivers.

Definition at line 232 of file driver.cpp.

232 {
233
234
235 Logger::INFO() << "Activating Drivers \n";
236
237 // Activate the drivers
238 for (auto &driver: m_drivers)
239 driver->activate();
240
241}

References MaxOS::Logger::INFO().

◆ add_driver()

void DriverManager::add_driver ( Driver driver)

Adds a driver to the manager.

Parameters
driverThe driver to add

Definition at line 124 of file driver.cpp.

124 {
125 m_drivers.push_back(driver);
126}

Referenced by on_driver_selected().

◆ add_driver_selector()

void DriverManager::add_driver_selector ( DriverSelector driver_selector)

Add a driver selector to the manager.

Parameters
driver_selectorThe driver selector to add

Definition at line 154 of file driver.cpp.

154 {
155
156 m_driver_selectors.push_back(driver_selector);
157
158}

Referenced by DriverManager().

◆ deactivate_drivers()

void DriverManager::deactivate_drivers ( )

Deactivate the drivers.

Definition at line 221 of file driver.cpp.

221 {
222
223 // Deactivate the drivers
224 for (auto &driver: m_drivers)
225 driver->deactivate();
226
227}

◆ find_drivers()

void DriverManager::find_drivers ( )

Find the drivers.

Definition at line 174 of file driver.cpp.

174 {
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}

References MaxOS::Logger::INFO().

◆ initialise_drivers()

void DriverManager::initialise_drivers ( )

Initialise the drivers.

Definition at line 208 of file driver.cpp.

208 {
209
210 Logger::INFO() << "Initialising Drivers \n";
211
212 // Initialise the drivers
213 for (auto &driver: m_drivers)
214 driver->initialise();
215
216}

References MaxOS::Logger::INFO().

◆ on_driver_selected()

void DriverManager::on_driver_selected ( Driver driver)
finalvirtual

When a driver is selected add it to the manager.

Parameters
driverThe driver that was selected

Reimplemented from MaxOS::drivers::DriverSelectorEventHandler.

Definition at line 145 of file driver.cpp.

145 {
147}
void add_driver(Driver *)
Adds a driver to the manager.
Definition driver.cpp:124

References add_driver().

◆ remove_driver()

void DriverManager::remove_driver ( Driver driver)

Removes a driver from the driver vector.

Parameters
driverThe driver to remove

Definition at line 133 of file driver.cpp.

133 {
134
135 driver->deactivate();
136 m_drivers.erase(driver);
137
138}

Referenced by ~DriverManager().

◆ remove_driver_selector()

void DriverManager::remove_driver_selector ( DriverSelector driver_selector)

Remove a driver selector from the manager.

Parameters
driver_selectorThe driver selector to remove

Definition at line 165 of file driver.cpp.

165 {
166
167 m_driver_selectors.erase(driver_selector);
168
169}

◆ reset_devices()

uint32_t DriverManager::reset_devices ( )

Reset all the devices.

Returns
The longest time it takes to reset a device

Definition at line 188 of file driver.cpp.

188 {
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}

References MaxOS::Logger::INFO().


The documentation for this class was generated from the following files: