#ifndef MODULE_LCM_CTRL_H_
#define MODULE_LCM_CTRL_H_
#include <stdint.h>
#include <stdbool.h>
#include "../Define/define.h"

//------------------------------------------------------------------------------
#define PREAUTHMONEY						2000
#define RETURNIDLE_Timeout					60
#define DEFAULT_AC_INDEX                        (2)

#define TIME_MAX_SEC                            (2592000) // 一個月,秒數
#define POWER_MAX_KW                            (5000)
#define ENERGY_MAX_KWH                          (5000)

#define CMD_TITLE_1                             (0x5A)
#define CMD_TITLE_2                             (0xA5)
#define CMD_READ                                (0x80)
#define CMD_WRITE                               (0x81)
#define CMD_MULTI_WRITE                         (0x82)
#define CMD_MULTI_READ                          (0x83)

#define CMD_BACKLIGHT                           (0x01)
#define CMD_REGISTER                            (0x03)

#define CMD_HEADER_1                        0x5A
#define CMD_HEADER_2                        0xA5
#define CMD_REG_WRITE                       0x80
#define CMD_REG_READ                        0x81
#define CMD_REG_WRITE_DATA                  0x82
#define CMD_REG_READ_DATA                   0x83

#define REG_ADDRESS_READ_VERSION            0x0F
#define REG_ADDRESS_READ_RTC                0x10
#define REG_ADDRESS_READ_PAGE_ID            0x14
#define REG_ADDRESS_READ_BRIGHTNESS         0x31
#define REG_ADDRESS_WRITE_BRIGHTNESS        0X82
#define REG_ADDRESS_SET_PAGE_ID             0x84
#define REG_ADDRESS_SET_RTC                 0x9C
#define REG_TYPE_CONTROL                    0x00
#define REG_TYPE_RAM                        0x01
#define REG_TYPE_SPECIAL_CONTROL            0x02

#define _CHANGE_REMOTESTART     0x01
#define _CHANGE_REFUNDING       0x02
#define _CHANGE_REFUNDAMOUNT    0x03
#define _CHANGE_NOREFUND        0x04
#define _CHANGE_PREPAYMENTINFO  0x05
#define _CHANGE_PAYMENT_OK      0x06
#define _CHANGE_PAYMENT_FAIL    0x07


#define _Animation				0x1000
#define _Icon_TouchStart		0x1002
#define _Icon_Location			0x1004
#define _Icon_Week				0x1006
#define _Icon_Weather			0x1008
#define _Icon_Welcom_Ad			0x100A
#define _Icon_Select_Left		0x100C
#define _Icon_Select_Right		0x100E
#define _Icon_NHOA				0x1010
#define _Icon_Return			0x1012
#define _Icon_Donate			0x1014
#define _Icon_Add_Line			0x1016
#define _Icon_ShowLeft			0x1018
#define _Icon_ShowRight			0x101A
#define _Icon_ScanComplete		0x101C
#define _Icon_WordYes			0x101E
#define _Icon_WordNo			0x1020
#define _Icon_WordAddFriend		0x1022
#define _Icon_PayFrame			0x1024
#define _Icon_SenseRadio		0x1026
#define _Icon_MobilePay			0x1028
#define _Icon_CardPay			0x102A
#define _Icon_CreditCardFrame	0x102C
#define _Icon_PreAuth			0x102E
#define _Icon_Ani_Dot			0x1030
#define _Icon_PreAuth_Complete	0x1032
#define _Icon_Precharge			0x1034
#define _Icon_ChargeFrame		0x1036
#define _Icon_WordKW			0x1038
#define _Icon_ChargeCircle		0x103A
#define _Icon_ChargeBar			0x103C
#define _Icon_Paying			0x103E
#define _Icon_CompleteFrame		0x1040
#define _Icon_CompleteCircle	0x1042
#define _Icon_ExitAd			0x1044
#define _Icon_ExitBar			0x1046
#define _Icon_ExitWord			0x1048
#define _Icon_PlugoutFrame		0x104A
#define _Icon_PreAuthFail		0x104C
#define _Icon_ReWork			0x1050
#define _Icon_FixFrame			0x1052
#define _Icon_Warming0			0x1054
#define _Icon_Warming1			0x1056
#define _Icon_Warming2			0x1058
#define _Icon_Warming3			0x105A
#define _Icon_Warming4			0x105C
#define _Icon_StopCharge		0x105E
#define _Icon_CountDownBG		0x1060
#define _Icon_CancelCntDownTen	0x1062
#define _Icon_CancelCntDownDigits	0x1064
#define _Icon_ScanCntDownTen    0x1066
#define _Icon_ScanCntDownDigits 0x1068
#define _Icon_AuthCntDownTen    0x106A
#define _Icon_AuthCntDownDigits 0x106C
#define _Icon_Uploading         0x1070
#define _Icon_DAKAWelcome       0x1072
#define _Icon_PreAuthWord       0x1074
#define _Icon_ParkingInfo		0x1076
#define _Icon_ParkingLeave		0x1078
#define _Icon_CompleteBtn		0x107A
#define _Icon_ParkingCntDw_BG	0x107C
#define _Icon_ParkingCntDw_Tens	0x107E
#define _Icon_ParkingCntDw_Digits	0x1080
#define _Icon_ScanCntDw_BG		0x1082
#define _Icon_ParkingCntDw_Hun  0x1084

