/*
 * @Description: 
 * @Date: 2021-03-09 11:30:52
 * @LastEditors: CK.Zh
 * @LastEditTime: 2021-03-10 14:46:32
 * @FilePath: \NaviKit_EC_stm32\App\Src\th_elog.c
 */

#define LOG_TAG    "TH-Elog"

#include <th_elog.h>
#include "main.h"

//semaphore
const osSemaphoreAttr_t ElogOutputBinarySem_attributes = {
  .name = "ElogOutputBinarySem"
};
//semaphore
const osSemaphoreAttr_t ElogUartBinarySem_attributes = {
  .name = "ElogUartBinarySem"
};
const osMutexAttr_t ElogOutputMutex_attributes = {
  .name = "ElogOutputMutex"
};
//task
const osThreadAttr_t ElogInitTask_attributes = {
  .name = "ElogInitTask",
  .priority = (osPriority_t) osPriorityNormal,
  .stack_size = 128 * 4
};

const osThreadAttr_t ElogFlushTask_attributes = {
  .name = "ElogFlushTask",
  .priority = (osPriority_t) osPriorityLow1,
  .stack_size = 256 * 4
};

void ElogInitTask(void *argument){

//	my_elog_init();

//	osThreadExit();//exit this thread,execute this code only once
}

//interval：buffer flush time interval
void ElogFlushTask(uint8_t intervnal){

	log_d("Start Log Flush Task");
	for(;;){
		elog_flush();
		 osDelay(intervnal);
	}
}


void my_elog_init(){
	elog_init();
    /* close printf buffer */
    setbuf(stdout, NULL);
#ifdef DEBUG	//debug mode:output all information
    ElogFmtIndex ELOG_FMT_SETTING = ELOG_FMT_ALL ;
#else	//release mode :only output level、time information
    ElogFmtIndex ELOG_FMT_SETTING = ELOG_FMT_LVL | ELOG_FMT_TIME;
#endif
    /* set EasyLogger log format */
    /* 断言：输出所有内容 */
    elog_set_fmt(ELOG_LVL_ASSERT, ELOG_FMT_SETTING);
    /* 错误：输出级别、标签和时间 */
    elog_set_fmt(ELOG_LVL_ERROR, ELOG_FMT_SETTING);
    /* 警告：输出级别、标签和时间 */
    elog_set_fmt(ELOG_LVL_WARN, ELOG_FMT_SETTING);
    /* 信息：输出级别、标签和时间 */
    elog_set_fmt(ELOG_LVL_INFO, ELOG_FMT_SETTING);
    /* 调试：输出除了方法名之外的所有内容 */
    elog_set_fmt(ELOG_LVL_DEBUG, ELOG_FMT_SETTING);
    /* 详细：输出除了方法名之外的所有内容 */
    elog_set_fmt(ELOG_LVL_VERBOSE, ELOG_FMT_SETTING);

    // enable text color (dynamic)
    elog_set_text_color_enabled(true);

    /* start EasyLogger */
    elog_start();
}

void HAL_UART1_TxCpltCallback(UART_HandleTypeDef *huart){

}


//void elog_set_filter(uint8_t level, const char *tag, const char *keyword);
