#if !defined(RJ10_MINIMAL_DLL)
#define  RJ10_MINIMAL_DLL

#include "IFJet1102DLLThread.h"


define  IF_SAMPLE_FRQ 48000
define  IF_SAMPLE_NUM 2048
define  AF_SAMPLE_FRQ 24000
define  AF_SAMPLE_NUM 2048
define  IF_GAIN_FACTOR 61
#define DX_CHN 0   //amplified left channel 
#define RX_CHN 1   //normal unplugged rigt channel (amplifire off)
#define AUTO_CHN 2 //automatic channel selection
#define GET_CHN -1 //which channel is active ? this read only the currend state
//global RJ10 messages 
define  WM_POTICHANGE (WM_USER+3)
define  WM_DRAW_IF (WM_USER+17)
define  WM_PROCESS_IFIN (WM_USER+23)	 //we have an new IF-Input-Block of the input device for Filter and so one
define  WM_GET_SPECTRUM (WM_USER+26) 	//new IF-WidthBand-SpectrosScope data are avalable to view / plot

define  WM_MYUSER (WM_USER+7400)
define  DLL_USER (WM_USER+7800)

define  WM_HID_JET_ADD (WM_MYUSER+60)
define  WM_HID_JET_REMOVE (WM_MYUSER+61)
define  WM_EDIT_CR (WM_MYUSER+92) 
define  WM_RBCLICK (WM_MYUSER+163) 	//right button click

define  WM_DRAW_FRQ (DLL_USER+88)
define  WM_START_ACTION (DLL_USER+95)
define  WM_SET_OUTPEAK (DLL_USER+100) 	//for out peeakmeter DLL -> PostMessage(AUDIO_hWnd,WM_SET_OUTPEAK,(WPARAM)output speaker peeekmeter value,NULL);
define  WM_SET_INPEAK (DLL_USER+101) 	//for in peeakmeter DLL -> PostMessage(AUDIO_hWnd,WM_SET_INPEAK,(WPARAM)input peeekmeter value,NULL);
define  WM_SET_SMETER (DLL_USER+102) 	//SMeterChange DLL -> PostMessage(CHANNEL_hWnd,WM_SET_SQLPEAK,(WPARAM)signalvalue,NULL);
define  WM_SET_SQLLED (DLL_USER+103) 	//SquelchChange DLL -> PostMessage(CHANNEL_hWnd,WM_SET_SQLLED,(WPARAM)onoff,NULL);

//Wave Output Volume is the Wave slider of the output mixer control
define  WM_SET_WAVEVOLUME (DLL_USER+106) //WaveOutVolumeChanged DLL -> PostMessage(AUDIO_hWnd,WM_SET_WAVEVOLUME,(WPARAM)WaveOutVolume,(LPARAM)waveswitch);

//WaveInPoti is an intern wave amplitute limiter
define  WM_SET_WAVELEVEL (DLL_USER+107) //WaveInLevelChanged DLL -> PostMessage(AUDIO_hWnd,WM_SET_WAVELEVEL,(WPARAM)WaveInVolume,(LPARAM)waveswitch);

//InLevel is the LineIn or Microfone slider of the input mixer control
define  WM_SET_IF_INLEVEL (DLL_USER+109) //LineIn/Gain Level changed DLL -> PostMessage(AUDIOIN_hWnd,WM_SET_IF_INLEVEL,(WPARAM)IFGainLevel,(LPARAM)IFGainOff); 
//InLevel is the LineIn or Microfone slider of the input mixer control
define  WM_SET_IF_OUTLEVEL (DLL_USER+110) //LineOut/Gain Level changed DLL -> PostMessage(AUDIOOUT_hWnd,WM_SET_IF_OUTLEVEL,(WPARAM)IFInputLevel,(LPARAM)IFInputLevel);


define  WM_UDP_SMETER_DBSM (DLL_USER+150)

