/****************************************************************************/
/* Copyright (c) 2000 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : PolledSerialDriver.cc                                         */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 02/07/2000                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#include <string.h>
#include <signal.h>
#include "PolledSerialDriver.h"
#include "Exception.h"

PolledSerialDriver::PolledSerialDriver(const char *name,
				       SerialDevice *serialDevice,
				       unsigned pollPeriod)
{
  _name = strdup(name);
  _serialDevice = serialDevice;
  _pollPeriod = pollPeriod;

  if (!timeoutDivisor) {
    throw Exception("PolledSerialDriver::PolledSerialDriver() - "
		    "bad timeout divisor");
  }

  // Compute poll timeout. Right now just use arbitrary divisor!
  _pollTimeout = _pollPeriod / 5;
  signal(SIGHUP, SIG_IGN);
}


PolledSerialDriver::~PolledSerialDriver()
{
  free((void *)_name);
}


const char *PolledSerialDriver::name()
{
  return _name;
}


unsigned PolledSerialDriver::pollPeriod()
{
  return _pollPeriod;
}


unsigned PolledSerialDriver::pollTimeout()
{
  return _pollTimeout;
}


void PolledSerialDriver::setPollTimeout(timeout)
{
  _pollTimeout = timeout;
}
