#ifndef __SENSORS_H
#define __SENSORS_H





/*******************************************************************************/
// definice prahove hodnoty podpeti pri ktere se posle paket MEASURE
/*******************************************************************************/
#define EDK_PRESET_UNDERVOLTAGE			105		// nasobene konstantou x10
#define EDK_PRESET_OPVOLTAGE			80		// rozumna limita pracovniho napeti (x10)


#define MAX_SENSORS	  	(8)				// rezervovany prostor pro tabulku snimacu
#define SENSOR_ITEMS  	(3)				// pocet polozek tabulky



/******************************************************************************/
// definice poli v inputTable[x][10]
#define FLAG_IO					0
#define CORR					1
#define DELTA					2
#define MIN						3	// 
#define MIN_LOW					4	// MIN A MAX je INT PRO MODBUS
#define MAX						5	// pro moduly je hodnota v LOW 
#define MAX_LOW					6
#define it_FREE					7
#define INPUT_TABLE_DF_SIZE		8	// pocet bajtu ktere se ukladaji do dataFlash
// ------ polozky 0-7 se generuji z paketu a ukladaji do DATAFLASH ---------
// dalsi polozky jsou pracovni dle typu zarizeni
#define LAST_STATE				8	// HI BYTE MODBUS
#define LAST_STATE_LOW			9	// pro binarni a analogove moduly posledni mereny stav vstupu, nebo LOW BYTE pro MODBUS
#define LAST_LIMIT				10	// posledni stav pruchodu limitou MIN nebo MAX
#define INPUT_TABLE_RAM_SIZE  	11	// pro urceni velikosti pole



// definice FLAG_IO - typ zpracovani analogove hodnoty 
#define FCE_DELTA				0x01	// bit 0 - default funkce DELTA
#define FCE_ANALOG_THERM		0x02    // bit 1 - analogovy termostat
#define FCE_BINARY_THERM		0x04	// bit 2 - binarni termostat
#define FCE_BINARY_COUNTER		0x08	// bit 3 - citac pro interni vstupy


// definice pro LAST_LIMIT - posledni stav pruchodu limitou MIN nebo MAX
#define LAST_LIMIT_MAX			0x80
#define LAST_LIMIT_MIN			0x40

/*******************************************************************************/
// VYCET TYPU SENSORU
// chova se jako vnitrni adresa sensoru v ramci zarizeni
// jaky sensor je dostupny je dano definici v prekladu, podle toho se zavedou
/*******************************************************************************/
enum 
{
 SENSOR_POS_NULL,
 
 #ifdef USE_VOLT
  SENSOR_POS_VOLTAGE,		// snimac napeti 
 #endif
 
 #ifdef USE_THERMO
  SENSOR_POS_TEMPERATURE,	// snimac teploty  
 #endif
 
 #ifdef USE_CURRENT
  SENSOR_POS_CURRENT,		// snimac proudu [mA]
 #endif
 
 #ifdef USE_LUX
  SENSOR_POS_LUXMETER,		// snimac osveteleni [lux]
 #endif
 
 #ifdef USE_WIND
  SENSOR_POS_WIND,			// snimac vetru  [m/s]
 #endif
 
 #ifdef USE_HUM
  SENSOR_POS_HUMIDITY,		// snimac vlkosti [%Rh] 
 #endif
 
 SENSOR_COUNT,
};





/*******************************************************************************/
// definice ADDR_IO
// merici kanal v ramci snimace
/*******************************************************************************/
 #define SENSOR_CHAN_1			0x01	// merici kanal 1 [m/s]
 #define SENSOR_CHAN_2			0x02	// merici kanal 2 [km/h]



/*******************************************************************************/
// definice DATA_STATE
// doplnujici priznak veliciny
/*******************************************************************************/
 #define SENSOR_TYPE_VOLTAGE		0x01	// typ veliciny napeti
 #define SENSOR_TYPE_TEMPERATURE	0x02	// typ veliciny teplota
 #define SENSOR_TYPE_CURRENT		0x04	// typ veliciny proud
 #define SENSOR_TYPE_LUX			0x08	// typ veliciny osvetleni
 #define SENSOR_TYPE_WIND			0x10	// typ veliciny rychlost vetru
 #define SENSOR_TYPE_HUMIDITY		0x20	// typ veliciny vlhkost


/*******************************************************************************/
// definice offsetu pro nize uvededenou tabulku sensorTable
/*******************************************************************************/
#define SENSOR_POSITION		0
#define SENSOR_TYPE			1
#define SENSOR_CHANNEL		2
  
  
/*******************************************************************************/
// definice vychoziho nastaveni parametru DELTA podle typu sensoru
/*******************************************************************************/
#define DEFAULT_DELTA_VOLTAGE			5		// default delta pro napetovy sensor [x0.1 V]
#define DEFAULT_DELTA_TEMPERATURE		2		// default delta pro teplotni sensor [x0.1 °C]
#define DEFAULT_DELTA_CURRENT			1		// default delta pro teplotni sensor [x0.1 A]
#define DEFAULT_DELTA_LUX				100		// default delta pro svetelny sensor [x0.1 Lux]
#define DEFAULT_DELTA_WIND_KMH			100		// default delta pro vetrny sensor [x0.1 km/h]
#define DEFAULT_DELTA_WIND_MS			10		// default delta pro vetrny sensor [x0.1 m/s]
#define DEFAULT_DELTA_HUMIDITY			50		// default delta pro vetrny sensor [x0.1 Rh]


#endif