#include "PolledDriverTask.h"

PolledDriverTask::PolledDriverTask(const char *name, 
				   SerialDeviceDriver *driver, 
				   int period)
  : PeriodicTask(name)
{
  _driver = driver;
  _driver->setContainer(this);

  addPeriodicCallback(period, 
		      (CallbackMethod )PolledDriverTask::callback);

  DeviceIF::Status newState;

  if (_driver->startup() != DeviceIF::Ok) {
    throw Exception("PolledDriverTask::PolledDriverTask() - "
		    "device->startup() failed");
  }

}


PolledDriverTask::~PolledDriverTask()
{
}



void PolledDriverTask::callback()
{
  // Request data packet
  _driver->requestData();

  // Read and process data packet
  _driver->acquire();
}
