#include "BiolumeDriver.h"
#include "System.h"
#include "Syslog.h"
#include "SerialParameters.h"

int main( int argc, char **argv )
{
  // Set task priority
  if (System::setTaskPriority(NonCriticalDriverPriority) == -1)
    return 1;

  Boolean verbose = False;
  for (int i = 1; i < argc; i++) {
    if (!strcmp(argv[i], "-v")) 
      verbose = True;
  }

  SerialDevice *device = 0;

  BiolumeDriver *driver = 0;

  try {
    SerialParameters params(&argc, argv);
    device = new SerialDevice(&params);
    driver = new BiolumeDriver(device, verbose);
    driver->run();
  }
  catch (Exception e) {
    Syslog::write("%s - caught Exception: %s\n", argv[0], e.msg);
  }
  catch (...) {
    Syslog::write("%s - caught unknown exception\n", argv[0]);
  }

  delete driver;
  delete device;

  return 0;
}
