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

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

#define IR_KEEP_ALIVE_TIME_MAX	120
#define IR_UART_RX_BUF_SIZE  1200
#define IR_UART_CNT_MAX      10
#define IR_OPEN_IR           120

//串口缓冲区
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 u8KeepAliveTime;
    gw_u8 *temp_buf;
}S_Ir_Uart;

#define Svc_Ir_Uart_Send_Bytes  Bsp_Ir_Uart_Send_Bytes

void Svc_Ir_get_Cnt_Add(void);
void Svc_Ir_Uart_Recv(void);
void Svc_Ir_Uart_Lp(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_WakeUp_Init(void);
void Svc_Ir_Open_Timer_Callback();
gw_u8 Svc_Ir_Wait_Cmd(void);
void Svc_Ir_Set_Keep_Alive_Time(gw_u8 u8Time);
void Svc_Factory_Ir_Send_Data(gw_u8 u8Func, gw_u8 u8Succ);

#endif