/*-----------------------------------------------------------------------*
  PROGRAM: eagle picher battery wrapper

  DESCRIPTION: Main file for metrabyte driver binary

  AUTHOR: Hans Thomas 

  *-----------------------------------------------------------------------*/
#include <sys/sched.h>
#include <errno.h>
#include "Trigger.h"
#include "System.h"
#include "Syslog.h"
#include "SerialParameters.h"

int main( int argc, char **argv )
{
  Trigger *trig= 0;
  SerialDevice *device = 0;
  Boolean exitFlag = True;

  SerialParameters serialParams(&argc, argv);
  while (argc) {
	if (argc-- && !strcmp(*argv++, "-noexit")) {
		exitFlag = False;
    	} 
  }

  if (exitFlag) printf("exitFlag is True\n"); else printf("exitFlag is False\n");

  struct sched_param schedParam;
  schedParam.sched_priority = CriticalDriverPriority;
  if (sched_setscheduler(0, SCHED_FIFO, &schedParam) < 0) {
	perror("sched_setscheduler():");
	exit(-1);
  }
 
  try {
    SerialDevice *device = new SerialDevice(&serialParams); 
    trig = new Trigger(device);  // hard-code to 3 for now
    trig->run();
  }
  catch (Exception e) {
    Syslog::write("trigger - %s\n", e.msg);
  }
  catch (...) {
    Syslog::write("trigger - Exception caught\n");
  }
  
  delete device;
  delete trig;

  return 0;

}
