#ifndef _SERIALPARAMETERS_H
#define _SERIALPARAMETERS_H

#include "ourTypes.h"

/*
CLASS 
SerialDevice

DESCRIPTION
Serial device parameters. Includes methods to parse and print
parameters in "standard" format:
  
  portName,baud,dataBits,parity,stopBits

AUTHOR
Tom O'Reilly

*/
class SerialParameters {

public:

  enum Parity {
    NoParity,
    EvenParity, 
    OddParity
  };

  /////////////////////////////////////////////////////////////////////////
  // Constructor
  // [input] argc: Number of command-line arguments
  // [input] argv: Command line arguments
  // [input] defaultPortName: Default serial device port name
  SerialParameters(int *argc, char **argv, const char *defaultPortName = 0);

  ~SerialParameters();

  const char *portName;
  unsigned baud;
  unsigned dataBits;
  Parity parity;
  unsigned stopBits;

  /////////////////////////////////////////////////////////////////////////
  // Parameters in "standard" string format
  // "portName,baud,dataBits,parity,stopBits"
  const char *string();

protected:

  /////////////////////////////////////////////////////////////////////////
  // Parse serial parameter string in format 
  // "portName,baud,dataBits,parity,stopBits"
  void parseString(const char *string);

  /////////////////////////////////////////////////////////////////////////
  // Decode parity from token
  Parity getParity(char *token);

  // Parameters in "standard" string format
  // "portName,baud,dataBits,parity,stopBits"
  char _string[100];

};

#endif
