#ifndef __DEFINES_POW_H
#define __DEFINES_POW_H


//------------------------------------------------------------------------
// stavove flagy POW.flag
//------------------------------------------------------------------------
#define FLAG_OC_PULSE_MODE				0x0001	// OC - staticky/pulsni vystup podle DIP6 (1=PULSE, 0=STATIC)
#define FLAG_OVERCURRENT				0x0002	// flag prekroceni proudu, merena velicina 
#define FLAG_BAT_LOW					0x0004	// flag pokles napeti baterie, sleduje vstup BAT_LOW ze zdroje
#define FLAG_UNDERVOLTAGE				0x0008	// flag pokles napajeciho napeti, merena velicina 
#define FLAG_OVERTEMPERATURE			0x0010	// flag prekroceni nastavene teploty, merena velicina 
#define FLAG_RESET_TRIGGER				0x0020	// flag pro spusteni odpoctu a znovunahozeni rele po aktivaci vstupu RESET  
#define FLAG_RESET_PENDING				0x0040	// flag ze probiha RESET zdroje, je blokovan pristup k rele
#define FLAG_REZ3						0x0080	// 
#define FLAG_EPS_UPDOWN					0x0100	// up/down counter pro detekci vstupu EPS (1=UP, 0=DOWN)
#define FLAG_TMP_UPDOWN					0x0200	// up/down counter pro detekci vstupu TAMPER (1=UP, 0=DOWN)
#define FLAG_LOCK_UPDOWN				0x0400	// up/down counter pro detekci vstupu LOCK (1=UP, 0=DOWN)
#define FLAG_RESET_UPDOWN				0x0800	// up/down counter pro detekci vstupu RESET (1=UP, 0=DOWN)


/*******************************************************************************/
// prednastaveni casovacu POW
/*******************************************************************************/
#define POW_PRESET_EPS_TIME			 	25		// potrebna doba k aktivaci vstupu EPS [x10ms]
#define POW_PRESET_TMP_TIME				25		// potrebna doba k aktivaci vstupu TMP [x10ms]
#define POW_PRESET_LOCK_TIME 			50		// potrebna doba k aktivaci vstupu LOCK [x10ms]
#define POW_PRESET_RESET_TIME 			25		// potrebna doba k aktivaci vstupu RESET [x10ms]
#define POW_PRESET_RELAY_OFF_TIME 		15000	// doba odpojeni vystupu - vypnuti rele po aktivaci vstupu RESET

/*******************************************************************************/
// definice masky vstupu ve strukture POW.input
/*******************************************************************************/
#define POW_IN_EPS			(1<<0)		// vstup EPS
#define POW_IN_TMP			(1<<1)		// vstup tamper
#define POW_IN_LOCK			(1<<2)		// vstup zamek
#define POW_IN_AC_OK		(1<<3)		// ac-ok - vstup ze zdroje
#define POW_IN_BAT_LOW		(1<<4)		// battery low - vstup ze zdroje
#define POW_IN_RESET		(1<<5)		// vstup reset
#define POW_IN_REZ1			(1<<6)		// volno
#define POW_IN_REZ2			(1<<7)		// volno


/*******************************************************************************/
// definice masky v strukture POW.output
/*******************************************************************************/
#define POW_OUT_LED_YELLOW	(1<<0)		// LED zluta na panelu
#define POW_OUT_LED_TEMP	(1<<1)		// LED zluta otevreny kolektor na desce
#define POW_OUT_OC			(1<<2)		// vystup otevreny kolektor
#define POW_OUT_RELAY		(1<<3)		// rele


/*******************************************************************************/
// definice pro nacitani vstupu do promene POW.input
// piny jsou zapojene pres optrony
//*******************************************************************************/
#define POW_PIN_EPS				(p2_0)? 0:1
#define POW_PIN_TMP				(p3_3)? 0:1
#define POW_PIN_LOCK			(p3_4)? 0:1
#define POW_PIN_AC_OK			(p3_5)? 0:1
#define POW_PIN_BAT_LOW			(p4_2)? 0:1
#define POW_PIN_RESET			(p4_5)? 0:1


/*******************************************************************************/
/* DIP prepinac - definice funkce prepinacu, cislovani LSB=DIP8															   */
/*******************************************************************************/
#define POW_DIP_ADR_MASK	0x0f		// adresa 
#define POW_DIP_PORT		p0.byte;	// port DIPu



/*******************************************************************************/
// zakladni prednastaveni limit pro merene veliciny
//*******************************************************************************/
#define POW_PRESET_OVERCURRENT		2900	// limita max. proudu [x1mA]
#define POW_PRESET_UNDERVOLTAGE		11500	// limita min. napeti [x1000mV]
#define POW_PRESET_OVERTEMPERATURE	6000	// limita max. teploty [x1/100°C, rozliseni 0.5°C]


// definice poradi snimacu analogovych velicin v ramci typu zarizeni POW
#ifdef CORE_POW
 #define ADDR_IO_VOLTAGE				0x01
 #define ADDR_IO_CURRENT				0x02
 #define ADDR_IO_TEMPERATURE			0x03
#endif 



#endif