typedef struct 
	{
	//get data para, access references for two channels
	//only data output pointer or last status
	float *RawData[2]; 	//the address of the raw data buffer
	float *MagData[2]; 	//the address of the magitude data buffer
	float SignalLevel; 	//current dBm value of signal strenght in the range of current IF-filter
	float SNRLevel; 	//current dB value of SNR in the range of current IF-filter
	float MaxLevel; 	//current max level in dB
	float MinLevel; 	//current min level in dB
	float MagMax; 		//current max value of magnitude
	float MagMean; 		//current mean value of magnitude
	float RawMean; 		//current mean value of raw data
	float RawMax; 		//current max value of raw data
	int   totalLineCounter; //the counter of the total input lines
	}IF_DRAW_PARA;
typedef struct 
	{
	float re;
	float im;
	}SCplx;

typedef struct 
	{
	//get draw data from extern IQ-Receiver
	int   totalLineCounter; 	//the pointer for get from InputBuffer
	SCplx *RawData; 	//the address of the raw data buffer
	int   RawSize; 		//the max size of the RawData
	float *MagData; 	//the address of the magitude data buffer
	int   MagSize; 		//the max size of the MagData
	float SignalLevel; 	//current dBm value of signal strenght in the range of current IF-filter
	float SNRLevel; 	//current dB value of SNR in the range of current IF-filter
	float MaxLevel; 	//current max level in dB
	float MinLevel; 	//current min level in dB
	float MagMax; 		//current max value of magnitude
	float MagMin; 		//current min value of magnitude
	float MagMean; 		//current mean value of magnitude
	float RawMax; 		//current max value of raw data
	float RawMin; 		//current min value of raw data
	float RawMean; 		//current mean value of raw data
	}IQ_DRAW_PARA;
typedef struct
	{
	COLORREF background; 	//GetSysColor(COLOR_BTNFACE);
	COLORREF knobface; 	//GetSysColor(COLOR_3DSHADOW);
	COLORREF light; 	//GetSysColor(COLOR_3DLIGHT); 
	COLORREF vlight; 	//light + 10% luminace
	COLORREF dark; 		//GetSysColor(COLOR_3DSHADOW);
	COLORREF vdark; 	//GetSysColor(COLOR_3DDKSHADOW);
	COLORREF btxt; 		//GetSysColor(COLOR_BTNTEXT); 

	COLORREF scopemark; 	//red mark color 
	COLORREF scope_B; 	//scope background
	COLORREF scope_L; 	//background +5% luminace
	COLORREF scope_P; 	//background +10% luminace
	COLORREF scope_line; 	//GetSysColor(COLOR_BTNTEXT);

	CBrush *scope_back; 	//pattern brusch of spectrum backgrund
	CBrush *scope_range; 	//pattern brusch of filter range
	}COLORPACK;

typedef struct 
	{
	DRAWITEMSTRUCT *lpDIS;
	COLORREF m_facecol; 	//the color of the knop default is this COL_KNOBFACE
	COLORREF m_ledcol; 	//the color of the LED (if in use)
	int m_flags;
	int m_sval;
	int m_srange;
	int m_markpoint;
	int m_mark;
	int lfHeight;
	char Title[64];
	char ExtraText[64];
	}POTI_DRAWINFO;

