/*
 * Config.h
 *
 *  Created on: 2019年4月23日
 *      Author: foluswen
 */
#ifndef CONFIG_H_
#define CONFIG_H_

typedef unsigned char           byte;

#define TOTAL_QUANTITY_GUN          4   //Max Count

#define MODE_BOOT                   0
#define MODE_IDLE                   1
#define MODE_AUTHORIZING            2
#define MODE_REASSIGN_CHECK         3
#define MODE_REASSIGN               4
#define MODE_PRECHARGE              5
#define MODE_PREPARE_FOR_EV         6
#define MODE_PREPARE_FOR_EVSE       7
#define MODE_CHARGING               8
#define MODE_TERMINATING            9
#define MODE_COMPLETE               10
#define MODE_ALARM                  11
#define MODE_FAULT                  12
#define MODE_RESERVATION            13
#define MODE_BOOKING                14
#define MODE_MAINTAIN               15
#define MODE_DEBUG                  16
#define MODE_CCS_PRECHARGE_STEP0    17  // ready for ccs precharge processing, For D+ relay to precharge relay
#define MODE_CCS_PRECHARGE_STEP1    18  // waitting for ev board inform to enter to charging, For precharge relay to D+ relay
#define MODE_UPDATE                 19

#define GFD_WAIT                    0
#define GFD_PASS                    1
#define GFD_FAIL                    2
#define GFD_WARNING                 3

#define PRECHARGE_WAIT              0
#define PRECHARGE_READY             1
#define PRECHARGE_PRERELAY_PASS     2
#define PRECHARGE_CHARELAY_PASS     3

#define BOOTTING                    0
#define BOOT_COMPLETE               1

enum _SYSTEM_STATUS
{
    S_BOOTING                           = 0,
    S_IDLE                              = 1,
    S_AUTHORIZING                       = 2,
    S_REASSIGN_CHECK                    = 3,
    S_REASSIGN                          = 4,
    S_PREPARNING                        = 5,
    S_PREPARING_FOR_EV                  = 6,
    S_PREPARING_FOR_EVSE                = 7,
    S_CHARGING                          = 8,
    S_TERMINATING                       = 9,
    S_COMPLETE                          = 10,
    S_ALARM                             = 11,
    S_FAULT                             = 12,
    S_RESERVATION                       = 13,
    S_BOOKING                           = 14,
    S_MAINTAIN                          = 15,
    S_DEBUG                             = 16,
    S_CCS_PRECHARGE_ST0                 = 17,
    S_CCS_PRECHARGE_ST1                 = 18,
    S_UPDATE                            = 19,
    S_NONE                              = 20,
};

enum _AC_SYSTEM_STATUS
{
    AC_SYS_NONE                         = 0,
    AC_SYS_A                            = 1,
    AC_SYS_B                            = 2,
    AC_SYS_C                            = 3,
    AC_SYS_D                            = 4,
    AC_SYS_E                            = 5,
};

enum _GUN_TYPE
{
    _Type_Chademo                       = 0,
    _Type_CCS_2                         = 1,
    _Type_GB                            = 2,
    _Type_AC                            = 3,
};

enum _LCM_INDEX
{
    _LCM_INIT                           = 0x00,
    _LCM_IDLE                           = 0x01,
    _LCM_AUTHORIZING                    = 0x02,
    _LCM_AUTHORIZ_COMP                  = 0x03,
    _LCM_AUTHORIZ_FAIL                  = 0x04,
    _LCM_WAIT_FOR_PLUG                  = 0x05,
    _LCM_PRE_CHARGE                     = 0x06,
    _LCM_CHARGING                       = 0x07,
    _LCM_COMPLETE                       = 0x08,
    _LCM_FIX                            = 0x09,
    _LCM_NONE                           = 0xFF,
};

