#include "data_sys.h"
#include "data_real_time.h"


/**< 设备参数 */
t_datafixval_cfg gst_fv_dp[] = {
    /* 地址索引                     定值类型         当前值     备份值    步长 */										
    {SET_SECTION,                   RMT_GRP_PUSET,  1,        0,        1},     /** 定值区号              */
    {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额定一次值*/     //TODO 暂未找到
    {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额定二次值*/
    {SET_PPT_TYPE,               RMT_GRP_PUSET,  2,        0,        0.01},     /** A侧PT接线方式         */
    {SET_LPT_TYPE,                   RMT_GRP_PUSET,  2,        0,        0.01}, /** B侧PT接线方式         */
    {SET_WY_U,                   RMT_GRP_PUSET,  30,        0,        0.01},     /** 无压定值              */
    {SET_YY_U,                  RMT_GRP_PUSET,  70,        0,        0.01},      /** 有压定值              */
    {CSTSET_IWL,                   RMT_GRP_CSSET,  0.05,        0,        0.01},   /** 无流定值              */

    {PARA_PHASE_I_ZERO,             RMT_GRP_EQSET,  0.25,        0,        1},     /** 电流零漂值            */
    {PARA_U_ZERO,                  RMT_GRP_EQSET,  20,        0,        1},      /** 电压零漂值            */
	{PARA_ZERO_I_ZERO,               RMT_GRP_EQSET,  0.04,        0,        0.01}, /** 零序电流零漂值        */
    // {PARA_I_ZERO,                   RMT_GRP_PUSET,  0,        0,        0.01},  /** 零序电压零漂值        */     //TODO 暂未找到
    // {PARA_U_ZERO,                   RMT_GRP_PUSET,  0,        0,        0.01},  /** 直流零漂值            */
    // {PARA_DC_ZERO,                  RMT_GRP_PUSET,  0,        0,        0.01},  /** 功率零漂值            */
    // {PARA_P_ZERO,                   RMT_GRP_PUSET,  0,        0,        0.01},  /** 合闸脉宽              */
    // {PARA_FZPULSE,                  RMT_GRP_PUSET,  0,        0,        1},     /** 分闸脉宽              */
    // {PARA_HZPULSE,                  RMT_GRP_PUSET,  0,        0,        1},		/* 功率计算电压选择      */
	// {PARA_HZPULSE,                  RMT_GRP_PUSET,  0,        0,        1},		/* 主界面遥测类型        */
};
const uint8_t guc_menu_fv_dp_num = sizeof(gst_fv_dp) / sizeof(gst_fv_dp[0]); /* 设备参数数目 */

/* 端口通信参数 */
t_datafixval_cfg gst_fv_comp[] = {
    /* 地址索引                     定值类型         当前值     备份值    步长 */										
    {PARA_PROTOCOL_S1,              RMT_GRP_EQSET,  0,        0,        1},             /*串口1规约*/
    {PARA_BAUD_S1,                  RMT_GRP_EQSET,  4,        0,        1},             /*串口1波特率*/
    {PARA_PARITY_S1,                RMT_GRP_EQSET,  2,        0,        1},             /*串口1校验位*/
    {PARA_PROTOCOL_S2,              RMT_GRP_EQSET,  0,        0,        1},             /*串口2规约*/
    {PARA_BAUD_S2,                  RMT_GRP_EQSET,  4,        0,        1},             /*串口2波特率*/
    {PARA_PARITY_S2,                RMT_GRP_EQSET,  2,        0,        1},             /*串口2校验位*/
    {PARA_PROTOCOL_S3,              RMT_GRP_EQSET,  0,        0,        1},             /*串口3规约*/
    {PARA_BAUD_S3,                  RMT_GRP_EQSET,  4,        0,        1},             /*串口3波特率*/
    {PARA_PARITY_S3,                RMT_GRP_EQSET,  2,        0,        1},             /*串口3校验位*/
    {PARA_PROTOCOL_S4,              RMT_GRP_EQSET,  0,        0,        1},             /*串口4规约*/
    {PARA_BAUD_S4,                  RMT_GRP_EQSET,  4,        0,        0.01},          /*串口4波特率*/
    {PARA_PARITY_S4,                RMT_GRP_EQSET,  2,        0,        0.01},          /*串口4校验位*/
    {PARA_IP_NET1,                  RMT_GRP_EQSET,  0,        0,        0.01},          /*网口1 IP*/
    {PARA_ROUTE_GATE1,              RMT_GRP_EQSET,  0,        0,        0.01},          /*网口1 网关 */
    {PARA_MA_NET1,                  RMT_GRP_EQSET,  0,        0,        0.01},          /*网口1 掩码 */
    {PARA_IP_NET2,                  RMT_GRP_EQSET,  0,        0,        0.01},          /*网口2 IP*/
    {PARA_ROUTE_GATE2,              RMT_GRP_EQSET,  0,        0,        0.01},          /*网口2 网关 */
    {PARA_ROUTE_NETMASK2,           RMT_GRP_EQSET,  0,        0,        0.01},          /*网口2 掩码 */

}; 
const uint8_t guc_menu_fv_comp_num = sizeof(gst_fv_comp) / sizeof(gst_fv_comp[0]); /* 端口通信数目 */

/**< 规约通讯参数 */
t_datafixval_cfg gst_fv_pcp[] = {
    /* 地址索引                     定值类型         当前值     备份值    步长 */										
    {PARA_ADDR,                     RMT_GRP_EQSET,  0,        0,        1},             /*装置地址    */
    {PARA_YXTYPE,                   RMT_GRP_EQSET,  0,        0,        1},             /*遥信报文类型*/
    {PARA_YKTYPE,                   RMT_GRP_EQSET,  0,        0,        1},             /*遥控报文类型*/
    {PARA_YCTYPE,                   RMT_GRP_EQSET,  0,        0,        1},             /*遥测报文类型*/
    {PARA_YCTIME,                   RMT_GRP_EQSET,  0,        0,        1},             /*遥测突发间隔*/
    {PARA_YCAUTO,                   RMT_GRP_EQSET,  0,        0,        1},             /*遥测突发上送*/
    {PARA_COSAUTO,                  RMT_GRP_EQSET,  0,        0,        1},             /*COS突发上送*/
    {PARA_YK_TIME,                  RMT_GRP_EQSET,  0,        0,        1},             /*遥控超时时间*/
    {PARA_YT_TIME,                  RMT_GRP_EQSET,  0,        0,        1},             /*遥调超时时间*/
    {PARA_101LINKADDR,              RMT_GRP_EQSET,  0,        0,        1},             /*101链路地址*/
    {PARA_101APPADDR,               RMT_GRP_EQSET,  0,        0,        0.01},             /*101应用地址*/
    {PARA_101COT,                   RMT_GRP_EQSET,  0,        0,        0.01},             /*101传送原因*/
    // {PARA_POWER_T,                  RMT_GRP_EQSET,  0,        0,        0.01},             /*101信息体地址长度*/

    {PARA_104_Client,               RMT_GRP_EQSET,  0,        0,        0.01},             /*104规约模式*/
    {PARA_104_PORT,                 RMT_GRP_EQSET,  0,        0,        0.01},             /*104规约端口*/
    {PARA_104_ACK_TIME,             RMT_GRP_EQSET,  0,        0,        0.01},             /*104确认超时*/
    {PARA_104_TEST_TIME,            RMT_GRP_EQSET,  0,        0,        0.01},             /*104测试超时*/
    {PARA_104_K,                    RMT_GRP_EQSET,  0,        0,        0.01},             /*104 K值*/
    {PARA_104_W,                    RMT_GRP_EQSET,  0,        0,        1},             /*104 W值*/
    {PARA_IP_104MASTER1,            RMT_GRP_EQSET,  0,        0,        1},                /*104主站1 IP*/
	{PARA_IP_104MASTER2,            RMT_GRP_EQSET,  0,        0,        0.01},             /*104主站2 IP*/
    {PARA_IP_104MASTER3,            RMT_GRP_EQSET,  0,        0,        0.01},             /*104主站3 IP*/
    {PARA_IP_104MASTER4,            RMT_GRP_EQSET,  0,        0,        0.01},             /*104主站4 IP*/

}; 
const uint8_t guc_menu_fv_pcp_num = sizeof(gst_fv_pcp) / sizeof(gst_fv_pcp[0]); /* 规约通讯数目 */


/* 常规保护 */
t_datafixval_cfg gst_fv_con[] = {
    /* 地址索引                     定值类型         当前值     备份值    步长 */	
    /* 控制字部分 */
    // {SET_LABLE_BHTT,    RMT_GRP_SWSET, 0, 0, 0},       /* 列表名 常规保护控制字 */
    {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_BH_DLBS_TT,    RMT_GRP_SWSET, 0, 0, 1},       /* 非遮断保护投入 */

    /* 整定值部分 */
    // {SET_LABLE_BHDZ,    RMT_GRP_SWSET, 0, 0, 0},       /* 列表名 常规保护整定值 */
    {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},   /* 二次谐波闭锁系数 */
    {SET_BH_DLBS_I,     RMT_GRP_SWSET, 100.0, 100.0, 0.01f}    /* 非遮断电流定值 */
};

const uint8_t guc_menu_fv_con_num = sizeof(gst_fv_con) / sizeof(gst_fv_con[0]); /* 常规保护数目 */

/* 常规FA  就地馈线自动化*/
t_datafixval_cfg gst_fv_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_CYBS_TT,       RMT_GRP_SWSET, 1,       1,       1},        /* 残压闭锁 */
    {SET_SCYY_BSHZ,     RMT_GRP_SWSET, 1,       1,       1},        /* 双侧有压闭锁合闸 */
    {SET_SF_BSHZ,       RMT_GRP_SWSET, 1,       1,       1},        /* 手分/遥分闭锁合闸 */
    {SET_SH_BSFZ,       RMT_GRP_SWSET, 0,       0,       1},        /* 手合无压闭锁分闸 */
    {SET_GZBSHZ_TT,     RMT_GRP_SWSET, 1,       1,       1},        /* 合到故障分闸闭锁合闸 */
    {SET_LOSTFZ_TT,     RMT_GRP_SWSET, 1,       1,       1},        /* 失电延时分闸 */

    /* 整定值部分 */
    // {SET_LABLE_FADZ,    RMT_GRP_SWSET, 0,       0,       0},        /* 列表名 馈线自动化定值 */
    {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}     /* 二次谐波闭锁系数 */
};
const uint8_t guc_menu_fv_fa_num = sizeof(gst_fv_fa) / sizeof(gst_fv_fa[0]); /* 常规FA数目 */

