Browse Source

2021-04-07 / Eason Yang
Action
1. Added : isLcdOn flag
2. Added : resultAuthorization flag
3. Added : enum RFID_AUTHORIZATION_STATUS
4. Added : Logic for power saving
5. Fixed : initial InfoEvent.bits for Internet / wifi / 4g by model
6. Added : Authorization result for LCM

File
1. main
action 4 ,5 and 6
2. main.h
action 1 ,2 and 3

Version : D0.48.XX.XXXX.XX

8009 4 years ago
parent
commit
736bddd788

File diff suppressed because it is too large
+ 626 - 168
EVSE/Projects/AW-CCS/Apps/LCM/Module_LcmControl.c


+ 18 - 17
EVSE/Projects/AW-CCS/Apps/LCM/lcmComm_dgus.c

@@ -2,7 +2,7 @@
  * lcmComm_dgus.c
  *
  * Created on : 2020-10-20
- * Update on : XXXX-XX-XX
+ * Update on : 2021-02-20
  * Author : Folus Wen, Eason Yang
  * Version : D0.01
  *
@@ -12,10 +12,9 @@
 
 //#define isDebugPrint
 
-
-//================================
+//=======================================
 // Basic routine
-//================================
+//=======================================
 void displayMessageDgus(uint8_t *data, uint16_t len, uint8_t isRX)
 {
 	uint8_t output[8192];
@@ -27,14 +26,14 @@ void displayMessageDgus(uint8_t *data, uint16_t len, uint8_t isRX)
 		sprintf((char*)output, "%s%02x ", output, data[idx]);
 	}
 
-	#ifndef isDebugPrint
-	//DEBUG_INFO("%s\n", output);
+	#ifdef isDebugPrint
+	DEBUG_INFO("%s\n", output);
 	#endif
 }
 
-//========================================
+//=======================================
 // Call function (Transmit message into LCD)
