#ifndef __usart_h__#define __usart_h__#include "common.h"namespace USART0 {// setting = f_osc/16/BAUD - 1const uint16_t baud9600_8MHz = 51;const uint16_t baud19200_8MHz = 25;const uint16_t baud57600_8MHz = 8;const uint16_t baud19200_6_14MHz = 19;const uint16_t baud38400_6_14MHz = 9;const uint16_t baud19200_6_5MHz = 20;const uint16_t baud38400_6_5MHz = 10;const uint16_t baud57600_6_5MHz = 6;inline uint8_t FastReceiveData();inline void Init(uint16_t aBaudSetting) {UBRR0 = aBaudSetting;UCSR0A = 0;FastReceiveData(); // Clear any possible pending input data (to avoid spurious IRQUCSR0B = (1 << RXCIE0) | (1 << RXEN0) | (1 << TXEN0);UCSR0C = (1 << USBS0) | (3 << UCSZ00);}void SendData(uint8_t aData);uint8_t ReceiveData();inline void FastSendData(uint8_t aData) {UDR0 = aData;}inline uint8_t FastReceiveData() {return UDR0;}void SendHexData(uint8_t aData);void SendHexData(uint16_t aData);void SendHexData(uint32_t aData);void SendHexData(int16_t aData);void SendHexData(int32_t aData);void SendString(const char *aString);void SendPGString(const char *aString);}#endif // __usart_h__