/* H-soubor pro RTC rutiny vyuzivajici interni RTC mikrokontroleru */
#ifndef __RTC_H
#define __RTC_H

// Include soubory
#include "stm32f10x.h"

// Definice konstant

#define Backup_Set			BKP_DR1				// Adresa zalozniho registru (napajeneho z baterie) o tom, jestli byl nastaven cas
#define Backup_Den			BKP_DR2				// Adresa zalozniho registru (napajeneho z baterie) dnu
#define Backup_Mesic		BKP_DR3				// Adresa zalozniho registru (napajeneho z baterie) mesice
#define Backup_Rok			BKP_DR4				// Adresa zalozniho registru (napajeneho z baterie) roku

#define Backup_LED1_time	BKP_DR5				// Adresa zalozniho registru LED1
#define Backup_LED2_time	BKP_DR6				// Adresa zalozniho registru LED2
#define Backup_LED3_time	BKP_DR8				// Adresa zalozniho registru LED3
#define Backup_LED4_time	BKP_DR9				// Adresa zalozniho registru LED4
#define Backup_LED5_time	BKP_DR10			// Adresa zalozniho registru LED5
#define Backup_LED6_time	BKP_DR11			// Adresa zalozniho registru LED6

#define Backup_LetniCas		BKP_DR7				// Adresa zalozniho registru (napajeneho z baterie) letniho casu

#define LEAP				1
#define NOT_LEAP			0
#define SECONDS_IN_DAY 		86399
#define OCTOBER_FLAG_SET 	0x4000
#define MARCH_FLAG_SET 		0x8000
#define CONFIGURATION_DONE 	0xAAAA
#define CONFIGURATION_RESET 0x0000

#define DEFAULT_DAY 		15
#define DEFAULT_MONTH 		5
#define DEFAULT_YEAR 		2011
#define DEFAULT_HOURS 		12
#define DEFAULT_MINUTES 	0
#define DEFAULT_SECONDS 	0

// Prototypy funkci
void RTC_Init(void);
void RTC_Update(void);
void DateUpdate(void);
uint8_t CheckLeap(uint16_t Year);
uint8_t WeekDay(uint16_t CurrentYear,uint8_t CurrentMonth,uint8_t CurrentDay);
uint8_t WeekDayEurope(uint16_t CurrentYear,uint8_t CurrentMonth,uint8_t CurrentDay);
void SummerTimeCorrection(uint8_t NastavitCas);
void CheckForDaysElapsed(void);
void SetTime(uint8_t Hour,uint8_t Minute,uint8_t Seconds);
void SetTimeRAW(uint32_t timeRAW);
uint32_t GetTimeRAW(void);
void RTC_SetDate(uint8_t Den, uint8_t Mesic, uint16_t Rok);
void RTC_UpdateSec(void);

#endif
/* Konec souboru */
