/*
 * @Description: 红外模块-svc层-串口子模块
 * @Author: yangsw
 * @Date: 2021-06-04 14:05:58
 * @LastEditTime: 2021-09-26 15:20:21
 * @LastEditors: yangsw
 * @Reference:
 */
#ifndef H_SVC_IR_UART_H
#define H_SVC_IR_UART_H

#include "../bsp/bsp_ir_uart.h"

#define IR_UART_RX_BUF_SIZE 1100
#define IR_UART_CNT_MAX 20
#define IR_UART_TX_BUF_SIZE 500
#define IR_OPEN_TIME 180
// 串口缓冲区
typedef struct IR_UART_Struct
{
  gw_u16 rear;                       // 串口队列尾指针
  gw_u16 fornt;                      // 串口队列头指针
  gw_u8 RX_BUF[IR_UART_RX_BUF_SIZE]; // 串口队列缓冲区
  gw_u8 time_cnt;                    // 串口队列计数器
  gw_u8 format;                      // 串口队列中的帧数据
  gw_u8 time_en;                     // 队列计数使能
  //  gw_u8 send_flag;     //发送标志
  //  gw_u8 send_time;     //发送时间判断
  //  gw_u8 send_len;     //发送长度
  //  gw_u8 send_index;     //已发送数据
  //  gw_u8 TX_BUF[IR_UART_TX_BUF_SIZE]; //串口队列缓冲区
  gw_u8 wakeup_time;
  gw_u8 *temp_buf;
} S_Ir_Uart;

#define Svc_Ir_Uart_Send_Bytes(a, b) Bsp_Ir_Uart_Send_Bytes(a, b)

void Svc_Ir_get_Cnt_Add(void);
void Svc_Ir_Uart_Recv(void);
void Ir_Uart_Quene_Init(void);
void Svc_Ir_Uart_Init(void);
void Svc_Ir_Uart_Wakeup_Init(void);
char Svc_Ir_Uart_Put_Data_Quene(char data);
E_Result_Check Svc_Ir_Is_Busy(void);
void Svc_Ir_Set_Busy(void);
void Svc_Ir_Uart_Send(gw_s8 *buf, gw_u16 len);
void Svc_Ir_Timer_Callback(void);
S_Ir_Uart *Svc_Ir_Get_Uart_Data(void);
void Svc_Ir_Set_Keep_Alive_Time(gw_u32 time);
#endif