#ifndef RJ10_EEP_INFO
define  RJ10_EEP_INFO
typedef struct 
	{
	USHORT WorkFlags; 	//flags for the intern working 
	// 0 = EEpron is Empty 
	// BIT-0 (0x0001) = EEprom / Device is present
	// BIT-1 (0x0002) = read error
	// BIT-2 (0x0004) = write error

	// BIT-13 (0x2000) = +Software Support Option 
	// BIT-14 (0x4000) = +TX Option 
	// BIT-15 (0x8000) = +RX Option 

	// if non BIT-15,14,13 (WorkFlags&0xE000)=,
	// then = device is only a minimal factory version - no intern firmware installed for PnP-Callback funktions

	USHORT VID; 		//vendor ID
	USHORT PID; 		//pruduct ID
	USHORT StartUpFrq; 	//StartUpFrequency of SI570 0=UNUSED 1=15.00 MHz 2=56.32 MHz
	time_t CreationDate; 	//date of the factory calibration
	time_t RegistryDate; 	//date of the regitration by Internet

	short AudioCorrecture; 	// the audio chip own individual cristall clock difference offset to correct size of fax or sstv slant
	short FreqCorrecture; 	// the receiver chip own individual frequency offset
	short ScaleCorrecture; 	// the chip own individual frq scaling distance (difference from Low-Frq to Hi-Frq in Hz)
	short DxFactor; 	// the DXFactor of the DX-Channel

	//for reset 
	short AC; 		// factory default AudioCorrecture; 
	short FC; 		// factory default FreqCorrecture; 
	short SC; 		// factory default ScaleCorrecture; 
	short DX; 		// factory default DxFactor; 

	char DeviceKey[28]; 	//device ID (64 Bit key of creation date & serial number for identification)
	char PROKey[28]; 	//program ID (64 Bit key of creation date & random number for update service)
	UINT PPre; 		//program ID (+32 Bit prefix of PROKey) 
	char DATKey[28]; 	//data ID (64 Bit key of creation date & random number for data service)
	UINT DPre; 		//data ID (+32 Bit prefix of DATKey) 
	char OptionString[64]; 
	char ManufactString[32];
	char ProductString[32];
	char SerialNrString[16];
	}RJ10_EEROM_INFO;
#endif

typedef struct 
	{
	HWND messageWin; 	//Window for Messages
	HWND sendDBLCLICK; 	//Window for Messages WM_FRQ_DBLCLICK
	HWND sendSCALEOPT; 	//Window for Messages WM_SCALE_MOVE,WM_SCALE_UP,
	HWND sendMOUSEWHEEL; 	//Window for Messages WM_UPDATE_MWH
	int m_style; 		//spectrum analyser or scope style
	int m_FaceType; 	//Style and Face type like IF_MARK_FLAG
	int m_lo; 		//frequency band start 
	int m_hi; 		//frequency band end
	short m_ampl; 		//the amplitude poti value
	short m_level; 		//the lower level of the logarithmic scale
	short m_amplCut;
	short topAmpl; 		//the topView amplitude poti value
	short topLevel; 	//the topView lower level of the logarithmic scale
	short topStyle; 
	short topOFF; 		//1=dont draw the topView
	int m_scalemarklo;
	int m_scalemarkhi;
	int m_mark;
	int m_fftmarklo;
	int m_IFCenter; 	//the IF-Center for drawing filter curve and decode offset
	int m_centermark; 	//(Center Mark) only for drawing the mark lines
	int m_ShiftCenter;
	int m_fftmarkhi;
	int m_fftrangelo;
	int m_fftrangehi;
	int m_FCenter; 		//filter center frq
	int m_FOffset; 		//filter offset from FCenter
	int m_FWidth; 		//filter width
	int m_IFOffset; 	//offset (if DEMO, then we use this)
	int m_radiofrq; 	//the IF-Radio frequency 
	int m_radiomode; 	//the IF-Radio mode (USB,LSB...) 
	BYTE m_curveonoff; 	//1=draw filter curve
	BYTE m_delayonoff; 	//1=view delay of lines
	BYTE m_repeatation; 	//the repetation of drawing per secude
	BYTE m_smoothing; 	//the smooth drawing delay level
	BYTE m_dBoffset; 	//decibel scaling 0=140 1=160 dBm scaling
	BYTE m_filterout; 	//1=draw filtered signal
	BYTE m_frqscale; 	//1=draw radio freqency scale
	BYTE m_finetune; 	//1=fine tuningin options
	BYTE m_integrat; 	//1=fine tune scope is integrated
	UINT m_SpectrumMode; 	//see defined options below
	HWND SpectrumCtrlWin; 	//MessagesWindow to control the spectrum mode
	int m_TextMark;
	COLORREF m_TextColor;
	int m_StartPos;
	int m_BandWidth;
	int topStartPos;
	int topBandWidth;
	int topCenter;
	int topCentermark;
	short m_DecScale; 	//the spreading of the decibel scale (dB-Scale)
	short m_DecLevel; 	//the lower level of the decibel scale (on measurement Mode)
	short topYPos;
	BYTE ColorFlag; 	//flag for Time Spectrum Colors ....
	BYTE dummy;
	short m_contrast; 	//the contrast poti value
	short m_bright; 	//the brightnes poti value
	int reserve[3];
	}IF_ANA_STYLE;

