#ifndef BUSINESS_LOG_H__
#define BUSINESS_LOG_H__
#include "lnxall_list.h"
#include <time.h>

#define        BLOG_EMERG           0
#define        BLOG_ALERT           1
#define        BLOG_CRIT            2
#define        BLOG_ERR             3
#define        BLOG_WARNING         4
#define        BLOG_NOTICE          5

#define BUSINESS_LOG(level, main_id, obj_id, fmt, ...) \
    business_log(level, main_id, __LINE__, obj_id, fmt, ##__VA_ARGS__)

typedef struct {
    int main_id;    
    int line;       // 存储代码行号
    char *content;  // 存储日志内容
} BUSINESS_LOG_STATUS;

void business_log(int level, int main_id, int line, const char *obj_id, const char *fmt, ...);
//
#define	BLOG_EMERG 0
#define	BLOG_ALERT 1
#define	BLOG_CRIT 2
#define	BLOG_ERR 3
#define	BLOG_WARNING 4
#define	BLOG_NOTICE 5
//
enum bussiness_log_main_id {
    INIT_ID_0000 = 1,
    EMS_INIT,
    // 主从ID
    MS_ID_0001,
    MS_ID_0002,
    MS_ID_0003,
    MS_ID_0004,
    MS_ID_0005,
    MS_ID_0006,
    MS_ID_0007,
    MS_ID_0008,
    MS_ID_0009,
    MS_ID_0010,
    MS_ID_0011,
    MS_ID_0012,
    MS_ID_0013,
    MS_ID_0014,
    MS_ID_0015,
    MS_ID_0016,
    MS_ID_0017,
    MS_ID_0018,
    MS_ID_0019,

    // VLC的ID
    VLC_ID_0001,
    VLC_ID_0002,
    VLC_ID_0003,
    VLC_ID_0004,
    VLC_ID_0005,
    VLC_ID_0006,
    VLC_ID_0007,
    VLC_ID_0008,
    VLC_ID_0009,
    VLC_ID_0010,
    VLC_ID_0011,
    VLC_ID_0012,

    VLC_ID_0013,
    VLC_ID_0014,
    // DEV的ID
    DEV_ID_0001,

    // 微网AC的ID
    AC_ID_0000,
    AC_ID_0001,
    AC_ID_0002,
    AC_ID_0003,
    AC_ID_0004,
    AC_ID_0005,
    AC_ID_0006,
    AC_ID_0007,
    AC_ID_0008,
    AC_ID_0009,
    AC_ID_0010,
    AC_ID_0011,
    AC_ID_0012,
    AC_ID_0013,
    AC_ID_0014,
    AC_ID_0015,
    AC_ID_0016,
    AC_ID_0017,
    AC_ID_0018,    
    //数采的ID
    DAS_ID_0001,
    DAS_ID_0002,
    DAS_ID_MODBUS_1,
    DAS_ID_MODBUS_2,
    DAS_ID_MODBUS_3,
    DAS_ID_MODBUS_4,
    DAS_ID_MODBUS_5,
    DAS_ID_MODBUS_6,
    DAS_ID_MODBUS_7,
    DAS_ID_CAN_1,
    DAS_ID_CAN_2,
    DAS_ID_CAN_3,
    DAS_ID_CAN_4,
    DAS_ID_CAN_5,
    DAS_ID_CAN_6,
    DAS_ID_CAN_7,
    DAS_ID_IEC104_1,
    DAS_ID_IEC104_2,
    DAS_ID_IEC104_3,
    DAS_ID_IEC104_4,
    DAS_ID_IEC104_5,
    DAS_ID_IEC104_6,
    DAS_ID_IEC104_7,
    DAS_ID_IEC104_8,
    DAS_ID_IEC104_9,
    DAS_ID_CUSTOM_1,
    DAS_ID_CUSTOM_2,
    DAS_ID_CUSTOM_3,
    DAS_ID_CUSTOM_4,
    DAS_ID_CUSTOM_5,
    DAS_ID_CUSTOM_6,
    DAS_ID_CUSTOM_7,
    DAS_ID_YDT1363_1,
    DAS_ID_YDT1363_2,
    DAS_ID_YDT1363_3,
    DAS_ID_YDT1363_4,
    DAS_ID_YDT1363_5,
    DAS_ID_YDT1363_6,
    DAS_ID_YDT1363_7,
    DAS_ID_UPS_1,
    DAS_ID_UPS_2,
    DAS_ID_UPS_3,
    DAS_ID_UPS_4,
    DAS_ID_UPS_5,
    DAS_ID_UPS_6,
    DAS_ID_UPS_7,
    DAS_ID_DLT645_1,
    DAS_ID_DLT645_2,
    DAS_ID_DLT645_3,
    DAS_ID_DLT645_4,
    DAS_ID_DLT645_5,
    DAS_ID_DLT645_6,
    DAS_ID_DLT645_7,
    DAS_ID_BMSER_BIN_1,
    DAS_ID_BMSER_BIN_2,
    DAS_ID_BMSER_BIN_3,
    DAS_ID_BMSER_BIN_4,
    DAS_ID_BMSER_BIN_5,
    DAS_ID_BMSER_BIN_6,
    DAS_ID_BMSER_BIN_7,

    DC_START_ID_001,    
    DC_START_ID_002,    
    DC_START_ID_003,    
    DC_START_ID_004,    
    DC_START_ID_005,    
    DC_START_ID_006,    
    DC_START_ID_007,
    //单柜保护逻辑
    SINGLE_ID_0001,
    SINGLE_ID_0002,
    // 告警模块
    ALARM_ID_0001, // 初始化告警模块
    ALARM_ID_0002, // 初始化告警线程运行
    ALARM_ID_0003, // 获取alarm_def.json
    ALARM_ID_0004, // 告警点位信息注册
    ALARM_ID_0005, // 告警/恢复

    AC_ID_0019,
    AC_ID_0020, 
    AC_ID_0021,
    AC_ID_0022,
    AC_ID_0023,   
    AC_ID_0024,
    AC_ID_0025,
    AC_ID_0026,
    AC_ID_0027,
    AC_ID_0028,
    AC_ID_0029,
    AC_ID_0030,
    AC_ID_0031,
    AC_ID_0032,

    INIT_ID_0001,

    // 微网DC的ID
    DC_ID_0001,
    DC_ID_0002,
    DC_ID_0003,
    DC_ID_0004,
    DC_ID_0005,
    DC_ID_0006,
    DC_ID_0007,
    DC_ID_0008,
    DC_ID_0009,
    DC_ID_0010,
    DC_ID_0011,
    DC_ID_0012,
    DC_ID_0013,
    DC_ID_0014,
    DC_ID_0015,
    DC_ID_0016,
    DC_ID_0017,
    DC_ID_0018,
    DC_ID_0019,
    DC_ID_0020,
    // 标准柜的ID
    ST_ID_0000,
    ST_ID_0001,
    ST_ID_0002,
    ST_ID_0003,
    ST_ID_0004,
    ST_ID_0005,
    ST_ID_0006,
    
    // 算法的ID
    AL_ID_0001,
    AL_ID_0008,

    // 启动的ID
    START_ID_0001,
    START_ID_0002,
    START_ID_0008,
    //
    NORTH_ID_0001,
    NORTH_ID_0002,
    NORTH_ID_0003,
    NORTH_ID_0004,
    NORTH_ID_0005,
    NORTH_ID_0006,
    NORTH_ID_0007,
    NORTH_ID_0008,
    NORTH_ID_0009,
    NORTH_ID_0010,
    NORTH_ID_0011,
    NORTH_ID_0012,
    NORTH_ID_0013,
    NORTH_ID_0014,
    NORTH_ID_0015,
    NORTH_ID_0016,
    NORTH_ID_0017,
    NORTH_ID_0018,
    NORTH_ID_0019,
    NORTH_ID_0020,
    NORTH_ID_0021,
    NORTH_ID_0022,
    NORTH_ID_0023,
    NORTH_ID_0024,
    NORTH_ID_0025,
    NORTH_ID_0026,
    NORTH_ID_0027,
    NORTH_ID_0028,
    NORTH_ID_0029,
    NORTH_ID_0030,
    NORTH_ID_0031,
    NORTH_ID_0032,
    NORTH_ID_0033,
    NORTH_ID_0034,
    NORTH_ID_0035,
    NORTH_ID_0036,
    NORTH_ID_0037,
    NORTH_ID_0038,
    NORTH_ID_0039,
    NORTH_ID_0040,
    NORTH_ID_0041,
    NORTH_ID_0042,
    NORTH_ID_0043,
    NORTH_ID_0044,
    NORTH_ID_0045,
    NORTH_ID_0046,
    NORTH_ID_0047,
    NORTH_ID_0048,
    NORTH_ID_0049,
    NORTH_ID_0050,
    NORTH_ID_0051,
    NORTH_ID_0052,
    NORTH_ID_0053,
    NORTH_ID_0054,
    NORTH_ID_0055,
    NORTH_ID_0056,
    NORTH_ID_0057,
    NORTH_ID_0058,
    NORTH_ID_0059,
    NORTH_ID_0060,
    NORTH_ID_0061,
    NORTH_ID_0062,
    NORTH_ID_0063,
    NORTH_ID_0064,
    NORTH_ID_0065,
    NORTH_ID_0066,
    NORTH_ID_0067,
    NORTH_ID_0068,
    NORTH_ID_0069,
    NORTH_ID_0070,
    NORTH_ID_0071,
    NORTH_ID_0072,
    NORTH_ID_0073,
    NORTH_ID_0074,
    NORTH_ID_0075,
    NORTH_ID_0076,
    NORTH_ID_0077,
    NORTH_ID_0078,
    NORTH_ID_0079,
    NORTH_ID_0080,
    NORTH_ID_0081,
    NORTH_ID_0082,
    NORTH_ID_0083,
    NORTH_ID_0084,
    NORTH_ID_0085,
    NORTH_ID_0086,
    NORTH_ID_0087,
    NORTH_ID_0088,
    NORTH_ID_0089,
    NORTH_ID_0090,
    NORTH_ID_0091,
    NORTH_ID_0092,
    NORTH_ID_0093,
    NORTH_ID_0094,
    NORTH_ID_0095,
    NORTH_ID_0096,
    NORTH_ID_0097,
    NORTH_ID_0098,
    NORTH_ID_0099,
    NORTH_ID_0100,
    NORTH_ID_0101,
    NORTH_ID_0102,
    NORTH_ID_0103,
    NORTH_ID_0104,
    NORTH_ID_0105,
    NORTH_ID_0106,
    NORTH_ID_0107,
    NORTH_ID_0108,
    NORTH_ID_0109,
    NORTH_ID_0110,
    NORTH_ID_0111,
    NORTH_ID_0112,
    NORTH_ID_0113,
    NORTH_ID_0114,
    NORTH_ID_0115,
    NORTH_ID_0116,
    NORTH_ID_0117,
    NORTH_ID_0118,
    NORTH_ID_0119,
    NORTH_ID_0120,
    NORTH_ID_0121,
    NORTH_ID_0122,
    NORTH_ID_0123,
    NORTH_ID_0124,
    NORTH_ID_0125,
    NORTH_ID_0126,
    NORTH_ID_0127,
    NORTH_ID_0128,
    NORTH_ID_0129,
    NORTH_ID_0130,
    NORTH_ID_0131,
    NORTH_ID_0132,
    NORTH_ID_0133,
    NORTH_ID_0134,
    NORTH_ID_0135,
    NORTH_ID_0136,
    NORTH_ID_0137,
    NORTH_ID_0138,
    NORTH_ID_0139,
    NORTH_ID_0140,
    NORTH_ID_0141,
    NORTH_ID_0142,
    NORTH_ID_0143,
    NORTH_ID_0144,
    NORTH_ID_0145,
    NORTH_ID_0146,
    NORTH_ID_0147,
    NORTH_ID_0148,
    NORTH_ID_0149,
    NORTH_ID_0150,
    NORTH_ID_0151,
    NORTH_ID_0152,
    NORTH_ID_0153,
    NORTH_ID_0154,
    NORTH_ID_0155,
    NORTH_ID_0156,
    NORTH_ID_0157,
    NORTH_ID_0158,
    NORTH_ID_0159,
    NORTH_ID_0160,
    NORTH_ID_0161,
    NORTH_ID_0162,
    NORTH_ID_0163,
    NORTH_ID_0164,
    NORTH_ID_0165,
    NORTH_ID_0166,
    NORTH_ID_0167,
    NORTH_ID_0168,
    NORTH_ID_0169,
    NORTH_ID_0170,
    NORTH_ID_0171,
    NORTH_ID_0172,
    NORTH_ID_0173,
    NORTH_ID_0174,
    NORTH_ID_0175,
    NORTH_ID_0176,
    NORTH_ID_0177,
    NORTH_ID_0178,
    NORTH_ID_0179,
    NORTH_ID_0180,
    NORTH_ID_0181,
    NORTH_ID_0182,
    NORTH_ID_0183,
    NORTH_ID_0184,
    NORTH_ID_0185,
    NORTH_ID_0186,
    NORTH_ID_0187,
    NORTH_ID_0188,
    NORTH_ID_0189,
    NORTH_ID_0190,
    NORTH_ID_0191,
    NORTH_ID_0192,
    NORTH_ID_0193,
    NORTH_ID_0194,
    NORTH_ID_0195,
    NORTH_ID_0196,
    NORTH_ID_0197,
    NORTH_ID_0198,
    NORTH_ID_0199,
    NORTH_ID_0200,
    // 算法的
    ALG_INI = 5000, // 申请算法侧 log main id
    ALG_MAX = 5200,
};

#endif