/* 分布式FA */
t_datafixval_cfg gst_fv_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_GOOSE_FTU_TYPE,      RMT_GRP_SWSET, 1.0f,   1.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 guc_menu_fv_smfa_num = sizeof(gst_fv_smfa) / sizeof(t_datafixval_cfg);


/* 重合闸 */
t_datafixval_cfg gst_fv_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_TTCH_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 guc_menu_fv_rc_num = sizeof(gst_fv_rc) / sizeof(gst_fv_rc[0]); /* 常规FA数目 */

/* 非电量参数 */
t_datafixval_cfg gst_fv_fdl[] = {
    /* 非电量保护投入 */
    {SET_FDL1_TT,   RMT_GRP_PUSET, 0,       0,       1},        /* 非电量1保护 */
    {SET_FDL2_TT,   RMT_GRP_PUSET, 0,       0,       1},        /* 非电量2保护 */
    {SET_FDL3_TT,   RMT_GRP_PUSET, 0,       0,       1},        /* 非电量3保护 */
    {SET_FDL4_TT,   RMT_GRP_PUSET, 0,       0,       1},        /* 非电量4保护 */
    {SET_FDL5_TT,   RMT_GRP_PUSET, 0,       0,       1},        /* 非电量5保护 */
    {SET_FDL6_TT,   RMT_GRP_PUSET, 0,       0,       1},        /* 非电量6保护 */

    /* 非电量时间定值 */
    {SET_FDL1_T,    RMT_GRP_PUSET, 999.0,  999.0,  0.01f},   /* 非电量1时间 */
    {SET_FDL2_T,    RMT_GRP_PUSET, 999.0,  999.0,  0.01f},   /* 非电量2时间 */
    {SET_FDL3_T,    RMT_GRP_PUSET, 999.0,  999.0,  0.01f},   /* 非电量3时间 */
    {SET_FDL4_T,    RMT_GRP_PUSET, 999.0,  999.0,  0.01f},   /* 非电量4时间 */
    {SET_FDL5_T,    RMT_GRP_PUSET, 999.0,  999.0,  0.01f},   /* 非电量5时间 */
    {SET_FDL6_T,    RMT_GRP_PUSET, 999.0,  999.0,  0.01f}    /* 非电量6时间 */
};
const uint8_t guc_menu_fv_fdl_num = sizeof(gst_fv_fdl) / sizeof(gst_fv_fdl[0]); /* 非电量参数数目 */

