#define TIMER_NUM	5

typedef struct _DATE_ST_T
{
	/* tovabb lehet egyszerusiteni :n, bothosszusag megadassa */
	/* pl: unsigned char sec :6;   // 0-63 */
	unsigned char year;
	unsigned char month;
	unsigned char day;
	unsigned char hour;
	unsigned char min;
	unsigned char sec;
}DATE_ST_T;

typedef struct _RTC_TIMER_ST_T
{
	DATE_ST_T StartTime;
	DATE_ST_T StopTime;
	DATE_ST_T DiffTime;
	/* ha kesebb vizsgalni kene, fut -e */
	unsigned char Running; 

}RTC_TIMER_ST_T;


void CurrentTimeGet(void);
void StartTimer(unsigned char ID);
void StopTimer(unsigned char ID);

RTC_TIMER_ST_T gl_RTC_Timers[TIMER_NUM];
DATE_ST_T gl_CurrentTime;
volatile unsigned char event1 = 0,event2 = 0,event3 = 0,event4 = 0;

void main(void)
{
	/* init */
	/* ... */
	while(1)
	{
		/* I2C ora adatainak beolvasasa */
		CurrentTimeGet();
		
		/* ha kell inditod */
		if(event1)
		{
			event1 = 0;
			StartTimer(0);
		}
		if(event2)
		{
			event2 = 0;
			StartTimer(1);
		}
		/* amikor kell leallitod */
		if(event3)
		{
			event3 = 0;
			StopTimer(0);
		}
		if(event4)
		{
			event4 = 0;
			StopTimer(1);
		}
	}
}

void CurrentTimeGet(void)
{
	/* I2C-s dolgok */
	/*
	gl_CurrentTime.year = ;
	gl_CurrentTime.month = ;
	gl_CurrentTime.day = ;
	gl_CurrentTime.hour = ;
	gl_CurrentTime.min = ;
	gl_CurrentTime.sec = ;
	*/
}

void StartTimer(unsigned char ID)
{
	gl_RTC_Timers[ID].StartTime = gl_CurrentTime;
	gl_RTC_Timers[ID].Running = 1;
}

void StopTimer(unsigned char ID)
{
	RTC_TIMER_ST_T* pTimer;
	
	pTimer = &gl_RTC_Timers[ID];
	
	pTimer->StopTime = gl_CurrentTime;
	pTimer->Running = 0;
	
	/* itt meg ki kell szamolni a kulonbseget */
	/* figyelembe kell venni az atfordulasokat, hany napos a honap, szokoev, stb... */
	pTimer->DiffTime.year 	= pTimer->StopTime.year 	- pTimer->StartTime.year;
	pTimer->DiffTime.month 	= pTimer->StopTime.month 	- pTimer->StartTime.month;
	pTimer->DiffTime.day 	= pTimer->StopTime.day 		- pTimer->StartTime.day;
	pTimer->DiffTime.hour 	= pTimer->StopTime.hour 	- pTimer->StartTime.hour;
	pTimer->DiffTime.min 	= pTimer->StopTime.min 		- pTimer->StartTime.min;
	pTimer->DiffTime.sec 	= pTimer->StopTime.sec 		- pTimer->StartTime.sec;
	
}