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

#ifndef BLINKER_SERCFG_H
#define BLINKER_SERCFG_H

#include <string>

namespace Blinker {

/// serial port configuration
class SerCfg
{
public:
  /// parity type
  enum Parity {
    ParityNone, ///< no parity
    ParityEven, ///< even number of bits set to 1
    ParityOdd ///< odd number of bits set to 1
  };

public:
  /// constructor
  SerCfg();

public:
  /**
   * @brief parse from string format
   * @param[in] str string format
   * @return if parsing was successful
   */
  bool fromStr(const std::string &str);

  /**
   * @brief convert to string format
   * @return string format
   */
  std::string toStr() const;

public:
  unsigned int m_baud;   ///< baudrate (meaning bits per second)
  unsigned int m_data;   ///< number of data bits
  Parity       m_parity; ///< parity type
  unsigned int m_stop;   ///< number of stop bits
}; // class SerCfg

} // namespace Blinker

#endif // #ifndef BLINKER_SERCFG_H