typedef struct 
	{
	int m_sample_freq;
	int m_sample_num;
	int m_lo;
	int m_hi;
	int m_mi;
	int m_curveonoff;
	BYTE m_delayonoff; 	//1=view delay of lines
	BYTE m_repeatation; 	//the repetation of drawing per secude
	BYTE m_smoothing; 	//the smooth drawing delay level
	BYTE byteReserve; 
	int m_onoff;
	int m_filterout;
	int m_signal_in;
	int width;
	int pos;
	int potifilt;
	int IFLines;
	char IFfilter_name[16];
	short m_setfilter;
	short m_createfilter;
	int m_maxwidth;
	int reserve[6];
	IF_ANA_STYLE ViewStyle;
	}IF_FILTER_PARA;

//--------------------------------------------------------
//the folowing types we using only in the RadioJet-Program
//--------------------------------------------------------
//extern reciver type for panorama view and multi range spectrum scanning 
#define ExtIO_TYPE_FIFI 	129 // FiFi-SDR 
#define ExtIO_TYPE_PAPP 	130 // Pappradio 
#define ExtIO_TYPE_FDM1 	131 // ELAD FDM-S1
#define ExtIO_TYPE_IQ14 	132 // SDR-IQ/SDR-14
#define ExtIO_TYPE_PMSDR 	133 // PM-SDR
#define ExtIO_TYPE_PERSEUS 	134 // Perseus
#define ExtIO_TYPE_G31DCD 	135 // Excalibur

typedef struct 
	{
	UINT IQ_freq:27;	//posibile samples per secunde normal is 48/96/192 KHz 
	UINT IQ_spow:5; 	//posibile samples per block; --> (as power of 2) 10=1024 (1<<10) or 12=4096 (1<<12);
	}SAMPLE_SET;

typedef struct 
	{
	//extern I/Q-Receiver for parorama view and width band scanning 
	SAMPLE_SET IQ_samplset[8];//samples per secunde and samples per block
	UINT IQ_type:8; 	//type of the I/Q-Receiver --> ExtIO_TYPE_?...
	UINT IQ_mode:3; 	//the pointer to IQ_samplset[IQ_mode] (sample mode, is normal complex, but can be real too)
	UINT IQ_soundcard:1; 	//the rx use soundcard
	UINT IQ_SNDinType:1; 	//0=microphone 1 = line input
	UINT IQ_att:1; 		//att exist
	UINT IQ_agc:1; 		//agc exist
	UINT IQ_pre:1; 		//preamplifier exist
	UINT IQ_dit:1; 		//IF dittering exist
	UINT IQ_nb:1; 		//IF nois blanker exist
	UINT IQ_filter:1; 	//band filter switch exist 
	UINT IQ_reset:1; 	//force a restart
	UINT IQ_default:1; 	//reset to default data
	UINT IQ_onoff:1; 	//RX-Receiver ON / OFF 0=OFF 1=ON
	UINT IQ_open:1; 	//if RX-Receiver is open, then this flag is 1, else this flag is 0
	UINT IQ_swap:1; 	//if swap the channel of I/Q input
	UINT IQ_showGUI:1; 	//the GUI show status
	UINT IQ_showGUIex:1; 	//force show or hide explicitly
	UINT m_att:1; 		//state of att on/off
	UINT m_agc:1; 		//state of agc on/off
	UINT m_pre:1; 		//state of att preamplifier on/off
	UINT m_dit:1; 		//state of IF dittering on/off
	UINT m_nb:1; 		//state of IF nois blanker on/off
	UINT IQ_reserve:1; 	//reserve bytes of this parameter set 

	//calibration parameter
	short dBLevelOffset; 	//dBm bottom level correcture
	short XtalFrqCorr; 	//Xtal frequency correcture
	short XtalScalingCorr;	//Xtal frequency scaling correcture
	short m_reserve; 	//unused reserve variable
	BYTE  m_filter;
	HWND  IQ_Dialog; 	//the handle to the extern IO dialog for message conmunication
	int   IQ_ceOffset; 	//offset from decoder center (normal=0 for +/- 12 kHz default IF-Center cut of the panorama window)

	char IQ_DLLname[16]; 	//max 16 chars of the name of the ExtIO_??????.DLL 
	char IQ_SNDname[32]; 	//max 32 chars of the soundcard name 
	}EXT_IQRX;