/* 同期合闸 */
t_datafixval_cfg gst_fv_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 guc_menu_fv_tq_num = sizeof(gst_fv_tq) / sizeof(gst_fv_tq[0]); /* 同期合闸数目 */

/* 自动解列 */
t_datafixval_cfg gst_fv_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 guc_menu_fv_as_num = sizeof(gst_fv_as) / sizeof(gst_fv_as[0]); /* 自动解列数目 */

/* 遥测越限 */
t_datafixval_cfg gst_fv_yx[] = {
    /* 电流重载 */
    {SET_DLZZ_TT,   RMT_GRP_SWSET, 0,       0,       1},        /* 电流重载 */
    {SET_DLZZ_I,    RMT_GRP_SWSET, 100.0,  100.0,  0.01f},   /* 电流重载定值 */
    {SET_DLZZ_T,    RMT_GRP_SWSET, 99.0,   99.0,   0.01f},   /* 电流重载时间 */

    /* 电流过载 */
    {SET_DLGZ_TT,   RMT_GRP_SWSET, 0,       0,       1},        /* 电流过载 */
    {SET_DLGZ_I,    RMT_GRP_SWSET, 100.0,  100.0,  0.01f},   /* 电流过载定值 */
    {SET_DLGZ_T,    RMT_GRP_SWSET, 99.0,   99.0,   0.01f},   /* 电流过载时间 */

    /* 负荷越限 */
    {SET_DLYX_TT,   RMT_GRP_SWSET, 0,       0,       1},        /* 负荷越限 */
    {SET_DLYX_I,    RMT_GRP_SWSET, 5.0,    5.0,    0.01f},   /* 负荷越限定值 */
    {SET_DLYX_T,    RMT_GRP_SWSET, 99.0,   99.0,   0.01f},   /* 负荷越限时间 */

    /* 零序电流越限 */
    {SET_LXYX_TT,   RMT_GRP_SWSET, 0,       0,       1},        /* 零序电流越限 */
    {SET_LXYX_I,    RMT_GRP_SWSET, 5.0,    5.0,    0.01f},   /* 零序电流越限定值 */
    {SET_LXYX_T,    RMT_GRP_SWSET, 99.0,   99.0,   0.01f}    /* 零序电流越限时间 */
};
const uint8_t guc_menu_fv_yx_num = sizeof(gst_fv_yx) / sizeof(gst_fv_yx[0]); /* 电流越限数目 */

