SimpleTest.c 2.46 KB
/*=============================================================
 * SimpleTest.c
 * Simple test of some critical server behaviour
 * 11 Apr 2009, V.1.0, Fedorov
 *=============================================================*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <sys/time.h>

#include <DD.h>

/*-------------------------*/
#define VI "ace:imf:all\0"
#define PAR "IMF\0"
#define ATTR "MinSampling\0"
#define START "2008000000000000\0"
#define TI    "0000010000000000\0"
/*-------------------------*/

int main()
{
   char ViName[100] = VI;
   char StartTime[17] = START;
   char TimeInt[17] = TI;
   char ParName[100] = PAR;
   char AttrName[100] = ATTR;
   double RealTime;
   DD_data_t *data;
    
   int ID, error;
   struct timeval start, end;
   long   secs, usecs;
   
   gettimeofday(&start,NULL);
   ID = DD_SetVariable(ViName);
   printf("ID = %d\n",ID);
   if(ID < 0)
   {
     error = DD_Close(99);
     exit(0);
   }
   
/*
 * Get Sampling Time info (secs)
 * attribute names : MinSampling (constant sampling)
 * attribute names : MinSampling & MaxSampling  (variable sampling)
 */

   error = DD_GetInform(ID, AttrName, &data);
   if(error < 0)
   {
     error = DD_Close(ID);
     exit(0);
   }
   printf(" sampling %lf\n", *(double *)data->Variables[0]);

/*
 * RealTime - double time pointer points to after SetTime
 */
   error = DD_SetTimeInfo(ID, StartTime, &RealTime);
   printf("DD_SetTimeInfo returns = %d\n",error);
   if(error < 0)
   {
     error = DD_Close(ID);
     exit(0);
   }
   printf("time set as %lf\n",RealTime);


   do
   {
      error = DD_GetData(ID,"Time",TimeInt, &data);
      printf("DD_GetData returns = %d\n",error);
      if(error < 0)
      {
      error = DD_Close(ID);
      exit(0);
      }
      if(error == MOREDELAY)
      {
         sleep(2);
         error = MOREDATA;
      }
   }
   while(error == MOREDATA);
   
   do
   {
      error = DD_GetData(ID,ParName,TimeInt, &data);
      printf("DD_GetData returns = %d\n",error);
      if(error < 0)
      {
      error = DD_Close(ID);
      exit(0);
      }
      if(error == MOREDELAY)
      {
         sleep(2);
         error = MOREDATA;
      }
   }
   while(error == MOREDATA);
   
   /*---------- Close VI and reurn -----------------------*/
   error = DD_Close(ID);

   gettimeofday(&end,NULL);
   secs = end.tv_sec - start.tv_sec;
   usecs = end.tv_usec - start.tv_usec;

   printf("Time elapsed: msecs %f\n",(float)(secs*1000000 + usecs)/1000.);

   return 1;
}