/****************************************************************************/
/* Copyright (c) 2003 MBARI                                                 */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
/* Summary  :                                                               */
/* Filename : fastcatTest.cc                                                */
/* Author   :                                                               */
/* Project  :                                                               */
/* Version  : 1.0                                                           */
/* Created  : 12/17/2003                                                    */
/* Modified :                                                               */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/****************************************************************************/
#include <stdlib.h>
#include <conio.h>
#include <process.h>
#include <signal.h>

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

int main( int argc, char **argv )
{
     TimeIF::TimeSpec sampleTime;
     unsigned short v[8];
     AdamIF *adam;
     pid_t _server;
     
     try { 
       SerialParameters serialParams(&argc, argv);
       char argString[100];
       sprintf(argString, "-serial %s", serialParams.string());
       if ((_server = System::spawn("adam6017Server", argString)) == -1) {
	 Syslog::write("System::spawn(adam6017Server) failed\n");
       }
     }
     catch ( ... )
       {
	 Syslog::write("adam6017Test -- caught exception on spawning of "
		       "adam6017Server\n");
       }
     
     try {
       adam = new AdamIF("AdamIFServer");
     }
     catch (Exception e) 
     {
	 Syslog::write("adam6017Test -- Caught exception on creation of AdamIF:%s\n",
		       e.msg);
	 exit( -1 );
     }
     
     
     printf("Press any key to exit\n");
     
     while (True) {

       if (adam->ready())
       {
         if(adam->get(&sampleTime, &v[0], &v[1], &v[2], &v[3],
                               &v[4], &v[5], &v[6], &v[7])== DeviceIF::Ok) 
         {
          printf("SampleTime: %lf\n", (double)(sampleTime.seconds + sampleTime.nanoSeconds/1.0e9));
          for (int i = 0; i < 8; i++) {
		printf("v[%d]: %f\n", i,
		       (float)(v[i]*(10.0/65535.0)) + -5.0);
          } 
	 }
	 else 
         {
	   printf("adam6017->get returned error\n");
         }
       }
       sleep(1);
     }

     delete adam;
     kill(0, SIGTERM);

     return 0;
}
