Files
TowerOptoSifAndSpectral/othersoft/shuttercali/source_rlx/sensor/TCPServer.h

302 lines
6.0 KiB
C

#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