/*
 * Sound.cpp
 *
 *  Created on: Aug 2, 2018
 *      Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
 */

#include "Sound.h"

#include <output/SoundBoardPinController.h>

#include "utility/config.h"

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

Sound::Sound(std::shared_ptr<SoundBoardPinController> pin_controller, const uint8_t & address, const std::string & name, const u_int id)
: detail::Item(std::move(name)), DriverBoardItem(pin_controller, address), pin_controller(std::move(pin_controller)), id(id)
{
  CLOG(DEBUG, OUTPUT_LOGGER) << "Created sound " << id << " \"" << name << "\" with address " << int(address);
}

void Sound::play()
{
  CLOG(DEBUG, OUTPUT_LOGGER) << "Play Sound "  << id << " " << name;
  this->play_task = std::async(std::launch::async, &Sound::playTask, this);
}

void Sound::playTask()
{
  pin_controller->activate(*this);
}

}
}
} /* namespace output */
}
