SimpleTest.c 2.33 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 <DD.h>
#include <time.h>
#include <sys/time.h>

/*-------------------------*/
#define VI "ace:imf:all\0"
#define PAR0 "IMF\0"
#define PAR1 "Time\0"
#define NVARS 2
#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 ParName1[20] = PAR1;
   char ParName0[20] = PAR0;
   char *ParNames[NVARS] = {(char *)ParName0, (char *)ParName1};
   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_GetMultiData(ID,NVARS, (char **)ParNames,TimeInt, &data, 1);
      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;
}