#ifndef _DATA_HOME_PAGE_H
#define _DATA_HOME_PAGE_H

#include <stdint.h>
//#include <stdbool.h>
#include "data_config.h"

#ifdef __cplusplus
extern "C" {
#endif

/* ====================================================================================================================
 * 文件名称: data_home_page.h
 * 文件职责: 首页数据层头文件 - 封装首页所需原始数据的获取，与UI完全解耦
 * 架构位置: Data层 (Model)
 * ==================================================================================================================== */

/* 首页遥测数据类型枚举 */
typedef enum {
    /* 母线侧电压 */
    HP_TELEMET_UA = 0,    /* A相电压（母线侧） */
    HP_TELEMET_UB,        /* B相电压（母线侧） */
    HP_TELEMET_UC,        /* C相电压（母线侧） */
    /* 线路侧电压 - 新增 */
    HP_TELEMET_UA2,       /* A相电压（线路侧） */
    HP_TELEMET_UB2,       /* B相电压（线路侧） */
    HP_TELEMET_UC2,       /* C相电压（线路侧） */
    /* 电流 */
    HP_TELEMET_IA,        /* A相电流 */
    HP_TELEMET_IB,        /* B相电流 */
    HP_TELEMET_IC,        /* C相电流 */
    HP_TELEMET_I0,        /* 零序电流 */
    HP_TELEMET_NUM        /* 遥测项总数 */
} HomePageTelemetType;

/* 首页遥测原始数据结构 */
typedef struct {
    float value;          /* 原始值 */
    uint8_t valid;        /* 有效标志 */
} HomePageTelemetRaw;

/* 设备类型最大长度 */
#define HP_DEVICE_TYPE_MAX_LEN  32

/* 首页数据总结构 */
typedef struct {
    HomePageTelemetRaw telemet[HP_TELEMET_NUM];  /* 遥测数据 */
    uint8_t device_addr;                          /* 装置地址 */
    uint32_t status_flags;                        /* 状态标志位 */
    char device_type[HP_DEVICE_TYPE_MAX_LEN];     /* 设备类型字符串 */
} HomePageRawData;

/**
 * @brief  获取首页原始数据
 * @param  data  输出参数，存储获取到的原始数据
 * @return true-成功, false-失败
 */
data_bool_t data_home_page_get_raw(HomePageRawData *data);

/**
 * @brief  获取单项遥测原始值
 * @param  type  遥测类型
 * @return 原始值
 */
float data_home_page_get_telemet_raw(HomePageTelemetType type);

/**
 * @brief  数据层初始化
 */
void data_home_page_init(void);

#ifdef __cplusplus
}
#endif

#endif /* _DATA_HOME_PAGE_H */
