#include "wind_pk.h"



	
enum rates_t {      /*  ESA rates data types  */
	RATES_INVALID,
	RATES_EH,
	RATES_EL,
	RATES_PH,
	RATES_PL_1,
	RATES_PL_2,
	RATES_PL_SUM,
	RATES_PL_DIF
};




typedef struct {
	int type;
	int nrg_units;
	int flux_units;
	int x_error;
	int y_error;
} rates_format;

typedef struct {
   /*  INPUT:   */
	rates_format fmt;  /* units etc. */
   /*  OUTPUT   */
	double time;
	double delta_t;        /* typically 3 or 6 seconds */
	double min_nrg[14];    /* limits */
	double max_nrg[14];    /* limits */
	double flux[14];
	int es;         /* value 0-176 specifying the sweep number */
} rates_14;


typedef struct {
   /*  INPUT:   */
	rates_format fmt;  /* units etc. */
   /*  OUTPUT:   */
	double time;
	double delta_t;        /* typically 3 or 6 seconds */
	double min_nrg[30];    /* limits */
	double max_nrg[30];    /* limits */
	double flux[30];   /* flux   */
} rates_30;




/******* function prototypes:   ******/


/* Gets next rates (for each analyzer) with a time greater   */
/* than BUT NOT EQUAL to time */
/* returns 0 if unsuccessful */
/* returns 1 if successful */
int get_next_pesal_rates(double time, rates_14 *spec);
int get_next_pesah_rates(double time, rates_30 *spec);

/* Gets next EESA LOW rates with a time greater than BUT NOT EQUAL to time */
/* returns 0 if unsuccessful */
/* returns 1 if successful */
int get_next_eesal_rates(double time, rates_30 *spec);

/* Gets next EESA HIGH rates with a time greater than BUT NOT EQUAL to time */
/* returns 0 if unsuccessful */
/* returns 1 if successful */
int get_next_eesah_rates(double time, rates_30 *spec);



/*  returns the number of pesa (low or high) rates between time t1 and t2  */
/*  If t2 is greater than the time of the last packet sample then the number */
/*  is estimated.   */
int number_of_pesa_rates_samples(double t1,double t2);


/*  returns the number of eesa (low or high) rates between time t1 and t2  */
/*  If t2 is greater than the time of the last packet sample then the number */
/*  is estimated.   */
int number_of_eesa_rates_samples(double t1,double t2);


/******  function prototypes   These are not general use functions:  *****/


extract_eh_rates(packet *pk,rates_30 *spec);
extract_el_rates(packet *pk,rates_30 *spec);
extract_ph_rates(packet *pk,rates_30 *spec);
extract_pl_rates(packet *pk,rates_14 *spec);


/*  Printing routines from spec_prt.c */


int print_eesa_rates(packet *pk);
int print_pesa_rates(packet *pk);

int print_eesah_rates(packet *pk);
int print_eesal_rates(packet *pk);
int print_pesah_rates(packet *pk);
int print_pesal_rates(packet *pk);