#include "data_usr.h"

/**< 设备参数 */
t_datafixval_cfg gst_usr_dp[] = {
    {SET_BHCT1_A,                  RMT_GRP_PUSET,  600,        0,        1},      /** CT额定一次值          */
    {SET_BHCT2_A,                  RMT_GRP_PUSET,  5,        0,        1},      /** CT额定二次值          */
    {SET_I0CT1_A,                 RMT_GRP_PUSET,  100,        0,        1},       /** 零序CT额定一次值      */
    {SET_I0CT2_A,                 RMT_GRP_PUSET,  5,        0,        1},       /** 零序CT额定二次值      */
    {SET_APT1_U,                   RMT_GRP_PUSET,  10000,        0,        1},      /** 电源侧PT额定一次值    */
    {SET_APT2_U,                   RMT_GRP_PUSET,  100,        0,        1},      /** 电源侧PT额定二次值    */
    {SET_BPT1_U,                  RMT_GRP_PUSET,  10000,        0,        1},       /** 负荷侧PT额定一次值    */
    {SET_BPT2_U,                  RMT_GRP_PUSET,  100,        0,        1},       /** 负荷侧PT额定二次值    */
    {SET_APT1_UZ,                 RMT_GRP_PUSET,  10000,        0,        1},     /** 电源侧零序PT额定一次值*/     
    {SET_APT2_UZ,               RMT_GRP_PUSET,  100,        0,        0.01},  /** 电源侧零序PT额定二次值*/
    {SET_BPT1_UZ,                 RMT_GRP_PUSET,  10000,        0,        0.01},  /** 负荷侧零序PT额定一次值*/
    {SET_BPT2_UZ,                  RMT_GRP_PUSET,  100,        0,        0.01},  /** 负荷侧零序PT额定二次值*/
}; 
const uint8_t gst_usr_dp_num = sizeof(gst_usr_dp) / sizeof(gst_usr_dp[0]); /* 设备参数数目 */


