working on item rewrite

This commit is contained in:
Jonas Zeunert
2019-05-06 18:03:50 +02:00
parent a780eea620
commit af00a67428
27 changed files with 113 additions and 176 deletions

View File

@@ -5,10 +5,6 @@
#ifndef FLIPPR_DRIVER_IDRIVERBOARDITEM_H
#define FLIPPR_DRIVER_IDRIVERBOARDITEM_H
#include "output/items/detail/Item.h"
#include <output/DriverBoardPinController.h>
#include <cstdint>
namespace flippR_driver
@@ -18,16 +14,12 @@ namespace output
namespace items
{
class DriverBoardItem : public detail::Item
class DriverBoardItem
{
public:
DriverBoardItem(std::shared_ptr<DriverBoardPinController> pin_controller, uint8_t address, std::string name) :
pin_controller(std::move(pin_controller)), detail::Item(address, std::move(name)) {}
virtual ~DriverBoardItem() = default;
~DriverBoardItem() override = default;
protected:
const std::shared_ptr<DriverBoardPinController> pin_controller;
virtual uint8_t get_address() const = 0;
};
}

View File

@@ -1,34 +0,0 @@
/*
* ICabinetItem.h
*
* Created on: Aug 7, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
*/
#ifndef _SRC_OUTPUT_ICABINETITEM_H_
#define _SRC_OUTPUT_ICABINETITEM_H_
#include <cstdint>
#include <string>
namespace flippR_driver
{
namespace output
{
namespace items
{
class Item
{
public:
virtual ~Item() = default;
virtual uint8_t get_address() const = 0;
virtual std::string get_name() const = 0;
};
}
}
}
#endif

View File

@@ -0,0 +1,16 @@
//
// Created by rhetenor on 5/6/19.
//
#include "DriverBoardItem.h"
using namespace flippR_driver::output;
items::detail::DriverBoardItem::DriverBoardItem(std::shared_ptr<OutputPinController> pin_controller, const uint8_t address) :
pin_controller(std::move(pin_controller)), address(address)
{}
uint8_t items::detail::DriverBoardItem::get_address() const
{
return this->address;
}

View File

@@ -0,0 +1,43 @@
//
// Created by rhetenor on 5/6/19.
//
#ifndef FLIPPR_DRIVER_DRIVERBOARDITEM_H
#define FLIPPR_DRIVER_DRIVERBOARDITEM_H
#include "output/items/DriverBoardItem.h"
#include "output/OutputPinController.h"
#include <memory>
namespace flippR_driver
{
namespace output
{
namespace items
{
namespace detail
{
class DriverBoardItem : public output::items::DriverBoardItem
{
public:
DriverBoardItem(std::shared_ptr<OutputPinController> pin_controller, const uint8_t address);
~DriverBoardItem() override = default;
uint8_t get_address() const override;
protected:
const uint8_t address;
const std::shared_ptr<OutputPinController> pin_controller;
};
}
}
}
}
#endif //FLIPPR_DRIVER_DRIVERBOARDITEM_H

View File

@@ -25,14 +25,12 @@ namespace detail
class Item : public items::Item
{
public:
Item(uint8_t address, std::string name);
Item(std::string name);
~Item() override = default;
uint8_t get_address() const override;
std::string get_name() const override;
protected:
uint8_t address;
const std::string name;
};

View File

@@ -7,6 +7,7 @@
#include "Lamp.h"
#include <output/DriverBoardPinController.h>
#include "utility/config.h"
namespace flippR_driver
@@ -19,7 +20,7 @@ namespace detail
{
Lamp::Lamp(std::shared_ptr<DriverBoardPinController> pin_controller, uint8_t address, std::string name) :
DriverBoardItem(std::move(pin_controller), address, std::move(name)), activated(false)
detail::Item(std::move(name)), DriverBoardItem(std::move(pin_controller), address), activated(false)
{
CLOG(INFO, OUTPUT_LOGGER) << "Created lamp " << name << " with address " << address;
}
@@ -27,13 +28,13 @@ DriverBoardItem(std::move(pin_controller), address, std::move(name)), activated(
void Lamp::activate()
{
CLOG(INFO, OUTPUT_LOGGER) << "Activate lamp " << name;
pin_controller->activate(*this);
this->pin_controller->activate(*this);
}
void Lamp::deactivate()
{
CLOG(INFO, OUTPUT_LOGGER) << "Deactivate lamp " << name;
pin_controller->deactivate(*this);
this->pin_controller->deactivate(*this);
}
bool Lamp::is_activated()

View File

@@ -9,18 +9,22 @@
#define _SRC_OUTPUT_LAMP_H_
#include "output/items/Lamp.h"
#include "output/items/DriverBoardItem.h"
#include "output/items/detail/Item.h"
#include "output/items/detail/DriverBoardItem.h"
namespace flippR_driver
{
namespace output
{
class DriverBoardPinController;
namespace items
{
namespace detail
{
class Lamp : public DriverBoardItem, public items::Lamp
class Lamp : public detail::DriverBoardItem, public detail::Item, public items::Lamp
{
public:
Lamp(std::shared_ptr<DriverBoardPinController> pin_controller, uint8_t address, std::string name);

View File

@@ -19,8 +19,7 @@ namespace detail
{
Solenoid::Solenoid(std::shared_ptr<DriverBoardPinController> pin_controller, uint8_t address, std::string name, std::chrono::milliseconds deactivation_time)
:
DriverBoardItem(std::move(pin_controller), address, std::move(name)), deactivation_time(deactivation_time)
: detail::Item(std::move(name)), DriverBoardItem(std::move(pin_controller), address), deactivation_time(deactivation_time)
{
CLOG(INFO, OUTPUT_LOGGER) << "Created solenoid " << name << " with address " << address;
}

View File

@@ -9,7 +9,10 @@
#define _SRC_OUTPUT_SOLENOID_H_
#include "output/items/Solenoid.h"
#include "output/items/DriverBoardItem.h"
#include "output/items/detail/Item.h"
#include "output/items/detail/DriverBoardItem.h"
#include "output/DriverBoardPinController.h"
#include <future>
#include <chrono>
@@ -23,7 +26,7 @@ namespace items
namespace detail
{
class Solenoid : public DriverBoardItem, public items::Solenoid
class Solenoid : public DriverBoardItem, public detail::Item, public items::Solenoid
{
public:
Solenoid(std::shared_ptr<DriverBoardPinController> pin_controller, u_int8_t address, std::string name, std::chrono::milliseconds deactivation_time);

View File

@@ -22,7 +22,7 @@ namespace detail
Sound::Sound(std::shared_ptr<SoundBoardPinController> pin_controller, uint8_t address, std::string name, std::chrono::milliseconds deactivation_time, u_int id)
:
pin_controller(std::move(pin_controller)), Item(address, std::move(name)), deactivation_time(deactivation_time), id(id)
pin_controller(std::move(pin_controller)), detail::Item(std::move(name)), DriverBoardItem(pin_controller, address), deactivation_time(deactivation_time), id(id)
{
CLOG(INFO, OUTPUT_LOGGER) << "Created sound " << id << " with name " << name << " and address " << address;
}

View File

@@ -10,6 +10,7 @@
#include "output/items/Sound.h"
#include "Item.h"
#include "DriverBoardItem.h"
#include <memory>
#include <string>
@@ -28,7 +29,7 @@ namespace items
namespace detail
{
class Sound : public Item, public items::Sound
class Sound : public detail::Item, public items::Sound, public detail::DriverBoardItem
{
public:
u_int id;