enum _SELF_TEST_SEQ
{
    _STEST_VERSION                      = 0x00,
    _STEST_AC_CONTACTOR                 = 0x01,
    _STEST_PSU_DETECT                   = 0x02,
    _STEST_PSU_CAP                      = 0x03,
    _STEST_FAIL                         = 0x04,
    _STEST_COMPLETE                     = 0xEE,
};

enum _MODULE_PSU_WORK_STEP
{
    INITIAL_START                       = 0,
    GET_PSU_COUNT                       = 1,
    GET_SYS_CAP                         = 2,
    BOOTING_COMPLETE                    = 3,

    _WORK_CHARGING                      = 10,

    _TEST_MODE                          = 20,

    _NO_WORKING                         = 254,
    _INIT_PSU_STATUS                    = 255,
};

enum _OFFLINE_POLICY
{
    _OFFLINE_POLICY_LOCAL_LIST          = 0x00,
    _OFFLINE_POLICY_PHIHONG_RFID_TAG    = 0x01,
    _OFFLINE_POLICY_FREE_CHARGING       = 0x02,
    _OFFLINE_POLICY_NO_CHARGING         = 0x03,
};

enum _REASSIGNED_RESOURCE_STEP
{
    _REASSIGNED_NONE                    = 0,  //
    _REASSIGNED_PREPARE_M_TO_A          = 1,  // 系統收到需要降載需求 (輸出總電流降低),PSU Task 收到將狀態切換至下個狀態
    _REASSIGNED_GET_NEW_CAP             = 2,  // 充電中的重新取得屬於自己火線上的總能量並透過小板通知車端 - 超過10秒直接跳下一步
    _REASSIGNED_ADJUST_M_TO_A           = 3,  // 模塊重新分配完成
    _REASSIGNED_RELAY_M_TO_A            = 4,  // 切斷橋接的 Relay

    _REASSIGNED_PREPARE_A_TO_M          = 11,
    _REASSIGNED_ADJUST_A_TO_M           = 12, // 模塊升壓
    _REASSIGNED_RELAY_A_TO_M            = 13, // 搭接橋接的 Relay
    _REASSIGNED_WAITING                 = 14,
    _REASSIGNED_COMP                    = 15,
};

enum _MAIN_CHARGING_MODE
{
    _MAIN_CHARGING_MODE_MAX             = 0,
    _MAIN_CHARGING_MODE_AVER            = 1,
};

enum _EXTRA_ERR_PROCESS
{
    _EXTRA_ERR_PROCESS_NONE             = 0,
    _EXTRA_ERR_PROCESS_INUVP            = 1,
    _EXTRA_ERR_PROCESS_INOVP            = 2,
};

enum _CHARGER_TYPE
{
    _CHARGER_TYPE_IEC                   = 0,
    _CHARGER_TYPE_UL                    = 1,
};

enum _SYS_WIFI_MODE
{
    _SYS_WIFI_MODE_DISABLE              = 0,
    _SYS_WIFI_MODE_STATION              = 1,
    _SYS_WIFI_MODE_AP                   = 2,
    _SYS_WIFI_MODE_ADHOC                = 3,
};

enum _LED_INTENSITY_LV
{
    _LED_INTENSITY_DARKEST              = 0,
    _LED_INTENSITY_MEDIUM               = 1,
    _LED_INTENSITY_BRIGHTEST            = 2,
};

enum _CCS_COMM_PROTOCOL
{
    _CCS_COMM_V2GMessage_DIN70121       = 0x01,
    _CCS_COMM_V2GMessage_ISO15118_2014  = 0x02,
    _CCS_COMM_V2GMessage_ISO15118_2018  = 0x03,
};

enum _ETHERNET_USAGE
{
    _ETHERNET_USAGE_NONE                = 0,
    _ETHERNET_USAGE_LAN                 = 1,
    _ETHERNET_USAGE_WIFI                = 2,
    _ETHERNET_USAGE_3G_4g               = 3,
};
#endif /* CONFIG_H_ */