/*
* @fileName ems_activition.h
* @author gaoyang
* @date 2025-07-09 15:17
* @description 
*/
#ifndef _EMS_OPERATION_H
#define _EMS_OPERATION_H

#include <stdatomic.h>
#include <stdbool.h>
#include <time.h>
#include <stdatomic.h>

typedef struct ems_activition_record_s
{
    time_t      last_save_time;
    time_t      grid_online_time;
    time_t      grid_last_online_time;
    time_t      power_on_time;
    time_t      power_last_on_time;
    time_t      activition_time;
    atomic_bool is_activition;
    bool        is_report;
} ems_activition_record_t;

#define EMS_OPERATION_RECORD_FILE "/app/temp/ems_activition_record.json"
#define EMS_OPERATION_SAVE_INTERVAL (60)

#define EMS_OPERATION_GRID_ONLINE_TIME (7 * 86400)
#define EMS_OPERATION_OFFLINE_TIME (60 * 60)


#define EMS_OPERATION_POWER_ON_TIME (30 * 86400)
#define EMS_OPERATION_POWER_OFF_TIME (300)

int init_activition_record(void);
int ua_set_activition(char* result);
int read_activition_time(char* name, void *value_v);
int ems_activition_set_time(time_t t, int type);

ems_activition_record_t* ems_activition_get_record();
#endif
