/*
 * Flipper.h
 *
 *  Created on: May 6, 2019
 *      Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
 */

#ifndef _SRC_FLIPPR_CODE_FLIPPER_H
#define _SRC_FLIPPR_CODE_FLIPPER_H

#include "output/items/Flipper.h"
#include "output/items/detail/DriverBoardItem.h"

namespace flippR_driver
{
namespace output
{
namespace items
{
namespace detail
{

class Flipper : public detail::Item, public items::Flipper, public detail::DriverBoardItem
{
public:
  Flipper(std::shared_ptr<DriverBoardPinController> pin_controller, const uint8_t & address, const uint8_t & pin_base, const std::string & name);
  ~Flipper() override;

  void activate() override;
  void deactivate() override;
  bool is_activated() override;

private:
  const std::shared_ptr<DriverBoardPinController> pin_controller;
  bool activated;

};

}
}
}
}


#endif //FLIPPR_CODE_FLIPPER_H
