#ifndef RQSTRINGS_H
#define RQSTRINGS_H

#include <windows.h>
#include <stdio.h>
#include <io.h>

#include "RQInternal.h"

char RQ_SystemFPGAString[] = "SystemSubsystem" ;
char RQ_SamplingFPGAString[] = "SamplingSubsystem" ;
char RQ_PeripheralFPGAString[] = "PeripheralSubsystem" ;

char RQ_GateString[] = "Gates" ;
char RQ_GateIdentifierPrefixString[] = "Gate" ;
char RQ_TCGString[] = "TCG" ;
char RQ_TCGIndexPrefixString[] = "TCG" ;
char RQ_NumberOfTCGValuesString[] = "NumberOfValues" ;
char RQ_PingPongString[] = "PingPong" ;
char RQ_PingPongElementPrefixString[] = "PP" ;
char RQ_CurvedGateString[] = "CurvedGate" ;
char RQ_CurvedGateElementPrefixString[] = "CG" ;

char RQ_SystemIOBank0String[] = "SystemIOBank0" ;
char RQ_SystemDDR0String[] = "SystemDDR0" ;
char RQ_SystemIOBank1String[] = "SystemIOBank1" ;
char RQ_SystemDDR1String[] = "SystemDDR1" ;
char RQ_SystemFirmwareRevisionString[] = "SystemFirmwareRevision" ;
char RQ_SampleFrequencyString[] = "SampleFrequency" ;
char RQ_RectifierModeString[] = "RectifierMode" ;
char RQ_StartDelayString[] = "StartDelay" ;
char RQ_NumberOfSamplesString[] = "NumberOfSamples" ;
char RQ_DropNumberOfSamplesString[] = "DropNumberOfSamples" ;
char RQ_SampleStorageModeString[] = "SampleStorageMode" ;
char RQ_TCGTriggerEventString[] = "TCGTriggerEvent" ;
char RQ_TCGEnableString[] = "TCGEnable" ;
char RQ_CScanBaseSRAMAddressString[] = "CScanBaseSRAMAddress" ;
char RQ_ScanStorageOptionsString[] = "ScanStorageOptions" ;
char RQ_NumberOfBScansPerBankString[] = "NumberOfBScansPerBank" ;
char RQ_NumberOfAScansPerBScanString[] = "NumberOfAScansPerBScan" ;
char RQ_SamplingFirmwareRevisionString[] = "SamplingFirmwareRevision" ;
char RQ_SamplingFirmwareVersionString[] = "SamplingFirmwareVersion" ;
char RQ_InputCouplingString[] = "InputCoupling" ;
char RQ_InputImpedanceString[] = "InputImpedance" ;
char RQ_AnalogueInputString[] = "AnalogueInput" ;
char RQ_AnalogueInputRangeString[] = "AnalogueInputRange" ;
char RQ_AToDOutputPortFormatString[] = "AToDOutputPortFormat" ;
char RQ_AToDOutputDataFormatString[] = "AToDOutputDataFormat" ;
char RQ_AToDInputVoltageRangeString[] = "AToDIutputVoltageRange" ;
char RQ_AToDVrefInputCharacteristicsString[] = "AToDVrefInputCharacteristics" ;
char RQ_DDSKEYString[] = "DDSKEY" ;
char RQ_DDSFSKString[] = "DDSFSK" ;
char RQ_CalibrationVoltageString[] = "CalibrationVoltage" ;
char RQ_AuxInputString[] = "AuxInput" ;
char RQ_TriggerSelectString[] = "TriggerSelect" ;
char RQ_TransducerPulseWidthString[] = "TransducerPulseWidth" ;
char RQ_NumberOfPeriodsBetweenAScanTriggersString[] = "NumberOfPeriodsBetweenAScanTriggers" ;
char RQ_NumberOfOversamplesString[] = "NumberOfOversamples" ;
char RQ_SensorArrayNumberOfElementsString[] = "SensorArrayNumberOfElements" ;
char RQ_SensorArrayApertureSizeString[] = "SensorArrayApertureSize" ;
char RQ_SensorArrayEnableBScanModeString[] = "SensorArrayEnableBScanMode" ;
char RQ_SensorArrayDisableAperturePositionWrites[] = "SensorArrayDisableAperturePositionWrites" ;
char RQ_SensorArrayDisableApertureDelayWrites[] = "SensorArrayDisableApertureDelayWrites" ;
char RQ_NumberOfEncoderClicksPerBScanString[] = "NumberOfEncoderClicksPerBScan" ;
char RQ_EncoderSelectString[] = "EncoderSelect" ;
char RQ_PeripheralIOBank0String[] = "PeripheralIOBank0" ;
char RQ_PeripheralDDR0String[] = "PeripheralDDR0" ;
char RQ_PeripheralFirmwareRevisionString[] = "PeripheralFirmwareRevision" ;
char RQ_PeripheralFirmwareVersionString[] = "PeripheralFirmwareVersion" ;

