#ifndef _TCPSERVER_H_ #define _TCPSERVER_H_ // // Return Header values. // #define H_NO_ERROR (100) #define H_COLLECT_ERROR (200) #define H_COLLECT_NOT_LOADED (300) #define H_INIT_ERROR (400) #define H_FLASH_ERROR (500) #define H_RESET_ERROR (600) #define H_INTERPOLATE_ERROR (700) #define H_OPTIMIZE_ERROR (800) #define H_INSTRUMENT_CONTROL_ERROR (900) // // Return error codes. // #define NO_ERROR_ (0) #define NOT_READY (-1) #define NO_INDEX_MARKS (-2) #define TOO_MANY_ZEROS (-3) #define SCANSIZE_ERROR (-4) // -5 unused #define COMMAND_ERROR (-6) #define INI_FULL (-7) #define MISSING_PARAMETER (-8) // -9 unused - now -20, -21, -22 #define VNIR_TIMEOUT (-10) #define SWIR_TIMEOUT (-11) #define VNIR_NOT_READY (-12) #define SWIR1_NOT_READY (-13) #define SWIR2_NOT_READY (-14) #define VNIR_OPT_ERROR (-15) #define SWIR1_OPT_ERROR (-16) #define SWIR2_OPT_ERROR (-17) #define ABORT_ERROR (-18) #define PARAM_ERROR (-19) #define VNIR_INTERP_ERROR (-20) #define SWIR1_INTERP_ERROR (-21) #define SWIR2_INTERP_ERROR (-22) // // // #define MAX_PARAMETERS (200) // // Detector Index Value // #define SWIR1 (0) #define SWIR2 (1) #define VNIR (2) // // Instrument Type values // #define V_INSTRUMENT_TYPE (1) // VNIR Only #define DUAL_VNIR_INSTRUMENT_TYPE (2) // Dual VNIR #define S1_INSTRUMENT_TYPE (4) // SWIR1 Only #define VS1_INSTRUMENT_TYPE (5) // VNIR and SWIR1 #define S2_INSTRUMENT_TYPE (8) // SWIR2 ONly #define VS2_INSTRUMENT_TYPE (9) // VNIR and SWIR2 #define S1S2_INSTRUMENT_TYPE (12) // SWIR1 and SWIR2 #define FR_INSTRUMENT_TYPE (13) // VNIR and SWIR1 and SWIR2 // // Instrument Control values // #define IC_IT (0) #define IC_GAIN (1) #define IC_OFFSET (2) #define IC_SHUTTER (3) #define IC_TRIGGER (4) // // Union used to swap word to make double value // union dv { double d; unsigned long l[sizeof(double) / sizeof(long)]; unsigned char c[sizeof(double)]; }; // // Vnir Header section // struct Vnir_Header { int IT; int scans; int max_channel; int min_channel; int saturation; int shutter; int drift; int dark_subtracted; int reserved[8]; }; // // Swir Header section // struct Swir_Header { int tec_status; int tec_current; int max_channel; int min_channel; int saturation; int A_Scans; int B_Scans; int dark_current; int gain; int offset; int scansize1; int scansize2; int dark_subtracted; int reserved[3]; }; // // return Spectrum Header // struct SpectrumHeader { int Header; int errbyte; int sample_count; int trigger; int voltage; int current; int temperature; int motor_current; int instrument_hours; int instrument_minutes; int instrument_type; int AB; int reserved[4]; Vnir_Header v_header; Swir_Header s1_header; Swir_Header s2_header; }; // // Acquire structure to return for Full Range Spectrometers // struct FRSpecStruct { SpectrumHeader FRHeader; union { float f; int i; }SpecBuffer[2151]; }; // // Acquire structure to return for Vnir Spectrometers // struct VSpecStruct { SpectrumHeader VHeader; union { float f; int i; }SpecBuffer[701]; }; // // Acquire structure to return for Swir1 Swir2 Spectrometers // struct S1S2SpecStruct { SpectrumHeader S1S2Header; union { float f; int i; }SpecBuffer[1502]; }; // // Acquire structure to return for Swir1 Spectrometers // struct S1SpecStruct { SpectrumHeader S1SpectrumHeader; union { float f; int i; }SpecBuffer[801]; }; // // Acquire structure to return for Swir2 Spectrometers // struct S2SpecStruct { SpectrumHeader S2Header; union { float f; int i; }SpecBuffer[701]; }; // // Acquire structure to return for Vnir/Swir1 Spectrometers // struct VS1SpecStruct { SpectrumHeader VS1Header; union { float f; int i; }SpecBuffer[1502]; }; // // Acquire structure to return for Vnir/Swir2 Spectrometers // struct VS2SpecStruct { SpectrumHeader VS2Header; union { float f; int i; }SpecBuffer[1402]; }; // // Ini struct for the flash // struct InitStruct { int Header; //header type used in TCP transfer. int errbyte; //error code char name[MAX_PARAMETERS][30]; //space for 200 entries with 30 character names double value[MAX_PARAMETERS]; //corresponding data values for the 200 entries int count; //The number of used entries int verify; //the checksum }; // // Version structure for V Command // struct VersionStruct { int Header; //header type used in TCP transfer. int errbyte; //error code char version[30]; //30 character version string double value; //version value int type; // Type of instrument 1-Vnir, 4-Swir1, 5-Vnir/Swir1 }; // 8-Siwr2, 9-Vnir/Swir2 // 12-Swir1/Swir2, 13-Vnir/Swir1/Swir2 // // Optimize structure for OPT command // struct OptimizeStruct { int Header; //header type used in TCP transfer. int errbyte; //error code int itime; //optimized integration time int gain[2]; //optimized gain for 2 SWIRs int offset[2]; //optimized offset for 2 SWIRs }; // // Param structure for INIT command // struct ParamStruct { int Header; //header type used in TCP transfer. int errbyte; //error code char name[30]; //30 character name double value; //corresponding data values int count; //number of entries used }; // // Instrument Control Structure for IC command // struct InstrumentControlStruct { int Header; //header type used in TCP transfer. int errbyte; //error code int detector; //detector value - IC_IT,IC_GAIN,IC_OFFSET,IC_SHUTTER int cmdType; //detector command int value; //command value }; // // Header Struct for Restore Command // struct HeaderStruct { int Header; // Header value used in TCP transfer int errbyte; // error code }; struct FRInterpSpecStruct { SpectrumHeader FRSpectrumHeader; //256 bytes (64 words) //int arr[761]; float SpecBuffer[2151]; }; #endif