-//========================================
+//=======================================
 int transceiverDgus(int32_t fd, uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint16_t rx_len)
 {
 	int result = FAIL;
@@ -42,10 +41,12 @@ int transceiverDgus(int32_t fd, uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint1
 
 	tcflush(fd,TCIOFLUSH);
 
-	#ifndef isDebugPrint
-	//displayMessageDgus(tx, tx_len, NO);
+	#ifdef isDebugPrint
+	displayMessageDgus(tx, tx_len, NO);
 	#endif
 
+	usleep(10000);
+
 	if(write(fd, tx, tx_len) >= ARRAY_SIZE(tx))
 	{
 		if(tx[3] == CMD_REG_WRITE_DATA)
@@ -61,9 +62,9 @@ int transceiverDgus(int32_t fd, uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint1
 				{
 					if(rx[3] == CMD_REG_READ_DATA)
 					{
-						#ifndef isDebugPrint
-						//displayMessageDgus(rx, len, YES);
-						#endif
+
+						displayMessageDgus(rx, len, YES);
+
 
 						result = PASS;
 					}
@@ -85,9 +86,9 @@ int transceiverDgus(int32_t fd, uint8_t *tx, uint16_t tx_len, uint8_t *rx, uint1
 	return result;
 }
 
-//========================================
+//=======================================
 // Call function (Write register value function)
-//========================================
+//=======================================
 int8_t lcdRegisterWrite(int32_t fd, uint8_t regType, uint16_t address, uint8_t *data, uint16_t dataLen)
 {
 	int8_t result = FAIL;
@@ -134,9 +135,9 @@ int8_t lcdRegisterWrite(int32_t fd, uint8_t regType, uint16_t address, uint8_t *
 	return result;
 }
 
-//========================================
+//=======================================
 // Call function (Read register value function)
-//========================================
+//=======================================
 int8_t lcdRegisterRead(int32_t fd, uint8_t regType, uint16_t address, uint8_t *data, uint16_t dataLen)
 {
 	int8_t result = FAIL;

+ 43 - 16
EVSE/Projects/AW-CCS/Apps/LCM/lcmComm_dgus.h

@@ -2,7 +2,7 @@
  * lcmComm_dwin.h
  *
  * Created on : 2020-10-20
- * Update on : XXXX-XX-XX
+ * Update on : 2021-02-20
  * Author : Folus Wen, Eason Yang
  * Version : D0.01
  *
@@ -66,6 +66,7 @@
 #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
 
@@ -93,6 +94,7 @@
 #define SYSTEM_SCREEN_AUTH_FAIL				0x08
 #define SYSTEM_SCREEN_AUTH_UNKNOW			0x09
 #define SYSTEM_SCREEN_TERMINATING			0X0A
+#define SYSTEM_SCREEN_EMERGENCY				0x0B
 
 //=======================================
 // Parameter to change icon status
@@ -107,8 +109,6 @@
 #define WIFI_ONLINE							0x06
 #define TELECOM_OFFLINE						0x07
 #define TELECOM_ONLINE						0x08
-#define PRICE_DISAPPEAR						0x00
-#define PRICE_APPEAR						0x01
 #define RFID_DISABLE						0x01
 #define RFID_ENABLE							0x02
 #define VISA_DISABLE						0x03
@@ -134,8 +134,6 @@
 #define ENERGY_LIGHT						0x02
 #define ELECTRICITY_DIRECTION_RIGHT 		0x01
 #define ELECTRICITY_DIRECTION_LEFT 			0x02
-#define WALLET_COMPELTE_DISAPPEAR			0x00
-#define WALLET_COMPLETE_APPEAR				0x01
 #define BATTERY_SOC_EMPTY					0x01
 #define BATTERY_SOC_20						0x02
 #define BATTERY_SOC_40						0x03
@@ -143,14 +141,6 @@
 #define BATTERY_SOC_80						0x05
 #define BATTERY_SOC_100						0x06
 #define CONNECTION_COMPLETE_MARK			0x01
-#define TIMER_COMPLETE_DISAPPEAR			0x00
-#define TIMER_COMPLETE_APPEAR				0x01
-#define COST_COMPLETE_DISAPPER				0x00
-#define COST_COMPLETE_APPEAR				0x01
-#define ENERGY_COMPLETE_DISAPPER			0x00
-#define ENERGY_COMPLETE_APPEAR				0x01
-#define VALID_WALLET_DISAPPER				0x00
-#define VALID_WALLET_APPEAR					0x01
 #define QRCODE_DISABLE						0x01
 #define QRCODE_ENABLE 						0x02
 #define QRCODE_BANDED						0x03
@@ -210,6 +200,8 @@
 #define TEXT_ACCOUNT_COMPLETE				0x20A8 // size 16
 #define TEXT_BALANCE						0x20B8 // size 16
 #define TEXT_PERCENTAGE						0x20C8 // size 6
+#define TEXT_CURRENCY_COMPLETE				0x20CE // size 16
+
 #define TEXT_RTC							0X2500 // size 32
 
 //=======================================
@@ -251,9 +243,10 @@
 //=======================================
 // RFID authorization constant
 //=======================================
-#define VALIDATED_RFID						0x00
-#define UNVALIDATED_RFID					0x01
-#define UNKNOW_RFID							0x02
+#define DEFAULT_RFID						0
+#define VALIDATED_RFID						1
+#define UNVALIDATED_RFID					2
+#define UNKNOW_RFID							3
 
 //=======================================
 // Normal mode or CCS mode constant
@@ -261,6 +254,40 @@
 #define BASIC_MODE							0x00
 #define CCS_MODE							0x01
 
+//=======================================
+// Price type
+//=======================================
+#define DEFAULT_VALUE						0
+#define CONNECTION_FEE						1
+#define CURRENT_RATE						2
+#define OCCUPANCY_FEE						3
+#define SESSION_FEE							4
+#define TOTAL_COST							5
+#define ACCOUNT_BALANCE						6
+
+//=======================================
+// Currency type
+//=======================================
+#define DEFAULE_PRICE						1
+#define SET_USER_PRICE						2
+#define FINAL_COST							3
+
+//=======================================
+// LCM brightness percentage
+//=======================================
+#define BRIGHTNESS_0						0x00
+#define BRIGHTNESS_10						0x0A
+#define BRIGHTNESS_20						0x14
+#define BRIGHTNESS_30						0x1E
+#define BRIGHTNESS_40						0x28
+#define BRIGHTNESS_50						0x32
+#define BRIGHTNESS_60						0x3C
+#define BRIGHTNESS_70						0x46
+#define BRIGHTNESS_80						0x50
+#define BRIGHTNESS_90						0x5A
+#define BRIGHTNESS_100						0x64
+
+
 extern int StoreLogMsg(const char *fmt, ...);
 extern int8_t lcdRegisterWrite(int32_t fd, uint8_t regType, uint16_t address, uint8_t *data, uint16_t dataLen);
 extern int8_t lcdRegisterRead(int32_t fd, uint8_t regType, uint16_t address, uint8_t *data, uint16_t dataLen);

+ 80 - 12
EVSE/Projects/AW-CCS/Apps/main.c

@@ -2270,7 +2270,15 @@ int upgrade_check()
 					DEBUG_INFO("New firmware type: %X\n", ShmCharger->fwUpgradeInfo.fwType);
 					DEBUG_INFO("New firmware model name: %s, %s\n", ShmCharger->fwUpgradeInfo.modelName, ShmSysConfigAndInfo->SysConfig.ModelName);
 
-					if((strcmp(ShmCharger->fwUpgradeInfo.modelName, (char*)ShmSysConfigAndInfo->SysConfig.ModelName)==0) && (ShmCharger->fwUpgradeInfo.fwType>0))
+					if((ShmCharger->fwUpgradeInfo.modelName[0] == ShmSysConfigAndInfo->SysConfig.ModelName[0]) &&
+					   (ShmCharger->fwUpgradeInfo.modelName[1] == ShmSysConfigAndInfo->SysConfig.ModelName[1]) &&
+					   (ShmCharger->fwUpgradeInfo.modelName[7] == ShmSysConfigAndInfo->SysConfig.ModelName[7]) &&
+					   (ShmCharger->fwUpgradeInfo.modelName[8] == ShmSysConfigAndInfo->SysConfig.ModelName[8]) &&
+					   (ShmCharger->fwUpgradeInfo.modelName[9] == ShmSysConfigAndInfo->SysConfig.ModelName[9]) &&
+					   (ShmCharger->fwUpgradeInfo.modelName[11] == ShmSysConfigAndInfo->SysConfig.ModelName[11]) &&
+					   (ShmCharger->fwUpgradeInfo.modelName[12] == ShmSysConfigAndInfo->SysConfig.ModelName[12]) &&
+					   (ShmCharger->fwUpgradeInfo.modelName[13] == ShmSysConfigAndInfo->SysConfig.ModelName[13]) &&
+					   (ShmCharger->fwUpgradeInfo.fwType>0))
 					{
 						switch(ShmCharger->fwUpgradeInfo.fwType)
 						{
@@ -2721,7 +2729,6 @@ int isReachableInternet()
 		pclose(fp);
 	}
 
-
 	return result;
 }
 
@@ -3145,7 +3152,6 @@ void checkReset()
 				DEBUG_INFO("%s reset request by OCPP.\n", ShmOCPP20Data->Reset.type);
 				if(strcmp((char*)ShmOCPP20Data->Reset.type, "Immediate") == 0)
 				{
-
 					system("sync");
 					sleep(5);
 					system("reboot -f");
@@ -3670,15 +3676,30 @@ int main(void)
 			 *	TODO:
 			 *	1. Power saving logic
 			 */
+			if(ShmCharger->gun_info[gun_index].GPIO_Input.Button_Mode_Switch == ON)
+			{
+				ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_LCD]);
+				ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_RFID]);
+				ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_METER]);
+			}
+
 			if(DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]) > TIMEOUT_SPEC_POWERSAVING_LCD)
 			{
-				if(DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]) < (TIMEOUT_SPEC_POWERSAVING_LCD+600))
-					DEBUG_INFO("LCD into power saving...%d\n", DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]));
+				if(ShmCharger->isLcdOn == ON)
+				{
+					//if(DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]) < (TIMEOUT_SPEC_POWERSAVING_LCD+600))
+						DEBUG_INFO("LCD into power saving...%d\n", DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]));
+					ShmCharger->isLcdOn = OFF;
+				}
 			}
 			else
 			{
-				if((0 < DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD])) && (DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]) < 600))
-					DEBUG_INFO("LCD exit power saving...%d\n", DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]));
+				if(ShmCharger->isLcdOn == OFF)
+				{
+					//if((0 < DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD])) && (DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]) < 600))
+						DEBUG_INFO("LCD exit power saving...%d\n", DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LCD]));
+					ShmCharger->isLcdOn = ON;
+				}
 			}
 
 			if(DiffTimebWithNow(startTime[ShmCharger->gun_selectd][TMR_IDX_POWERSAVING_RFID]) > TIMEOUT_SPEC_POWERSAVING_RFID)