char RQ_GateStartString[] = "Start" ;
char RQ_GateEndString[] = "End" ;
char RQ_GateThresholdString[] = "Threshold" ;
char RQ_GateTriggerString[] = "TriggerGate" ;
char RQ_GateThresholdPolarityString[] = "ThresholdPolarity" ;
char RQ_GateTriggerModeString[] = "TriggerMode" ;
char RQ_GateDistanceMetricString[] = "DistanceMetric" ;
char RQ_GateEnableString[] = "Enabled" ;
char RQ_GateAmplitudePeakSelectString[] = "AmplitudePeakSelect" ;
char RQ_GateDistancePeakSelectString[] = "DistancePeakSelect" ;

// NOTE RQDefaultStrings, RQdefIntValues and RQdefaultEnum need to be kept in step
char RQdef_DSPversionString[] = "RQdef_DSPversion";
char RQdef_PERversionString[] = "RQdef_PERversion";
char RQdef_RepetitionRateString[] = "RQdef_RepetitionRate";
char RQdef_AnalogueInputRangeString[] = "RQdef_AnalogueInputRange";
char RQdef_FileLogLevelString[] = "RQdef_FileLogLevel";
char RQdef_AppLogLevelString[] = "RQdef_AppLogLevel";
char RQdef_DebuggerLogLevelString[] = "RQdef_DebuggerLogLevel";
char RQdef_DCOffsetString[] = "RQdef_DCOffset";
char RQdef_ApertureSizeString[] = "RQdef_ApertureSize";
char RQdef_PeripheralRegisterString[] = "RQdef_PeripheralRegister";
char RQdef_DiagnosticsFilenameString[] = "RQdef_DiagnosticsFilename";
char RQdef_GainTweakMinus20String[] = "RQdef_GainTweakMinus20";
char RQdef_GainTweakMinus40String[] = "RQdef_GainTweakMinus40";
char RQdef_GainTweakPlus20String[] = "RQdef_GainTweakPlus20";
char RQdef_SonatestSerialMuxString[] = "RQdef_SonatestSerialMux";
char RQdef_SonatestSerialMuxGain1String[] = "RQdef_SonatestSerialMuxGain1";
char RQdef_SonatestSerialMuxGain2String[] = "RQdef_SonatestSerialMuxGain2";
char RQdef_SonatestSerialMuxGain3String[] = "RQdef_SonatestSerialMuxGain3";
char RQdef_SonatestSerialMuxGain4String[] = "RQdef_SonatestSerialMuxGain4";
char RQdef_SonatestSerialMuxGain5String[] = "RQdef_SonatestSerialMuxGain5";
char RQdef_SonatestSerialMuxGain6String[] = "RQdef_SonatestSerialMuxGain6";
char RQdef_SonatestSerialMuxGain7String[] = "RQdef_SonatestSerialMuxGain7";
char RQdef_SonatestSerialMuxGain8String[] = "RQdef_SonatestSerialMuxGain8";
char RQdef_SonatestSerialMuxFilter1String[] = "RQdef_SonatestSerialMuxFilter1";
char RQdef_SonatestSerialMuxFilter2String[] = "RQdef_SonatestSerialMuxFilter2";
char RQdef_SonatestSerialMuxFilter3String[] = "RQdef_SonatestSerialMuxFilter3";
char RQdef_SonatestSerialMuxFilter4String[] = "RQdef_SonatestSerialMuxFilter4";
char RQdef_SonatestSerialMuxFilter5String[] = "RQdef_SonatestSerialMuxFilter5";
char RQdef_SonatestSerialMuxFilter6String[] = "RQdef_SonatestSerialMuxFilter6";
char RQdef_SonatestSerialMuxFilter7String[] = "RQdef_SonatestSerialMuxFilter7";
char RQdef_SonatestSerialMuxFilter8String[] = "RQdef_SonatestSerialMuxFilter8";
char RQdef_SonatestSerialMuxVoltageClampString[] = "RQdef_SonatestSerialMuxVoltageClamp";