#define _String_Date			0x3000
#define _String_Tempture		0x3010
#define _QRCode_AddLine			0x3020
#define _String_ChargeRate		0x3030
#define _String_ChargeTime		0x3040
#define _String_ChargePower		0x3050
#define _String_Battery			0x3060
#define _Strting_Energy			0x3070
#define _String_Money			0x3080
#define _String_ParkRate		0x3090
#define _String_Carbon			0x30A0
#define _QRCode_Service			0x30B0
#define _String_ParkingStartTime 0x30C0
#define _String_ParkingDuration	0x30D0
#define _String_ParkingFee		0x30E0
#define _String_ParkingLeaveTime	0x30F0
#define _String_SaleLeaveTime	0x3100

#define _Touch_IDLE				0x1500
#define _Touch_Select_Left		0x1502
#define _Touch_Select_Right		0x1504
#define _Touch_Show_Left		0x1506
#define _Touch_Show_Right		0x1508
#define _Touch_Return			0x150A
#define _Touch_DonateBill		0x150C
#define _Touch_DonateYes		0x150E
#define _Touch_DonateNo			0x1510
#define _Touch_StopCharge		0x1512
#define _Touch_Stop_Confirm		0x1514
#define _Touch_Stop_Cancel		0x1516
#define _Touch_Pay_CreditCard	0x1518
#define _Touch_Pay_LinePay		0x151A
#define _Touch_Parking_Complete	0x151C

