
#ifndef CHARG_CONTROL_TYPES_
#define CHARG_CONTROL_TYPES_

#include "comm_types.h"

typedef enum _chargMode{
    noWork          = 0,    /* 未进行充电 */
    MPPT            = 1,    /* 最大功率充电 */
    constantVoltage = 2,    /* 恒压充电 */
    floatCharg      = 3,    /* 浮充充电 */
    noBattery       = 4,    /* 无电池 */
}chargMode;

typedef enum {
    mosTemperFull   = 0,    /* 满功率充电mos状态 */
    mosTemperReduce = 1,    /* 降功率充电mos状态 */
    mosTemperStop   = 2,    /* 停止充电mos状态 */
}mosTState;

/* 注册状态 */
typedef enum {
   UNREGISTER = 0,          /* 未注册 */
   REGISTER_FAIL = 1,       /* 注册失败 */
   REGISTER_SUCCESS = 2,    /* 注册成功 */
}SL_REGISTERSTATUS;

/* 接入节点类型 */
typedef enum {
   POWERBOX = 1,            /* 电源箱子 */
   MICROMETEOROLOGY = 2,    /* 微气象 */
}SL_ACCESSNODETYPE;

/* 通信方式 */
typedef enum {
    RS485 = 1,
    RJ45 = 2,
//    Lora = 3, //暂时未使用
}SL_COMMUNICATIONMETHODS;

/*  时间信息:年月日时分秒 */
typedef struct _timeInfo {
    uint8_t year;
    uint8_t month;
    uint8_t day;
    uint8_t hour;
    uint8_t minute;
    uint8_t second;
}timeInfo;

/* 方式 */
typedef enum {
    runLedChargMode = 1,    //充电模式
    runLedOtherMode = 2,    //其他模式
}runLedMode;

/* 顺序事件记录 */
typedef enum {
    firstStageProtection = 1,       //第一段保护，短路保护
    secondStageProtection ,         //第二段保护，介于过载和短路之间
    thirdStageProtection,           //第三段保护，过载保护
    lowInputLoad,                   //输入功率不足保护
    overTemperature,                //过温保护
    stopTemperature,                //停止温度保护
    overchargCurr,                  //充电电流过大保护
    overInputVolt,                  //太阳能输入电压过大保护
    hardwareShortCircuitProtection, //硬件短路保护
    hardwareInputProtection,        //硬件防反输入保护
    InputProtection,                //软件防反输入保护
    startEvent,                     //启动
    abnormalControl,                //异常控制
    underVoltageProtection,         //电池的欠压保护
}eventsOrderRecordMode;


#endif
