/* H-soubor k souboru planovac.c */

#ifndef _PLANOVAC_H
#define _PLANOVAC_H

// Include
#include <stdio.h>

// Definice 
#define PLANOVAC_MAXZAZNAMU		40			// Maximalni pocet zaznamu planovace ulozenych ve FLASH - celkem zabrano 40*7x16 bite = 280x16 bite
											// kazdy ma(byte): 4(Start) + 4(Stop) + 5*1(Kanal 1 az 5+6) + 1(Opak.) = 14byte
#define PLANOVAC_DELKAZAZNAMU	7			// Delka jednoho zaznamu v nasobcich 16-bitu

#define PLANOVAC_OFFSET_STARTTIME		0	
#define PLANOVAC_OFFSET_ENDTIME			2
#define PLANOVAC_OFFSET_KANAL1_2		4
#define PLANOVAC_OFFSET_KANAL3_4		5
#define PLANOVAC_OFFSET_KANAL56_OPAK	6

#define PLANOVAC_PROVEDENO		0			// Plan v RAM jiz byl proveden
#define PLANOVAC_DENNE			1			// Plan v RAM se ma provadet kazdy den od datumu zacatku do konce
#define PLANOVAC_TYDNE			2			// Plan v RAM se ma provadet kazdy tyden v den v tydnu stanovenem datumem zacatku
#define PLANOVAC_MESICNE		3			// Plan v RAM se ma provadet kazdy mesic v den v mesici stanovenem datumem zacatku
#define PLANOVAC_ROCNE			4			// Plan v RAM se ma provadet kazdy rok v den a mesic stanovenem datumem zacatku
#define PLANOVAC_DEAKTIVOVAT	5			// Plan v RAM se nebude provadet
#define PLANOVAC_RESTART		7			// Prizna toho, ze jiz byl nastaven plan z minulosti po zapnuti napajeni/restartu

#define PLANOVAC_OFFSET_ROK		100000000	// offset v Timestampu (jakym cislem je treba timestamp vydelit abychom dostali rok)
#define PLANOVAC_OFFSET_MESIC	1000000		// offset v Timestampu (jakym cislem je treba timestamp vydelit abychom dostali mesic)
#define PLANOVAC_OFFSET_DEN		10000		// offset v Timestampu (jakym cislem je treba timestamp vydelit abychom dostali den)

// Prototypy funkci
void Planovac_CheckPlan(void);
void Planovac_SearchPlan(void);
void Planovac_CompareCandidate(uint8_t *ID_vybraneho,uint8_t *ID_kandidat, uint32_t *TimeStamp_Nalezen1, uint32_t *TimeStamp_Nalezen2, uint32_t *TimeStamp_Aktualni);
void Planovac_CorectDate(uint16_t *temp_Rok,uint8_t *temp_Mesic,uint8_t *temp_Den);
uint8_t Planovac_GetZaznam(uint8_t ID,uint8_t *Zacatek,uint8_t *Konec,uint8_t *Opakovani,uint8_t *NastaveniKanalu);
void Planovac_PocetZaznamu(uint8_t *PocetZaznamu, uint8_t *PocetAktivnich);
uint8_t Planovac_SmazatZaznam(uint8_t ID);
uint8_t Planovac_PridatZaznam(uint8_t ZacatekDen,uint8_t ZacatekMesic,uint8_t ZacatekRok,uint8_t ZacatekHodina,
							  uint8_t ZacatekMinuta,uint8_t KonecDen,uint8_t KonecMesic,uint8_t KonecRok,
							  uint8_t KonecHodina,uint8_t KonecMinuta,uint8_t Opakovani,uint8_t *NastaveniKanalu);
uint8_t Planovac_EditovatZaznam(uint8_t ID,uint8_t ZacatekDen,uint8_t ZacatekMesic,uint8_t ZacatekRok,
								uint8_t ZacatekHodina,uint8_t ZacatekMinuta,uint8_t KonecDen,uint8_t KonecMesic,
								uint8_t KonecRok,uint8_t KonecHodina,uint8_t KonecMinuta,uint8_t Opakovani,
							    uint8_t *NastaveniKanalu);
uint8_t Planovac_ExistujiciZaznam(uint8_t ID);
uint8_t Planovac_Existuje(uint8_t ZacatekDen,uint8_t ZacatekMesic,uint8_t ZacatekRok,uint8_t ZacatekHodina,
						  uint8_t ZacatekMinuta,uint8_t KonecDen,uint8_t KonecMesic,uint8_t KonecRok,
						  uint8_t KonecHodina,uint8_t KonecMinuta,uint8_t Opakovani,uint8_t *NastaveniKanalu);

#endif
/* Konce souboru */