@@ -3832,11 +3853,38 @@ int main(void)
 						// Set max current to rating current
 						ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = ShmCharger->gun_info[gun_index].primaryMcuState.rating_current;
 						
-						// Default Ethernet / Wifi / 4G to 1:disconnected 
-						ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet = ON;
-						ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi = ON;
-						ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = ON;
-						
+						// Default Ethernet / Wifi / 4G to 1:disconnected
+						switch(ShmSysConfigAndInfo->SysConfig.ModelName[10])
+						{
+							case 'E':
+								ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet = ON;
+								ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi = OFF;
+								ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = OFF;
+
+								break;
+							case 'W':
+								ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet = ON;
+								ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi = ON;
+								ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = OFF;
+
+								break;
+							case 'T':
+								ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet = ON;
+								ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi = OFF;
+								ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = ON;
+
+								break;
+							case 'D':
+								ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet = ON;
+								ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi = ON;
+								ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi = ON;
+
+								break;
+						}
+
+						// Default LCM brightness to 100
+						ShmCharger->isLcdOn = ON;
+
 						// If Web Server OPCC URL is empty kill Module_OcppBackend
 						if(strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0)
 						{
@@ -3886,6 +3934,7 @@ int main(void)
 						ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = CCS_PWM_DUTY_100;
 						ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = ON;
 						ShmCharger->gun_info[gun_index].isDoEvReadyOnce = OFF;
+						ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
 						if(ShmCharger->isCcsEnable)system("pkill Module_CCS");
 					}
 
