#ifndef __INCOME_H__
#define __INCOMDE_H__

typedef struct ele_price
{
    double top;
    double peak;
    double flat;
    double valley;
} ele_price;

typedef struct ele_energy
{
    double top;
    double peak;
    double flat;
    double valley;
    double total;
} ele_energy;

typedef struct month_price
{
    int valid;
    ele_price price;
} month_price;

typedef struct income_meter
{
    const char *dev_no;
    // 正向
    const char *act_top_tag;
    const char *act_peak_tag;
    const char *act_flat_tag;
    const char *act_valley_tag;
    const char *act_total_tag;
    // 反向
    const char *rev_top_tag;
    const char *rev_peak_tag;
    const char *rev_flat_tag;
    const char *rev_valley_tag;
    const char *rev_total_tag;
} income_meter;

typedef struct energy
{
    int time_day;
    ele_energy active_energy;   // 记录今天0点时刻的正向电量
    ele_energy reactive_energy; // 记录今天0点时刻的反向电量
    ele_energy active_diff;     // 记录今天正向电量
    ele_energy reactive_diff;   // 记录今天反向电量
} energy;

typedef struct income_host
{
    const char *dev_no;         // 计算收益的设备号
    const char *income_tag;     // ua展示的收益tag
    const char *efficiency_tag; // ua展示效率tag
    int meter_support;          // 电表是否支持阶梯计费
    income_meter meter;         // 电表,主要是电表的tag
    energy today_energy;        // 记录今天电量
    double chgFee;              // 充电费用
    double dischgFee;           // 放电费用
    double profit;              // 今天的利润
    month_price price[12];      // 12个月的电价

} income_host;

int ele_price_init_by_local(income_host *h, const char *cfg_name);
int ele_price_init_by_remote(income_host *h, const char *cfg_json_str);
int income_check_meter(income_host *h);
int income_update(income_host *h);

#endif
