#include <stdio.h>
#include "WhoiUam.h"
#include "Syslog.h"
#include "SerialParameters.h"
#include "SerialDevice.h"
#include "System.h"
#include "AcousticMsgHandler.h"

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

  SerialDevice *device = 0;

  WhoiUam *modem = 0;
  AcousticMsgHandler *handler = 0;

  try {
    SerialParameters params(&argc, argv);
    device = new SerialDevice(&params);
    handler = new AcousticMsgHandler(UAM_MaxMessageBytes);
    modem = new WhoiUam("acousticModem", device, handler, 
			AcousticTokenDelimiter);
    modem->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 modem;
  delete device;
  delete handler;

  return 0;
}