@@ -4031,6 +4080,9 @@ int main(void)
 						switch(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod)
 						{
 							case START_METHOD_RFID:
+
+								ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
+
 								if((ocpp_get_auth_conf()) ||
 								   (!ocpp_get_connection_status() && ((ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE) || (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_NOCHARGE))) ||
 								   (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0))
@@ -4042,6 +4094,7 @@ int main(void)
 									{
 										memcpy((char*)ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartUserId, ShmSysConfigAndInfo->SysConfig.UserId, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
 
+										ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
 										DEBUG_INFO("Authorize pass.\n");
 										setSpeaker(ON,SPEAKER_SHORT);
 										setLedMotion(gun_index,LED_ACTION_RFID_PASS);
@@ -4050,6 +4103,8 @@ int main(void)
 									}
 									else
 									{
+										ShmCharger->gun_info[gun_index].resultAuthorization = UNVALIDATED_RFID;
+																				 
 										DEBUG_INFO("Authorize fail.\n");
 										setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
 										setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
@@ -4077,6 +4132,7 @@ int main(void)
 					{
 						ftime(&startTime[gun_index][TMR_IDX_HANDSHAKING]);
 						setLedMotion(gun_index,LED_ACTION_AUTHED);
+						ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;												 
 
 						if(ShmCharger->isCcsEnable)
 							ShmCharger->gun_info[gun_index].ccsHandshakeState = HANDSHAKE_DUTY_5;
@@ -4437,6 +4493,7 @@ int main(void)
 						ocpp_reset_smartcharging_profileId(gun_index);
 						ocpp_set_profile_req(gun_index, ON);
 						ShmCharger->gun_info[gun_index].isChargerStopByCondition = NO;
+						ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
 					}
 
 					//if time up, clear CCS MSG count
@@ -4566,6 +4623,8 @@ int main(void)
 								}
 								else
 								{
+									ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
+
 									if(ocpp_get_auth_conf() ||
 									  (ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) ||
 									  (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0)) ||
@@ -4586,6 +4645,7 @@ int main(void)
 											setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
 											setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
 											sleep(3);
+											ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
 										}
 
 										startTime[gun_index][TMR_IDX_AUTH].time -= TIMEOUT_SPEC_AUTH;
@@ -4852,6 +4912,7 @@ int main(void)
 						{}
 
 						getDateTimeString((char*)ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StopDateTime);
+						ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
 					}
 
 					// End authorize pass
@@ -4872,6 +4933,7 @@ int main(void)
 							if(((ShmCharger->gun_info[gun_index].rfidReq == ON) && isMatchStartUser(gun_index)) ||
 							   (ShmCharger->gun_info[gun_index].isAuthPassEnd))
 							{
+								ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
 								DEBUG_INFO("Authorize pass.\n");
 								setSpeaker(ON,SPEAKER_SHORT);
 								setLedMotion(gun_index,LED_ACTION_RFID_PASS);
@@ -5012,6 +5074,8 @@ int main(void)
 								}
 								else
 								{
+									ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
+
 									if(ocpp_get_auth_conf() ||
 									  (ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) ||
 									  (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST)) ||
@@ -5023,15 +5087,18 @@ int main(void)
 										   (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)))
 										{
 											ShmCharger->gun_info[gun_index].isAuthPassEnd = ON;
+											ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
 										}
 										else
 										{
+											ShmCharger->gun_info[gun_index].resultAuthorization = UNVALIDATED_RFID;
 											ShmCharger->gun_info[gun_index].rfidReq = OFF;
 											ocpp_set_auth_req(OFF);
 											DEBUG_INFO("Authorize fail... \n");
 											setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
 											setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
 											sleep(3);
+											ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
 										}
 
 										startTime[gun_index][TMR_IDX_AUTH].time -= TIMEOUT_SPEC_AUTH;
