#ifndef _DATA_SYS_H
#define _DATA_SYS_H

#include "data_config.h"
#include "bsp_type.h"
#include "head.h"
#include "MmiData.h"

typedef enum
{
    FIX_MENU_CG = 0,      // 常规保护
    FIX_MENU_CHZ,         // 重合闸
    FIX_MENU_FA,          // 常规FA
    FIX_MENU_DFA,         // 智能分布式
    FIX_MENU_TQHZ = 5,    // 同期合闸
    FIX_MENU_ZDJL,        // 自动解列
    FIX_MENU_XLDXGJ = 8,  // 线路告警
    FIX_MENU_XDLD = 9,    // 小电流接地
    FIX_MENU_BTCD = 12    // 传动开关
} FixMenuId;


/***** 变量对外声明 *****/
extern t_datafixval_cfg gst_fv_dp[]; /* 设备参数 */
extern const uint8_t guc_menu_fv_dp_num;

extern t_datafixval_cfg gst_fv_comp[]; /* 端口通信参数 */
extern const uint8_t guc_menu_fv_comp_num;

extern t_datafixval_cfg gst_fv_pcp[]; /* 规约通讯参数 */
extern const uint8_t guc_menu_fv_pcp_num;

extern t_datafixval_cfg gst_fv_con[]; /* 常规保护 */
extern const uint8_t guc_menu_fv_con_num;

extern t_datafixval_cfg gst_fv_fa[]; /* 常规FA */
extern const uint8_t guc_menu_fv_fa_num;

//TODO 还有一个智能分布式，不确定要不要
extern t_datafixval_cfg gst_fv_smfa[]; /* 分布式FA */
extern const uint8_t guc_menu_fv_smfa_num;

extern t_datafixval_cfg gst_fv_rc[]; /* 重合闸 */
extern const uint8_t guc_menu_fv_rc_num;

extern t_datafixval_cfg gst_fv_fdl[]; /* 非电量参数 */
extern const uint8_t guc_menu_fv_fdl_num;

extern t_datafixval_cfg gst_fv_tq[]; /* 同期合闸 */
extern const uint8_t guc_menu_fv_tq_num;

extern t_datafixval_cfg gst_fv_as[]; /* 自动解列 */
extern const uint8_t guc_menu_fv_as_num;

extern t_datafixval_cfg gst_fv_yx[]; /* 遥测越限 */
extern const uint8_t guc_menu_fv_yx_num;

extern t_datafixval_cfg gst_fv_xlga[]; /* 线路告警 */
extern const uint8_t guc_menu_fv_xlga_num;

extern t_datafixval_cfg gst_fv_lcd[]; /* 小电流接地 */
extern const uint8_t guc_menu_fv_lcd_num;

//TODO 暂无
// extern t_datafixval_cfg gst_fv_kzhl[]; /* 控制回路 */
// extern const uint8_t guc_menu_fv_kzhl_num;

// extern t_datafixval_cfg gst_fv_sra[]; /* 开关拒动 */
// extern const uint8_t guc_menu_fv_sra_num;

extern t_datafixval_cfg gst_fv_zdfg[]; /* 自动复归 */
extern const uint8_t guc_menu_fv_zdfg_num;

extern t_datafixval_cfg gst_fv_fr[]; /* 故障录波 */
extern const uint8_t guc_menu_fv_fr_num;

extern t_datafixval_cfg gst_fv_chkg[]; /* 传动开关 */
extern const uint8_t guc_menu_fv_chkg_num;

//TODO 后续处理
// extern t_datafixval_cfg gst_fv_sb[]; /* 软压板 */
// extern const uint8_t guc_menu_fv_sb_num;

extern t_datafixval_cfg gst_fv_fs[]; /* 功能软压板 */
extern const uint8_t guc_menu_fv_fs_num;

extern t_datafixval_cfg gst_fv_yxsb[]; /* 运行软压板 */
extern const uint8_t guc_menu_fv_yxsb_num;

extern t_datafixval_cfg gst_fv_area[]; /* 定值区号 */
extern const uint8_t guc_menu_fv_area_num; 



/***** 函数对外声明 *****/

//** 设备参数 */
extern t_datafixval_cfg_total gst_dev_set_val[] ;
extern const uint8_t gst_dev_set_num; /* 设备参数数目 */

/**< 定值整定数据 */
extern t_datafixval_cfg_total gst_val[] ;
extern const uint8_t guc_menu_fv_num ; /* 总的定值数目 */

extern bool is_special_ip_addr(uint16_t addr);
extern void data_sys_update_from_system(uint8_t _uc_type, const SET_VALUE * _pt_val);
extern bool data_sys_check_diff(void);

#endif //_DATA_SYS_H