#ifndef _USART1_H_
#define _USART1_H_
#include "stm32f10x_usart.h"
#include "stm32f10x_gpio.h"

// Definice konstant ------------------------------------
#define true				1
#define false				0

#define ASCII_LF			0x0D
#define ASCII_LR			0x0A
#define ASCII_TAB			0x0B
#define ASCII_CLC			0x0C

#define CR1_UE_Set                ((uint16_t)0x2000)  /*!< USART Enable Mask */
#define CR1_UE_Reset              ((uint16_t)0xDFFF)  /*!< USART Disable Mask */

// Definice maker ----------------------------------------
#define 	USART1_Send_Enter()		USART1_Write(ASCII_LF); \
									USART1_Write(ASCII_LR);			/* Odeslani znaku konce radku */
#define  	USART1_Send_Tab()		USART1_Write(ASCII_TAB);		/* Odeslani znaku tabulatoru */
#define  	USART1_Send_Clc()		USART1_Write(ASCII_CLC); \
									USART1_Write(ASCII_CLC);		/* Odeslani znak pro smazani obrazovky */

// Prototypy funkci ---------------------------------------
void USART1_Init(void);								// Inicializace USART1 jednotky
void USART1_Write(uint8_t data);					// Odesle pres seriovou linku jeden byte - ceka na dokonceni
uint8_t USART1_Read(void);							// Prijme jeden byte ze seriovoe linky - ceka, nez nejaky prijde
uint8_t USART1_ReadIf(uint8_t *UART_Get_Buffer);	// Otestuje jestli na seriovou linku neco neprislo a pokud ano tak vrati 'true' a do promenne na kterou ukazuje ukazatel v parametrech funkce ulozi prichozi jeden byte
void USART1_Send(uint8_t *text, uint8_t enter);		// Odesle na seriovou linku retezec a pokud je enter='true' tak za nej prida i znak pro konec radku
void USART1_SendNumber(uint8_t cislo);				// Odesle na seriovou linku 8-bit cislo v ASCII formatu (000-255)
void USART1_SendInteger(uint16_t cislo);			// Odesle na seriovou linku 16-bit cislo v ASCII formatu (00000-65535)	
void USART1_SendInt32(uint32_t cislo);
uint8_t USART1_BinToHex(uint8_t bin);				// Pomocna funkce pro prevod na HEX format
void USART1_Send_Hex(uint8_t hex);					// Odesle cislo HEX ve formatu ASCII
void USART1_WaitForMUTEX(void);
void USART1_SetMUTEX(void);
void USART1_FreeMUTEX(void);
#endif
// Konec souboru ==================================================