@@ -5080,6 +5147,7 @@ int main(void)
 						setLedMotion(gun_index, LED_ACTION_STOP);
 						setRelay(gun_index, OFF);
 						setRequest(gun_index, OFF);
+						sleep(5);
 					}
 
 					ShmCharger->gun_info[gun_index].rfidReq = OFF;

+ 81 - 58
EVSE/Projects/AW-CCS/Apps/main.h

@@ -41,8 +41,6 @@
 #include	<stdint.h>
 #include	<sqlite3.h>
 
-
-
 //===================================
 // Define Alarm code constant
 //===================================
@@ -59,23 +57,23 @@
 #define ALARM_HANDSHAKE_TIMEOUT                 0x00000200
 #define ALARM_EMERGENCY_STOP                    0x00000400
 #define ALARM_RELAY_WELDING                     0x00000800
-#define ALARM_LEAK_MODULE_FAIL                  0x00001000 
+#define ALARM_LEAK_MODULE_FAIL                  0x00001000
 #define ALARM_SHUTTER_FAULT                     0x00002000
-#define ALARM_LOCKER_FAULT                      0x00004000  
+#define ALARM_LOCKER_FAULT                      0x00004000
 #define ALARM_POWER_DROP                        0x00008000
   
-#define ALARM_L1_CIRCUIT_SHORT                  0x00010000 
-#define ALARM_ROTATORY_SWITCH_FAULT             0x00020000 
-#define ALARM_RELAY_DRIVE_FAULT                 0x00040000 
-#define ALARM_BLE_MODULE_BROKEN                 0x00080000 
-#define ALARM_L2_OVER_VOLTAGE                   0x00100000 
+#define ALARM_L1_CIRCUIT_SHORT                  0x00010000
+#define ALARM_ROTATORY_SWITCH_FAULT             0x00020000
+#define ALARM_RELAY_DRIVE_FAULT                 0x00040000
+#define ALARM_BLE_MODULE_BROKEN                 0x00080000
+#define ALARM_L2_OVER_VOLTAGE                   0x00100000
 #define ALARM_L3_OVER_VOLTAGE                   0x00200000