char *RQDefaultStrings[RQdef_numberOfvalues] =
{
	RQdef_DSPversionString,
	RQdef_PERversionString,
	RQdef_RepetitionRateString,
	RQdef_AnalogueInputRangeString,
	RQdef_FileLogLevelString,
	RQdef_AppLogLevelString,
	RQdef_DebuggerLogLevelString,
	RQdef_DCOffsetString,
	RQdef_ApertureSizeString,
	RQdef_PeripheralRegisterString,
	RQdef_DiagnosticsFilenameString,
	RQdef_GainTweakMinus20String,
	RQdef_GainTweakMinus40String,
	RQdef_GainTweakPlus20String,
	RQdef_SonatestSerialMuxString,
	RQdef_SonatestSerialMuxGain1String,
	RQdef_SonatestSerialMuxGain2String,
	RQdef_SonatestSerialMuxGain3String,
	RQdef_SonatestSerialMuxGain4String,
	RQdef_SonatestSerialMuxGain5String,
	RQdef_SonatestSerialMuxGain6String,
	RQdef_SonatestSerialMuxGain7String,
	RQdef_SonatestSerialMuxGain8String,
	RQdef_SonatestSerialMuxFilter1String,
	RQdef_SonatestSerialMuxFilter2String,
	RQdef_SonatestSerialMuxFilter3String,
	RQdef_SonatestSerialMuxFilter4String,
	RQdef_SonatestSerialMuxFilter5String,
	RQdef_SonatestSerialMuxFilter6String,
	RQdef_SonatestSerialMuxFilter7String,
	RQdef_SonatestSerialMuxFilter8String,
	RQdef_SonatestSerialMuxVoltageClampString,

};

#define NOTanINT 0
// default integer values - for clarity use NOTanINT where the setting type is not integer
int RQdefIntValues[RQdef_numberOfvalues] =
{
	0x228, // DSP version
	0x21f, // PER version
	5000, // repetition rate
	999, // Analogue input range. 999 means use the default according to whether sequenced or non sequenced
	0, // File log level none
	8, // App log level debug - everything
	4, // Debugger log level Err 
	1, // DC Offset
	(int)RQ_AS8, // aperture size
	0x0010e08a, // peripheral register initial value
	NOTanINT, // diagnostics filename
	0, // gain tweak for -20dB coarse gain setting
	0, // gain tweak for -40dB coarse gain setting
	0, // gain tweak for +20dB coarse gain setting
	0, // External Mux
	21, // Sonatest External Mux Gain for channel 1
	22, // channel 2
	23, // channel 3
	24, // channel 4
	25, // channel 5
	26, // channel 6
	27, // channel 7
	28, // channel 8
	1, // Sonatest External Mux Filter for channel 1
	1, // channel 2
	1, // channel 3
	1, // channel 4
	1, // channel 5
	1, // channel 6
	1, // channel 7
	1, // channel 8
	500, // Voltage clamp
};

// default string values - use NULL where the setting type is not a string
char * RQdefStringValues[RQdef_numberOfvalues] =
{
	NULL, // DSP version
	NULL, // PER version
	NULL, // repetition rate
	NULL, // input voltage range
	NULL, // file log level - 0 is no log messages
	NULL, // app log level
	NULL, // debugger log level
	NULL, // DC Offset
	NULL, // aperture size
	NULL, // peripheral register initial value
	"RQ_Diag.txt",
	NULL, // gain tweak for -20dB coarse gain setting
	NULL, // gain tweak for -40dB coarse gain setting
	NULL, // gain tweak for +20dB coarse gain setting
};

#endif
