//----------------------------------------------------
/**
	\file		ctk/inc/uclp1a.h
	\ingroup	serial
	\ingroup	all

	\brief		Funkce pro seriovou komunikaci protokol CLP
				<<< ALL >>>
			
	\author		ConTeK s.r.o., Ing. Vladimir Kastner
	\version	01.01
	\date		12.01.2007
*/
//----------------------------------------------------


#ifndef _UCLP1A_H_
#define _UCLP1A_H_

#include <ctktypes.h>
#include <comm.h>

//----------------------------------------------------
/**
	\brief	Definice CLP protokolu
			DLE, SOH, *data*, DLE, ETX
			Je-li znak DLE obsazen v *data*, je vyslan DLE, DLE
*/
//----------------------------------------------------


//----------------------------------------------------
/**
	\brief	Popisovac automatu
*/
//----------------------------------------------------

typedef struct
{
	volatile uint8_t				State;			//!< Stav automatu

} CL1ADESC;


//----------------------------------------------------
//! Struktura kontextu automatu vysilace a prijimace

typedef struct 
{
	COMMDESC *			Cmm;			//!< ukazatel na komunikaci nizsi vrstvy

	CL1ADESC			Snd;			//!< stav vysilace
	CL1ADESC			Rcv;			//!< stav prijimace

} CLP1ADESC;


//----------------------------------------------------
/**
	\brief	Funkce pro inicializaci komunikacniho automatu 

	\param	_clp		Struktura kontextu automatu
	\param	_cmm		Adresa knihovny fyzicke vrstvy
*/
//----------------------------------------------------

bool_t Clp1AInitialize(CLP1ADESC * const _clp, COMMDESC * const _cmm);


//----------------------------------------------------
/**
	\brief	Funkce pro ukonceni komunikacniho automatu 

	\param	_clp		Struktura kontextu automatu
*/
//----------------------------------------------------


void Clp1AFinalize(const CLP1ADESC * const _clp);

#endif // _UCLP1A_H_
