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

	\brief		Funkce pro seriovou komunikaci protokol Modbus
				<<< ALL >>>

	\author		ConTeK s.r.o., Ing. Vladimir Kastner
	\version	01.01
	\date		10.10.2009
*/
//----------------------------------------------------

#ifndef _UCLP2C_H_
#define _UCLP2C_H_

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

//----------------------------------------------------
/**
	\brief	Definice CLP2C protokolu
			*data*, CRC16
*/
//----------------------------------------------------


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

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

	crc16_t				Polyn;			//!< CRC polynom
	crc16_t				InitVal;		//!< inicializacni hodnota polynomu
	bool_t				LBit;			//!< nejvyssi bit v B0
	cmSend_t			Send;			//!< ukazatel na Send linkove vrstvy
	cmRecv_t			Recv;			//!< ukazatel na Recv linkove vrstvy

} CLP2CDESC;


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

	\param	_clp2		Struktura kontextu automatu
	\param	_CmmL1		Adresa knihovny fyzicke vrstvy
	\param	_polyn		genegacni polynom
	\param	_lBit		TRUE = nejvyssi bit v B0
	\param	_initVal		inicializacni hodnota
*/
//----------------------------------------------------

bool_t Clp2CInitialize(CLP2CDESC * const _clp2, COMMDESC * const _cmm, const crc16_t _polyn, const bool_t _lBit, const crc16_t _initVal);


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

void Clp2CFinalize(const CLP2CDESC * const _clp2);

#endif // _UCLP2C_H_
