view Allan.h @ 45:b47b97cfd050

Fix output frequency read back in DDS Fox driver The FTW registry value was read back wrong due to an integer overflow in the conversion from bytes string to double. This should fix the "jumps" seen in the application of the frequency dedrifting.
author Daniele Nicolodi <daniele.nicolodi@obspm.fr>
date Wed, 10 Oct 2012 12:14:01 +0200
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);