#include "wind_pk.h" enum spectra_t { /* ESA spectra data types */ SPECTRA_INVALID, SPECTRA_EH, SPECTRA_EL, SPECTRA_PH, SPECTRA_PL_1, SPECTRA_PL_2, SPECTRA_PL_SUM, SPECTRA_PL_DIF }; typedef struct { int type; int nrg_units; int flux_units; int x_error; int y_error; } spectra_format; typedef struct { /* INPUT: */ spectra_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 */ } spectra_14; typedef struct { /* INPUT: */ spectra_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 */ uint2 spin; uint2 auto_step; /* auto_step number (if non-zero) */ } spectra_30; /******* function prototypes: ******/ /* Gets next spectra (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_spectra(packet_selector *pks, spectra_14 *spec); int get_next_pesah_spectra(packet_selector *pks, spectra_30 *spec); /* Gets next EESA LOW spectra with a time greater than BUT NOT EQUAL to time */ /* returns 0 if unsuccessful */ /* returns 1 if successful */ int get_next_eesal_spectra(packet_selector *pks, spectra_30 *spec); /* Gets next EESA HIGH spectra with a time greater than BUT NOT EQUAL to time */ /* returns 0 if unsuccessful */ /* returns 1 if successful */ int get_next_eesah_spectra(packet_selector *pks, spectra_30 *spec); /* returns the number of pesa (low or high) spectra 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_spectra_samples(double t1,double t2); /* returns the number of eesa (low or high) spectra 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_spectra_samples(double t1,double t2); /****** function prototypes These are not general use functions: *****/ int extract_eh_spectra(packet *pk,spectra_30 *spec); int extract_el_spectra(packet *pk,spectra_30 *spec); int extract_ph_spectra(packet *pk,spectra_30 *spec); int extract_pl_spectra(packet *pk,spectra_14 *spec); /* Printing routines from spec_prt.c */ int print_eesa_spectra(packet *pk); int print_pesa_spectra(packet *pk); /*int print_eesah_spectra(packet *pk); */ /*int print_eesal_spectra(packet *pk); */ /*int print_pesah_spectra(packet *pk); */ /*int print_pesal_spectra(packet *pk); */