t_datafixval_cfg gst_usr_fs[] = {
    {SET_BH_YBTT,       RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 常规保护投入 */
    {SET_CHZ_YB,        RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 自动重合闸投入 */
    {SET_FA_YBTT,       RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 就地馈线自动化投入 */
    {SET_GOOSE_YBTT,    RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 智能分布式投入 */
    {SET_TQ_YB,         RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 同期合闸投入 */
    {SET_JL_YB,         RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 自动解列投入 */
    {SET_XDL_YB,        RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 小电流接地保护投入 */
    {SET_LA_YB,         RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 线路断线告警投入 */
    {SET_TRASW_YB,      RMT_GRP_SWSET, 0.0,   0.0,   1.0f}    /* 不停电传动投入 */
}; /* 功能软压板 */
const uint8_t gst_usr_fs_num = sizeof(gst_usr_fs) / sizeof(gst_usr_fs[0]);

t_datafixval_cfg gst_usr_yxsb[] = {
    {SET_BH_YB,       RMT_GRP_SWSET, 1.0,   1.0,   1.0f},   /* 自动化功能总投退软压板 */
    {SET_KZ_OUT_YB,   RMT_GRP_SWSET, 1.0,   1.0,   1.0f},   /* 自动化功能总出口软压板 */
    {SET_RECS_YB,     RMT_GRP_SWSET, 1.0,   1.0,   1.0f},   /* 重合闸软压板 */
    {SET_EDIT_PAR_YB, RMT_GRP_PUSET, 1.0,   1.0,   1.0f},   /* 远程运维投入 */
}; /* 运行软压板 */
const uint8_t gst_usr_yxsb_num = sizeof(gst_usr_yxsb) / sizeof(gst_usr_yxsb[0]);

t_datafixval_cfg gst_usr_area[] = {
    {SET_SECTION,    RMT_GRP_PUSET,  1,        0,        1},     /** 定值区号              */
}; /* 定值区号 */
const uint8_t gst_usr_area_num = sizeof(gst_usr_area) / sizeof(gst_usr_area[0]);

t_datafixval_cfg gst_usr_con[] = {
    {SET_GL1_TT,        RMT_GRP_SWSET, 0, 0, 1},       /* 过流Ⅰ段投入 */
    {SET_GL2_TT,        RMT_GRP_SWSET, 0, 0, 1},       /* 过流Ⅱ段投入 */
    {SET_GL3_TT,        RMT_GRP_SWSET, 0, 0, 1},       /* 过流Ⅲ段投入 */
    {SET_GL1_DIR,       RMT_GRP_SWSET, 0, 0, 1},       /* 过流Ⅰ段投方向 */
    {SET_GL2_DIR,       RMT_GRP_SWSET, 0, 0, 1},       /* 过流Ⅱ段投方向 */
    {SET_GL3_DIR,       RMT_GRP_SWSET, 0, 0, 1},       /* 过流Ⅲ段投方向 */
    {SET_BH_PTDX,       RMT_GRP_SWSET, 0, 0, 1},       /* PT断线检测投入 */
    {SET_LX1_TT,        RMT_GRP_SWSET, 0, 0, 1},       /* 零序过流Ⅰ段投入 */
    {SET_LX2_TT,        RMT_GRP_SWSET, 0, 0, 1},       /* 零序过流Ⅱ段投入 */
    {SET_LX3_TT,        RMT_GRP_SWSET, 0, 0, 1},       /* 零序过流Ⅲ段投入 */
    {SET_3U0_TT,        RMT_GRP_SWSET, 0, 0, 1},       /* 零序过电压保护 */
    {SET_GLJS_TT,       RMT_GRP_SWSET, 0, 0, 1},       /* 后加速保护投入 */
    {SET_CH_GL_TT,      RMT_GRP_SWSET, 1, 1, 1},       /* 过流保护启动重合闸 */   // 默认启用（参考原默认值=1）
    {SET_CH_JD_TT,      RMT_GRP_SWSET, 0, 0, 1},       /* 零序过流保护启动重合闸 */
    {SET_BH_XBBS_TT,    RMT_GRP_SWSET, 0, 0, 1},       /* 涌流识别投入 */

    /* 整定值部分 */
    {SET_GL1_I,         RMT_GRP_SWSET, 100.0, 100.0, 0.01f},   /* 过流Ⅰ段定值 */
    {SET_GL1_T,         RMT_GRP_SWSET, 99.0,  99.0,  0.01f},   /* 过流Ⅰ段时间 */
    {SET_GL2_I,         RMT_GRP_SWSET, 100.0, 100.0, 0.01f},   /* 过流Ⅱ段定值 */
    {SET_GL2_T,         RMT_GRP_SWSET, 99.0,  99.0,  0.01f},   /* 过流Ⅱ段时间 */
    {SET_GL3_I,         RMT_GRP_SWSET, 100.0, 100.0, 0.01f},   /* 过流Ⅲ段定值 */
    {SET_GL3_T,         RMT_GRP_SWSET, 99.0,  99.0,  0.01f},   /* 过流Ⅲ段时间 */
    {SET_LX1_I,         RMT_GRP_SWSET, 50.0,  50.0,  0.01f},   /* 零序过流Ⅰ段定值 */
    {SET_LX1_T,         RMT_GRP_SWSET, 99.0,  99.0,  0.01f},   /* 零序过流Ⅰ段时间 */
    {SET_LX2_I,         RMT_GRP_SWSET, 50.0,  50.0,  0.01f},   /* 零序过流Ⅱ段定值 */
    {SET_LX2_T,         RMT_GRP_SWSET, 99.0,  99.0,  0.01f},   /* 零序过流Ⅱ段时间 */
    {SET_LX3_I,         RMT_GRP_SWSET, 50.0,  50.0,  0.01f},   /* 零序过流Ⅲ段定值 */
    {SET_LX3_T,         RMT_GRP_SWSET, 99.0,  99.0,  0.01f},   /* 零序过流Ⅲ段时间 */
    {SET_U0_U,          RMT_GRP_SWSET, 100.0, 100.0, 0.01f},   /* 零序过电压保护定值 */
    {SET_U0_T,          RMT_GRP_SWSET, 99.0,  99.0,  0.01f},   /* 零序过电压保护时间 */
    {SET_JSOPEN_T,      RMT_GRP_SWSET, 600.0, 600.0, 0.01f},   /* 加速段保护开放时间 */
    {SET_GLJS_I,        RMT_GRP_SWSET, 50.0,  50.0,  0.01f},   /* 后加速过流保护定值 */
    {SET_GLJS_T,        RMT_GRP_SWSET, 99.0,  99.0,  0.01f},   /* 后加速过流保护时间 */
    {SET_LXJS_I,        RMT_GRP_SWSET, 100.0, 100.0, 0.01f},   /* 后加速零序电流保护定值 */
    {SET_LXJS_T,        RMT_GRP_SWSET, 99.0,  99.0,  0.01f},   /* 后加速零序电流保护时间 */
    {SET_BH_XBCOE,      RMT_GRP_SWSET, 0.35,  0.35,  0.01f},   /* 二次谐波闭锁系数 */    
}; /* 常规保护 */
const uint8_t gst_usr_con_num = sizeof(gst_usr_con) / sizeof(gst_usr_con[0]);

t_datafixval_cfg gst_usr_rc[] = {
    /* 控制字部分 */
    {SET_CH1_TT,        RMT_GRP_SWSET, 0,       0,       1},        /* 一次重合闸投入 */
    {SET_CH2_TT,        RMT_GRP_SWSET, 0,       0,       1},        /* 二次重合闸投入 */
    {SET_CH_TQ,         RMT_GRP_SWSET, 0,       0,       1},        /* 重合检同期 */
    {SET_CH_WY,         RMT_GRP_SWSET, 0,       0,       1},        /* 重合检无压 */
    {SET_CH_DLBS_TT,    RMT_GRP_SWSET, 0,       0,       1},        /* 大电流闭锁重合投入 */

    /* 整定值部分 */
    {SET_CHZ_OPEN,      RMT_GRP_SWSET, 900.0,  900.0,  0.01f},   /* 重合闸开放时间 */
    {SET_CHZCD,         RMT_GRP_SWSET, 199.0,  199.0,  0.01f},   /* 重合闸充电时间 */
    {SET_CH_T1,         RMT_GRP_SWSET, 199.0,  199.0,  0.01f},   /* 一次重合闸时间 */
    {SET_CHBS_T,        RMT_GRP_SWSET, 99.0,   99.0,   0.01f},   /* 二次重合闸闭锁时间 */
    {SET_CH_T2,         RMT_GRP_SWSET, 199.0,  199.0,  0.01f},   /* 二次重合闸时间 */
    {SET_CH_DLBS_I,     RMT_GRP_SWSET, 100.0,  100.0,  0.01f}    /* 大电流闭锁重合闸定值 */    
}; /* 重合闸 */
const uint8_t gst_usr_rc_num = sizeof(gst_usr_rc) / sizeof(gst_usr_rc[0]);

t_datafixval_cfg gst_usr_fa[] = {
    
    /* 地址索引                     定值类型         当前值     备份值    步长 */	
    /* 软压板 */
    {SET_SL_TT,         RMT_GRP_SWSET, 0,       0,       0},             /* 分段/联络模式 */

    /* 控制字部分 */
    {SET_P_YY_TT,       RMT_GRP_SWSET, 0,       0,       1},        /* 电源侧得电延时合闸 */
    {SET_L_YY_TT,       RMT_GRP_SWSET, 0,       0,       1},        /* 负荷侧得电延时合闸 */
    {SET_P_WY_TT,       RMT_GRP_SWSET, 0,       0,       1},        /* A侧失电延时合闸 */
    {SET_L_WY_TT,       RMT_GRP_SWSET, 0,       0,       1},        /* B侧失电延时合闸 */
    {SET_GZCHECK_TT,    RMT_GRP_SWSET, 0,       0,       1},        /* 合到故障分闸 */
    {SET_BSTZ_TT,       RMT_GRP_SWSET, 0,       0,       1},        /* 短时闭锁失压分 */
    {SET_FA_GL2_TT,     RMT_GRP_SWSET, 0,       0,       1},        /* 相间过流告警投入 */
    {SET_FA_LX2_TT,     RMT_GRP_SWSET, 0,       0,       1},        /* 接地告警投入 */
    {SET_U0TZ_TT,       RMT_GRP_SWSET, 0,       0,       1},        /* 合到零压保护 */
    {SET_DLBS_TT,       RMT_GRP_SWSET, 0,       0,       1},        /* 非遮断电流保护 */
    {SET_FA_PTDX,       RMT_GRP_SWSET, 0,       0,       1},        /* PT断线告警 */
    {SET_HZBS_TT,       RMT_GRP_SWSET, 0,       0,       1},        /* 多次失压分闸闭锁 */
    {SET_FA_XBBS_TT,    RMT_GRP_SWSET, 0,       0,       1},        /* 涌流识别 */
    {SET_YJCYBS_TT,     RMT_GRP_SWSET, 0,       0,       1},        /* 硬件残压闭锁 */
    
    /* 整定值部分 */
    {SET_FA_YY_U,       RMT_GRP_SWSET, 80.0,   80.0,   0.01f},    /* 有压定值 */
    {SET_FA_WY_U,       RMT_GRP_SWSET, 30.0,   30.0,   0.01f},    /* 无压定值 */
    {SET_FA_X_T,        RMT_GRP_SWSET, 99.0,   99.0,   0.01f},    /* 得电合闸延时(X时限) */
    {SET_FA_Y_T,        RMT_GRP_SWSET, 99.0,   99.0,   0.01f},    /* 故障检测时限(Y时限) */
    {SET_FA_XL_T,       RMT_GRP_SWSET, 300.0,  300.0,  0.01f},    /* 失压合闸延时(XL时限) */
    {SET_FA_Z_T,        RMT_GRP_SWSET, 99.0,   99.0,   0.01f},    /* 失电分闸延时(Z时限) */
    {SET_FA_BSTZ_T,     RMT_GRP_SWSET, 99.0,   99.0,   0.01f},    /* 闭锁分闸复归时间 */
    {SET_FA_GL_I,       RMT_GRP_SWSET, 100.0,  100.0,  0.01f},    /* 相间故障电流I段定值 */
    {SET_FA_GLI_T,      RMT_GRP_SWSET, 99.0,   99.0,   0.01f},    /* 相间故障电流I段时间 */
    {SET_FA_GL_II,      RMT_GRP_SWSET, 100.0,  100.0,  0.01f},    /* 相间故障电流II段定值 */
    {SET_FA_GLII_T,     RMT_GRP_SWSET, 99.0,   99.0,   0.01f},    /* 相间故障电流II段时间 */
    {SET_FA_LX_I,       RMT_GRP_SWSET, 100.0,  100.0,  0.01f},    /* 接地故障电流定值 */
    {SET_FA_LX_T,       RMT_GRP_SWSET, 99.0,   99.0,   0.01f},    /* 接地故障时间定值 */
    {SET_FA_FHDDY,      RMT_GRP_SWSET, 100.0,  100.0,  0.01f},    /* 复合电压低电压定值 */
    {SET_FA_FHFDY,      RMT_GRP_SWSET, 100.0,  100.0,  0.01f},    /* 复合电压负序电压定值 */
    {SET_FA_GL2_I,      RMT_GRP_SWSET, 100.0,  100.0,  0.01f},    /* 相间过流告警电流定值 */
    {SET_FA_GL2_T,      RMT_GRP_SWSET, 99.0,   99.0,   0.01f},    /* 相间过流告警时间定值 */
    {SET_FA_LX2_I,      RMT_GRP_SWSET, 100.0,  100.0,  0.01f},    /* 接地告警电流定值 */
    {SET_FA_LX2_T,      RMT_GRP_SWSET, 99.0,   99.0,   0.01f},    /* 接地告警时间定值 */
    {SET_FA_U0_U,       RMT_GRP_SWSET, 660.0,  660.0,  0.01f},    /* 零序电压保护电压定值 */
    {SET_FA_U0_T,       RMT_GRP_SWSET, 0.6,    0.6,    0.01f},    /* 零序电压保护时间定值 */
    {SET_FA_DLBS_I,     RMT_GRP_SWSET, 100.0,  100.0,  0.01f},    /* 非遮断电流值 */
    {SET_FA_XBCOE,      RMT_GRP_SWSET, 0.35,   0.35,   0.01f}     /* 二次谐波闭锁系数 */
    
    
}; /* 常规FA */
const uint8_t gst_usr_fa_num = sizeof(gst_usr_fa) / sizeof(gst_usr_fa[0]);

/* 分布式FA */
t_datafixval_cfg gst_usr_smfa[] = {
        /* 投退类（列表型软压板） */
    {SET_GOOSE_FA_TYPE,       RMT_GRP_SWSET, 0.0f,   0.0f,   1.0f},   /* 分布式FA方式 */
    {SET_GOOSE_LL_TT,         RMT_GRP_SWSET, 0.0f,   0.0f,   1.0f},   /* 联络自投投入 */
    {SET_GOOSE_GZVSZT_TT,     RMT_GRP_SWSET, 0.0f,   0.0f,   1.0f},   /* 过载闭锁自投投入 */
    {SET_GOOSE_SDLOSTVOL_TT,  RMT_GRP_SWSET, 0.0f,   0.0f,   1.0f},   /* 首开关失压保护投入 */
    {SET_GOOSE_CHZ_TT,        RMT_GRP_SWSET, 0.0f,   0.0f,   1.0f},   /* 智能分布式启动重合闸 */

    /* 定值类（模拟量） */
    {SET_GOOSET_U_NO,         RMT_GRP_SWSET, 30.0f,  30.0f,  0.01f},  /* 无压定值 */
    {SET_GOOSET_U_HAVE,       RMT_GRP_SWSET, 70.0f,  70.0f,  0.01f},  /* 有压定值 */
    {SET_GOOSET_C_NO,         RMT_GRP_SWSET, 0.02f,  0.02f,  0.01f},  /* 无流定值 */
    {SET_GOOSET_GL_I,         RMT_GRP_SWSET, 50.0f,  50.0f,  0.01f},  /* 分布式FA过流定值 */
    {SET_GOOSET_GL_T,         RMT_GRP_SWSET, 100.0f, 100.0f, 0.01f},  /* 分布式FA过流时间 */
    {SET_GOOSET_LX_I,         RMT_GRP_SWSET, 50.0f,  50.0f,  0.01f},  /* 分布式FA零序过流定值 */
    {SET_GOOSET_LX_T,         RMT_GRP_SWSET, 100.0f, 100.0f, 0.01f},  /* 分布式FA零序过流时间 */
    {SET_GOOSET_LLC_T,        RMT_GRP_SWSET, 100.0f, 100.0f, 0.01f},  /* 联络自投充电延时 */
    {SET_GOOSET_LL_T,         RMT_GRP_SWSET, 5.0f,   5.0f,   0.01f},  /* 联络自投合闸延时 */
    {SET_GOOSET_SDLOST_T,     RMT_GRP_SWSET, 1.0f,   1.0f,   0.01f},  /* 首开关失压跳闸延时 */
    {SET_GOOSET_GZGL_T,       RMT_GRP_SWSET, 100.0f, 100.0f, 0.01f},  /* 故障隔离时限 */
    {SET_GOOSET_GZ_I,         RMT_GRP_SWSET, 50.0f,  50.0f,  0.01f},  /* 过载判断定值 */
    {SET_GOOSET_SL_T,         RMT_GRP_SWSET, 100.0f, 100.0f, 0.01f}   /* 失灵判断延时 */
}; 
const uint8_t gst_usr_smfa_num = sizeof(gst_usr_smfa) / sizeof(gst_usr_smfa[0]);

t_datafixval_cfg gst_usr_tq[] = {
    {SET_TQ_U,      RMT_GRP_SWSET, 220.0,  220.0,  0.01f},   /* 合环压差 */
    {SET_TQ_ANG,    RMT_GRP_SWSET, 30.0,   30.0,   0.01f},   /* 合环角差 */
    {SET_TQ_F,      RMT_GRP_SWSET, 5.0,    5.0,    0.01f}    /* 合环频差 */
}; /* 同期合闸 */
const uint8_t gst_usr_tq_num = sizeof(gst_usr_tq) / sizeof(gst_usr_tq[0]);

 /* 自动解列 */
t_datafixval_cfg gst_usr_as[] = {
    /* 控制字部分 */
    {SET_VOLJL_TT,        RMT_GRP_SWSET, 0,       0,       1},        /* 电压越限解列投入 */
    {SET_DYJL_HCBS_TT,    RMT_GRP_SWSET, 0,       0,       1},        /* 电压滑差闭锁功能 */
    {SET_PLJL_TT,         RMT_GRP_SWSET, 0,       0,       1},        /* 频率越限解列投入 */
    {SET_DPJL_HCBS_TT,    RMT_GRP_SWSET, 0,       0,       1},        /* 频率滑差闭锁功能 */

    /* 定值部分 */
    {SET_JL_CHAR_T,       RMT_GRP_SWSET, 60.0,   60.0,   0.01f},    /* 解列充电时间 */
    {SET_GDYJL_U,         RMT_GRP_SWSET, 220.0,  220.0,  0.01f},    /* 电压过低解列定值 */
    {SET_GDYJL_T,         RMT_GRP_SWSET, 999.0,  999.0,  0.01f},    /* 电压过低解列时间 */
    {SET_DYJL_U,          RMT_GRP_SWSET, 220.0,  220.0,  0.01f},    /* 低电压解列定值 */
    {SET_DYJL_T,          RMT_GRP_SWSET, 999.0,  999.0,  0.01f},    /* 低电压解列时间 */
    {SET_GYJL_U,          RMT_GRP_SWSET, 380.0,  380.0,  0.01f},    /* 高电压解列定值 */
    {SET_GYJL_T,          RMT_GRP_SWSET, 999.0,  999.0,  0.01f},    /* 高电压解列时间 */
    {SET_GGYJL_U,         RMT_GRP_SWSET, 380.0,  380.0,  0.01f},    /* 过高电压解列定值 */
    {SET_GGYJL_T,         RMT_GRP_SWSET, 999.0,  999.0,  0.01f},    /* 过高电压解列时间 */
    {SET_DYJL_HCBS_U,     RMT_GRP_SWSET, 500.0,  500.0,  0.01f},    /* 电压滑差定值 */
    {SET_GDPJL_HZ,        RMT_GRP_SWSET, 50.0,   50.0,   0.01f},    /* 频率过低解列定值 */
    {SET_GDPJL_T,         RMT_GRP_SWSET, 999.0,  999.0,  0.01f},    /* 频率过低解列时间 */
    {SET_DPJL_HZ,         RMT_GRP_SWSET, 50.0,   50.0,   0.01f},    /* 低频解列定值 */
    {SET_DPJL_T,          RMT_GRP_SWSET, 999.0,  999.0,  0.01f},    /* 低频解列时间 */
    {SET_GPJL_HZ,         RMT_GRP_SWSET, 55.0,   55.0,   0.01f},    /* 高频解列定值 */
    {SET_GPJL_T,          RMT_GRP_SWSET, 999.0,  999.0,  0.01f},    /* 高频解列时间 */
    {SET_GGPJL_HZ,        RMT_GRP_SWSET, 55.0,   55.0,   0.01f},    /* 频率过高解列定值 */
    {SET_GGPJL_T,         RMT_GRP_SWSET, 999.0,  999.0,  0.01f},    /* 频率过高解列时间 */
    {SET_DPJL_HCBS_HZ,    RMT_GRP_SWSET, 20.0,   20.0,   0.01f}     /* 频率滑差定值 */

};
const uint8_t gst_usr_as_num = sizeof(gst_usr_as) / sizeof(gst_usr_as[0]);

t_datafixval_cfg gst_usr_lcd[] = {
    /* 小电流接地保护相关 */
    {SET_XDL_TT,          RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 小电流接地保护 */
    {SET_XDL_STR_AR_TT,   RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 小电流接地保护启动重合闸 */
    {SET_XDL_HJS_TT,      RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 小电流接地保护后加速 */

    {SET_XDL_T,           RMT_GRP_SWSET, 99.0,  99.0,  0.01f},  /* 小电流接地故障时间 */
    {SET_XDL_HJSKF_T,     RMT_GRP_SWSET, 900.0, 900.0, 0.01f},  /* 后加速开放时间 */

}; /* 小电流接地 */
const uint8_t gst_usr_lcd_num = sizeof(gst_usr_lcd) / sizeof(gst_usr_lcd[0]);;

/* 线路告警 */
t_datafixval_cfg gst_usr_xlga[] = {
    {SET_LA_BREAKLINE_A_T,  RMT_GRP_SWSET, 99.0,   99.0,   0.01f},   /* 线路断线告警延时 */
}; 
const uint8_t gst_usr_xlga_num = sizeof(gst_usr_xlga) / sizeof(gst_usr_xlga[0]);;

/* 传动开关 */
t_datafixval_cfg gst_usr_chkg[] = {
    {SET_DRIVE_HZ_T,  RMT_GRP_SWSET, 10.0,  10.0,  0.01f},   /* 延时合闸时间 */
    {SET_FZ_END_T,    RMT_GRP_SWSET, 15.0,  15.0,  0.01f},   /* 结束传动时间 */
}; 
const uint8_t gst_usr_chkg_num = sizeof(gst_usr_chkg) / sizeof(gst_usr_chkg[0]);

/* 定值查看所需数组 */
t_datafixval_cfg_total gst_usr_fix_val[] = {
    {gst_usr_fs,     gst_usr_fs_num, "功能软压板  "},     /* 功能软压板 */
    {gst_usr_yxsb,   gst_usr_yxsb_num, "运行软压板   "}, /* 运行软压板 */
    {gst_usr_area,   gst_usr_area_num, "定值区号   "}, /* 定值区号 */
    {gst_usr_con,    gst_usr_con_num, "常规保护   "},   /* 常规保护 */
    {gst_usr_rc,     gst_usr_rc_num, "重合闸   "},     /* 重合闸 */
    {gst_usr_fa,     gst_usr_fa_num, "常规FA"},     /* 常规FA */ 
    {gst_usr_smfa,     gst_usr_smfa_num, "智能分布式"},     /* 智能分布式 */ 

    {gst_usr_tq,     gst_usr_tq_num, "同期合闸   "},     /* 同期合闸 */ 
    {gst_usr_as,     gst_usr_as_num, "自动解列   "},     /* 自动解列 */
    {gst_usr_lcd,    gst_usr_lcd_num, "小电流接地   "},   /* 小电流接地 */
    {gst_usr_xlga,   gst_usr_xlga_num, "线路告警   "}, /* 线路告警 */
    {gst_usr_chkg,   gst_usr_chkg_num, "传动开关   "}, /* 传动开关 */
};
const uint8_t gst_usr_fix_val_num = sizeof(gst_usr_fix_val) / sizeof(gst_usr_fix_val[0]); /* 总的定值查看数目 */

t_datafixval_cfg_total gst_usr_dev_set_val[] = {
    {gst_usr_dp,     gst_usr_dp_num, "设备参数  "},     /* 设备参数 */
};

const uint8_t gst_usr_dev_set_val_num = sizeof(gst_usr_dev_set_val) / sizeof(gst_usr_dev_set_val[0]); /* 总的定值数目 */



/**
 * @brief           从系统之中获取数据到菜单结构之中
 * @param[in/out]  {uint8_t} _uc_type 传进来的类型 0公共定值 1开关定值、2装置参数 3内部定值
 * @param[in/out]  {const SET_VALUE} * _pt_val 数据指针
 * @return         * void 
 * @retval         
 * 
 * @warning        
 * @note           
 */
void data_usr_update_from_system(uint8_t _uc_type, const SET_VALUE * _pt_val)
{
    uint16_t i = 0, j = 0;
    //更新定值组数据
    for (i = 0; i < gst_usr_fix_val_num; i++)
    {
        for (j = 0; j < gst_usr_fix_val[i].us_val; j++)
        {
            if (gst_usr_fix_val[i].fs[j].uc_type == _uc_type)
            {
                gst_usr_fix_val[i].fs[j].f_val_set = _pt_val[gst_usr_fix_val[i].fs[j].us_addr].ff;
                gst_usr_fix_val[i].fs[j].f_val_bak = gst_usr_fix_val[i].fs[j].f_val_set;
            }
        }
    }

    //更新装置参数数据
    for (i = 0; i < gst_usr_dev_set_val_num; i++)
    {
        for (j = 0; j < gst_usr_dev_set_val[i].us_val; j++)
        {
            if (gst_usr_dev_set_val[i].fs[j].uc_type == _uc_type)
            {

                gst_usr_dev_set_val[i].fs[j].f_val_set = _pt_val[gst_usr_dev_set_val[i].fs[j].us_addr].ff;
                gst_usr_dev_set_val[i].fs[j].f_val_bak = gst_usr_dev_set_val[i].fs[j].f_val_set;
            }
        }
    }
    
}

bool data_usr_check_diff(void)
{
    uint16_t i = 0, j = 0;
    
    /* 检查定值查看数据 */
    for (i = 0; i < gst_usr_fix_val_num; i++)
    {
        if (gst_usr_fix_val[i].fs == NULL)
        {
            continue;
        }
        
        for (j = 0; j < gst_usr_fix_val[i].us_val; j++)
        {
            /* 检查特殊IP地址类型 */
            if (gst_usr_fix_val[i].fs[j].us_addr >= PARA_IP_NET1 && 
                gst_usr_fix_val[i].fs[j].us_addr <= PARA_IP_104MASTER4)
            {
                if (gst_usr_fix_val[i].fs[j].ul_val_set != gst_usr_fix_val[i].fs[j].ul_val_bak)
                {
                    return true;
                }
            }
            else
            {
                if (gst_usr_fix_val[i].fs[j].f_val_set != gst_usr_fix_val[i].fs[j].f_val_bak)
                {
                    return true;
                }
            }
        }
    }
    
    /* 检查设备参数数据 */
    for (i = 0; i < gst_usr_dev_set_val_num; i++)
    {
        if (gst_usr_dev_set_val[i].fs == NULL)
        {
            continue;
        }
        
        for (j = 0; j < gst_usr_dev_set_val[i].us_val; j++)
        {
            /* 检查特殊IP地址类型 */
            if (gst_usr_dev_set_val[i].fs[j].us_addr >= PARA_IP_NET1 && 
                gst_usr_dev_set_val[i].fs[j].us_addr <= PARA_IP_104MASTER4)
            {
                if (gst_usr_dev_set_val[i].fs[j].ul_val_set != gst_usr_dev_set_val[i].fs[j].ul_val_bak)
                {
                    return true;
                }
            }
            else
            {
                if (gst_usr_dev_set_val[i].fs[j].f_val_set != gst_usr_dev_set_val[i].fs[j].f_val_bak)
                {
                    return true;
                }
            }
        }
    }
    
    return false;
}