enum _TCC_ICON_LIST_ {
	_ICON_Empty 			= 0,
	_TCC_Week_Monday,
	_TCC_Week_Tuesday,
	_TCC_Week_Wensday,
	_TCC_Week_Thrusday,
	_TCC_Week_Friday,
	_TCC_Week_Saturday,
	_TCC_Week_Sunday,
	_TCC_TouchStart,
	_TCC_Sun,
	_TCC_Cloudy,
	_TCC_Rain,
	_TCC_Snow,
	_TCC_Thunder,
	_TCC_Fog,
	_TCC_Taipei_ZhongShan,
	_TCC_Scan_CntDw_BG,
	_TCC_Welcom_Coffee,
	_TCC_SelectLeft_CCS1,
	_TCC_SelectLeft_CCS2,
	_TCC_SelectLeft_CHAdeMo,
	_TCC_SelectRight_CCS1,
	_TCC_SelectRight_CCS2,
	_TCC_SelectRight_CHAdeMo,
	_TCC_Return,
	_TCC_DonateBill,
	_TCC_GetBill,
	_TCC_ShowLeft_CCS1_Off,
	_TCC_ShowLeft_CCS2_Off,
	_TCC_ShowLeft_CHAdeMo_Off,
	_TCC_ShowLeft_CCS1_On,
	_TCC_ShowLeft_CCS2_On,
	_TCC_ShowLeft_CHAdeMo_On,
	_TCC_ShowRight_CCS1_Off,
	_TCC_ShowRight_CCS2_Off,
	_TCC_ShowRight_CHAdeMo_Off,
	_TCC_ShowRight_CCS1_On,
	_TCC_ShowRight_CCS2_On,
	_TCC_ShowRight_CHAdeMo_On,
	_TCC_ScanQR_Pass,
	_TCC_SelectPayMode,
	_TCC_CreditCard_Wifi,
	_TCC_CreditCard_Frame,
	_TCC_PreAuthWord,
	_TCC_LinePay,
	_TCC_CardSensing_Frame,
	_TCC_PreAuth,
	_TCC_Dot_0,
	_TCC_PaySuccess 		= 62,
	_TCC_Plugin,
	_TCC_ChargingFrame,
	_TCC_StopCharging,
	_TCC_String_KW,
	_TCC_Charging_Circle0,
	_TCC_Charging_Bar0     	= 104,
	_TCC_NHOA 				= 204,
	_TCC_WordYes			= 206,
	_TCC_WordNo,
	_TCC_Paying,
	_TCC_CompleteFrame,
	_TCC_CompleteCircle0,
	_TCC_EnjoyLife   		= 247,
	_TCC_BlackBar,
	_TCC_ExitAd,
	_TCC_PayFail,
	_TCC_Restart,
	_TCC_PlugOutFrame,
	_TCC_ErrorFrame,
	_TCC_Warming,
	_TCC_FAILCircle0,
	_TCC_ShowLeftGunCharging_CCS1 = 292,
	_TCC_ShowLeftGunCharging_CCS2,
	_TCC_ShowLeftGunCharging_CHAdeMo,
	_TCC_ShowRightGunCharging_CCS1,
	_TCC_ShowRightGunCharging_CCS2,
	_TCC_ShowRightGunCharging_CHAdeMo,
	_TCC_ReturnFrontPage,
	_TCC_CancelNum_0,
	_TCC_TradeCancelString = 309,
	_TCC_TradeCancelFrame,
	_TCC_SecondSense,
	_TCC_CntDownNumber0,
	_TCC_Uploading = 323,
	_TCC_IDLE_LEFT_CCS1,
	_TCC_IDLE_LEFT_CCS2,
	_TCC_IDLE_LEFT_CHAdeMo,
	_TCC_IDLE_RIGHT_CCS1,
	_TCC_IDLE_RIGHT_CCS2,
	_TCC_IDLE_RIGHT_CHAdeMo,
	_TCC_ShowLeftGunReservation_CCS1,
	_TCC_ShowLeftGunReservation_CCS2,
	_TCC_ShowLeftGunReservation_CHAdeMo,
	_TCC_ShowRightGunReservation_CCS1,
	_TCC_ShowRightGunReservation_CCS2,
	_TCC_ShowRightGunReservation_CHAdeMo,
	_TCC_LeftParkingIdle,
	_TCC_RightParkingIdle,
	_TCC_LeftParkingSel,
	_TCC_RightParkingSel,
	_TCC_ParkingInfo,
	_TCC_ParkingLine,
	_TCC_ParkingDonate,
	_TCC_ParkingFee,
	_TCC_ParkingLeave,
	_TCC_NoParkingComplete,
	_TCC_ParkingComplete,
	_TCC_LinePaying,
	_TCC_ParkingCntDown_BG,
	_TCC_ParkingCD_0,
	_TCC_ParkingCD_1,
	_TCC_ParkingCD_2,
	_TCC_ParkingCD_3,
	_TCC_ParkingCD_4,
	_TCC_ParkingCD_5,
	_TCC_ParkingCD_6,
	_TCC_ParkingCD_7,
	_TCC_ParkingCD_8,
	_TCC_ParkingCD_9,
	_TCC_WaitParkInfo,
	_TCC_ParkingCntDown_BG3,
	_TCC_ICON_SelectChargeMode,
	_TCC_ICON_SelectPayMode,
};


/* Show Version */

#define _Version_Cabient_Name_Text          0x0500
#define _Version_Cabient_BootLoader_Text    0x0510
#define _Version_Cabient_Kernel_Text        0x0520
#define _Version_Cabient_CSU_Text           0x0530
#define _Version_Cabient_Priamry_Text       0x0540
#define _Version_Cabient_Relay0_Text        0x0550
#define _Version_Cabient_Relay1_Text        0x0560
#define _Version_Cabient_Fan_Text           0x0570
#define _Version_Cabient_IPAddr_Text        0x0580
#define _Version_Cabient_PSU1_Text          0x0590
#define _Version_Cabient_PSU2_Text          0x05A0
#define _Version_Cabient_PSU3_Text          0x05B0
#define _Version_Cabient_PSU4_Text          0x05C0
#define _Version_Cabient_PSU5_Text          0x05D0
#define _Version_Cabient_PSU6_Text          0x05E0
#define _Version_Cabient_PSU7_Text          0x05F0
#define _Version_Cabient_PSU8_Text          0x0600
#define _Version_Cabient_PSU9_Text          0x0610
#define _Version_Cabient_PSU10_Text         0x0620
#define _Version_Cabient_PSU11_Text         0x0630
#define _Version_Cabient_PSU12_Text         0x0640

