view Allan.h @ 98:99cbe2b57530

Allow up to 16 messages to pile up in the communication between threads
author Daniele Nicolodi <daniele.nicolodi@obspm.fr>
date Tue, 26 Mar 2013 18:20:12 +0100
parents d9aae7d7f2c6
children bd28161e5ac2
line wrap: on
line source

#include "YLCStuff.h"

#define ALLAN_MAXPOINTSNUMBER 13			// can compute Allan dev for tau from 1s to 2^13 s =8192 s ~ 2h15' < 10000 s


// Allan_Data : the data of crypto class Allan

typedef struct {
	PanelHandle AllanPanel ;					// le handle sur le graphe
	void (*OnClosePanel)(int);					// pointer on a function to execute when the panel is closed (argument is the panel Handle)	
	double AllanVar[ALLAN_MAXPOINTSNUMBER] ;	// the values of variances for each tau = 2^n.tau_0 (with n from 0 to ALLAN_MAXPOINTSNUMBER)
	double FirstMean[ALLAN_MAXPOINTSNUMBER] ;   // the means of the first block of 2^n data for which averaging was completed
	double LastMean[ALLAN_MAXPOINTSNUMBER] ;    // the means of the last block of 2^n data for which averaging was completed
	int BlocksNumber[ALLAN_MAXPOINTSNUMBER] ;	// the number of blocks of 2^n data (averaged) used for computing AVAR(2^ntau)       
	double CurrentAverage[ALLAN_MAXPOINTSNUMBER] ;  // the sum of the last p data points retrieved (with p<2^2n). used for averaging as soon as p=2^n
	int NbCurrentAverage[ALLAN_MAXPOINTSNUMBER] ;	// number of data point being summed in CurrentAverage (from 0 up to 2^n)
	double Drift, Mean ; // the drift rate of the data (in Hz/s), and the mean value (in Hz) : only usefull for dedrifting...
	} Allan_Data ;


// The functions of crypto class Allan

int Allan_InitPanel(Allan_Data * Instance, char * title, double Normalizer, void (*OnCloseFunc)(int)) ;
int Allan_ClosePanel(Allan_Data * Instance) ;
int Allan_AddFrequency(Allan_Data * Instance, double Freq) ;

int Allan_Reset(Allan_Data * Instance) ;
int Allan_AddFrequency(Allan_Data * Instance, double Freq);
int Allan_Display(Allan_Data * Instance, int ColorPt, int ColorErrorBar);
int Allan_DisplayErrorBars(Allan_Data * Instance, int color);