#ifndef PACKET_H_
#define PACKET_H_



//************PACKET**************
#define SPINACI_MODUL_ID	2
#define LED_MODUL_ID		3

#define MY_ID				1		// moje ID
#define BROADCAST_ID		0		// 


// definicia konstant
#define	PACKET_TIMEOUT				2500	// 400us		// cas bez priatia bite po ktorom je packet uznany ako priaty
#define	TRANSMIT_EN_TIMEOUT_NO_PT	2500	// 400us		// caso ktory musi uplinut po PACKET_TIMEOUT aby mohol bit nastaveny RS485_transmit_en
#define	TRANSMIT_EN_TIMEOUT			1250	// 800us		// caso ktory musi uplinut aby mohol bit nastaveny RS485_transmit_en

#define	PACKET_DATA_LENGHT			42				// iba data
#define	PACKET_LENGHT_NO_DATA		8				// vratane CRC		
#define MAX_PACKET_LENGHT			PACKET_DATA_LENGHT + PACKET_LENGHT_NO_DATA	// cely packet

// sablona struktury packetu 
	typedef struct{
		unsigned char	start_of_packet;			// znak zaciatok packetu
		unsigned char	dest_ID;					// moje alebo jeho
		unsigned char	sorce_ID;					// jeho alebo moje
		unsigned char 	lenght;						// dlzka packetu celkova dlzka paketu od dest_ID po crc 
		unsigned char	packet_number;				// cislo paketu		
		unsigned char	comand;						// prikaz
		unsigned char 	sign;						// priznak 
		unsigned char 	data[PACKET_DATA_LENGHT];					// data mozu mat rozu ndlzku
		unsigned char	crc;					// na konci je crc v struct sa to da pouzit iba v pripade ze packet ma max dlzku
	}t_packet;	

#define START_OF_PACKET					0x01

//****************   Definicia comandov v strukturrach  *********************************************** 

// odpovede
	#define C_OK_PACKET						0x06			// odpoved OK data je sprava
	#define C_NACK_ERR_PACKET				0x15			// prikaz 0x15 NAK pre odpoved	kopiruje sa PN
	#define C_ERR_PACKET					0x07			// prikaz 0x07 BELL pre oznamenie generuje sa PN a caka sa na odpoved
	#define C_MY_SETTINGS					0x63			// odosle stav najskor je nastavene a potom z eeprom
	
// prikazy
	#define	C_SET_OUTPUTS_PACKET			0x21			// nastav vystupy na pozadovanu hodnotu 
	#define C_SEL_SETTINGS_PACKET			0x23			// nastav bunku eeprom na vystupy
	#define C_WISO_PACKET					0x10			// who is online moze bit brocast alebo s id
	#define C_SEND_DEVICE_SETTINGS			0x62			// odosle stav zariadenia vsetky settings aj aktual

#endif /*PACKET_H_*/
