/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file    usart.h
  * @brief   This file contains all the function prototypes for
  *          the usart.c file
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2023 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __USART_H__
#define __USART_H__

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include "main.h"

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

extern UART_HandleTypeDef huart2;

extern UART_HandleTypeDef huart3;

/* USER CODE BEGIN Private defines */

/* USER CODE END Private defines */

void MX_USART2_UART_Init(void);
void MX_USART3_UART_Init(void);

/* USER CODE BEGIN Prototypes */

void    Dummy_printf(char* inbuf, ...);

uint16_t UART_Available(UART_HandleTypeDef *huart);                   //return: Rx data size[byte]
uint8_t UART_Getch(UART_HandleTypeDef *huart);
int16_t UART_Getc(UART_HandleTypeDef *huart);
int16_t UART_Getc_NoClear(UART_HandleTypeDef *huart,uint16_t pos);
void    UART_Clear_Buffer(UART_HandleTypeDef *huart,uint16_t size);   //size: [0]All Data Clear
#define UART_Clear(huart)           UART_Clear_Buffer((UART_HandleTypeDef *)huart, 0)
#define UART_Putch(huart,ch)        UART_PutData((UART_HandleTypeDef *)huart,(uint8_t *)&(ch),1)
#define UART_Puts(huart,s)          UART_PutData((UART_HandleTypeDef *)huart,(uint8_t *)s,0)
void    UART_PutData(UART_HandleTypeDef *huart, uint8_t *data, uint8_t size);
void    UART_printf(UART_HandleTypeDef *huart, char* inbuf, ...);

#define UART2_Available()           UART_Available(&huart2)
#define UART2_Getch()               UART_Getch(&huart2)
#define UART2_Getc()                UART_Getc(&huart2)
#define UART2_Getc_NoClear(pos)     UART_Getc_NoClear(&huart2, pos)
#define UART2_Clear_Buffer(size)    UART_Clear_Buffer(&huart2, size)  //size: [0]All Data Clear
#define UART2_Clear()               UART_Clear_Buffer(&huart2, 0)
#define UART2_Putch(ch)             UART_PutData(&huart2,(uint8_t *)&(ch),1)
#define UART2_Puts(s)               UART_PutData(&huart2,(uint8_t *)s,0)
#define UART2_PutData(s,size)       UART_PutData(&huart2,(uint8_t *)s,size)
void    UART2_printf(char* inbuf, ...);

#define UART3_Available()           UART_Available(&huart3)
#define UART3_Getch()               UART_Getch(&huart3)
#define UART3_Getc()                UART_Getc(&huart3)
#define UART3_Getc_NoClear(pos)     UART_Getc_NoClear(&huart3, pos)
#define UART3_Clear_Buffer(size)    UART_Clear_Buffer(&huart3, size)  //size: [0]All Data Clear
#define UART3_Clear()               UART_Clear_Buffer(&huart3, 0)
#define UART3_Putch(ch)             UART_PutData(&huart3,(uint8_t *)&(ch),1)
#define UART3_Puts(s)               UART_PutData(&huart3,(uint8_t *)s,0)
#define UART3_PutData(s,size)       UART_PutData(&huart3,(uint8_t *)s,size)
void    UART3_printf(char* inbuf, ...);
void    Debug_UART3_printf(char* inbuf, ...);

char    *Float2String(float f, int point);                            //printf("%f",f); ==> printf("%s", Float2String(f,3));

#define BLE_RESET_PIN               79                                //PD10
#define BLE_CONN_PIN                7                                 //PC13
#define BLE_NAME                    "RF_Sample"
#define BLE_Rename(name)            UART_BLE_Rename(&huart3, name)
uint8_t UART_BLE_Rename(UART_HandleTypeDef *huart, char name[]);      //"[name]_####"
void    BLE_Sleep(void);                                              // LOW to /RESET(#11) for BLE_Module DX-BT19-S
void    BLE_Wakeup(void);                                             //HIGH to /RESET(#11) for BLE_Module DX-BT19-S
void    BLE_Reset(void);
void    BLE_Init(void);

extern int BLE_CONN_Status;
void Check_BLE_Status(void);

/* USER CODE END Prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __USART_H__ */

