/****************************************************************************/
/* Copyright (c) 2011 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : _sysDataDriver.cc                                             */
/* Author   : Henthorn                                                      */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 01/18/2011                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#include "SysData.h"
#include "Syslog.h"
#include "System.h"

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

  int freq = 2;  // default frequency
  int c;
  SysData *sd = new SysData();

  while ( (c = getopt(argc, argv, "vcmf:n:")) != EOF) {
    switch(c) {
    case 'n':
      sd->monitorProcess(optarg);
      break;

    case 'f':
      freq = atoi(optarg);
      Syslog::write("sysDataDriver: Frequency is %d", freq);
      break;

    case 'v':
      sd->verbose(True);
      break;

    case 'c':
      sd->cpu_usage(True);
      break;

    case 'm':
      sd->mem_usage(True);
      break;

    default:
      Syslog::write("sysDataDriver - unknown option: %c", c);
      break;
    }
  }

  if (freq < 1 || freq > 20) {
    Syslog::write("sysDataDriver - invalid frequency spcified: %d. Expecting value from 1 to 20", freq);
    freq = 2;
  }
  Syslog::write("sysDataDriver - frequency = %d", freq);
  sd->frequency(freq);

  try 
  {
    sd->run();
  }
  catch (Exception e) 
  {
    Syslog::write("sysDataDriver:: - caught Exception: %s\n", e.msg);
  }
  catch (...) 
  {
    Syslog::write("sysDataDriver:: - caught exception!\n");
  }

  return 0;
}


