#ifndef _LMCAL_UART_CFG_H
#define _LMCAL_UART_CFG_H

//******************************************** Включаемые файлы *********************************************

#include "at32f403a_407_gpio.h"
#include "at32f403a_407_usart.h"


//******************************************* Локальные константы *******************************************

// Номера UART в цифровом формате
#define LMCAL_UART0                   (USART1)
#define LMCAL_UART1                   (USART2)
#define LMCAL_UART2                   (USART3)
#define LMCAL_UART3                   (UART4)
#define LMCAL_UART4                   (UART5)
#define LMCAL_UART5                   (USART6)
#define LMCAL_UART6                   (UART7)
#define LMCAL_UART7                   (UART8)
#define LMCAL_UART8                   (8U)
#define LMCAL_UART9                   (9U)
#define LMCAL_UART10                  (10U)

// Номера портов в буквенном формате
#define LMCAL_UART_PORTA              (GPIOA)
#define LMCAL_UART_PORTB              (GPIOB)
#define LMCAL_UART_PORTC              (GPIOC)
#define LMCAL_UART_PORTD              (GPIOD)
#define LMCAL_UART_PORTE              (GPIOE)
#define LMCAL_UART_PORTF              (5U)
#define LMCAL_UART_PORTG              (6U)
#define LMCAL_UART_PORTH              (7U)
#define LMCAL_UART_PORTI              (8U)

// Номера портов в цифровом формате
#define LMCAL_UART_PORT0              (GPIOA)
#define LMCAL_UART_PORT1              (GPIOB)
#define LMCAL_UART_PORT2              (GPIOC)
#define LMCAL_UART_PORT3              (GPIOD)
#define LMCAL_UART_PORT4              (GPIOE)
#define LMCAL_UART_PORT5              (5U)
#define LMCAL_UART_PORT6              (6U)
#define LMCAL_UART_PORT7              (7U)
#define LMCAL_UART_PORT8              (8U)
#define LMCAL_UART_PORT_NONE          (0xFFFFFFFF)

// Номера пинов в цифровом формате
#define LMCAL_UART_PIN0               (GPIO_PINS_0)
#define LMCAL_UART_PIN1               (GPIO_PINS_1)
#define LMCAL_UART_PIN2               (GPIO_PINS_2)
#define LMCAL_UART_PIN3               (GPIO_PINS_3)
#define LMCAL_UART_PIN4               (GPIO_PINS_4)
#define LMCAL_UART_PIN5               (GPIO_PINS_5)
#define LMCAL_UART_PIN6               (GPIO_PINS_6)
#define LMCAL_UART_PIN7               (GPIO_PINS_7)
#define LMCAL_UART_PIN8               (GPIO_PINS_8)
#define LMCAL_UART_PIN9               (GPIO_PINS_9)
#define LMCAL_UART_PIN10              (GPIO_PINS_10)
#define LMCAL_UART_PIN11              (GPIO_PINS_11)
#define LMCAL_UART_PIN12              (GPIO_PINS_12)
#define LMCAL_UART_PIN13              (GPIO_PINS_13)
#define LMCAL_UART_PIN14              (GPIO_PINS_14)
#define LMCAL_UART_PIN15              (GPIO_PINS_15)
#define LMCAL_UART_PIN16              (16U)
#define LMCAL_UART_PIN17              (17U)
#define LMCAL_UART_PIN18              (18U)
#define LMCAL_UART_PIN19              (19U)
#define LMCAL_UART_PIN20              (20U)
#define LMCAL_UART_PIN21              (21U)
#define LMCAL_UART_PIN22              (22U)
#define LMCAL_UART_PIN23              (23U)
#define LMCAL_UART_PIN24              (24U)
#define LMCAL_UART_PIN25              (25U)
#define LMCAL_UART_PIN26              (26U)
#define LMCAL_UART_PIN27              (27U)
#define LMCAL_UART_PIN28              (28U)
#define LMCAL_UART_PIN29              (29U)
#define LMCAL_UART_PIN30              (30U)
#define LMCAL_UART_PIN31              (31U)
#define LMCAL_UART_PIN_NONE           (0xFFFFFFFF)

//  Бит четности
#define LMCAL_UART_PARITY_OFF         (USART_PARITY_NONE) // Отключено
#define LMCAL_UART_PARITY_ODD         (USART_PARITY_ODD)  // Нечетный
#define LMCAL_UART_PARITY_EVEN        (USART_PARITY_EVEN) // Четный


//************************************ Глобальные (публичные) константы *************************************

//---------------------------------------------------------
// Канал 0 - Для примера с синхронным обменом
//---------------------------------------------------------

// Включить или отключить канал
// Доступные значения: ON\OFF, 1\0
#define LMCAL_UART_CH0_ENABLE             (ON)

// Включить или отключить асинхронный режим работы драйвера. \n
// Если выключен, то исползуются функции с блокированием.
// Доступные значения: ON\OFF, 1\0
#define LMCAL_UART_CH0_ASYNC_MODE         (OFF)

// Номер аппаратного UART.
// Доступные значения: LMCAL_UART0..LMCAL_UART10
#define LMCAL_UART_CH0_UART_NUM           (LMCAL_UART0)

