
typedef struct _spid {
  double dState;      	// Last position input
  double iState;      	// Integrator state
  //double iMax, iMin;  	// Maximum and minimum allowable integrator state
  double	iGain,    	// integral gain
        	pGain,    	// proportional gain
         	dGain;     	// derivative gain
  double	stabPha; // hodnota faze na kterou se ma stabilizovat

} SPid;

#define NOR 20	// pocet bodu pro linearni regresi

typedef struct _smax{ // struktura pro detekci maximalni hodnoty amplitudy
	double tmp[NOR]; // pole vzorku pro vypocet linearni regrese a odhad nulove derivace
	int	pocethodnot; // pocet hodnot v poli tmp pokud je pole plne zacne se interpolovat
	double regA;   // regrese a - smernice
	double tmpA;	// posledni smernice
	int koef;  // koeficient smeru pricitani, +1 , -1
	int offset; // ofset od 32768 pro ovladani piezo
	int stop;
} SMax;

// seriovy port
extern BOOL initComport(LPCWSTR comport);
extern void outCom(unsigned int M ,unsigned int N);
extern void closeComport();

// pid regulator
extern double UpdatePID(SPid *pid, double error, double position);

// hledani maxima
extern BOOL UpdateAmax(SMax *max,double amp);