-#define ALARM_L2_UNDER_VOLTAGE                  0x00400000 
+#define ALARM_L2_UNDER_VOLTAGE                  0x00400000
 #define ALARM_L3_UNDER_VOLTAGE                  0x00800000
 
 #define ALARM_L2_OVER_CURRENT					0x01000000
 #define ALARM_L3_OVER_CURRENT					0x02000000
-#define ALARM_L2_CIRCUIT_SHORT                  0x04000000 
+#define ALARM_L2_CIRCUIT_SHORT                  0x04000000
 #define ALARM_L3_CIRCUIT_SHORT                  0x08000000
 #define ALARM_METER_TIMEOUT						0x10000000
 
@@ -87,7 +85,9 @@
 #define CCS_PWM_DUTY_5							5
 #define CCS_PWM_DUTY_100						100
 
-
+//===================================
+//	Define CP State constant
+//===================================
 enum CP_STATE
 {
 	CP_STATE_UNKNOWN=0,
@@ -99,6 +99,9 @@ enum CP_STATE
 	CP_STATE_F
 };
 
+//===================================
+//	Define CCS CP State constant
+//===================================
 enum CCS_CP_STATE
 {
 	CCS_CP_STATE_UNKNOWN=0,
@@ -113,6 +116,9 @@ enum CCS_CP_STATE
 	CCS_CP_STATE_H				//H  (<12V)
 };
 
+//===================================
+// Define Speaker type constant
+//===================================
 enum SPEAKER_ACTION
 {
 	SPEAKER_STOP=0,
@@ -124,6 +130,9 @@ enum SPEAKER_ACTION
 	SPEAKER_INTERVAL_3COUNT
 };
 
+//===================================
+// Define Led constant
+//===================================
 enum LED_ACTION
 {
 	LED_ACTION_INIT=0,
@@ -146,6 +155,9 @@ enum LED_ACTION
 	LED_ACTION_INTERNET_DISCONNECT
 };
 
+//===================================
+// Define start mode constant
+//===================================
 enum START_METHOD
 {
 	START_METHOD_FREE=0,
@@ -180,7 +192,6 @@ enum CHARGING_MODE
 	CHARGING_MODE_SOCKETE
 };
 
-
 enum HLC_MODE
 {
 	HLC_STOP_MODE=0,
@@ -222,6 +233,17 @@ enum TIMER_IDX
 	TMR_IDX_CNT
 };
 
+//===================================
+//	Define Authorization State constant
+//===================================
+enum RFID_AUTHORIZATION_STATUS
+{
+	DEFAULT_RFID = 0,
+	VALIDATED_RFID,
+	UNVALIDATED_RFID,
+	UNKNOW_RFID
+};
+
 #define DEBUG_INFO(format, args...) StoreLogMsg("[%s:%d][%s][Info] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__), __LINE__, __FUNCTION__, ##args)
 #define DEBUG_WARN(format, args...) StoreLogMsg("[%s:%d][%s][Warn] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__), __LINE__, __FUNCTION__, ##args)
 #define DEBUG_ERROR(format, args...) StoreLogMsg("[%s:%d][%s][Error] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__), __LINE__, __FUNCTION__, ##args)
