35 for (
auto& d : drivers)
36 if (d->iface == driver->iface && d->bus == driver->bus) found = d.get();
38 drivers.push_back(std::move(driver));
43 auto found = std::find(drivers.begin(), drivers.end(), driver);
44 if (found == drivers.end())
return;
54 while (drivers.size()) {
64std::unique_ptr<AbstractCommDriver> kNoDriver(
nullptr);
66DriverPtr&
FindDriver(
const std::vector<DriverPtr>& drivers,
67 const std::string& iface,
const NavAddr::Bus _bus) {
68 if (_bus != NavAddr::Bus::Undef) {
69 for (
const DriverPtr& d : drivers) {
70 if (d->iface == iface && d->bus == _bus) {
71 return const_cast<DriverPtr&
>(d);
76 for (
auto&& d : drivers)
77 if (d->iface == iface)
return const_cast<DriverPtr&
>(d);
Common interface for all drivers.
The global driver registry, a singleton.
void Deactivate(DriverPtr &driver)
Remove driver from list of active drivers.
void Activate(DriverPtr driver)
Add driver to list of active drivers.
const std::vector< DriverPtr > & GetDrivers() const
EventVar evt_driverlist_change
Notified by all driverlist updates.
void CloseAllDrivers()
Close and destroy all drivers completely.
const void Notify()
Notify all listeners, no data supplied.
Communication driver layer.
DriverPtr & FindDriver(const std::vector< DriverPtr > &drivers, const std::string &iface, const NavAddr::Bus _bus)
Search list of drivers for a driver with given interface string.
Driver registration container, a singleton.