xaizek / tos (License: GPLv3 only) (since 2018-12-07)
This is an alternative version of sources presented as part of Write Your Own OS video tutorial by Viktor Engelmann.
<root> / src / drv / drivers.cpp (cf75b8e54def30fc502efec59fe104f374d955be) (940B) (mode 100644) [raw]
#include "drv/drivers.hpp"

using namespace drv;

void
Driver::activate()
{
}

int
Driver::reset()
{
    return 0;
}

void
Driver::deactivate()
{
}

void
EthernetDriver::setHandler(RawDataHandler *handler)
{
    handlerValue = handler;
}

void
EthernetDriver::setIPAddress(NetOrder<std::uint32_t> ip)
{
    ipAddress = ip;
}

NetOrder<std::uint32_t>
EthernetDriver::getIPAddress() const
{
    return ipAddress;
}

RawDataHandler::RawDataHandler(EthernetDriver &backend) : backend(backend)
{
    backend.setHandler(this);
}

RawDataHandler::~RawDataHandler()
{
    backend.setHandler(nullptr);
}

void
RawDataHandler::send(span<const std::uint8_t> msg)
{
    return backend.send(msg);
}

DriverManager::DriverManager() : numDrivers(0)
{
}

void DriverManager::addDriver(Driver &drv)
{
    drivers[numDrivers++] = &drv;
}

void DriverManager::activateAll()
{
    for (int i = 0; i < numDrivers; ++i) {
        drivers[i]->activate();
    }
}
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/tos

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/tos

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master