/* 线路告警 */
t_datafixval_cfg gst_fv_xlga[] = {
    {SET_LA_BREAKLINE_A_T,  RMT_GRP_SWSET, 99.0,   99.0,   0.01f},   /* 线路断线告警延时 */
    {SET_LA_BREAKLINE_M_T,  RMT_GRP_SWSET, 0.0,    0.0,    1.0f},    /* 线路断线判定方式 */
    {SET_LA_BREAKLINE_Z_U,  RMT_GRP_SWSET, 380.0,  380.0,  0.01f},   /* 线路断线零压 */
    {SET_LA_BREAKLINE_Z_C,  RMT_GRP_SWSET, 50.0,   50.0,   0.01f},   /* 线路断线零流 */
    {SET_LA_BREAKLINE_D_U,  RMT_GRP_SWSET, 380.0,  380.0,  0.01f}    /* 线路断线低电压 */
};
const uint8_t guc_menu_fv_xlga_num = sizeof(gst_fv_xlga) / sizeof(gst_fv_xlga[0]); /* 线路告警数目 */

/* 小电流接地 */
t_datafixval_cfg gst_fv_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_XDLQD_TT,        RMT_GRP_SWSET, 1.0,   1.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},  /* 后加速开放时间 */
    {SET_XDL_I,           RMT_GRP_SWSET, 100.0, 100.0, 0.01f}   /* 小电流暂态电流 */
};
const uint8_t guc_menu_fv_lcd_num = sizeof(gst_fv_lcd) / sizeof(gst_fv_lcd[0]); /* 小电流接地数目 */

