changed to boost optional instead of errorevent

This commit is contained in:
Jonas Zeunert
2018-12-07 14:34:10 +01:00
parent b4cc8b7194
commit dc0dfd732a
8 changed files with 19 additions and 44 deletions

View File

@@ -8,8 +8,10 @@
#ifndef SRC_INPUT_IINPUTDRIVER_H_
#define SRC_INPUT_IINPUTDRIVER_H_
#include "input/IEventHandler.h"
#include <memory>
#include <boost/optional.hpp>
#include "input/IEventHandler.h"
namespace flippR_driver
{
@@ -23,7 +25,7 @@ namespace input
virtual void unregister_event_handler(IEventHandler *handler) = 0;
virtual std::shared_ptr<Event> get_event(std::string name) = 0;
virtual boost::optional<std::shared_ptr<Event>> get_event(std::string name) = 0;
};
}
}

View File

@@ -42,9 +42,9 @@ private:
void check_inputs();
private:
std::unique_ptr<IInputGPIOInterface> input_gpio_interface;
const std::unique_ptr<IInputGPIOInterface> input_gpio_interface;
std::vector<std::shared_ptr<DistributingEvent>> events;
const std::vector<std::shared_ptr<DistributingEvent>> events;
bool is_running;
std::thread detect_thread;

View File

@@ -27,7 +27,7 @@ private:
void distribute();
public:
std::chrono::milliseconds bounce_time;
const std::chrono::milliseconds bounce_time;
private:
enum ActivationState
@@ -36,7 +36,8 @@ private:
FIRST_ACTIVATED,
ACTIVATED
};
std::shared_ptr<IEventNotifier> event_notifier;
const std::shared_ptr<IEventNotifier> event_notifier;
ActivationState activation_state;

View File

@@ -1,25 +0,0 @@
/*
* ErrorEvent.h
*
* Created on: Aug 8, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
*/
#ifndef SRC_INPUT_ERROREVENT_HPP_
#define SRC_INPUT_ERROREVENT_HPP_
#include "input/Event.h"
namespace flippR_driver {
namespace input {
class ErrorEvent : public Event
{
public:
ErrorEvent() : Event(0, 0, "ERROR") {}
};
}
}
#endif

View File

@@ -7,7 +7,6 @@
#include "InputDriver.h"
#include "utility/config.h"
#include "ErrorEvent.hpp"
namespace flippR_driver
{
@@ -31,18 +30,17 @@ void InputDriver::unregister_event_handler(IEventHandler *handler)
this->event_notifier->unregister_event_handler(handler);
}
std::shared_ptr<Event> InputDriver::get_event(std::string name)
boost::optional<std::shared_ptr<Event>> InputDriver::get_event(std::string name)
{
std::shared_ptr<Event> event(new ErrorEvent());
try
{
event = this->events.at(name);
return this->events.at(name);
}
catch(std::out_of_range &e)
{
CLOG_N_TIMES(1, WARNING, OUTPUT_LOGGER) << "Did not found event " << name << " please check config file!";
}
return event;
return boost::optional<std::shared_ptr<Event>>{};
}
}

View File

@@ -7,10 +7,11 @@
#ifndef SRC_INPUT_INPUTDRIVER_H_
#define SRC_INPUT_INPUTDRIVER_H_
#include "input/IInputDriver.h"
#include <map>
#include "IEventNotifier.h"
#include "input/IInputDriver.h"
#include "IDetector.h"
namespace flippR_driver
@@ -27,13 +28,13 @@ public:
void register_event_handler(IEventHandler* handler) override;
void unregister_event_handler(IEventHandler* handler) override;
std::shared_ptr<Event> get_event(std::string name) override;
boost::optional<std::shared_ptr<Event>> get_event(std::string name) override;
private:
std::shared_ptr<IEventNotifier> event_notifier;
std::unique_ptr<IDetector> detector;
const std::shared_ptr<IEventNotifier> event_notifier;
const std::unique_ptr<IDetector> detector;
std::map<std::string, std::shared_ptr<Event>> events;
const std::map<std::string, std::shared_ptr<Event>> events;
};
}

View File

@@ -53,8 +53,6 @@ void InputGPIOInterface::write_col(char data) const
write_pin(this->pins.at("col_address_C"), data & 0b100);
}
void InputGPIOInterface::init_pins() const
{
initialize_output_pin(this->pins.at("col_address_A"));

View File

@@ -18,8 +18,8 @@
#include "input/IEventNotifier.h"
#include "input/DistributingEvent.h"
#include "input/Detector.h"
#include "input/IInputGPIOInterface.h"
#include "utility/LoggerFactory.h"
#include "utility/InputGPIOInterface.h"
using namespace fakeit;