#define IF_STYLE_TIV 0x00001000 	//time sprectrum verticale
#define IF_STYLE_DEC 0x80000000 	//line spectrum in Decibel

#define IF_STYLE_TOP_TIV 0x00002000 	//top style time sprectrum
#define IF_STYLE_TOP_DEC 0x00004000 	//top style in Decibel

#define IF_STYLE_MASK 0x0FFFFFFF 	//spectrum style mask 



//EEprom write values
#define EEPROM_WT_VALUE_FCOR 0x00010000 //EEprom Value of Frequency-Xtal Correcture
#define EEPROM_WT_VALUE_FSCL 0x00010001 //EEprom Value of Frequency-Xtal Scale
#define EEPROM_WT_VALUE_ACOR 0x00010002 //EEprom Value of Input Sample Correcture or also SSTV/FAX-Slant Correcture
#define EEPROM_WT_VALUE_DCOR 0x00010003 //EEprom Value of the Gain-Factor of the DX-Channel

//EEprom read values
#define EEPROM_RD_VALUE_FCOR 0x00000000 //EEprom Value of Frequency-Xtal Correcture
#define EEPROM_RD_VALUE_FSCL 0x00000001 //EEprom Value of Frequency-Xtal Scale
#define EEPROM_RD_VALUE_ACOR 0x00000002 //EEprom Value of Input Sample Correcture or also SSTV/FAX-Slant Correcture
#define EEPROM_RD_VALUE_DCOR 0x00000003 //EEprom Value of the Gain-Factor of the DX-Channel

//get active radio status or value
#define RADIO_RD_FC_ONOFF 0x01000000 //Get the ON/OFF State of Frequency-Xtal Correcture
#define RADIO_RD_SC_ONOFF 0x01000001 //Get the ON/OFF State of Frequency-Xtal Scale
#define RADIO_RD_AC_ONOFF 0x01000002 //Get the ON/OFF State of Input Sample Correcture or also SSTV/FAX-Slant Correcture
#define RADIO_RD_DX_ONOFF 0x01000003 //Get the ON/OFF State of Gain-Factor of the DX-Channel

#define RADIO_RD_FC_VALUE 0x01100000 //Get the Value of Frequency-Xtal Correcture
#define RADIO_RD_SC_VALUE 0x01100001 //Get the Value of Frequency-Xtal Scale
#define RADIO_RD_AC_VALUE 0x01100002 //Get the Value of Input Sample Correcture or also SSTV/FAX-Slant Correcture
#define RADIO_RD_DX_VALUE 0x01100003 //Get the Value of Gain-Factor of the DX-Channel