//TODO 暂无
// t_datafixval_cfg gst_fv_kzhl[]; /* 控制回路 */
// const uint8_t guc_menu_fv_kzhl_num = sizeof(gst_fv_kzhl) / sizeof(gst_fv_kzhl[0]); /* 控制回路数目 */

// t_datafixval_cfg gst_fv_sra[]; /* 开关拒动 */
// const uint8_t guc_menu_fv_sra_num = sizeof(gst_fv_sra) / sizeof(gst_fv_sra[0]); /* 开关拒动数目 */

/* 自动复归 */
t_datafixval_cfg gst_fv_zdfg[] = {
    {PARA_RST_TT,     RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 自动复归投退 */
    {PARA_RSTTIME,    RMT_GRP_SWSET, 480.0, 480.0, 1.0f}    /* 自动复归时间 */
};
const uint8_t guc_menu_fv_zdfg_num = sizeof(gst_fv_zdfg) / sizeof(gst_fv_zdfg[0]); /* 自动复归数目 */

/* 故障录波 */
t_datafixval_cfg gst_fv_fr[] = {
    //TODO 少了投退选项，后续找
    {SET_WAVE_GLGZ,     RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 过流故障启动 */
    {SET_WAVE_LXGL,     RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 零序过流启动 */
    {SET_WAVE_LXDY,     RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 零序电压启动 */
    {SET_WAVE_XLSY,     RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 线路失压启动 */
    {SET_WAVE_LYTB,     RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 零压突变启动 */
    {SET_U0_TB,         RMT_GRP_SWSET, 6.5,   6.5,   0.01f},  /* 零压突变定值 */
    {SET_WAVE_LLTB,     RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 零流突变启动 */
    {SET_I0_TB,         RMT_GRP_SWSET, 5.0,   5.0,   0.01f},  /* 零流突变定值 */
    {SET_WAVE_CHZ,      RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 重合闸启动 */
    {SET_WAVE_TV,       RMT_GRP_SWSET, 0.0,   0.0,   1.0f},   /* 残压启动 */
    {SET_WAVE_FA,       RMT_GRP_SWSET, 0.0,   0.0,   1.0f}    /* FA动作 */
};
const uint8_t guc_menu_fv_fr_num = sizeof(gst_fv_fr) / sizeof(gst_fv_fr[0]); /* 故障录波数目 */

/* 传动开关 */
t_datafixval_cfg gst_fv_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},   /* 结束传动时间 */
    {SET_DRIVE_FZ_T,  RMT_GRP_SWSET, 0.0,   0.0,   0.01f},   /* 延时分闸时间 */
    {SET_HZ_END_T,    RMT_GRP_SWSET, 0.3,   0.3,   0.01f}    /* 合闸结束传动时间 */
};
const uint8_t guc_menu_fv_chkg_num = sizeof(gst_fv_chkg) / sizeof(gst_fv_chkg[0]); /* 传动开关数目 */

//TODO 软压板 = 功能软压板 + 运行软压板
// t_datafixval_cfg gst_fv_sb[]; /* 软压板 */
// const uint8_t guc_menu_fv_sb_num = sizeof(gst_fv_sb) / sizeof(gst_fv_sb[0]); /* 软压板数目 */

/* 功能软压板 */
t_datafixval_cfg gst_fv_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 guc_menu_fv_fs_num = sizeof(gst_fv_fs) / sizeof(gst_fv_fs[0]); /* 功能软压板数目 */

/* 运行软压板 */
t_datafixval_cfg gst_fv_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 guc_menu_fv_yxsb_num = sizeof(gst_fv_yxsb) / sizeof(gst_fv_yxsb[0]); /* 运行软压板数目 */

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

// ==================================================================================================================== //

t_datafixval_cfg_total gst_dev_set_val[] = {
    {gst_fv_dp,     guc_menu_fv_dp_num, "设备参数  "},     /* 设备参数 */
    {gst_fv_comp,   guc_menu_fv_comp_num, "通信参数  "}, /* 端口通信参数 */
    {gst_fv_pcp,    guc_menu_fv_pcp_num, "规约参数  "},   /* 规约通讯参数 */
};

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


// ==================================================================================================================== //
/**< 定值整定数据 */
t_datafixval_cfg_total gst_val[] = {
    {gst_fv_con,    guc_menu_fv_con_num, "常规保护  "},   /* 常规保护 */
    {gst_fv_rc,     guc_menu_fv_rc_num, "重合闸  "},     /* 重合闸 */
    {gst_fv_fa,     guc_menu_fv_fa_num, "常规FA  "},     /* 常规FA */
    {gst_fv_smfa,   guc_menu_fv_smfa_num, "智能分布式  "},     /* 智能分布式 */
    {gst_fv_fdl,    guc_menu_fv_fdl_num, "非电量参数  "},   /* 非电量参数 */
    {gst_fv_tq,     guc_menu_fv_tq_num, "同期合闸  "},     /* 同期合闸 */
    {gst_fv_as,     guc_menu_fv_as_num, "自动解列  "},     /* 自动解列 */
    {gst_fv_yx,     guc_menu_fv_yx_num, "遥测越限  "},     /* 遥测越限 */
    {gst_fv_xlga,   guc_menu_fv_xlga_num, "线路告警  "}, /* 线路告警 */
    {gst_fv_lcd,    guc_menu_fv_lcd_num, "小电流接地  "},   /* 小电流接地 */
    {gst_fv_zdfg,   guc_menu_fv_zdfg_num, "自动复归  "}, /* 自动复归 */
    {gst_fv_fr,     guc_menu_fv_fr_num, "故障录波  "},     /* 故障录波 */
    {gst_fv_chkg,   guc_menu_fv_chkg_num, "传动开关  "}, /* 传动开关 */
    {gst_fv_fs,     guc_menu_fv_fs_num, "功能软压板  "},     /* 功能软压板 */
    {gst_fv_yxsb,   guc_menu_fv_yxsb_num, "运行软压板  "}, /* 运行软压板 */
};
const uint8_t guc_menu_fv_num = sizeof(gst_val) / sizeof(gst_val[0]); /* 总的定值数目 */


/**
 * @brief 判断是否为特殊处理的长整型(IP/网关等)地址
 */
inline bool is_special_ip_addr(uint16_t addr) {
    switch (addr) {
        case PARA_IP_NET1:      case PARA_ROUTE_GATE1:    case PARA_MA_NET1:
        case PARA_IP_NET2:      case PARA_ROUTE_GATE2:    case PARA_ROUTE_NETMASK2:
        case PARA_IP_104MASTER1: case PARA_IP_104MASTER2:
        case PARA_IP_104MASTER3: case PARA_IP_104MASTER4:
            return true;
        default:
            return false;
    }
}


/**
 * @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_sys_update_from_system(uint8_t _uc_type, const SET_VALUE * _pt_val)
{
    uint16_t i = 0, j = 0;

    for (i = 0; i < guc_menu_fv_num; i++)
    {
        for (j = 0; j < gst_val[i].us_val; j++)
        {
            if (gst_val[i].fs[j].uc_type == _uc_type)
            {
                gst_val[i].fs[j].f_val_set = _pt_val[gst_val[i].fs[j].us_addr].ff;
                gst_val[i].fs[j].f_val_bak = gst_val[i].fs[j].f_val_set;
            }
        }
    }

    for ( i = 0; i < gst_dev_set_num; i++)
    {
        for (j = 0; j < gst_dev_set_val[i].us_val; j++)
        {
            if (gst_dev_set_val[i].fs[j].uc_type == _uc_type)
            {
                /* 注意IP、网关、掩码特殊处理 */
                if(is_special_ip_addr(gst_dev_set_val[i].fs[j].us_addr))
                {
                    gst_dev_set_val[i].fs[j].ul_val_set = _pt_val[gst_dev_set_val[i].fs[j].us_addr].tt;
                    gst_dev_set_val[i].fs[j].ul_val_bak = gst_dev_set_val[i].fs[j].ul_val_set;
                }
                else
                {
                    gst_dev_set_val[i].fs[j].f_val_set = _pt_val[gst_dev_set_val[i].fs[j].us_addr].ff;
                    gst_dev_set_val[i].fs[j].f_val_bak = gst_dev_set_val[i].fs[j].f_val_set;
                }
            }
        }
    }
    
}

bool data_sys_check_diff(void)
{
    uint16_t i = 0, j = 0;
    
    /* 检查定值整定数据 */
    for (i = 0; i < guc_menu_fv_num; i++)
    {
        if (gst_val[i].fs == NULL)
        {
            continue;
        }
        
        for (j = 0; j < gst_val[i].us_val; j++)
        {
            /* 检查特殊IP地址类型 */
            if (is_special_ip_addr(gst_val[i].fs[j].us_addr))
            {
                if (gst_val[i].fs[j].ul_val_set != gst_val[i].fs[j].ul_val_bak)
                {
                    return true;
                }
            }
            else
            {
                if (gst_val[i].fs[j].f_val_set != gst_val[i].fs[j].f_val_bak)
                {
                    return true;
                }
            }
        }
    }
    
    /* 检查设备参数数据 */
    for (i = 0; i < gst_dev_set_num; i++)
    {
        if (gst_dev_set_val[i].fs == NULL)
        {
            continue;
        }
        
        for (j = 0; j < gst_dev_set_val[i].us_val; j++)
        {
            /* 检查特殊IP地址类型 */
            if (is_special_ip_addr(gst_dev_set_val[i].fs[j].us_addr))
            {
                if (gst_dev_set_val[i].fs[j].ul_val_set != gst_dev_set_val[i].fs[j].ul_val_bak)
                {
                    return true;
                }
            }
            else
            {
                if (gst_dev_set_val[i].fs[j].f_val_set != gst_dev_set_val[i].fs[j].f_val_bak)
                {
                    return true;
                }
            }
        }
    }
    
    return false;
}

