#ifndef __EMS_CTRL_PROC_H__
#define __EMS_CTRL_PROC_H__
#include "collector-api.h"

typedef enum main_state_e{
    E_MAIN_STATE_INIT,
    E_MAIN_STATE_FAULT,
    E_MAIN_STATE_IDLE,
    E_MAIN_STATE_OFF,
    E_MAIN_STATE_CHANGE,
    E_MAIN_STATE_DISCHANGE,
    E_MAIN_STATE_ANY,
    E_MAIN_STATE_MAX,
} E_MAIN_STATE;


#define stastring(i) (state_string[i])

typedef struct 
{
    // int ProhibiteCha;
    // int ProhibiteDisc;
    // int SysStoped;
} emsctrl_proc_t;

typedef struct cab_info // 子柜
{
    int cfg_sum;       // 配置了多少个子柜
    int valid_sum;     // 可用柜子的总数
    double exp_powert;   // 总期望有功功率
    double exp_repowert; // 总期望无功功率
    struct
    {
        int status;//0:正常,1:保护
        time_t start_0_power_time;
        double exp_powert;
        double exp_repowert;
    } cab[MAX_RACK_SUM_SUPPORT];
} cab_info_t;

void set_total_pcs_onoff(int val);
void set_total_pcs_onoff_reflush_time(int val);
int update_cab_info();
void update_total_energy(void);
void set_total_pv_power(double val);
void set_total_pcs_mode(int val);
void set_total_pcs_connect(int val);

void set_lc_power(double power, double repower);
void check_lc_process(void *obj);
void emsctrl_proc_init(pcs_ctrl_var_t *var);
void check_lc_and_set(double power, double repower);
void all_plan_init();
extern int clean_prohibite_chag_and_dischag(int cur_rack_sum);
// void check_peflux_power(void);
// void check_limit_power(void);
double get_cur_power(void);
double get_lc_power(void);
double get_lc_repower(void);
void check_aircond_startstop(float powernow);
void update_total_power_sync(void);
int check_DD_mode_pcs_autp_turn_off();
#endif
