#include "sr_sunrise.h"

#ifdef SR_USE_LOG

//说明：可在sr_config.h中定义默认日志等级、编译等级、发送/接收buf长度
//#define SR_LOG_COMPILE_LEVEL   (7)  //log代码编译等级，范围[0~7]：<=该等级的LOG才会被编译；-1：都不编译
//#define SR_LOG_LEVEL_DEFAULT   (6)  //默认的log输出等级，范围[0~7]：<=该等级的LOG才会输出
//#define SR_LOG_UART_TBUF_LEN   256  //接收buf长度
//#define SR_LOG_UART_RBUF_LEN   256  //发送buf长度


static int LogExample(int argc, char *argv[])
{
    //以下两类lOG API都支持日志等级、编译等级，根据喜好使用
    
    SR_LOG(EMERG, "[1] log level = %d(EMERG).\r\n", EMERG);
    SR_LOG(ALERT, "[1] log level = %d(ALERT).\r\n", ALERT);
    SR_LOG(CRIT, "[1] log level = %d(CRIT).\r\n", CRIT);
    SR_LOG(ERR, "[1] log level = %d(ERR).\r\n", ERR);
    SR_LOG(WARN, "[1] log level = %d(WARNING).\r\n", WARN);
    SR_LOG(NOTICE, "[1] log level = %d(NOTICE).\r\n", NOTICE);
    SR_LOG(INFO, "[1] log level = %d(INFO).\r\n", INFO);
    SR_LOG(DEBUG, "[1] log level = %d(DEBUG).\r\n", DEBUG);


    SR_LOG_EMERG("[2] log level = %d(EMERG).\r\n", EMERG);
    SR_LOG_ALERT("[2] log level = %d(ALERT).\r\n", ALERT);
    SR_LOG_CRIT( "[2] log level = %d(CRIT).\r\n", CRIT);
    SR_LOG_ERR("[2] log level = %d(ERR).\r\n", ERR);
    SR_LOG_WARN("[2] log level = %d(WARNING).\r\n", WARN);
    SR_LOG_NOTICE( "[2] log level = %d(NOTICE).\r\n", NOTICE);
    SR_LOG_INFO("[2] log level = %d(INFO).\r\n", INFO);
    SR_LOG_DEBUG("[2] log level = %d(DEBUG).\r\n", DEBUG);

    return 0;
}
SR_SHELL_CMD_EXPORT(log_exmp, LogExample);

static int LogSetLevel(int argc, char *argv[])
{
    uint8_t level = DEBUG;
    if (argc >= 2)
    {
        level = atoi(argv[1]);
    }

    //动态设置lOG输出等级，范围[0~7]：<=该等级的LOG才会输出
    SR_LogSetLevel(level);

    return 0;
}
SR_SHELL_CMD_EXPORT(log_level, LogSetLevel);
#endif

