/*
 * 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 DEBUG						1

#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_SINGLE_RUN				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,
	S_AUTHORIZING,
	S_REASSIGN_CHECK,
	S_REASSIGN,
	S_PREPARNING,
	S_PREPARING_FOR_EV,
	S_PREPARING_FOR_EVSE,
    S_CHARGING,
	S_TERMINATING,
	S_COMPLETE,
	S_ALARM,
	S_FAULT,
	S_RESERVATION,
	S_BOOKING,
	S_MAINTAIN,
	S_DEBUG,
	S_CCS_PRECHARGE_ST0,
	S_CCS_PRECHARGE_ST1,
	S_SINGLE_RUN,
	S_NONE,
};

enum _GUN_TYPE
{
	_Type_Chademo = 		0,
	_Type_CCS_2,
	_Type_GB,
};

enum _LCM_INDEX
{
	_LCM_INIT = 			0x00,
	_LCM_IDLE = 			0x01,
	_LCM_AUTHORIZING = 		0x04,
	_LCM_AUTHORIZ_COMP = 	0x05,
	_LCM_AUTHORIZ_FAIL = 	0x06,
	_LCM_WAIT_FOR_PLUG = 	0x07,
	_LCM_PRE_CHARGE = 		0x08,
	_LCM_CHARGING = 		0x09,
	_LCM_COMPLETE = 		0x0A,
	_LCM_FIX = 				0x0B,
	_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,

	_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 _SYS_AUTHORIZE_MODE
{
	_SYS_AUTHORIZE_OCPP = 0x00,
	_SYS_AUTHORIZE_FREE = 0x01
};

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
};

#endif /* CONFIG_H_ */