#include "data_home_page.h"
#include "data_telemet_common.h"
#include "head.h"
#include "bsp_type.h"
#include "MmiData.h"
#include "menu/Manu_str.h"

/* ====================================================================================================================
 * 文件名称: data_home_page.c
 * 文件职责: 首页数据层实现 - 封装首页所需原始数据的获取
 * 架构位置: Data层 (Model)
 * ==================================================================================================================== */

data_bool_t data_home_page_get_raw(HomePageRawData *data)
{
    if (data == NULL) 
    {
        return false;
    }

    /* 使用显式枚举替代裸值，根据bTT_ShowOne配置决定显示类型 */
    GET_TYPE type = pRunSet->bTT_ShowOne ? TYPE_MAINPAGE : TYPE_YCDISPLY_PRIMARY;

    /* 获取母线侧电压 (A相、B相、C相) */
    data->telemet[HP_TELEMET_UA].value = data_telemet_get_value(0, PUB_AC_UA1, type);
    data->telemet[HP_TELEMET_UA].valid = 1;
    
    data->telemet[HP_TELEMET_UB].value = data_telemet_get_value(0, PUB_AC_UB1, type);
    data->telemet[HP_TELEMET_UB].valid = 1;
    
    data->telemet[HP_TELEMET_UC].value = data_telemet_get_value(0, PUB_AC_UC1, type);
    data->telemet[HP_TELEMET_UC].valid = 1;

    /* 获取线路侧电压 (A相、B相、C相) */
    data->telemet[HP_TELEMET_UA2].value = data_telemet_get_value(0, PUB_AC_UA2, type);
    data->telemet[HP_TELEMET_UA2].valid = 1;
    
    data->telemet[HP_TELEMET_UB2].value = data_telemet_get_value(0, PUB_AC_UB2, type);
    data->telemet[HP_TELEMET_UB2].valid = 1;
    
    data->telemet[HP_TELEMET_UC2].value = data_telemet_get_value(0, PUB_AC_UC2, type);
    data->telemet[HP_TELEMET_UC2].valid = 1;

    /* 获取电流 (A相、B相、C相、零序) */
    data->telemet[HP_TELEMET_IA].value = data_telemet_get_value(1, SW_AC_IA, type);
    data->telemet[HP_TELEMET_IA].valid = 1;
    
    data->telemet[HP_TELEMET_IB].value = data_telemet_get_value(1, SW_AC_IB, type);
    data->telemet[HP_TELEMET_IB].valid = 1;
    
    data->telemet[HP_TELEMET_IC].value = data_telemet_get_value(1, SW_AC_IC, type);
    data->telemet[HP_TELEMET_IC].valid = 1;
    
    data->telemet[HP_TELEMET_I0].value = data_telemet_get_value(1, SW_AC_I0, type);
    data->telemet[HP_TELEMET_I0].valid = 1;

    /* 获取装置地址 */
    data->device_addr = 1;// pRunSet->addr;

    /* 状态标志位 */
    data->status_flags = 0;

    /* 获取设备类型 */
    E_FUN_MODE run_mode = Get_DTU_Runmode();
    strncpy(data->device_type, SYS_Subparset_manu[run_mode], HP_DEVICE_TYPE_MAX_LEN - 1);
    data->device_type[HP_DEVICE_TYPE_MAX_LEN - 1] = '\0';

    return true;
}

float data_home_page_get_telemet_raw(HomePageTelemetType type)
{
    HomePageRawData data;
    
    if (data_home_page_get_raw(&data))
    {
        if (type < HP_TELEMET_NUM)
        {
            return data.telemet[type].value;
        }
    }
    
    return 0.0f;
}

void data_home_page_init(void)
{
    /* 数据层初始化 - 目前无需特殊初始化 */
}
