#ifndef _GLOBAL_TIME
#define _GLOBAL_TIME

typedef struct {
	unsigned long total_seconds; //Всего секунд с момента включениЯ
    unsigned long total_seconds10; //Всего секунд с момента включениЯ с десятыми
    unsigned long total_seconds10full; //Всего секунд с момента включениЯ с десятыми
	unsigned long microseconds;
    unsigned int microseconds_temp;

	unsigned int miliseconds;	//???
    unsigned long miliseconds_long;   //???
	unsigned int pwm_tics;
	unsigned int seconds;
	unsigned int minuts;
	unsigned int hours;
	unsigned int freq_pwm_hz;
	unsigned int microseconds_add;
	void (*calc)(); 			//Считает в прерывании ШИМ'а
} GLOBAL_TIME;

typedef GLOBAL_TIME *GLOBAL_TIME_handle;

void global_time_calc(GLOBAL_TIME_handle);
void init_global_time_struct(unsigned int freq_pwm);

/*-----------------------------------------------------------------------------
Default initalizer for the GLOBAL_TIME object.
-----------------------------------------------------------------------------*/                     
#define GLOBAL_TIME_DEFAULTS {	0, \
								0, \
								0, \
                                0, \
								0, \
                                0, \
                                0, \
                                0, \
								0, \
								0, \
								0, \
								0, \
								0, \
								global_time_calc \
}
/*------------------------------------------------------------------------------
Prototypes for the functions in global_time.c
------------------------------------------------------------------------------*/


extern GLOBAL_TIME global_time;

void init_timer_sec(unsigned int *start_time);	//Инициализирует переменную, времЯ старта в секундах
void init_timer_milisec(unsigned int *start_time);	//Инициализирует переменную, времЯ старта в милисекундах
int detect_pause_sec(unsigned int wait_pause, unsigned int *old_time);	//пауза в секундах
int detect_pause_milisec(unsigned int wait_pause, unsigned int *old_time);	//Пауза в милисекундах (не более 60000млсек)
unsigned int get_delta_milisec(unsigned int *old_time, unsigned int upd); // вернули сколько времени прошло от времени old_time ; upd=1 - обновить old_time - текущим

#endif //_GLOBAL_TIME
