//----------------------------------------------------
/**
	\file		thermocouple.c

	\brief		Knihovna staraciji se o termoclanek
				<<< ALL >>>

	\author		ConTeK s.r.o., Jakub Kastner
	\version	01.01
	\date		22.12.2015
*/
//----------------------------------------------------

#ifndef _THERMOCOUPLE_H_
#define _THERMOCOUPLE_H_

#include "libsets.h"
#include "appsets.h"
#include "XmlTypes.h"

typedef struct _THERMOCOUPLE_CTX{
	ticks_t		Timer;			//!< Casovac pro zjisteni jak dlouho se teplota pocita

	float_t	ThermocoupleGain;	//!< zesileni pristrojoveho zesilovace
	float_t	JunctionTemp_on_Volt;	//!< konstanta pro prevod napeti na teplotu (prechod na desku)
	float_t	AmpflOffset;

	float_t	A0;			//!< koeficient pro vypocet teploty z napeti a0
	float_t	A1;			//!< koeficient pro vypocet teploty z napeti a1
	float_t	A2;			//!< koeficient pro vypocet teploty z napeti a2
	float_t	A3;			//!< koeficient pro vypocet teploty z napeti a3
	float_t	A4;			//!< koeficient pro vypocet teploty z napeti a4
	float_t	A5;			//!< koeficient pro vypocet teploty z napeti a5
	float_t	A6;			//!< koeficient pro vypocet teploty z napeti a6
	float_t	A7;			//!< koeficient pro vypocet teploty z napeti a7
	float_t	A8;			//!< koeficient pro vypocet teploty z napeti a8
	float_t	A9;			//!< koeficient pro vypocet teploty z napeti a9

	float_t coefNear25;
	float_t FilterKonstant;

	temperature_t TempOnJunction;
	temperature_t TempOnThermoucouple;

	float_t mVoltOnJunction;
	float_t mVoltOnThermoucouple;

	aiodata_t oldJunction;
	aiodata_t oldThermo;



} THERMOCOUPLE_CTX;


//----------------------------------------------------
/**
	\brief		Funkce pro obnoceni konstant

	\param		_ctx			kontext knihovny
				_thermocouple	napeti na termoclaneku
				_junction		napeti na prechodu na desku
				_aX				X-ty koeficient rovnice pro vypocet teploty 
*/
//----------------------------------------------------

void ThermoUpdateConstant( THERMOCOUPLE_CTX * _ctx, float_t	_thermocoupleGain, float_t _junctionTemp_on_Volt,
						  float_t _AmpflOffset, float_t _filtrConst, float_t _coefnear25, float_t _a0, 
						  float_t _a1, float_t _a2, float_t _a3, float_t _a4, float_t _a5, float_t _a6, 
						  float_t _a7, float_t _a8, float_t _a9);


//----------------------------------------------------
/**
	\brief		Periodicky volaná funkce

	\param		_ctx			kontext knihovny
				_thermocouple	napeti na termoclaneku
				_junction		napeti na prechodu na desku
*/
//----------------------------------------------------

void ThermocoupleTick( THERMOCOUPLE_CTX * _ctx, aiodata_t _thermocouple, aiodata_t _junction);

//----------------------------------------------------
/**
	\brief		Inicializace knihovny

	\param		_ctx			kontext knihovny
*/
//----------------------------------------------------

void ThermocoupleInit( THERMOCOUPLE_CTX * _ctx );

//----------------------------------------------------
/**
	\brief		Finalize knihovny

	\param		_ctx			kontext knihovny
*/
//----------------------------------------------------

void ThermocoupleFinalize( THERMOCOUPLE_CTX * _ctx );


#endif // _THERMOCOUPLE_H_
