#ifndef __USART3_H__
#define __USART3_H__

#define USE_NONE_SYSTEM                                         0
#define USE_FREERTOS                                            1
#define USE_OSAL                                                0
#define vLoRaIrqHandler                                         USART3_IRQHandler
#define USART3_GPIO_PIN_TX                                      GPIO_Pin_10
#define USART3_GPIO_PIN_RX                                      GPIO_Pin_11
#define USART3_GPIO_PIN_ATK_AUX                                 GPIO_Pin_4 // PA4
#define USART3_GPIO_PIN_ATK_MD0                                 GPIO_Pin_3 // PB3

#if (USE_NONE_SYSTEM == 1)
#elif (USE_FREERTOS == 1)
    #include "FreeRTOS.h"
    #include "queue.h"
#elif (USE_OSAL == 1)
#endif

#include "stm32f10x.h"                  // Device header
#include <stdio.h>
#include <stdarg.h>
#include <string.h>

#if (USE_NONE_SYSTEM == 1)
#elif (USE_FREERTOS == 1)
    extern QueueHandle_t xQueueUsart3IrqHdlr;
#elif (USE_OSAL == 1)
#endif

void vUsart3Init(uint32_t ulUsart3Baudrate);
void vUsart3SendByte(uint8_t ucByte);
void vUsart3SendArray(uint8_t *pucArray, uint16_t usLength);
void vUsart3SendString(char *pcString);
void vUsart3Printf(char *format, ...);

#endif