#define _Version_Cabient_Primary_Text       0x0920
#define _Version_Cabient_Secondary_Text     0x0930

#define _Version_Cabient_Model_value        0x0650
#define _Version_Cabient_BootLoader_value   0x0660
#define _Version_Cabient_Kernel_value       0x0670
#define _Version_Cabient_CSU_value          0x0680
#define _Version_Cabient_Priamry_value      0x0690
#define _Version_Cabient_Relay0_value       0x06A0
#define _Version_Cabient_Relay1_value       0x06B0
#define _Version_Cabient_Fan_value          0x06C0
#define _Version_Cabient_IPAddr_value       0x06D0
#define _Version_Cabient_PSU_Prim1_value    0x06E0
#define _Version_Cabient_PSU_Prim2_value    0x06F0
#define _Version_Cabient_PSU_Prim3_value    0x0700
#define _Version_Cabient_PSU_Prim4_value    0x0710
#define _Version_Cabient_PSU_Prim5_value    0x0720
#define _Version_Cabient_PSU_Prim6_value    0x0730
#define _Version_Cabient_PSU_Sec1_value     0x0740
#define _Version_Cabient_PSU_Sec2_value     0x0750
#define _Version_Cabient_PSU_Sec3_value     0x0760
#define _Version_Cabient_PSU_Sec4_value     0x0770
#define _Version_Cabient_PSU_Sec5_value     0x0780
#define _Version_Cabient_PSU_Sec6_value     0x0790

#define _Version_Cabient_PSU_Prim7_value    0x09E0
#define _Version_Cabient_PSU_Prim8_value    0x09F0
#define _Version_Cabient_PSU_Prim9_value    0x1000
#define _Version_Cabient_PSU_Prim10_value   0x1010
#define _Version_Cabient_PSU_Prim11_value   0x1020
#define _Version_Cabient_PSU_Prim12_value   0x1030
#define _Version_Cabient_PSU_Sec7_value     0x1040
#define _Version_Cabient_PSU_Sec8_value     0x1050
#define _Version_Cabient_PSU_Sec9_value     0x1060
#define _Version_Cabient_PSU_Sec10_value    0x1070
#define _Version_Cabient_PSU_Sec11_value    0x1080
#define _Version_Cabient_PSU_Sec12_value    0x1090

#define _Version_Dispenser_Name_Text        0x07A0
#define _Version_Dispenser_BootLoader_Text  0x07B0
#define _Version_Dispenser_Kernel_Text      0x07C0
#define _Version_Dispenser_CSU_Text         0x07D0
#define _Version_Dispenser_Relay_Text       0x07E0
#define _Version_Dispenser_Fan_Text         0x07F0
#define _Version_Dispenser_Priamry_Text     0x0800
#define _Version_Dispenser_LCM_Text         0x0810
#define _Version_Dispenser_LED_Text         0x0820
#define _Version_Dispenser_Connector0_Text  0x0830
#define _Version_Dispenser_Connector1_Text  0x0840
#define _Version_Dispenser_IPAddr_Text      0x0850

#define _Version_Dispenser_Model_value      0x0860
#define _Version_Dispenser_BootLoader_value 0x0870
#define _Version_Dispenser_Kernel_value     0x0880
#define _Version_Dispenser_CSU_value        0x0890
#define _Version_Dispenser_Relay_value      0x08A0
#define _Version_Dispenser_Fan_value        0x08B0
#define _Version_Dispenser_Priamry_value    0x08C0
#define _Version_Dispenser_LCM_value        0x08D0
#define _Version_Dispenser_LED_value        0x08E0
#define _Version_Dispenser_Connector0_value 0x08F0
#define _Version_Dispenser_Connector1_value 0x0900
#define _Version_Dispenser_IPAddr_value     0x0910

#endif //MODULE_LCM_CTRL_H_