/**
 * @file    iec104_cfg.h
 * @brief   IEC-104 点表配置解析 — 声明
 */
#ifndef _IEC104_CFG_H_
#define _IEC104_CFG_H_

#include "myBase.h"

#include <string>
#include <vector>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief IEC 点表信号配置条目
 * @field link    数据中心信号路径 (如 "self_ptl.st.1")
 * @field desc    信号描述
 * @field inf     IEC 信息体地址 (IOA)
 * @field type    数据类型 (DATA_TYPE_U8/F32...)
 * @field invert  遥信取反标志 (0/1)
 * @field factor  遥测系数
 * @field offset  遥测偏移
 * @field p_data  指向数据中心的实时数据指针
 */
typedef struct
{
	std::string link;
	std::string desc;
	uint16_t    inf;
	uint8_t     type;
	uint8_t     invert;
	float       factor;
	float       offset;
	void       *p_data;
} stru_iec_sig;

/** IEC 点表完整配置 — 6 类信号 */
typedef struct
{
	std::vector<stru_iec_sig> vec_st;     /**< 遥信 */
	std::vector<stru_iec_sig> vec_mx;     /**< 遥测 */
	std::vector<stru_iec_sig> vec_co;     /**< 遥控 */
	std::vector<stru_iec_sig> vec_dd;     /**< 电度 */
	std::vector<stru_iec_sig> vec_ao;     /**< 参数 */
	std::vector<stru_iec_sig> vec_param;  /**< 定值 */
} stru_iec_cfg;

stru_iec_cfg *iec_cfg_ptr_get(void);
int           iec_cfg_parse(const char *xml_path);

#ifdef __cplusplus
}
#endif

#endif /* _IEC104_CFG_H_ */