// Номер порта TX.
// Доступные значения: LMCAL_UART_PORTA..LMCAL_UART_PORTH или LMCAL_UART_PORT0..LMCAL_UART_PORT7
#define LMCAL_UART_CH0_TX_PORT            (LMCAL_UART_PORTA)

// Номер ножки TX.
// Доступные значения: LMCAL_UART_PIN0...LMCAL_UART_PIN31
#define LMCAL_UART_CH0_TX_PIN             (LMCAL_UART_PIN9)

// Номер порта RX. 
// Доступные значения: LMCAL_UART_PORTA..LMCAL_UART_PORTH или LMCAL_UART_PORT0..LMCAL_UART_PORT7
#define LMCAL_UART_CH0_RX_PORT            (LMCAL_UART_PORTA)

// Номер ножки RX. 
// Доступные значения: LMCAL_UART_PIN0...LMCAL_UART_PIN31
#define LMCAL_UART_CH0_RX_PIN             (LMCAL_UART_PIN10)

// Номер порта CLK. 
// Доступные значения: LMCAL_UART_PORTA..LMCAL_UART_PORTH или LMCAL_UART_PORT0..LMCAL_UART_PORT7
#define LMCAL_UART_CH0_CLK_PORT           (LMCAL_UART_PORT_NONE)

// Номер ножки CLK.
// Доступные значения: LMCAL_UART_PIN0...LMCAL_UART_PIN31
#define LMCAL_UART_CH0_CLK_PIN            (LMCAL_UART_PIN_NONE)

// Скорость приема и передачи (бод\с).
// Доступные значения зависят от реализации, могут быть:
//    2400, 9600, 19200, 57600, 115200, 230400, 460800, 921600, 2250000...
#define LMCAL_UART_CH0_BAUDRATE           (115200U)

// Бит четности
// Доступные значения: LMCAL_UART_PARITY_OFF, LMCAL_UART_PARITY_EVEN, LMCAL_UART_PARITY_ODD
#define LMCAL_UART_CH0_PARITY             (LMCAL_UART_PARITY_OFF)



//---------------------------------------------------------
// Канал 1 - Для примера с асинхронным обменом
//---------------------------------------------------------
#define LMCAL_UART_CH1_ENABLE             (OFF)
#define LMCAL_UART_CH1_ASYNC_MODE         (ON)
#define LMCAL_UART_CH1_UART_NUM           (LMCAL_UART0)
#define LMCAL_UART_CH1_TX_PORT            (LMCAL_UART_PORTA)
#define LMCAL_UART_CH1_TX_PIN             (LMCAL_UART_PIN9)
#define LMCAL_UART_CH1_RX_PORT            (LMCAL_UART_PORTA)
#define LMCAL_UART_CH1_RX_PIN             (LMCAL_UART_PIN10)
#define LMCAL_UART_CH1_CLK_PORT           (LMCAL_UART_PORT_NONE)
#define LMCAL_UART_CH1_CLK_PIN            (LMCAL_UART_PIN_NONE)
#define LMCAL_UART_CH1_BAUDRATE           (115200U)
#define LMCAL_UART_CH1_PARITY             (LMCAL_UART_PARITY_OFF)


//---------------------------------------------------------
// Канал 2
//---------------------------------------------------------
#define LMCAL_UART_CH2_ENABLE             (OFF)
#define LMCAL_UART_CH2_ASYNC_MODE         (OFF)
#define LMCAL_UART_CH2_UART_NUM           (LMCAL_UART0)
#define LMCAL_UART_CH2_TX_PORT            (LMCAL_UART_PORT0)
#define LMCAL_UART_CH2_TX_PIN             (LMCAL_UART_PIN0)
#define LMCAL_UART_CH2_RX_PORT            (LMCAL_UART_PORT0)
#define LMCAL_UART_CH2_RX_PIN             (LMCAL_UART_PIN0)
#define LMCAL_UART_CH2_CLK_PORT           (LMCAL_UART_PORT_NONE)
#define LMCAL_UART_CH2_CLK_PIN            (LMCAL_UART_PIN_NONE)
#define LMCAL_UART_CH2_BAUDRATE           (9600U)
#define LMCAL_UART_CH2_PARITY             (LMCAL_UART_PARITY_OFF)


//---------------------------------------------------------
// Канал 3
//---------------------------------------------------------
#define LMCAL_UART_CH3_ENABLE             (OFF)
#define LMCAL_UART_CH3_ASYNC_MODE         (OFF)
#define LMCAL_UART_CH3_UART_NUM           (LMCAL_UART0)
#define LMCAL_UART_CH3_TX_PORT            (LMCAL_UART_PORT0)
#define LMCAL_UART_CH3_TX_PIN             (LMCAL_UART_PIN0)
#define LMCAL_UART_CH3_RX_PORT            (LMCAL_UART_PORT0)
#define LMCAL_UART_CH3_RX_PIN             (LMCAL_UART_PIN0)
#define LMCAL_UART_CH3_CLK_PORT           (LMCAL_UART_PORT_NONE)
#define LMCAL_UART_CH3_CLK_PIN            (LMCAL_UART_PIN_NONE)
#define LMCAL_UART_CH3_BAUDRATE           (9600U)
#define LMCAL_UART_CH3_PARITY             (LMCAL_UART_PARITY_OFF)



#endif


//*********************************************** КОНЕЦ ФАЙЛА ***********************************************
