/* Blinker
   Copyright 2011-2019 Stefan Schuermans <stefan@blinkenarea.org>
   Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
   a blinkenarea.org project */

#include <sstream>
#include <string>

#include "Protocol.h"

namespace Blinker {

/// constructor
Protocol::Protocol():
  m_proto(BlinkenProtoNone)
{
}

/**
 * @brief parse from string format
 * @param[in] str string format
 * @return if parsing was successful
 */
bool Protocol::fromStr(const std::string &str)
{
  if (str == "blp") {
    m_proto = BlinkenProtoBlp;
    return true;
  }
  else if (str == "eblp") {
    m_proto = BlinkenProtoEblp;
    return true;
  }
  else if (str == "mcuf") {
    m_proto = BlinkenProtoMcuf;
    return true;
  }
  else
    return false;
}

/**
 * @brief convert to string format
 * @return string format
 */
std::string Protocol::toStr() const
{
  switch (m_proto) {
    case BlinkenProtoBlp: return "blp";
    case BlinkenProtoEblp: return "eblp";
    case BlinkenProtoMcuf: return "mcuf";
    default: return "";
  }
}

} // namespace Blinker