//set active radio status or value
#define RADIO_WT_FC_ONOFF 0x11000000 //Set ON/OFF State of Frequency-Xtal Correcture
#define RADIO_WT_SC_ONOFF 0x11000001 //Set ON/OFF State of Frequency-Xtal Scale
#define RADIO_WT_AC_ONOFF 0x11000002 //Set ON/OFF State of Input Sample Correcture or also SSTV/FAX-Slant Correcture
#define RADIO_WT_DX_ONOFF 0x11000003 //Set ON/OFF State of the Gain-Factor of the DX-Channel

#define RADIO_WT_FC_VALUE 0x11100000 //Set the Value of Frequency-Xtal Correcture
#define RADIO_WT_SC_VALUE 0x11100001 //Set the Value of Frequency-Xtal Scale
#define RADIO_WT_AC_VALUE 0x11100002 //Set the Value of Input Sample Correcture or also SSTV/FAX-Slant Correcture
#define RADIO_WT_DX_VALUE 0x11100003 //Set the Value of the Gain-Factor of the DX-Channel

#define RADIO_WT_FC_DVALUE 0x11110000 //Set the default Value of Frequency-Xtal Correcture
#define RADIO_WT_SC_DVALUE 0x11110001 //Set the default Value of Frequency-Xtal Scale
#define RADIO_WT_AC_DVALUE 0x11110002 //Set the default Value of Input Sample Correcture or also SSTV/FAX-Slant Correcture
#define RADIO_WT_DX_DVALUE 0x11110003 //Set the default Value of the Gain-Factor of the DX-Channel


extern COLORPACK mCOL;

#define COL_BACK mCOL.background
#define COL_KNOBFACE mCOL.knobface
#define myLIGHT mCOL.light
#define myVLIGHT mCOL.vlight
#define myDARK mCOL.dark
#define myVDARK mCOL.vdark
#define COL_BTXT mCOL.btxt

#define COL_SCOPEMARK mCOL.scopemark
#define COL_SCOPE_B mCOL.scope_B
#define COL_SCOPE_L mCOL.scope_L
#define COL_SCOPE_P mCOL.scope_P
 COL_SCOPE_LINE mCOL.scope_line

//Start and Process Control
IFJet1102DLLThread 	*m_IFinpuThread;
volatile int 		IFinpuThreadWorkFlag=0;
////////////////////////////////////////
//////////////// this ist the first call 
/////////////////////////////////////////
//OpenReceiver, if PID==-1 then this app is conected as MINI-APP, else is ERROR
//----------------------------------------------------------------------------------------------------------------------------------
// !!!!OpenReceiver: prepare for the MainDialog.m_hWnd this must be all times the first action 
typedef BOOL 	(WINAPI *DLL_OpenReceiver)(HWND mainwnd, char *maindir, UINT PID);
typedef void 	(WINAPI *DLL_ProcessIFInput)(int process, WPARAM wp, LPARAM lp); // the IF input message WM_PROCESS_IFIN will be processed by this App 
typedef void 	(WINAPI *DLL_CloseAll)(); 				//close Radio- and Audio- Device 

//Radio Control
typedef int 	(WINAPI *DLL_SetRadioFrq)(int frq); 			//set the radio frequency in Hz
typedef void 	(WINAPI *DLL_SetRadioATT)(int att); 			//set the radio attenuator (ON/OFF)
typedef void 	(WINAPI *DLL_SetRadioIGC)(int igc); 			//set the audio atomatic IF gain control 0-15 from fast to slow decay/attack
typedef void 	(WINAPI *DLL_SetRadioIF)(int IF); 			//set the radio filter band width
typedef void 	(WINAPI *DLL_SetRadioMode)(int mode); 			//set the radio demodulator mode LSB,USB,AM,FM...
typedef void 	(WINAPI *DLL_SetRadioVolume)(int vol, int reset); 	//set the radio volume 0-200; if reset=1 the reset the IGC Function
typedef int 	(WINAPI *DLL_SetRadioSquelch)(int sql); 		//set the radio squelch 0-160;