@@ -392,7 +414,7 @@ typedef struct AC_PRIMARY_MCU_ALARM
 			unsigned long OCP_L2:1;
 			unsigned long OVP_L3:1;
 			unsigned long UVP_L3:1;
-			unsigned long OCP_L3:1;	
+			unsigned long OCP_L3:1;
 			unsigned long short_circuit_L2:1;
 			unsigned long short_circuit_L3:1;
 			unsigned long meter_comm_timeout:1;
@@ -519,62 +541,62 @@ typedef struct SET_AUX_POWER_SWITCH
 typedef struct CCS_INFO
 {
 	uint8_t		BatteryChargeType;				/*0x00: AC charging, 0x01: DC charging*/
-	uint8_t 	PresentMsgFlowStatus;   
+	uint8_t 	PresentMsgFlowStatus;
 												/*  ISO15118_2018
-												0: Idle(wait B2 state), 
-												1: CM_SLAC_PARM.REQ, 
-												2: CM_SLAC_PARM.CNF, 
+												0: Idle(wait B2 state),
+												1: CM_SLAC_PARM.REQ,
+												2: CM_SLAC_PARM.CNF,
 												3: CM_START_ATTEN_CHAR.IND
-												4: CM_MNBC_SOUND.IND, 
-												5: CM_ATTEN_CHAR.IND, 
-												6: CM_ATTEN_CHAR.RSP, 
+												4: CM_MNBC_SOUND.IND,
+												5: CM_ATTEN_CHAR.IND,
+												6: CM_ATTEN_CHAR.RSP,
 												7: CM_VALIDATE.REQ
-												8: CM_VALIDATE.CNF, 
-												9: CM_SLAC_MATCH.REQ, 
-												10: CM_SLAC_MATCH.CNF, 
+												8: CM_VALIDATE.CNF,
+												9: CM_SLAC_MATCH.REQ,
+												10: CM_SLAC_MATCH.CNF,
 												11: CM_AMP_MAP.REQ
-												12: CM_AMP_MAP.CNF, 
+												12: CM_AMP_MAP.CNF,
 												13: SLACC/SDP/TCP connection,
-												16: SupportedAppProtocolRequest, 
-												17: SupportedAppProtocolResponse, 
+												16: SupportedAppProtocolRequest,
+												17: SupportedAppProtocolResponse,
 												18: SessionSetupRequest
-												19: SessionSetupResponse, 
-												20: ServiceDiscoveryRequest, 
+												19: SessionSetupResponse,
+												20: ServiceDiscoveryRequest,
 												21: ServiceDiscoveryResponse
-												22: ServiceDetailRequest, 
+												22: ServiceDetailRequest,
 												23: ServiceDetailResponse
-												24:ServiceAndPaymentSelectionRequest/ServiceSelectionRequest, 
+												24:ServiceAndPaymentSelectionRequest/ServiceSelectionRequest,
 												25: ServiceAndPaymentSelectionResponse/ServiceSelectionResponse
-												26: PaymentDetailsRequest/IdentificationDetailsRequest;, 
+												26: PaymentDetailsRequest/IdentificationDetailsRequest;,
 												27: PaymentDetailsResponse/IdentificationDetailsResponse,
-												28: AuthorizationRequest, 
+												28: AuthorizationRequest,
 												29: AuthorizationResponse,
-												30: CertificateUpdateRequest, 
-												31: CertificateUpdateResponse, 
-												32:CertificateInstallationRequest, 
+												30: CertificateUpdateRequest,
+												31: CertificateUpdateResponse,
+												32:CertificateInstallationRequest,
 												33: CertificateInstallationResponse
-												34: ChargeParameterDiscoveryRequest, 
+												34: ChargeParameterDiscoveryRequest,
 												35: ChargeParameterDiscoveryResponse
-												36: CableCheckRequest, 
-												37: CableCheckResponse, 
-												38: PreChargeRequest, 
+												36: CableCheckRequest,
+												37: CableCheckResponse,
+												38: PreChargeRequest,
 												39: PreChargeResponse
-												40: PowerDeliveryRequest start, 
-												41: PowerDeliveryResponse start, 
-												42: ChargingStatusRequest, 
+												40: PowerDeliveryRequest start,
+												41: PowerDeliveryResponse start,
+												42: ChargingStatusRequest,
 												43: ChargingStatusResponse
-												44:CurrentDemandRequest, 
-												45:CurrentDemandResponse, 
-												46:MeteringReceiptRequest, 
+												44:CurrentDemandRequest,
+												45:CurrentDemandResponse,
+												46:MeteringReceiptRequest,
 												47: MeteringReceiptResponse
-												48: PowerDeliveryRequest end, 
-												49: PowerDeliveryRequest end, 
-												50: WeldingDetectionRequest, 
+												48: PowerDeliveryRequest end,
+												49: PowerDeliveryRequest end,
+												50: WeldingDetectionRequest,
 												51: WeldingDetectionResponse,
-												52: SessionStopRequest, 
+												52: SessionStopRequest,
 												53: SessionStopResponse
-												253: Performance Timeout, 
-												254: Sequence Timeout, 
+												253: Performance Timeout,
+												254: Sequence Timeout,
 												255: Fault
 												*/
 
@@ -627,8 +649,8 @@ typedef struct CCS_INFO
 	uint16_t 	ChargingPermission:1;			/*0x00: Not ready yet, stay in idle mode or go into terminating process.
 												  0x01: start charging process*/
 	uint16_t 	ConnectorLockerStatus:1;		/*0x00: released
-												  0x01: locked*/	
-												 
+												  0x01: locked*/
+
 	uint16_t	RcdStatus:1;					/* 0x00 no error
 												   0x01 an error */
 	uint16_t	OutputRelayStatus:1;			/*0: OFF
@@ -645,7 +667,6 @@ typedef struct CCS_INFO
 	uint16_t	TempFlag13:1;
 	uint16_t	TempFlag14:1;
 	uint16_t	TempFlag15:1;
-	
 }Ac_Ccs_Info;
 
 typedef struct GUN_INFO
@@ -676,11 +697,12 @@ typedef struct GUN_INFO
 	Gpio_in											GPIO_Input;
 	Ac_Ccs_Info										acCcsInfo;
 	uint8_t											ccsHandshakeState;
-	uint8_t											PreviousEVChargeProgress;	
+	uint8_t											PreviousEVChargeProgress;
 	uint8_t											chargingMode;
 	uint16_t										targetCurrent;
 	uint8_t											evReadyState;
-	
+	uint8_t											resultAuthorization;
+
 	uint16_t										isAuthPassEnd:1;
 	uint16_t										rfidReq:1;
 	uint16_t										isGunPlugged:1;
@@ -704,12 +726,13 @@ struct Charger
 	Gun_Info 				gun_info[2];
 	Fw_Upgrade_Info			fwUpgradeInfo;
 	Timeout_Spec			timeoutSpec;
-	
+
 	uint8_t					gun_selectd;
 	uint8_t	 				speaker_type;
 	uint8_t					isSpeakerOn:1;
 	uint8_t		 			isUpdateSuccess:1;
 	uint8_t		 			isCcsEnable:1;
+	uint8_t					isLcdOn:1;
 };
 
 #endif /* CONFIG_MAIN_H_ */

BIN
EVSE/Projects/AW-CCS/Images/FactoryDefaultConfig.bin


BIN
EVSE/Projects/AW-CCS/Images/ramdisk.gz


BIN
EVSE/rootfs/root/OcppBackend20


Some files were not shown because too many files changed in this diff