Mercurial > hg > fxanalyse
view fake-data-provider.c @ 258:5296f3bcd160
Implement DDS clients reconnect
On network send() failures try to reconnect to the server before
returning an error. This allows to restart the network servers
controlling the DDSes wiothout having to restart the clients.
author | Daniele Nicolodi <daniele.nicolodi@obspm.fr> |
---|---|
date | Tue, 16 Jun 2015 14:31:35 +0200 |
parents | 8a94f1913b4e |
children | a40c8af8b028 |
line wrap: on
line source
/* FXAnalise fake data provider */ #include <analysis.h> #include <userint.h> #include <utility.h> #include "future.h" #include "data-provider.h" #define PERIOD 1.0 #define INCREMENT 0.1 #define NOISE 0.25 int CVICALLBACK FakeDataProvider (void *functionData) { int i, mainThreadId; double mark; struct event event = { 0, }; double f[NCHAN] = { 55000000.0, 10000.0, 10000.0, 275000.0 }; double noise[NCHAN]; /* get main thread id to post messages to it */ mainThreadId = CmtGetMainThreadID(); while (acquiring) { mark = Timer(); /* update data */ gettimeofday(&event.time, NULL); f[0] += INCREMENT; for (i = 0; i < NCHAN; i++) event.data[i] = f[i]; #ifdef NOISE /* add noise */ GaussNoise(NCHAN, NOISE, -1, noise); for (i = 0; i < NCHAN; i++) event.data[i] += noise[i]; #endif /* push data into the data queue */ CmtWriteTSQData(dataQueue, &event, 1, TSQ_INFINITE_TIMEOUT, 0); /* wait till next second */ SyncWait(mark, PERIOD); } return 0; }