[
	uuid(AC957F30-5073-405F-9C1C-C59DB7F0CCD4),
	version(1.1),
	helpstring("STD TSF 1.0 Type Library")
]
library STDTSF
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");
	import "STDBSC.idl";
	//helper to forward declare interfaces and provide typedefs
#define INTDECL( i ) interface I##i; typedef I##i* i
	INTDECL( TSF );
	//custom attribute to represent default value of this property
#define GUID_DEFAULTVALUE A6A997E7-94F8-4be2-8366-1814FF70EAFE
	//TSF (Base Class)
	[
		object,
		uuid(AC957F31-5073-405F-9C1C-C59DB7F0CCD4),
		dual,
		helpstring("Test Signal Framework Interface"),
		pointer_default(unique)
	]
	interface ITSF : ISignalFunction



	{
		enum {TSF_BASE=0};
	};
	//AC_SIGNAL
	[
		object,
		uuid(CA4F7FD8-D05E-11D6-860D-00010214C4D2),
		dual,
		helpstring("IAC_SIGNAL Interface"),
		pointer_default(unique)
	]
	interface IAC_SIGNAL : ITSF
	{
		enum {AC_SIGNAL_BASE=(TSF_BASE+256)};
		[propget, id(AC_SIGNAL_BASE+1), helpstring("AC Signal amplitude")]
		HRESULT ac_ampl([out, retval] Physical *pVal);
		[propputref, id(AC_SIGNAL_BASE+1), helpstring("AC Signal amplitude")]
		HRESULT ac_ampl([in] Physical newVal);
		[propget, id(AC_SIGNAL_BASE+2), helpstring("DC Offset")]
		HRESULT dc_offset([out, retval, custom(GUID_DEFAULTVALUE, "0")] Physical *pVal);
		[propputref, id(AC_SIGNAL_BASE+2), helpstring("DC Offset")]
		HRESULT dc_offset([in, custom(GUID_DEFAULTVALUE, "0")] Physical newVal);
		[propget, id(AC_SIGNAL_BASE+3), helpstring("AC Signal frequency")]
		HRESULT freq([out, retval] Frequency *pVal);
		[propputref, id(AC_SIGNAL_BASE+3), helpstring("AC Signal frequency")]
		HRESULT freq([in] Frequency newVal);
		[propget, id(AC_SIGNAL_BASE+4), helpstring("AC Signal phase angle")]
		HRESULT phase([out, retval, custom(GUID_DEFAULTVALUE, "0 rad")] PlaneAngle *pVal);
		[propputref, id(AC_SIGNAL_BASE+4), helpstring("AC Signal phase angle")]
		HRESULT phase([in, custom(GUID_DEFAULTVALUE, "0 rad")] PlaneAngle newVal);
	};
	[
		uuid(CA4F7FD8-D05E-11D6-860D-00010214C4D0),
		helpstring("AC_SIGNAL class"),
		noncreatable
	]
	coclass AC_SIGNAL
	{
		[default] interface IAC_SIGNAL;
	};
	//AM_SIGNAL
	[
		object,
		uuid(D7FAB36D-D075-11D6-860D-00010214C4D2),
		dual,
		helpstring("IAM_SIGNAL Interface"),
		pointer_default(unique)
	]
	interface IAM_SIGNAL : ITSF
	{
		enum {AM_SIGNAL_BASE=(TSF_BASE+256)};
		[propget, id(AM_SIGNAL_BASE+1), helpstring("Carrier amplitude")]
		HRESULT car_ampl([out, retval] Voltage *pVal);
		[propputref, id(AM_SIGNAL_BASE+1), helpstring("Carrier amplitude")]
		HRESULT car_ampl([in] Voltage newVal);
		[propget, id(AM_SIGNAL_BASE+2), helpstring("Carrier frequency")]
		HRESULT car_freq([out, retval] Frequency *pVal);
		[propputref, id(AM_SIGNAL_BASE+2), helpstring("Carrier frequency")]
		HRESULT car_freq([in] Frequency newVal);
		[propget, id(AM_SIGNAL_BASE+3), helpstring("Modulation frequency")]
		HRESULT mod_freq([out, retval] Frequency *pVal);
		[propputref, id(AM_SIGNAL_BASE+3), helpstring("Modulation frequency")]
		HRESULT mod_freq([in] Frequency newVal);
		[propget, id(AM_SIGNAL_BASE+4), helpstring("Depth of modulation")]
		HRESULT mod_depth([out, retval] Ratio *pVal);
		[propputref, id(AM_SIGNAL_BASE+4), helpstring("Depth of modulation")]
		HRESULT mod_depth([in] Ratio newVal);
		[propget, id(AM_SIGNAL_BASE+5), helpstring("Modulation amplitude")]
		HRESULT mod_ampl([out, retval] Voltage *pVal);
		[propputref, id(AM_SIGNAL_BASE+5), helpstring("Modulation amplitude")]
		HRESULT mod_ampl([in] Voltage newVal);
	};



	[
		uuid(D7FAB36D-D075-11D6-860D-00010214C4D0),
		helpstring("AM_SIGNAL class"),
		noncreatable
	]
	coclass AM_SIGNAL
	{
		[default] interface IAM_SIGNAL;
	};
	//DC_SIGNAL
	[
		object,
		uuid(B598AC87-86F1-44C4-A395-C0AD107FE85B),
		dual,
		helpstring("IDC_SIGNAL Interface"),
		pointer_default(unique)
	]
	interface IDC_SIGNAL : ITSF
	{
		enum {DC_SIGNAL_BASE=(TSF_BASE+256)};
		[propget, id(DC_SIGNAL_BASE+1), helpstring("DC Level")]
		HRESULT dc_ampl([out, retval] Physical *pVal);
		[propputref, id(DC_SIGNAL_BASE+1), helpstring("DC Level")]
		HRESULT dc_ampl([in] Physical newVal);
		[propget, id(DC_SIGNAL_BASE+2), helpstring("AC Component amplitude")]
		HRESULT ac_ampl([out, retval, custom(GUID_DEFAULTVALUE, "0")] Physical *pVal);
		[propputref, id(DC_SIGNAL_BASE+2), helpstring("AC Component amplitude")]
		HRESULT ac_ampl([in, custom(GUID_DEFAULTVALUE, "0")] Physical newVal);
		[propget, id(DC_SIGNAL_BASE+3), helpstring("AC Component frequency")]
		HRESULT freq([out, retval, custom(GUID_DEFAULTVALUE, "0 Hz")] Frequency *pVal);
		[propputref, id(DC_SIGNAL_BASE+3), helpstring("AC Component frequency")]
		HRESULT freq([in, custom(GUID_DEFAULTVALUE, "0 Hz")] Frequency newVal);
		[propget, id(DC_SIGNAL_BASE+4), helpstring("AC Component phase angle")]
		HRESULT phase([out, retval, custom(GUID_DEFAULTVALUE, "0 rad")] PlaneAngle *pVal);
		[propputref, id(DC_SIGNAL_BASE+4), helpstring("AC Component phase angle")]
		HRESULT phase([in, custom(GUID_DEFAULTVALUE, "0 rad")] PlaneAngle newVal);
	};
	[
		uuid(B598AC87-86F1-44C4-A395-C0AD107FE850),
		helpstring("DC_SIGNAL class"),
		noncreatable
	]
	coclass DC_SIGNAL
	{
		[default] interface IDC_SIGNAL;
	};
	//DIGITAL_PARALLEL
	[
		object,
		uuid(A6B62348-B0BE-4900-95B1-FF513B8A6B17),
		dual,
		helpstring("IDIGITAL_PARALLEL Interface"),
		pointer_default(unique)
	]
	interface IDIGITAL_PARALLEL : ITSF
	{
		enum {DIGITAL_PARALLEL_BASE=(TSF_BASE+256)};
		[propget, id(DIGITAL_PARALLEL_BASE+1), helpstring("Data Value")]
		HRESULT data_value([out, retval] SAFEARRAY(BSTR) *pVal);
		[propputref, id(DIGITAL_PARALLEL_BASE+1), helpstring("Data Value")]
		HRESULT data_value([in] SAFEARRAY(BSTR) newVal);
		[propget, id(DIGITAL_PARALLEL_BASE+2), helpstring("Clock period")]
		HRESULT clock_period([out, retval] Time *pVal);
		[propputref, id(DIGITAL_PARALLEL_BASE+2), helpstring("Clock period")]
		HRESULT clock_period([in] Time newVal);
		[propget, id(DIGITAL_PARALLEL_BASE+3), helpstring("Logic One level")]
		HRESULT logic_one_value([out, retval] Voltage *pVal);
		[propputref, id(DIGITAL_PARALLEL_BASE+3), helpstring("Logic One level")]
		HRESULT logic_one_value([in] Voltage newVal);
		[propget, id(DIGITAL_PARALLEL_BASE+4), helpstring("Logic Zero level")]
		HRESULT logic_zero_value([out, retval] Voltage *pVal);
		[propputref, id(DIGITAL_PARALLEL_BASE+4), helpstring("Logic Zero level")]
		HRESULT logic_zero_value([in] Voltage newVal);
	};
	[
		uuid(A6B62348-B0BE-4900-95B1-FF513B8A6B10),
		helpstring("DIGITAL_PARALLEL class"),
		noncreatable
	]
	coclass DIGITAL_PARALLEL
	{
		[default] interface IDIGITAL_PARALLEL;
	};
	//DIGITAL_SERIAL
	[
		object,
		uuid(3BEF21EF-C09C-4190-962B-24D90C301B17),
		dual,
		helpstring("IDIGITAL_SERIAL Interface"),
		pointer_default(unique)
	]
	interface IDIGITAL_SERIAL : ITSF
	{
		enum {DIGITAL_SERIAL_BASE=(TSF_BASE+256)};
		[propget, id(DIGITAL_SERIAL_BASE+1), helpstring("Data Value")]
		HRESULT data_value([out, retval] BSTR *pVal);
		[propput, id(DIGITAL_SERIAL_BASE+1), helpstring("Data Value")]
		HRESULT data_value([in] BSTR newVal);
		[propget, id(DIGITAL_SERIAL_BASE+2), helpstring("Clock period. Zero denotes infinite time for static digital data.")]
		HRESULT clock_period([out, retval] Time *pVal);
		[propputref, id(DIGITAL_SERIAL_BASE+2), helpstring("Clock period. Zero denotes infinite time for static digital data.")]
		HRESULT clock_period([in] Time newVal);
		[propget, id(DIGITAL_SERIAL_BASE+3), helpstring("Logic One level")]
		HRESULT logic_one_value([out, retval] Voltage *pVal);
		[propputref, id(DIGITAL_SERIAL_BASE+3), helpstring("Logic One level")]
		HRESULT logic_one_value([in] Voltage newVal);
		[propget, id(DIGITAL_SERIAL_BASE+4), helpstring("Logic Zero level")]
		HRESULT logic_zero_value([out, retval] Voltage *pVal);
		[propputref, id(DIGITAL_SERIAL_BASE+4), helpstring("Logic Zero level")]
		HRESULT logic_zero_value([in] Voltage newVal);
	};
	[
		uuid(3BEF21EF-C09C-4190-962B-24D90C301B10),
		helpstring("DIGITAL_SERIAL class"),
		noncreatable
	]
	coclass DIGITAL_SERIAL
	{
		[default] interface IDIGITAL_SERIAL;
	};
	//DIGITAL_TEST
	[
		object,
		uuid(F3CBE53B-F898-4159-9A57-31EAED41E4EA),
		dual,
		helpstring("IDIGITAL_TEST Interface"),
		pointer_default(unique)
	]
	interface IDIGITAL_TEST : ITSF
	{
		enum {DIGITAL_TEST_BASE=(TSF_BASE+256)};
		[propget, id(DIGITAL_TEST_BASE+1), helpstring("Clock Period")]
		HRESULT dt_Period([out, retval] Time *pVal);
		[propput, id(DIGITAL_TEST_BASE+1), helpstring("Clock Period")]
		HRESULT dt_Period([in] Time newVal);
		[propget, id(DIGITAL_TEST_BASE+2), helpstring("Logic One level for Stim")]
		HRESULT dt_Stim_H_value([out, retval] Voltage *pVal);
		[propputref, id(DIGITAL_TEST_BASE+2), helpstring("Logic One level for Stim")]
		HRESULT dt_Stim_H_value([in] Voltage newVal);
		[propget, id(DIGITAL_TEST_BASE+3), helpstring("Logic Zero level for Stim")]
		HRESULT dt_Stim_L_value([out, retval] Voltage *pVal);
		[propputref, id(DIGITAL_TEST_BASE+3), helpstring("Logic Zero level for Stim")]
		HRESULT dt_Stim_L_value([in] Voltage newVal);
		[propget, id(DIGITAL_TEST_BASE+4), helpstring("Logic One level for Resp")]
		HRESULT dt_Resp_H_value([out, retval] Voltage *pVal);
		[propputref, id(DIGITAL_TEST_BASE+4), helpstring("Logic One level for Resp")]
		HRESULT dt_Resp_H_value([in] Voltage newVal);
				[propget, id(DIGITAL_TEST_BASE+5), helpstring("Logic Zero level for Resp")]
		HRESULT dt_Resp_L_value([out, retval] Voltage *pVal);
		[propputref, id(DIGITAL_TEST_BASE+5), helpstring("Logic Zero level for Resp")]
		HRESULT dt_Resp_L_value([in] Voltage newVal);
		[propget, id(DIGITAL_TEST_BASE+6), helpstring("Data Value")]
		HRESULT dt_Data([out, retval] BSTR *pVal);
		[propputref, id(DIGITAL_TEST_BASE+6), helpstring("Data Value")]
		HRESULT dt_Data([in] BSTR newVal);
	};
	[
		uuid(F3CBE53B-F898-4159-9A57-31EAED41E4E0),
		helpstring("DIGITAL_TEST class"),
		noncreatable
	]
	coclass DIGITAL_TEST
	{
		[default] interface IDIGITAL_TEST;
	};
		//DME_INTERROGATION
	[
		object,
		uuid(61911490-F7E1-4E43-A2DA-32BB8C29FAFC),
		dual,
		helpstring("IDME_INTERROGATION Interface"),
		pointer_default(unique)
	]
	interface IDME_INTERROGATION : ITSF
	{
		enum {DME_INTERROGATION_BASE=(TSF_BASE+256)};
		[propget, id(DME_INTERROGATION_BASE+1), helpstring("Carrier Amplitude")]
		HRESULT car_ampl([out, retval] Voltage *pVal);
		[propputref, id(DME_INTERROGATION_BASE+1), helpstring("Carrier Amplitude")]
		HRESULT car_ampl([in] Voltage newVal);
		[propget, id(DME_INTERROGATION_BASE+2), helpstring("Interrogator Frequency")]
		HRESULT int_freq([out, retval, custom(GUID_DEFAULTVALUE, "1025 MHz")] Frequency *pVal);
		[propputref, id(DME_INTERROGATION_BASE+2), helpstring("Interrogator Frequency")]
		HRESULT int_freq([in, custom(GUID_DEFAULTVALUE, "1025 MHz")] Frequency newVal);
		[propget, id(DME_INTERROGATION_BASE+3), helpstring("Interrogation Rate")]
		HRESULT int_rate([out, retval, custom(GUID_DEFAULTVALUE, "27Hz")] Frequency *pVal);
		[propputref, id(DME_INTERROGATION_BASE+3), helpstring("Interrogation Rate")]
		HRESULT int_rate([in, custom(GUID_DEFAULTVALUE, "27Hz")] Frequency newVal);
	};
	[
		uuid(61911490-F7E1-4E43-A2DA-32BB8C29FAF0),
		helpstring("DME_INTERROGATION class"),
		noncreatable
	]
	coclass DME_INTERROGATION
	{
		[default] interface IDME_INTERROGATION;
	};
	//DME_RESPONSE
	[
		object,
		uuid(49DEA8E3-CD12-4A5E-9055-0DE92E731505),
		dual,
		helpstring("IDME_RESPONSE Interface"),
		pointer_default(unique)
	]
	interface IDME_RESPONSE : ITSF
	{
		enum {DME_RESPONSE_BASE=(TSF_BASE+256)};
		[propget, id(DME_RESPONSE_BASE+1), helpstring("Carrier Amplitude")]
		HRESULT car_ampl([out, retval] Voltage *pVal);
		[propputref, id(DME_RESPONSE_BASE+1), helpstring("Carrier Amplitude")]
		HRESULT car_ampl([in] Voltage newVal);
		[propget, id(DME_RESPONSE_BASE+2), helpstring("Transponder Frequency")]
		HRESULT resp_freq([out, retval, custom(GUID_DEFAULTVALUE, "962MHz")] Frequency *pVal);
		[propputref, id(DME_RESPONSE_BASE+2), helpstring("Transponder Frequency")]
		HRESULT resp_freq([in, custom(GUID_DEFAULTVALUE, "962MHz")] Frequency newVal);
		[propget, id(DME_RESPONSE_BASE+3), helpstring("Slant Range")]
		HRESULT range([out, retval, custom(GUID_DEFAULTVALUE, "0 m")] Distance *pVal);
		[propputref, id(DME_RESPONSE_BASE+3), helpstring("Slant Range")]
		HRESULT range([in, custom(GUID_DEFAULTVALUE, "0 m")] Distance newVal);
		[propget, id(DME_RESPONSE_BASE+4), helpstring("Range Rate")]
		HRESULT rate([out, retval, custom(GUID_DEFAULTVALUE, "0 m/s")] Speed *pVal);
		[propputref, id(DME_RESPONSE_BASE+4), helpstring("Range Rate")]
		HRESULT rate([in, custom(GUID_DEFAULTVALUE, "0 m/s")] Speed newVal);
		[propget, id(DME_RESPONSE_BASE+5), helpstring("Rate of Change of Range Rate")]
		HRESULT accn([out, retval, custom(GUID_DEFAULTVALUE, "0 m/s2")] Acceleration *pVal);
		[propputref, id(DME_RESPONSE_BASE+5), helpstring("Rate of Change of Range Rate")]
		HRESULT accn([in, custom(GUID_DEFAULTVALUE, "0 m/s2")] Acceleration newVal);
	};
	[
		uuid(49DEA8E3-CD12-4A5E-9055-0DE92E731500),
		helpstring("DME_RESPONSE class"),
		noncreatable
	]
	coclass DME_RESPONSE
	{
		[default] interface IDME_RESPONSE;
	};
	//FM_SIGNAL
	[
		object,
		uuid(C4DE5309-7194-45C0-9A2A-BC2FB7EE832C),
		dual,
		helpstring("IFM_SIGNAL Interface"),
		pointer_default(unique)
	]

	interface IFM_SIGNAL : ITSF
	{
		enum {FM_SIGNAL_BASE=(TSF_BASE+256)};
		[propget, id(FM_SIGNAL_BASE+1), helpstring("Carrier amplitude")]
		HRESULT car_ampl([out, retval] Physical *pVal);
		[propputref, id(FM_SIGNAL_BASE+1), helpstring("Carrier amplitude")]
		HRESULT car_ampl([in] Physical newVal);
		[propget, id(FM_SIGNAL_BASE+2), helpstring("Carrier frequency")]
		HRESULT car_freq([out, retval] Frequency *pVal);
		[propputref, id(FM_SIGNAL_BASE+2), helpstring("Carrier frequency")]
		HRESULT car_freq([in] Frequency newVal);
		[propget, id(FM_SIGNAL_BASE+3), helpstring("Frequency Deviation")]
		HRESULT freq_dev([out, retval] Frequency *pVal);
		[propputref, id(FM_SIGNAL_BASE+3), helpstring("Frequency Deviation")]
		HRESULT freq_dev([in] Frequency newVal);
		[propget, id(FM_SIGNAL_BASE+4), helpstring("Modulation frequency")]
		HRESULT mod_freq([out, retval] Frequency *pVal);
		[propputref, id(FM_SIGNAL_BASE+4), helpstring("Modulation frequency")]
		HRESULT mod_freq([in] Frequency newVal);
		[propget, id(FM_SIGNAL_BASE+5), helpstring("Modulation amplitude")]
		HRESULT mod_ampl([out, retval] Physical *pVal);
		[propputref, id(FM_SIGNAL_BASE+5), helpstring("Modulation amplitude")]
		HRESULT mod_ampl([in] Physical newVal);
	};
	[
		uuid(C4DE5309-7194-45C0-9A2A-BC2FB7EE8320),
		helpstring("FM_SIGNAL class"),
		noncreatable
	]
	coclass FM_SIGNAL
	{
		[default] interface IFM_SIGNAL;
	};
	//ILS_GLIDE_SLOPE
	[
		object,
		uuid(9A319ED0-E8B1-4F27-998F-E670CB80EEDF),
		dual,
		helpstring("IILS_GLIDE_SLOPE Interface"),
		pointer_default(unique)
	]
	interface IILS_GLIDE_SLOPE : ITSF
	{
		enum {ILS_GLIDE_SLOPE_BASE=(TSF_BASE+256)};
		[propget, id(ILS_GLIDE_SLOPE_BASE+1), helpstring("Carrier amplitude")]
		HRESULT car_ampl([out, retval, custom(GUID_DEFAULTVALUE, "2 mV")] Physical *pVal);
		[propputref, id(ILS_GLIDE_SLOPE_BASE+1), helpstring("Carrier amplitude")]
		HRESULT car_ampl([in, custom(GUID_DEFAULTVALUE, "2 mV")] Physical newVal);
		[propget, id(ILS_GLIDE_SLOPE_BASE+2), helpstring("Frequency")]
		HRESULT car_freq([out, retval, custom(GUID_DEFAULTVALUE, "328.6 MHz")] Frequency *pVal);
		[propputref, id(ILS_GLIDE_SLOPE_BASE+2), helpstring("Frequency")]
		HRESULT car_freq([in, custom(GUID_DEFAULTVALUE, "328.6 MHz")] Frequency newVal);
		[propget, id(ILS_GLIDE_SLOPE_BASE+3), helpstring("150 Hz attenuation depth")]
		HRESULT onefifty_level([out, retval, custom(GUID_DEFAULTVALUE, "1")] Ratio *pVal);
		[propputref, id(ILS_GLIDE_SLOPE_BASE+3), helpstring("150 Hz attenuation depth")]
		HRESULT onefifty_level([in, custom(GUID_DEFAULTVALUE, "1")] Ratio newVal);
		[propget, id(ILS_GLIDE_SLOPE_BASE+4), helpstring("90 Hz attenuation depth")]
		HRESULT ninety_level([out, retval, custom(GUID_DEFAULTVALUE, "1")] Ratio *pVal);
		[propputref, id(ILS_GLIDE_SLOPE_BASE+4), helpstring("90 Hz attenuation depth")]
		HRESULT ninety_level([in, custom(GUID_DEFAULTVALUE, "1")] Ratio newVal);
	};
	[
		uuid(9A319ED0-E8B1-4F27-998F-E670CB80EED0),
		helpstring("ILS_GLIDE_SLOPE class"),
		noncreatable
	]
	coclass ILS_GLIDE_SLOPE
	{
		[default] interface IILS_GLIDE_SLOPE;
	};



	//ILS_LOCALIZER
	[
		object,
		uuid(19D4E568-E533-4232-AEC2-B319D7DB0E12),
		dual,
		helpstring("IILS_LOCALIZER Interface"),
		pointer_default(unique)
	]
	interface IILS_LOCALIZER : ITSF
	{
		enum {ILS_LOCALIZER_BASE=(TSF_BASE+256)};
		[propget, id(ILS_LOCALIZER_BASE+1), helpstring("Carrier Amplitude")]
		HRESULT car_ampl([out, retval, custom(GUID_DEFAULTVALUE, "2 mW")] Physical *pVal);
		[propputref, id(ILS_LOCALIZER_BASE+1), helpstring("Carrier Amplitude")]
		HRESULT car_ampl([in, custom(GUID_DEFAULTVALUE, "2 mW")] Physical newVal);
		[propget, id(ILS_LOCALIZER_BASE+2), helpstring("Carrier frequency")]
		HRESULT car_freq([out, retval, custom(GUID_DEFAULTVALUE, "108.1 MHz")] Frequency *pVal);
		[propputref, id(ILS_LOCALIZER_BASE+2), helpstring("Carrier frequency")]
		HRESULT car_freq([in, custom(GUID_DEFAULTVALUE, "108.1 MHz")] Frequency newVal);
		[propget, id(ILS_LOCALIZER_BASE+3), helpstring("150Hz attenuation depth")]
		HRESULT onefifty_level([out, retval, custom(GUID_DEFAULTVALUE, "1")] Ratio *pVal);
		[propputref, id(ILS_LOCALIZER_BASE+3), helpstring("150Hz attenuation depth")]
		HRESULT onefifty_level([in, custom(GUID_DEFAULTVALUE, "1")] Ratio newVal);
		[propget, id(ILS_LOCALIZER_BASE+4), helpstring("90Hz attenuation depth")]
		HRESULT ninety_level([out, retval, custom(GUID_DEFAULTVALUE, "1")] Ratio *pVal);
		[propputref, id(ILS_LOCALIZER_BASE+4), helpstring("90Hz attenuation depth")]
		HRESULT ninety_level([in, custom(GUID_DEFAULTVALUE, "1")] Ratio newVal);
	};
	[
		uuid(19D4E568-E533-4232-AEC2-B319D7DB0E10),
		helpstring("ILS_LOCALIZER class"),
		noncreatable
	]
	coclass ILS_LOCALIZER
	{
		[default] interface IILS_LOCALIZER;
	};
	//ILS_MARKER
	[
		object,
		uuid(627E9A00-4B31-477F-9E57-CAB38DB31E39),
		dual,
		helpstring("IILS_MARKER Interface"),
		pointer_default(unique)
	]
	interface IILS_MARKER : ITSF
	{
		enum {ILS_MARKER_BASE=(TSF_BASE+256)};
		[propget, id(ILS_MARKER_BASE+1), helpstring("Marker Frequency")]
		HRESULT marker_freq([out, retval, custom(GUID_DEFAULTVALUE, "400Hz")] Frequency *pVal);
		[propputref, id(ILS_MARKER_BASE+1), helpstring("Marker Frequency")]
		HRESULT marker_freq([in, custom(GUID_DEFAULTVALUE, "400Hz")] Frequency newVal);
		[propget, id(ILS_MARKER_BASE+2), helpstring("Carrier Frequency")]
		HRESULT car_ampl([out, retval, custom(GUID_DEFAULTVALUE, "2mW")] Power *pVal);
		[propputref, id(ILS_MARKER_BASE+2), helpstring("Carrier Frequency")]
		HRESULT car_ampl([in, custom(GUID_DEFAULTVALUE, "2mW")] Power newVal);
	};
	[
		uuid(627E9A00-4B31-477F-9E57-CAB38DB31E30),
		helpstring("ILS_MARKER class"),
		noncreatable
	]
	coclass ILS_MARKER
	{
		[default] interface IILS_MARKER;
	};
	//PM_SIGNAL
	[
		object,
		uuid(2636CC15-81A4-43B7-8A7F-0F7CD9C5B442),
		dual,
		helpstring("IPM_SIGNAL Interface"),
		pointer_default(unique)
	]
	interface IPM_SIGNAL : ITSF
	{
		enum {PM_SIGNAL_BASE=(TSF_BASE+256)};
		[propget, id(PM_SIGNAL_BASE+1), helpstring("Carrier amplitude")]
		HRESULT car_ampl([out, retval] Voltage *pVal);
		[propputref, id(PM_SIGNAL_BASE+1), helpstring("Carrier amplitude")]
		HRESULT car_ampl([in] Voltage newVal);
		[propget, id(PM_SIGNAL_BASE+2), helpstring("Carrier frequency")]
		HRESULT car_freq([out, retval] Frequency *pVal);
		[propputref, id(PM_SIGNAL_BASE+2), helpstring("Carrier frequency")]
		HRESULT car_freq([in] Frequency newVal);
		[propget, id(PM_SIGNAL_BASE+3), helpstring("Phase Deviation")]
		HRESULT phase_dev([out, retval] PlaneAngle *pVal);
		[propputref, id(PM_SIGNAL_BASE+3), helpstring("Phase Deviation")]
		HRESULT phase_dev([in] PlaneAngle newVal);
		[propget, id(PM_SIGNAL_BASE+4), helpstring("Modulation frequency")]
		HRESULT mod_freq([out, retval] Frequency *pVal);
		[propputref, id(PM_SIGNAL_BASE+4), helpstring("Modulation frequency")]
		HRESULT mod_freq([in] Frequency newVal);
		[propget, id(PM_SIGNAL_BASE+5), helpstring("Modulation amplitude")]
		HRESULT mod_ampl([out, retval] Voltage *pVal);
		[propputref, id(PM_SIGNAL_BASE+5), helpstring("Modulation amplitude")]
		HRESULT mod_ampl([in] Voltage newVal);
	};
	[
		uuid(2636CC15-81A4-43B7-8A7F-0F7CD9C5B440),
		helpstring("PM_SIGNAL class"),
		noncreatable
	]
	coclass PM_SIGNAL
	{
		[default] interface IPM_SIGNAL;
	};
	//PULSED_AC_SIGNAL
	[
		object,
		uuid(1764E313-2284-41F7-872D-C34C9FF4B6FA),
		dual,
		helpstring("IPULSED_AC_SIGNAL Interface"),
		pointer_default(unique)
	]
	interface IPULSED_AC_SIGNAL : ITSF
	{
		enum {PULSED_AC_SIGNAL_BASE=(TSF_BASE+256)};
		[propget, id(PULSED_AC_SIGNAL_BASE+1), helpstring("AC Signal amplitude")]
		HRESULT ac_ampl([out, retval] Physical *pVal);
		[propputref, id(PULSED_AC_SIGNAL_BASE+1), helpstring("AC Signal amplitude")]
		HRESULT ac_ampl([in] Physical newVal);
		[propget, id(PULSED_AC_SIGNAL_BASE+2), helpstring("AC Signal frequency")]
		HRESULT freq([out, retval] Frequency *pVal);
		[propputref, id(PULSED_AC_SIGNAL_BASE+2), helpstring("AC Signal frequency")]
		HRESULT freq([in] Frequency newVal);
		[propget, id(PULSED_AC_SIGNAL_BASE+3), helpstring("DC offset")]
		HRESULT dc_offset([out, retval, custom(GUID_DEFAULTVALUE, "0")] Physical *pVal);
		[propputref, id(PULSED_AC_SIGNAL_BASE+3), helpstring("DC offset")]
		HRESULT dc_offset([in, custom(GUID_DEFAULTVALUE, "0")] Physical newVal);
		[propget, id(PULSED_AC_SIGNAL_BASE+4), helpstring("Initial delay")]
		HRESULT p_delay([out, retval, custom(GUID_DEFAULTVALUE, "0 s")] Time *pVal);
		[propputref, id(PULSED_AC_SIGNAL_BASE+4), helpstring("Initial delay")]
		HRESULT p_delay([in, custom(GUID_DEFAULTVALUE, "0 s")] Time newVal);
		[propget, id(PULSED_AC_SIGNAL_BASE+5), helpstring("Pulse width")]
		HRESULT p_duration([out, retval] Time *pVal);
		[propputref, id(PULSED_AC_SIGNAL_BASE+5), helpstring("Pulse width")]
		HRESULT p_duration([in] Time newVal);
		[propget, id(PULSED_AC_SIGNAL_BASE+6), helpstring("Pulse repetition frequency")]
		HRESULT prf([out, retval] Frequency *pVal);
		[propputref, id(PULSED_AC_SIGNAL_BASE+6), helpstring("Pulse repetition frequency")]
		HRESULT prf([in] Frequency newVal);
		[propget, id(PULSED_AC_SIGNAL_BASE+7), helpstring("Number of pulses")]
		HRESULT p_repetition([out, retval, custom(GUID_DEFAULTVALUE, "0")] int *pVal);
		[propput, id(PULSED_AC_SIGNAL_BASE+7), helpstring("Number of pulses")]
		HRESULT p_repetition([in, custom(GUID_DEFAULTVALUE, "0")] int newVal);
	};
	[
		uuid(1764E313-2284-41F7-872D-C34C9FF4B6F0),
		helpstring("PULSED_AC_SIGNAL class"),
		noncreatable
	]
	coclass PULSED_AC_SIGNAL
	{
		[default] interface IPULSED_AC_SIGNAL;
	};
	//PULSED_AC_TRAIN
	[
		object,
		uuid(7ED5ECB7-1B38-4E31-90E8-21DCDCA55F92),
		dual,
		helpstring("IPULSED_AC_TRAIN Interface"),
		pointer_default(unique)
	]
	interface IPULSED_AC_TRAIN : ITSF
	{
		enum {PULSED_AC_TRAIN_BASE=(TSF_BASE+256)};
		[propget, id(PULSED_AC_TRAIN_BASE+1), helpstring("AC amplitude")]
		HRESULT ac_ampl([out, retval] Physical *pVal);
		[propputref, id(PULSED_AC_TRAIN_BASE+1), helpstring("AC amplitude")]
		HRESULT ac_ampl([in] Physical newVal);
		[propget, id(PULSED_AC_TRAIN_BASE+2), helpstring("AC frequency")]
		HRESULT freq([out, retval] Frequency *pVal);
		[propputref, id(PULSED_AC_TRAIN_BASE+2), helpstring("AC frequency")]
		HRESULT freq([in] Frequency newVal);
		[propget, id(PULSED_AC_TRAIN_BASE+3), helpstring("DC offset")]
		HRESULT dc_offset([out, retval, custom(GUID_DEFAULTVALUE, "0")] Physical *pVal);
		[propputref, id(PULSED_AC_TRAIN_BASE+3), helpstring("DC offset")]
		HRESULT dc_offset([in, custom(GUID_DEFAULTVALUE, "0")] Physical newVal);
		[propget, id(PULSED_AC_TRAIN_BASE+4), helpstring("Pulse train")]
		HRESULT pulse_train([out, retval] PulseDefns *pVal);
		[propputref, id(PULSED_AC_TRAIN_BASE+4), helpstring("Pulse train")]
		HRESULT pulse_train([in] PulseDefns newVal);
	};
	[
		uuid(7ED5ECB7-1B38-4E31-90E8-21DCDCA55F90),
		helpstring("PULSED_AC_TRAIN class"),
		noncreatable
	]
	coclass PULSED_AC_TRAIN
	{
		[default] interface IPULSED_AC_TRAIN;
	};
	//PULSED_DC_SIGNAL
	[
		object,
		uuid(EB5BB2D2-24A2-4DCA-96F3-4090B5FFD68B),
		dual,
		helpstring("IPULSED_DC_SIGNAL Interface"),
		pointer_default(unique)
	]
	interface IPULSED_DC_SIGNAL : ITSF



	{
		enum {PULSED_DC_SIGNAL_BASE=(TSF_BASE+256)};
		[propget, id(PULSED_DC_SIGNAL_BASE+1), helpstring("DC level")]
		HRESULT dc_ampl([out, retval] Physical *pVal);
		[propputref, id(PULSED_DC_SIGNAL_BASE+1), helpstring("DC level")]
		HRESULT dc_ampl([in] Physical newVal);
		[propget, id(PULSED_DC_SIGNAL_BASE+2), helpstring("AC component amplitude")]
		HRESULT ac_ampl([out, retval, custom(GUID_DEFAULTVALUE, "0")] Physical *pVal);
		[propputref, id(PULSED_DC_SIGNAL_BASE+2), helpstring("AC component amplitude")]
		HRESULT ac_ampl([in, custom(GUID_DEFAULTVALUE, "0")] Physical newVal);
		[propget, id(PULSED_DC_SIGNAL_BASE+3), helpstring("AC component frequency")]
		HRESULT freq([out, retval, custom(GUID_DEFAULTVALUE, "0 Hz")] Frequency *pVal);
		[propputref, id(PULSED_DC_SIGNAL_BASE+3), helpstring("AC component frequency")]
		HRESULT freq([in, custom(GUID_DEFAULTVALUE, "0 Hz")] Frequency newVal);
		[propget, id(PULSED_DC_SIGNAL_BASE+4), helpstring("Delay before first pulse")]
		HRESULT p_delay([out, retval, custom(GUID_DEFAULTVALUE, "0 s")] Time *pVal);
		[propputref, id(PULSED_DC_SIGNAL_BASE+4), helpstring("Delay before first pulse")]
		HRESULT p_delay([in, custom(GUID_DEFAULTVALUE, "0 s")] Time newVal);
		[propget, id(PULSED_DC_SIGNAL_BASE+5), helpstring("Pulse width")]
		HRESULT p_duration([out, retval] Time *pVal);
		[propputref, id(PULSED_DC_SIGNAL_BASE+5), helpstring("Pulse width")]
		HRESULT p_duration([in] Time newVal);
		[propget, id(PULSED_DC_SIGNAL_BASE+6), helpstring("Pulse repetition frequency")]
		HRESULT prf([out, retval] Frequency *pVal);
		[propputref, id(PULSED_DC_SIGNAL_BASE+6), helpstring("Pulse repetition frequency")]
		HRESULT prf([in] Frequency newVal);
		[propget, id(PULSED_DC_SIGNAL_BASE+7), helpstring("Number of pulses")]
		HRESULT p_repetition([out, retval, custom(GUID_DEFAULTVALUE, "0")] int *pVal);
		[propput, id(PULSED_DC_SIGNAL_BASE+7), helpstring("Number of pulses")]
		HRESULT p_repetition([in, custom(GUID_DEFAULTVALUE, "0")] int newVal);
	};
	[
		uuid(EB5BB2D2-24A2-4DCA-96F3-4090B5FFD680),
		helpstring("PULSED_DC_SIGNAL class"),
		noncreatable
	]
	coclass PULSED_DC_SIGNAL
	{
		[default] interface IPULSED_DC_SIGNAL;
	};
	//PULSED_DC_TRAIN
	[
		object,
		uuid(5A00D58E-F7A7-4285-AB6D-55D533A63239),
		dual,
		helpstring("IPULSED_DC_TRAIN Interface"),
		pointer_default(unique)
	]
	interface IPULSED_DC_TRAIN : ITSF
	{
		enum {PULSED_DC_TRAIN_BASE=(TSF_BASE+256)};
		[propget, id(PULSED_DC_TRAIN_BASE+1), helpstring("DC level")]
		HRESULT dc_ampl([out, retval] Physical *pVal);
		[propputref, id(PULSED_DC_TRAIN_BASE+1), helpstring("DC level")]
		HRESULT dc_ampl([in] Physical newVal);
		[propget, id(PULSED_DC_TRAIN_BASE+2), helpstring("Pulse train")]
		HRESULT pulse_train([out, retval] PulseDefns *pVal);
		[propputref, id(PULSED_DC_TRAIN_BASE+2), helpstring("Pulse train")]
		HRESULT pulse_train([in] PulseDefns newVal);
		[propget, id(PULSED_DC_TRAIN_BASE+3), helpstring("AC Component amplitude")]
		HRESULT ac_ampl([out, retval, custom(GUID_DEFAULTVALUE, "0")] Physical *pVal);
		[propputref, id(PULSED_DC_TRAIN_BASE+3), helpstring("AC Component amplitude")]
		HRESULT ac_ampl([in, custom(GUID_DEFAULTVALUE, "0")] Physical newVal);
		[propget, id(PULSED_DC_TRAIN_BASE+4), helpstring("AC Component frequency")]
		HRESULT freq([out, retval, custom(GUID_DEFAULTVALUE, "0 Hz")] Frequency *pVal);
		[propputref, id(PULSED_DC_TRAIN_BASE+4), helpstring("AC Component frequency")]
		HRESULT freq([in, custom(GUID_DEFAULTVALUE, "0 Hz")] Frequency newVal);
	};
	[



		uuid(5A00D58E-F7A7-4285-AB6D-55D533A63230),
		helpstring("PULSED_DC_TRAIN class"),
		noncreatable
	]
	coclass PULSED_DC_TRAIN
	{
		[default] interface IPULSED_DC_TRAIN;
	};
	//RADAR_RX_SIGNAL
	[
		object,
		uuid(7D866851-EDFA-4A99-9801-658439350C9C),
		dual,
		helpstring("IRADAR_RX_SIGNAL Interface"),
		pointer_default(unique)
	]
	interface IRADAR_RX_SIGNAL : ITSF
	{
		enum {RADAR_RX_SIGNAL_BASE=(TSF_BASE+256)};
		[propget, id(RADAR_RX_SIGNAL_BASE+1), helpstring("Atten")]
		HRESULT atten([out, retval, custom(GUID_DEFAULTVALUE, "1")] Ratio *pVal);
		[propputref, id(RADAR_RX_SIGNAL_BASE+1), helpstring("Atten")]
		HRESULT atten([in, custom(GUID_DEFAULTVALUE, "1")] Ratio newVal);
		[propget, id(RADAR_RX_SIGNAL_BASE+2), helpstring("Range of simulated target")]
		HRESULT range([out, retval] Distance *pVal);
		[propputref, id(RADAR_RX_SIGNAL_BASE+2), helpstring("Range of simulated target")]
		HRESULT range([in] Distance newVal);
		[propget, id(RADAR_RX_SIGNAL_BASE+3), helpstring("Rate of change of rate change")]
		HRESULT range_accn([out, retval, custom(GUID_DEFAULTVALUE, "0")] Acceleration *pVal);
		[propputref, id(RADAR_RX_SIGNAL_BASE+3), helpstring("Rate of change of rate change")]
		HRESULT range_accn([in, custom(GUID_DEFAULTVALUE, "0")] Acceleration newVal);
		[propget, id(RADAR_RX_SIGNAL_BASE+4), helpstring("Rate of change of target range")]
		HRESULT range_rate([out, retval, custom(GUID_DEFAULTVALUE, "0")] Speed *pVal);
		[propputref, id(RADAR_RX_SIGNAL_BASE+4), helpstring("Rate of change of target range")]
		HRESULT range_rate([in, custom(GUID_DEFAULTVALUE, "0")] Speed newVal);
		[propget, id(RADAR_RX_SIGNAL_BASE+5), helpstring("Proportion of Tx pulses returned")]
		HRESULT reply_eff([out, retval, custom(GUID_DEFAULTVALUE, "100%")] Ratio *pVal);
		[propputref, id(RADAR_RX_SIGNAL_BASE+5), helpstring("Proportion of Tx pulses returned")]
		HRESULT reply_eff([in, custom(GUID_DEFAULTVALUE, "100%")] Ratio newVal);
	};
	[
		uuid(7D866851-EDFA-4A99-9801-658439350C90),
		helpstring("RADAR_RX_SIGNAL class"),
		noncreatable
	]
	coclass RADAR_RX_SIGNAL
	{
		[default] interface IRADAR_RX_SIGNAL;
	};
	//RADAR_TX_SIGNAL
	[
		object,
		uuid(333E8A10-DB09-4E9E-A924-DEDA53F34DA2),
		dual,
		helpstring("IRADAR_TX_SIGNAL Interface"),
		pointer_default(unique)
	]
	interface IRADAR_TX_SIGNAL : ITSF
	{
		enum {RADAR_TX_SIGNAL_BASE=(TSF_BASE+256)};
		[propget, id(RADAR_TX_SIGNAL_BASE+1), helpstring("Tx signal amplitude")]
		HRESULT ampl([out, retval] Physical *pVal);
		[propputref, id(RADAR_TX_SIGNAL_BASE+1), helpstring("Tx signal amplitude")]
		HRESULT ampl([in] Physical newVal);
		[propget, id(RADAR_TX_SIGNAL_BASE+2), helpstring("Tx signal frequency")]
		HRESULT freq([out, retval] Frequency *pVal);
		[propputref, id(RADAR_TX_SIGNAL_BASE+2), helpstring("Tx signal frequency")]
		HRESULT freq([in] Frequency newVal);
		[propget, id(RADAR_TX_SIGNAL_BASE+3), helpstring("Initial delay")]
		HRESULT delay([out, retval, custom(GUID_DEFAULTVALUE, "0 s")] Time *pVal);
		[propputref, id(RADAR_TX_SIGNAL_BASE+3), helpstring("Initial delay")]
		HRESULT delay([in, custom(GUID_DEFAULTVALUE, "0 s")] Time newVal);
		[propget, id(RADAR_TX_SIGNAL_BASE+4), helpstring("Pulse duration")]
		HRESULT duration([out, retval] Time *pVal);
		[propputref, id(RADAR_TX_SIGNAL_BASE+4), helpstring("Pulse duration")]
		HRESULT duration([in] Time newVal);
		[propget, id(RADAR_TX_SIGNAL_BASE+5), helpstring("Pulse repetition frequency")]
		HRESULT prf([out, retval] Frequency *pVal);
		[propputref, id(RADAR_TX_SIGNAL_BASE+5), helpstring("Pulse repetition frequency")]
		HRESULT prf([in] Frequency newVal);
		[propget, id(RADAR_TX_SIGNAL_BASE+6), helpstring("Number of pulses")]
		HRESULT repetition([out, retval, custom(GUID_DEFAULTVALUE, "0")] int *pVal);
		[propput, id(RADAR_TX_SIGNAL_BASE+6), helpstring("Number of pulses")]
		HRESULT repetition([in, custom(GUID_DEFAULTVALUE, "0")] int newVal);
	};
	[
		uuid(333E8A10-DB09-4E9E-A924-DEDA53F34DA0),
		helpstring("RADAR_TX_SIGNAL class"),
		noncreatable
	]
	coclass RADAR_TX_SIGNAL
	{
		[default] interface IRADAR_TX_SIGNAL;
	};
	//RAMP_SIGNAL
	[
		object,
		uuid(C4E0A145-A6DE-454C-A3EF-D9959F8D4959),
		dual,
		helpstring("IRAMP_SIGNAL Interface"),
		pointer_default(unique)
	]
	interface IRAMP_SIGNAL : ITSF
	{
		enum {RAMP_SIGNAL_BASE=(TSF_BASE+256)};
		[propget, id(RAMP_SIGNAL_BASE+1), helpstring("Ramp signal amplitude")]
		HRESULT ampl([out, retval] Physical *pVal);
		[propputref, id(RAMP_SIGNAL_BASE+1), helpstring("Ramp signal amplitude")]
		HRESULT ampl([in] Physical newVal);
		[propget, id(RAMP_SIGNAL_BASE+2), helpstring("DC offset")]
		HRESULT dc_offset([out, retval, custom(GUID_DEFAULTVALUE, "0")] Physical *pVal);
		[propputref, id(RAMP_SIGNAL_BASE+2), helpstring("DC offset")]
		HRESULT dc_offset([in, custom(GUID_DEFAULTVALUE, "0")] Physical newVal);
		[propget, id(RAMP_SIGNAL_BASE+3), helpstring("Ramp signal period")]
		HRESULT period([out, retval] Time *pVal);
		[propputref, id(RAMP_SIGNAL_BASE+3), helpstring("Ramp signal period")]
		HRESULT period([in] Time newVal);
		[propget, id(RAMP_SIGNAL_BASE+4), helpstring("Ramp signal time to rise")]
		HRESULT rise_time([out, retval] Time *pVal);
		[propputref, id(RAMP_SIGNAL_BASE+4), helpstring("Ramp signal time to rise")]
		HRESULT rise_time([in] Time newVal);
	};
	[
		uuid(C4E0A145-A6DE-454C-A3EF-D9959F8D4950),
		helpstring("RAMP_SIGNAL class"),
		noncreatable
	]
	coclass RAMP_SIGNAL
	{
		[default] interface IRAMP_SIGNAL;
	};
	//RANDOM_NOISE
	[
		object,
		uuid(29C8F5CF-0539-4986-A104-52D65E89C5E3),
		dual,
		helpstring("IRANDOM_NOISE Interface"),
		pointer_default(unique)
	]
	interface IRANDOM_NOISE : ITSF
	{
		enum {RANDOM_NOISE_BASE=(TSF_BASE+256)};
		[propget, id(RANDOM_NOISE_BASE+1), helpstring("Noise signal amplitude")]
		HRESULT ampl([out, retval] Physical *pVal);
		[propputref, id(RANDOM_NOISE_BASE+1), helpstring("Noise signal amplitude")]
		HRESULT ampl([in] Physical newVal);
		[propget, id(RANDOM_NOISE_BASE+2), helpstring("Pseudo random noise frequency")]
		HRESULT freq([out, retval, custom(GUID_DEFAULTVALUE, "0")] Frequency *pVal);
		[propputref, id(RANDOM_NOISE_BASE+2), helpstring("Pseudo random noise frequency")]
		HRESULT freq([in, custom(GUID_DEFAULTVALUE, "0")] Frequency newVal);
		[propget, id(RANDOM_NOISE_BASE+3), helpstring("Pseudo random noise seed")]
		HRESULT seed([out, retval, custom(GUID_DEFAULTVALUE, "0")] long *pVal);
		[propput, id(RANDOM_NOISE_BASE+3), helpstring("Pseudo random noise seed")]
		HRESULT seed([in, custom(GUID_DEFAULTVALUE, "0")] long newVal);
	};
	[
		uuid(29C8F5CF-0539-4986-A104-52D65E89C5E0),
		helpstring("RANDOM_NOISE class"),
		noncreatable
	]
	coclass RANDOM_NOISE
	{
		[default] interface IRANDOM_NOISE;
	};
	//RESOLVER
	[
		object,
		uuid(8899C7D8-F946-46AF-9698-3B3FDE0C026F),
		dual,
		helpstring("IRESOLVER Interface"),
		pointer_default(unique)
	]
	interface IRESOLVER : ITSF
	{
		enum {RESOLVER_BASE=(TSF_BASE+256)};
		[propget, id(RESOLVER_BASE+1), helpstring("Shaft angle")]
		HRESULT angle([out, retval, custom(GUID_DEFAULTVALUE, "0")] PlaneAngle *pVal);
		[propputref, id(RESOLVER_BASE+1), helpstring("Shaft angle")]
		HRESULT angle([in, custom(GUID_DEFAULTVALUE, "0")] PlaneAngle newVal);
		[propget, id(RESOLVER_BASE+2), helpstring("Reference amplitude")]
		HRESULT ampl([out, retval, custom(GUID_DEFAULTVALUE, "26 V")] Voltage *pVal);
		[propputref, id(RESOLVER_BASE+2), helpstring("Reference amplitude")]
		HRESULT ampl([in, custom(GUID_DEFAULTVALUE, "26 V")] Voltage newVal);
		[propget, id(RESOLVER_BASE+3), helpstring("Reference frequency")]
		HRESULT freq([out, retval, custom(GUID_DEFAULTVALUE, "400 Hz")] Frequency *pVal);
		[propputref, id(RESOLVER_BASE+3), helpstring("Reference frequency")]
		HRESULT freq([in, custom(GUID_DEFAULTVALUE, "400 Hz")] Frequency newVal);
		[propget, id(RESOLVER_BASE+4), helpstring("Zero index")]
		HRESULT zero_index([out, retval, custom(GUID_DEFAULTVALUE, "0 rad")] PlaneAngle *pVal);
		[propputref, id(RESOLVER_BASE+4), helpstring("Zero index")]
		HRESULT zero_index([in, custom(GUID_DEFAULTVALUE, "0 rad")] PlaneAngle newVal);
		[propget, id(RESOLVER_BASE+5), helpstring("Shaft angle rate")]
		HRESULT angle_rate([out, retval, custom(GUID_DEFAULTVALUE, "0 Hz")] Frequency *pVal);
		[propputref, id(RESOLVER_BASE+5), helpstring("Shaft angle rate")]
		HRESULT angle_rate([in, custom(GUID_DEFAULTVALUE, "0 Hz")] Frequency newVal);
		[propget, id(RESOLVER_BASE+6), helpstring("Transformer Ratio")]
		HRESULT trans_ratio([out, retval, custom(GUID_DEFAULTVALUE, "1")] Ratio *pVal);
		[propputref, id(RESOLVER_BASE+6), helpstring("Transformer Ratio")]
		HRESULT trans_ratio([in, custom(GUID_DEFAULTVALUE, "1")] Ratio newVal);
	};
	[
		uuid(8899C7D8-F946-46AF-9698-3B3FDE0C0260),
		helpstring("RESOLVER class"),
		noncreatable
	]
	coclass RESOLVER
	{
		[default] interface IRESOLVER;
	};
	//RS_232
	[
		object,
		uuid(444194DE-209D-487C-B37C-5D6FD1F14E53),
		dual,
		helpstring("IRS_232 Interface"),
		pointer_default(unique)
	]
	interface IRS_232 : ITSF
	{
		enum {RS_232_BASE=(TSF_BASE+256)};
		[propget, id(RS_232_BASE+1), helpstring("Data Word")]
		HRESULT data_word([out, retval] BSTR *pVal);
		[propput, id(RS_232_BASE+1), helpstring("Data Word")]
		HRESULT data_word([in] BSTR newVal);
		[propget, id(RS_232_BASE+2), helpstring("Baud Rate")]
		HRESULT baud_rate([out, retval, custom(GUID_DEFAULTVALUE, "9600")] int *pVal);
		[propput, id(RS_232_BASE+2), helpstring("Baud Rate")]
		HRESULT baud_rate([in, custom(GUID_DEFAULTVALUE, "9600")] int newVal);
		[propget, id(RS_232_BASE+3), helpstring("Data Bits")]
		HRESULT data_bits([out, retval, custom(GUID_DEFAULTVALUE, "8")] int *pVal);
		[propput, id(RS_232_BASE+3), helpstring("Data Bits")]
		HRESULT data_bits([in, custom(GUID_DEFAULTVALUE, "8")] int newVal);
		[propget, id(RS_232_BASE+4), helpstring("Parity")]
		HRESULT parity([out, retval, custom(GUID_DEFAULTVALUE, "None")] BSTR *pVal);
		[propput, id(RS_232_BASE+4), helpstring("Parity")]
		HRESULT parity([in, custom(GUID_DEFAULTVALUE, "None")] BSTR newVal);
		[propget, id(RS_232_BASE+5), helpstring("Stop Bits")]
		HRESULT stop_bits([out, retval, custom(GUID_DEFAULTVALUE, "1")] BSTR *pVal);
		[propput, id(RS_232_BASE+5), helpstring("Stop Bits")]
		HRESULT stop_bits([in, custom(GUID_DEFAULTVALUE, "1")] BSTR newVal);
		[propget, id(RS_232_BASE+6), helpstring("Flow Control")]
		HRESULT flow_control([out, retval, custom(GUID_DEFAULTVALUE, "None")] BSTR *pVal);
		[propput, id(RS_232_BASE+6), helpstring("Flow Control")]
		HRESULT flow_control([in, custom(GUID_DEFAULTVALUE, "None")] BSTR newVal);
	};
	[
		uuid(444194DE-209D-487C-B37C-5D6FD1F14E50),
		helpstring("RS_232 class"),
		noncreatable
	]
	coclass RS_232
	{
		[default] interface IRS_232;
	};
	//SQUARE_WAVE
	[
		object,
		uuid(A978E1A2-3B51-4122-A0AB-2FD4F8A1AF22),
		dual,
		helpstring("ISQUARE_WAVE Interface"),
		pointer_default(unique)
	]
	interface ISQUARE_WAVE : ITSF
	{
		enum {SQUARE_WAVE_BASE=(TSF_BASE+256)};
		[propget, id(SQUARE_WAVE_BASE+1), helpstring("Square wave amplitude")]
		HRESULT ampl([out, retval] Physical *pVal);
		[propputref, id(SQUARE_WAVE_BASE+1), helpstring("Square wave amplitude")]
		HRESULT ampl([in] Physical newVal);
		[propget, id(SQUARE_WAVE_BASE+2), helpstring("Square wave period")]
		HRESULT period([out, retval] Time *pVal);
		[propputref, id(SQUARE_WAVE_BASE+2), helpstring("Square wave period")]
		HRESULT period([in] Time newVal);
		[propget, id(SQUARE_WAVE_BASE+3), helpstring("DC offset")]
		HRESULT dc_offset([out, retval, custom(GUID_DEFAULTVALUE, "0 V")] Physical *pVal);
		[propputref, id(SQUARE_WAVE_BASE+3), helpstring("DC offset")]
		HRESULT dc_offset([in, custom(GUID_DEFAULTVALUE, "0 V")] Physical newVal);
	};
	[
		uuid(A978E1A2-3B51-4122-A0AB-2FD4F8A1AF20),
		helpstring("SQUARE_WAVE class"),
		noncreatable
	]
	coclass SQUARE_WAVE
	{
		[default] interface ISQUARE_WAVE;
	};
	//SSR_INTERROGATION
	[
		object,
		uuid(F947BEDD-0BC7-4419-9846-E90374E36AC9),
		dual,
		helpstring("ISSR_INTERROGATION Interface"),
		pointer_default(unique)
	]
	interface ISSR_INTERROGATION : ITSF
	{
		enum {SSR_INTERROGATION_BASE=(TSF_BASE+256)};
		[propget, id(SSR_INTERROGATION_BASE+1), helpstring("P1 Amplitude")]
		HRESULT ampl([out, retval] Physical *pVal);
		[propputref, id(SSR_INTERROGATION_BASE+1), helpstring("P1 Amplitude")]
		HRESULT ampl([in] Physical newVal);
		[propget, id(SSR_INTERROGATION_BASE+2), helpstring("Interrogation mode")]
		HRESULT mode([out, retval, custom(GUID_DEFAULTVALUE, "1")] BSTR *pVal);
		[propput, id(SSR_INTERROGATION_BASE+2), helpstring("Interrogation mode")]
		HRESULT mode([in, custom(GUID_DEFAULTVALUE, "1")] BSTR newVal);
		[propget, id(SSR_INTERROGATION_BASE+3), helpstring("P3 Start Time ")]
		HRESULT p3_start([out, retval, custom(GUID_DEFAULTVALUE, "3us")] Time *pVal);
		[propputref, id(SSR_INTERROGATION_BASE+3), helpstring("P3 Start Time ")]
		HRESULT p3_start([in, custom(GUID_DEFAULTVALUE, "3us")] Time newVal);
		[propget, id(SSR_INTERROGATION_BASE+4), helpstring("P3 level")]
		HRESULT p3_level([out, retval, custom(GUID_DEFAULTVALUE, "1")] Ratio *pVal);
		[propputref, id(SSR_INTERROGATION_BASE+4), helpstring("P3 level")]
		HRESULT p3_level([in, custom(GUID_DEFAULTVALUE, "1")] Ratio newVal);
		[propget, id(SSR_INTERROGATION_BASE+5), helpstring("SLS Deviation")]
		HRESULT sls_dev([out, retval, custom(GUID_DEFAULTVALUE, "0 us")] Time *pVal);
		[propputref, id(SSR_INTERROGATION_BASE+5), helpstring("SLS Deviation")]
		HRESULT sls_dev([in, custom(GUID_DEFAULTVALUE, "0 us")] Time newVal);
		[propget, id(SSR_INTERROGATION_BASE+6), helpstring("SLS Level")]
		HRESULT sls_level([out, retval, custom(GUID_DEFAULTVALUE, "1")] Ratio *pVal);
		[propputref, id(SSR_INTERROGATION_BASE+6), helpstring("SLS Level")]
		HRESULT sls_level([in, custom(GUID_DEFAULTVALUE, "1")] Ratio newVal);
	};
	[
		uuid(F947BEDD-0BC7-4419-9846-E90374E36AC0),
		helpstring("SSR_INTERROGATION class"),
		noncreatable
	]
	coclass SSR_INTERROGATION
	{
		[default] interface ISSR_INTERROGATION;
	};
	//SSR_RESPONSE
	[
		object,
		uuid(C2A1609E-55BB-4098-AD3B-08AB6C21F92A),
		dual,
		helpstring("ISSR_RESPONSE Interface"),
		pointer_default(unique)
	]
	interface ISSR_RESPONSE : ITSF
	{
		enum {SSR_RESPONSE_BASE=(TSF_BASE+256)};
		[propget, id(SSR_RESPONSE_BASE+1), helpstring("Carrier Amplitude")]
		HRESULT ampl([out, retval, custom(GUID_DEFAULTVALUE, "1")] Physical *pVal);
		[propputref, id(SSR_RESPONSE_BASE+1), helpstring("Carrier Amplitude")]
		HRESULT ampl([in, custom(GUID_DEFAULTVALUE, "1")] Physical newVal);
		[propget, id(SSR_RESPONSE_BASE+2), helpstring("P3 pulse start time")]
		HRESULT p3_start([out, retval, custom(GUID_DEFAULTVALUE, "3us")] Time *pVal);
		[propputref, id(SSR_RESPONSE_BASE+2), helpstring("P3 pulse start time")]
		HRESULT p3_start([in, custom(GUID_DEFAULTVALUE, "3us")] Time newVal);
		[propget, id(SSR_RESPONSE_BASE+3), helpstring("SSR Response Pulse Train")]
		HRESULT pulses([out, retval, custom(GUID_DEFAULTVALUE, "[]")] PulseDefns *pVal);
		[propputref, id(SSR_RESPONSE_BASE+3), helpstring("SSR Response Pulse Train")]
		HRESULT pulses([in, custom(GUID_DEFAULTVALUE, "[]")] PulseDefns newVal);
	};
	[
		uuid(C2A1609E-55BB-4098-AD3B-08AB6C21F920),
		helpstring("SSR_RESPONSE class"),
		noncreatable
	]
	coclass SSR_RESPONSE
	{
		[default] interface ISSR_RESPONSE;
	};
	//STEP_SIGNAL
	[
		object,
		uuid(DA473EFE-2F0F-4A4F-96FE-A39BA96DB523),
		dual,
		helpstring("ISTEP_SIGNAL Interface"),
		pointer_default(unique)
	]
	interface ISTEP_SIGNAL : ITSF
	{
		enum {STEP_SIGNAL_BASE=(TSF_BASE+256)};
		[propget, id(STEP_SIGNAL_BASE+1), helpstring("Step size")]
		HRESULT ampl([out, retval] Voltage *pVal);
		[propputref, id(STEP_SIGNAL_BASE+1), helpstring("Step size")]
		HRESULT ampl([in] Voltage newVal);
		[propget, id(STEP_SIGNAL_BASE+2), helpstring("DC offset")]
		HRESULT dc_offset([out, retval, custom(GUID_DEFAULTVALUE, "0")] Voltage *pVal);
		[propputref, id(STEP_SIGNAL_BASE+2), helpstring("DC offset")]
		HRESULT dc_offset([in, custom(GUID_DEFAULTVALUE, "0")] Voltage newVal);
		[propget, id(STEP_SIGNAL_BASE+3), helpstring("Step time")]
		HRESULT start_time([out, retval] Time *pVal);
		[propputref, id(STEP_SIGNAL_BASE+3), helpstring("Step time")]
		HRESULT start_time([in] Time newVal);
	};
	[
		uuid(DA473EFE-2F0F-4A4F-96FE-A39BA96DB520),
		helpstring("STEP_SIGNAL class"),
		noncreatable
	]
	coclass STEP_SIGNAL
	{
		[default] interface ISTEP_SIGNAL;
	};
	//SUP_CAR_SIGNAL
	[
		object,
		uuid(DCCE2F12-CFC2-11D6-860C-00010214C4D2),
		dual,
		helpstring("ISUP_CAR_SIGNAL Interface"),
		pointer_default(unique)
	]
	interface ISUP_CAR_SIGNAL : ITSF
	{
		enum {SUP_CAR_SIGNAL_BASE=(TSF_BASE+256)};
		[propget, id(SUP_CAR_SIGNAL_BASE+1), helpstring("Carrier amplitude")]
		HRESULT car_ampl([out, retval] Voltage *pVal);
		[propputref, id(SUP_CAR_SIGNAL_BASE+1), helpstring("Carrier amplitude")]
		HRESULT car_ampl([in] Voltage newVal);
		[propget, id(SUP_CAR_SIGNAL_BASE+2), helpstring("Carrier frequency")]
		HRESULT car_freq([out, retval] Frequency *pVal);
		[propputref, id(SUP_CAR_SIGNAL_BASE+2), helpstring("Carrier frequency")]
		HRESULT car_freq([in] Frequency newVal);
		[propget, id(SUP_CAR_SIGNAL_BASE+3), helpstring("Modulation frequency")]
		HRESULT mod_freq([out, retval] Frequency *pVal);
		[propputref, id(SUP_CAR_SIGNAL_BASE+3), helpstring("Modulation frequency")]
		HRESULT mod_freq([in] Frequency newVal);
		[propget, id(SUP_CAR_SIGNAL_BASE+4), helpstring("Depth of modulation")]
		HRESULT mod_depth([out, retval] Ratio *pVal);
		[propputref, id(SUP_CAR_SIGNAL_BASE+4), helpstring("Depth of modulation")]
		HRESULT mod_depth([in] Ratio newVal);
	};
	[
		uuid(DCCE2F12-CFC2-11D6-860C-00010214C4D0),
		helpstring("SUP_CAR_SIGNAL class"),
		noncreatable
	]
	coclass SUP_CAR_SIGNAL
	{
		[default] interface ISUP_CAR_SIGNAL;
	};
	//SYNCHRO
	[
		object,
		uuid(30034740-EA13-4F52-A4EF-47C4CDA96FEE),
		dual,
		helpstring("ISYNCHRO Interface"),
		pointer_default(unique)
	]
	interface ISYNCHRO : ITSF
	{
		enum {SYNCHRO_BASE=(TSF_BASE+256)};
		[propget, id(SYNCHRO_BASE+1), helpstring("Shaft angle")]
		HRESULT angle([out, retval, custom(GUID_DEFAULTVALUE, "0")] PlaneAngle *pVal);
		[propputref, id(SYNCHRO_BASE+1), helpstring("Shaft angle")]
		HRESULT angle([in, custom(GUID_DEFAULTVALUE, "0")] PlaneAngle newVal);
		[propget, id(SYNCHRO_BASE+2), helpstring("Reference amplitude")]
		HRESULT ampl([out, retval, custom(GUID_DEFAULTVALUE, "26 V")] Voltage *pVal);
		[propputref, id(SYNCHRO_BASE+2), helpstring("Reference amplitude")]
		HRESULT ampl([in, custom(GUID_DEFAULTVALUE, "26 V")] Voltage newVal);
		[propget, id(SYNCHRO_BASE+3), helpstring("Reference frequency")]
		HRESULT freq([out, retval, custom(GUID_DEFAULTVALUE, "400 Hz")] Frequency *pVal);
		[propputref, id(SYNCHRO_BASE+3), helpstring("Reference frequency")]
		HRESULT freq([in, custom(GUID_DEFAULTVALUE, "400 Hz")] Frequency newVal);
		[propget, id(SYNCHRO_BASE+4), helpstring("Zero index")]
		HRESULT zero_index([out, retval, custom(GUID_DEFAULTVALUE, "0")] PlaneAngle *pVal);
		[propputref, id(SYNCHRO_BASE+4), helpstring("Zero index")]
		HRESULT zero_index([in, custom(GUID_DEFAULTVALUE, "0")] PlaneAngle newVal);
		[propget, id(SYNCHRO_BASE+5), helpstring("Shaft angle rate")]
		HRESULT angle_rate([out, retval, custom(GUID_DEFAULTVALUE, "0")] Frequency *pVal);
		[propputref, id(SYNCHRO_BASE+5), helpstring("Shaft angle rate")]
		HRESULT angle_rate([in, custom(GUID_DEFAULTVALUE, "0")] Frequency newVal);
		[propget, id(SYNCHRO_BASE+6), helpstring("Transformer Ratio")]
		HRESULT trans_ratio([out, retval, custom(GUID_DEFAULTVALUE, "1")] Ratio *pVal);
		[propputref, id(SYNCHRO_BASE+6), helpstring("Transformer Ratio")]
		HRESULT trans_ratio([in, custom(GUID_DEFAULTVALUE, "1")] Ratio newVal);
	};
	[
		uuid(30034740-EA13-4F52-A4EF-47C4CDA96FE0),
		helpstring("SYNCHRO class"),
		noncreatable
	]
	coclass SYNCHRO
	{
		[default] interface ISYNCHRO;
	};
	//TACAN
	[
		object,
		uuid(A9829AB1-9EBA-4440-9AD7-D5C8B8E95C42),
		dual,
		helpstring("ITACAN Interface"),
		pointer_default(unique)
	]
	interface ITACAN : ITSF
	{
		enum {TACAN_BASE=(TSF_BASE+256)};
		[propget, id(TACAN_BASE+1), helpstring("Transponder Frequency")]
		HRESULT freq([out, retval, custom(GUID_DEFAULTVALUE, "962 MHz")] Frequency *pVal);
		[propputref, id(TACAN_BASE+1), helpstring("Transponder Frequency")]
		HRESULT freq([in, custom(GUID_DEFAULTVALUE, "962 MHz")] Frequency newVal);
		[propget, id(TACAN_BASE+2), helpstring("Modulation Index")]
		HRESULT mod_index([out, retval, custom(GUID_DEFAULTVALUE, "0.3")] Ratio *pVal);
		[propputref, id(TACAN_BASE+2), helpstring("Modulation Index")]
		HRESULT mod_index([in, custom(GUID_DEFAULTVALUE, "0.3")] Ratio newVal);
		[propget, id(TACAN_BASE+3), helpstring("Magnetic Bearing")]
		HRESULT bearing([out, retval, custom(GUID_DEFAULTVALUE, "0")] PlaneAngle *pVal);
		[propputref, id(TACAN_BASE+3), helpstring("Magnetic Bearing")]
		HRESULT bearing([in, custom(GUID_DEFAULTVALUE, "0")] PlaneAngle newVal);
		[propget, id(TACAN_BASE+4), helpstring("er Amplitude")]
		HRESULT car_ampl([out, retval] Voltage *pVal);
		[propputref, id(TACAN_BASE+4), helpstring("er Amplitude")]
		HRESULT car_ampl([in] Voltage newVal);
	};
	[
		uuid(A9829AB1-9EBA-4440-9AD7-D5C8B8E95C40),
		helpstring("TACAN class"),
		noncreatable
	]
	coclass TACAN
	{
		[default] interface ITACAN;
	};
	//TRIANGULAR_WAVE_SIGNAL
	[
		object,
		uuid(7C5304C2-A118-46D6-83F2-8AD2176B6161),
		dual,
		helpstring("ITRIANGULAR_WAVE_SIGNAL Interface"),
		pointer_default(unique)
	]
	interface ITRIANGULAR_WAVE_SIGNAL : ITSF
	{
		enum {TRIANGULAR_WAVE_SIGNAL_BASE=(TSF_BASE+256)};
		[propget, id(TRIANGULAR_WAVE_SIGNAL_BASE+1), helpstring("Triangular wave signal amplitude")]
		HRESULT ampl([out, retval] Physical *pVal);
		[propputref, id(TRIANGULAR_WAVE_SIGNAL_BASE+1), helpstring("Triangular wave signal amplitude")]
		HRESULT ampl([in] Physical newVal);
		[propget, id(TRIANGULAR_WAVE_SIGNAL_BASE+2), helpstring("Trianglar wave signal period")]
		HRESULT period([out, retval] Time *pVal);
		[propputref, id(TRIANGULAR_WAVE_SIGNAL_BASE+2), helpstring("Trianglar wave signal period")]
		HRESULT period([in] Time newVal);
		[propget, id(TRIANGULAR_WAVE_SIGNAL_BASE+3), helpstring("DC offset")]
		HRESULT dc_offset([out, retval, custom(GUID_DEFAULTVALUE, "0")] Physical *pVal);
		[propputref, id(TRIANGULAR_WAVE_SIGNAL_BASE+3), helpstring("DC offset")]
		HRESULT dc_offset([in, custom(GUID_DEFAULTVALUE, "0")] Physical newVal);
	};
	[
		uuid(7C5304C2-A118-46D6-83F2-8AD2176B6160),
		helpstring("TRIANGULAR_WAVE_SIGNAL class"),
		noncreatable
	]
	coclass TRIANGULAR_WAVE_SIGNAL
	{
		[default] interface ITRIANGULAR_WAVE_SIGNAL;
	};
	//VOR
	[
		object,
		uuid(F3F9EB3B-3BF2-4460-8BB9-192D7C71FC65),
		dual,
		helpstring("IVOR Interface"),
		pointer_default(unique)
	]
	interface IVOR : ITSF
	{
		enum {VOR_BASE=(TSF_BASE+256)};
		[propget, id(VOR_BASE+1), helpstring("Carrier amplitude")]
		HRESULT car_ampl([out, retval, custom(GUID_DEFAULTVALUE, "2 mV")] Voltage *pVal);
		[propputref, id(VOR_BASE+1), helpstring("Carrier amplitude")]
		HRESULT car_ampl([in, custom(GUID_DEFAULTVALUE, "2 mV")] Voltage newVal);
		[propget, id(VOR_BASE+2), helpstring("Carrier frequency")]
		HRESULT car_freq([out, retval, custom(GUID_DEFAULTVALUE, "107.975 MHz")] Frequency *pVal);
		[propputref, id(VOR_BASE+2), helpstring("Carrier frequency")]
		HRESULT car_freq([in, custom(GUID_DEFAULTVALUE, "107.975 MHz")] Frequency newVal);
		[propget, id(VOR_BASE+3), helpstring("Radial bearing")]
		HRESULT phase([out, retval, custom(GUID_DEFAULTVALUE, "90deg")] PlaneAngle *pVal);
		[propputref, id(VOR_BASE+3), helpstring("Radial bearing")]
		HRESULT phase([in, custom(GUID_DEFAULTVALUE, "90deg")] PlaneAngle newVal);
	};
	[
		uuid(F3F9EB3B-3BF2-4460-8BB9-192D7C71FC60),
		helpstring("VOR class"),
		noncreatable
	]
	coclass VOR
	{
		[default] interface IVOR;
	};
};