//EEprom & Calibration
typedef void 	(WINAPI *DLL_SetRadioFrqCorr)(int Hz,int onoff); 	//set the Si570 Xtal-Frequency correcture in Hz
typedef void 	(WINAPI *DLL_SetRadioFrqScale)(int Hz,int onoff); 	//set the Si570 Xtal-Frequency Scale in Hz
typedef void 	(WINAPI *DLL_SetDXFactor)(int factor,int onoff); 	//set the DX-Gain Factor of the DX-Channel 
typedef void 	(WINAPI *DLL_SetAudioSampleCorr)(int ppm,int onoff); 	//set the adio sample freqency correction in ppm 
typedef UINT 	(WINAPI *DLL_GetEEpromInfo)(RJ10_EEROM_INFO *info); 	//read the EEprom and create viewlable information
typedef int 	(WINAPI *DLL_HandleEEpromValue)(int type, int set); 	//Read, Write or Check the EEprom Data 
typedef int 	(WINAPI *DLL_HandleRadioValue)(int type, int set); 	//Set or Get radio parameter 
typedef void 	(WINAPI *DLL_SetCalibrationMark)(int set); 		//set an calibration signal in dBm, set a positive value, we set this to negative value 
typedef void 	(WINAPI *DLL_SetCalibrationLine)(int set); 		//switch the DoubleLines-Input on/off --> for two calibration signal lines
//Panorama View & ExtIQ-Receiver
typedef BOOL 	(WINAPI *DLL_OpenExtIQ)(EXT_IQRX *extRX); 		//open the extern I/Q receiver for panorama view
typedef BOOL 	(WINAPI *DLL_CloseExtIQ)(); 				//close the extern I/Q receiver 
typedef float 	(WINAPI *DLL_GetExtIQDrawData)(IQ_DRAW_PARA *GetPara); 	//get all the plot data and parameter of the current extern I/Q-Signal
typedef void 	(WINAPI *DLL_SetExtIQData)(EXT_IQRX *extRX); 		//set changed data for the extern I/Q receiver (dBLevelOffset,XtalFrqCorr,XtalScalingCorr...)
typedef void 	(WINAPI *DLL_PepareExtIQDataSet)(EXT_IQRX *extRX); 	//you set the the IQ_type in EXT_IQRX data set,then call PepareExtIQDataSet 
									//set befor extRX->IQ_type and if you set extRX->IQ_default=1 then you load a default set
//IF-In & AF-Out Control
typedef BOOL 	(WINAPI *DLL_OpenIFInput)(HWND audioin, DWORD IFJet1102DLLThread_ID); //Open IF Input with your audio messages window and backprocess
typedef void 	(WINAPI *DLL_ActivateIFInput)(int onOff); 		//reactivate or deactivate IF Input after an device removement 0=reactivate 1=deactivate
typedef float 	(WINAPI *DLL_GetIFDrawData)(IF_DRAW_PARA *GetPara, int channel); //get all the plot data and parameter of the current IF-Signal, -1 = default = current channel
typedef BOOL 	(WINAPI *DLL_OpenAFOutput)(HWND audioout, char *name, HWND DecEndWindow); //Open AF Output with your audio messages window and as option the TX/RX decoder Window
typedef LRESULT (WINAPI *DLL_MixerChange)(WPARAM hMixer,LPARAM dwControlID);//the routine for the IF-Input/Audio-Mixer handling
typedef void 	(WINAPI *DLL_SetWaveOutVolume)(int vol); 		//set the wave out volume 0-200;
typedef void 	(WINAPI *DLL_SetWaveInLevel)(int lev); 			//set the wave in level 0-200;
typedef int     (WINAPI *DLL_SetIFInputLevel)(int lev, int onOFF); 	//set the IF-Input level and the currend onOFF state
typedef int 	(WINAPI *DLL_SetIFOutputLevel)(int lev); 		//set the IF-OutInput level 0-200;
typedef void 	(WINAPI *DLL_SetSpeakerOnOff)(int onof); 		//switch the main speaker on =0 or off =1 
typedef void 	(WINAPI *DLL_SetStereoOnOff)(int onof); 		//switch the AudioOut to Stereo (only for DRM mode)
typedef int 	(WINAPI *DLL_SetInputChannel)(int set); 		//set the HI/LO Channel or automatic 
typedef int 	(WINAPI *DLL_CheckDeviceChangings)(WPARAM wParam, LPARAM lParam); //check device changings by message OnDeviceChange
 
