/*
 * @Description: 日志模块-svc层
 * @Author: yangsw
 * @Date: 2021-05-18 17:00:08
 * @LastEditTime: 2024-01-10 11:05:10
 * @LastEditors: LiDa
 * @Reference: 
 */
#ifndef H_SVC_LOG_H
#define H_SVC_LOG_H

#include "../bsp/bsp_log.h"

#define LOG_DISENABLE   0       //日志不使能，此等级虽然会关闭打印功能，但依然会产生ROM和RAM开销
#define LOG_ERROR       1       //错误日志
#define LOG_WARNING     2       //警告日志
#define LOG_INFO        3       //信息日志
#define LOG_DEBUG       4       //调试日志

#define GW_LOG_LEVEL LOG_DEBUG          //日志模块打印等级
    
void Svc_FactoryLog_Printf(unsigned int level,char *fmt,...);
void Svc_Log_Printf(unsigned int level,char *fmt,...);

// #if LOG_TESTFAC_ENABLE
//     #define Svc_Factory_Log_Print(format, ...)  printf(format, ##__VA_ARGS__)
// #endif

#if LOG_FUNC_ENABLE
    #define Svc_Log_Print(format, ...)  printf(format, ##__VA_ARGS__)
#elif LOG_TESTFAC_ENABLE
    #define Svc_Log_Print(format, ...)  printf(format, ##__VA_ARGS__)
#else
    #define Svc_Log_Print(format, ...)   {}
#endif



#define Svc_Log_Send_Bytes(a,b)  Bsp_Log_Send_Bytes(a,b)

#define LOG_UART_RX_BUF_SIZE  150
#define LOG_UART_CNT_MAX      10

//串口缓冲区
typedef struct{
  gw_u16 rear;               //串口队列尾指针
  gw_u16 fornt;              //串口队列头指针
  gw_u8 RX_BUF[LOG_UART_RX_BUF_SIZE]; //串口队列缓冲区
  gw_u8 time_cnt;             //串口队列计数器
  gw_u8 format;               //串口队列中的帧数据
  gw_u8 time_en;              //队列计数使能
  gw_u8 *temp_buf; //[NB_UART_RX_BUF_SIZE]
}S_Log_Uart;

void Svc_Log_Init(void);
void Svc_Log_Wake_Init(void);
void Svc_Log_get_Cnt_Add(void);         //隔1ms检查串口是否有数据
void Svc_Log_Uart_Recv(void);
char Svc_Log_Uart_Put_Data_Quene(char data);
#endif