/*****************************************************************************************/
/*																						 */
/*									USART Msg kezelő ATMEGA-hoz							 */
/*									Létrehozva:	2008.06.01.								 */
/*									Módosítva: 2008.06.01.								 */
/*									Utolsó módosítás: 2008.06.01.						 */
/*									Utolsó módosítás: 2008.08.29.						 */
/*									Verzió: V1.00										 */
/*																						 */
/*****************************************************************************************/

#include "USART_Msg_Service.h"
#include "UART.h"

char UART_Msg_Tmb[20];				// Ez tartalmazza a bejött üzenetet
BYTE m_UART_Msg_Byte_Counter = 0;	// Az üzenetből bejött byte-ok száma
char TokenString[5];				// Az üzenet egyes szavai

void StrCopy(char* dest, char* src, BYTE Start, BYTE Lght)
{
	BYTE i = 0;
	while(i < Lght)
	{
		dest[i] = src[i + Start];
		i++;
	}
	dest[i] = '\0';
}


BYTE UART_Msg_Service(Device_Command* Msg)
{
	while(RxReady())
	{
		if(m_UART_Msg_Byte_Counter >= 20)m_UART_Msg_Byte_Counter = 0;
		UART_Msg_Tmb[m_UART_Msg_Byte_Counter] = GetChar();
		if(UART_Msg_Tmb[m_UART_Msg_Byte_Counter] == '\r')			// Üzenet vége karakter
		{
	//		printf("\r%s\r",UART_Msg_Tmb);
			m_UART_Msg_Byte_Counter = 0;
			if(UART_Msg_Tmb[0] == 'M')								// Érvényes üzenet
			{
//-----------------------------------------------------------------------------------//
//				StrCopy(TokenString, UART_Msg_Tmb, 2, 2);			// A készülék amivel foglalkozni kell
//				Msg->m_DeviceID = atoi(TokenString);
//-----------------------------------------------------------------------------------//
				StrCopy(TokenString, UART_Msg_Tmb, 2, 3);			// SET vagy GET
				if( strcasecmp(TokenString, "SET") == 0 )			// SET
					{	Msg->m_Command = TRUE;	}
				else
					{	Msg->m_Command = FALSE;	}
//-----------------------------------------------------------------------------------//
				StrCopy(Msg->m_Param, UART_Msg_Tmb, 6, 2);			// Mit állítson vagy mit kérdez le
//-----------------------------------------------------------------------------------//
				if(Msg->m_Command == TRUE)							// Csak SET esetében van beállítandó érték
				{
					StrCopy(TokenString, UART_Msg_Tmb, 9, 3);		// A beállítandó érték
					Msg->m_ParamValue = atoi(TokenString);
				}
//-----------------------------------------------------------------------------------//
				
				return TRUE;
			}
		}
		else{ m_UART_Msg_Byte_Counter++;}
	
	}
	
	return FALSE;
}