//Graphical Utillity
typedef void 	(WINAPI *DLL_DrawPotiLayout)(POTI_DRAWINFO *pinfo); 	//draw poti design
typedef void 	(WINAPI *DLL_InitRJ10Colors)(COLORPACK *colPack); 	//init the RJ10 color design 

//extern definitions & variables
extern HINSTANCE 			m_DllHandle;
extern DLL_ProcessIFInput 		ProcessIFInput;
extern DLL_OpenReceiver 		OpenReceiver;
extern DLL_CloseAll 			CloseAll;
extern DLL_SetInputChannel 		SetInputChannel;
extern DLL_CheckDeviceChangings 	CheckDeviceChangings;

extern DLL_SetRadioFrq 			SetRadioFrq;
extern DLL_SetRadioATT 			SetRadioATT;
extern DLL_SetRadioIF 			SetRadioIF;
extern DLL_SetRadioVolume 		SetRadioVolume;
extern DLL_SetRadioSquelch 		SetRadioSquelch;
extern DLL_SetRadioIGC 			SetRadioIGC;
extern DLL_SetRadioMode 		SetRadioMode;

extern DLL_SetRadioFrqCorr 		SetRadioFrqCorr;
extern DLL_SetRadioFrqScale 		SetRadioFrqScale;
extern DLL_SetDXFactor 			SetDXFactor;
extern DLL_SetAudioSampleCorr 		SetAudioSampleCorr;
extern DLL_GetEEpromInfo 		GetEEpromInfo;
extern DLL_HandleEEpromValue 		HandleEEpromValue;
extern DLL_HandleRadioValue 		HandleRadioValue;
extern DLL_SetCalibrationMark 		SetCalibrationMark;
extern DLL_SetCalibrationLine 		SetCalibrationLine;
extern DLL_OpenExtIQ 			OpenExtIQ;
extern DLL_CloseExtIQ 			CloseExtIQ;
extern DLL_GetExtIQDrawData 		GetExtIQDrawData;
extern DLL_SetExtIQData 		SetExtIQData;
extern DLL_PepareExtIQDataSet 		PepareExtIQDataSet;
extern DLL_OpenIFInput 			OpenIFInput;
extern DLL_ActivateIFInput 		ActivateIFInput;
extern DLL_OpenAFOutput 		OpenAFOutput;
extern DLL_MixerChange 			MixerChange;
extern DLL_SetWaveOutVolume 		SetWaveOutVolume;
extern DLL_SetIFInputLevel 		SetIFInputLevel;
extern DLL_SetIFoutputLevel 		SetIFOutputLevel;
extern DLL_SetWaveInLevel 		SetWaveInLevel;
extern DLL_SetSpeakerOnOff 		SetSpeakerOnOff;
extern DLL_SetStereoOnOff S		etStereoOnOff;

extern DLL_GetIFDrawData 		GetIFDrawData;
extern DLL_DrawPotiLayout 		DrawPotiLayout;
extern DLL_InitRJ10Colors 		InitRJ10Colors;

extern char myDIR[256];
void WINAPI FreeDLL();
void WINAPI DeInstall_RJ10MDLL();
BOOL WINAPI Install_RJ10MDLL();