Moved all devices to separate library and added 'Factory' for device creation.

Former-commit-id: 26cab1b85b00406240689ad9c1018f0307028fe4
This commit is contained in:
T. van der Zwan
2013-12-17 18:50:15 +00:00
parent 9bfaffe93b
commit b63753f5dc
37 changed files with 240 additions and 175 deletions

View File

@@ -0,0 +1,35 @@
#pragma once
// STL incldues
#include <vector>
// Utility includes
#include <utils/ColorRgb.h>
///
/// Interface (pure virtual base class) for LedDevices.
///
class LedDevice
{
public:
///
/// Empty virtual destructor for pure virtual base class
///
virtual ~LedDevice()
{
// empty
}
///
/// Writes the RGB-Color values to the leds.
///
/// @param[in] ledValues The RGB-color per led
///
/// @return Zero on success else negative
///
virtual int write(const std::vector<ColorRgb>& ledValues) = 0;
/// Switch the leds off
virtual int switchOff() = 0;
};

View File

@@ -0,0 +1,27 @@
#pragma once
// Json includes
#include <json/json.h>
// Leddevice includes
#include <leddevice/LedDevice.h>
///
/// The LedDeviceFactory is responsible for constructing 'LedDevices'
///
class LedDeviceFactory
{
public:
///
/// Constructs a LedDevice based on the given configuration
///
/// @param deviceConfig The configuration of the led-device
///
/// @return The constructed LedDevice or nullptr if configuration is invalid. The ownership of
/// the constructed LedDevice is tranferred to the caller
///
static LedDevice * construct(const Json::Value & deviceConfig);
};