Browse Source

2020-01-09 / Folus Wen

Actions:
1. main.c LoadSysConfigAndInfo function check sum calculation method modify.
2. Module_FactoryConfig.c check sum calculation method modify.
3. Module_FactoryConfig.c implement argc & args logic.

Files:
1. As follow commit history.
FolusWen 5 years ago
parent
commit
97c2dcee79

BIN
EVSE/Modularization/Module_4g


BIN
EVSE/Modularization/Module_Wifi


BIN
EVSE/Modularization/OcppBackend


BIN
EVSE/Modularization/WebService


BIN
EVSE/Modularization/libInfypwr_PsuCommObj.a


BIN
EVSE/Modularization/libModule_RFID.a


BIN
EVSE/Modularization/libModule_Upgrade.a


BIN
EVSE/Modularization/libPhihong_PsuCommObj.a


BIN
EVSE/Modularization/logPackTools


+ 144 - 81
EVSE/Projects/AW-Regular/Apps/Module_FactoryConfig.c

@@ -36,6 +36,9 @@
 #define ARRAY_SIZE(A)		(sizeof(A) / sizeof(A[0]))
 #define PASS				1
 #define FAIL				-1
+#define OUTPUT_FLASH		0x01
+#define OUTPUT_FILE			0x02
+
 
 struct SysConfigData 			SysConfig;
 struct SysConfigAndInfo			*ShmSysConfigAndInfo;
@@ -186,24 +189,35 @@ int InitShareMemory()
     return result;
 }
 
+void helpOutput(void)
+{
+	printf("Usage: Module_FactoryConfig [OPTION]...\r\n\r\n");
+	printf("Generate factory default configuration value\r\n\r\n");
+	printf("OPTION:\r\n");
+	printf("	-a Write to file(/mnt) & flash\r\n");
+	printf("	-f Write to file(/mnt)\r\n");
+	printf("	-m Write to flash\r\n");
+}
+
 //================================================
 // Main process
 //================================================
-int main(void)
+int main(int argc, char *argv[])
 {
-
-	unsigned int i,Chk;
+	unsigned char outType=0;
+	unsigned int i,Chk,MtdBlockSize=0x600000;
 	unsigned char *ptr;
 	int fd,wrd;
 
-	ptr=malloc(sizeof(struct SysConfigData));
+	ptr=malloc(MtdBlockSize);
 	if(ptr==NULL)
 	{
-		DEBUG_ERROR("malloc for SysConfigData NG\r\n");
-
+		#ifdef SystemLogMessage
+		StoreLogMsg("[FactoryConfig]main: malloc for SysConfigData NG");
+		#endif
 		return 0;
 	}
-	memset(ptr,0,sizeof(struct SysConfigData));
+	memset(ptr,0,MtdBlockSize);
 	memset(&SysConfig,0,sizeof(struct SysConfigData));
 
 	/*
@@ -213,7 +227,7 @@ int main(void)
 	time_t t = time(NULL);
 	struct tm tm = *localtime(&t);
 	strcpy((char*)SysConfig.ModelName, "AWLU770100W1P0");
-	strcpy((char*)SysConfig.SerialNumber, "D195200001A0");
+	strcpy((char*)SysConfig.SerialNumber, "D19520001A0");
 	sprintf((char*)SysConfig.SystemId, "%s%s", SysConfig.ModelName, SysConfig.SerialNumber);
 	sprintf((char*)SysConfig.SystemDateTime, "%d-%d-%d %d:%d:%d", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
 	SysConfig.AuthorisationMode = 0;	// 0:PH card	1: OCPP backend		2: PH backend	3: Free Mode
@@ -254,7 +268,7 @@ int main(void)
 	SysConfig.OfflinePolicy = 0;			// 0: Local list	1: PH RFID		2: Free		3: Deny
 	SysConfig.OfflineMaxChargeEnergy = 0;	// 0: Same as MaxChargeEnergy	Other: 1~65535KWH
 	SysConfig.OfflineMaxChargeDuration = 0; // 0: Same as MaxChargeDuration Other: 1~65535 minutes
-	strcpy((char*)SysConfig.OcppServerURL, "ws://evsocket.phihong.com.tw/");
+	strcpy((char*)SysConfig.OcppServerURL, "ws://192.168.0.246:8080/ocpp/");
 	sprintf((char*)SysConfig.ChargeBoxId, "%s%s", SysConfig.ModelName, SysConfig.SerialNumber);
 
 
@@ -263,94 +277,143 @@ int main(void)
 
 	// Calculate CRC
 	Chk=0;
-	for(i=0;i<(sizeof(struct SysConfigData)-4);i++)
+	for(i=0;i<(MtdBlockSize-4);i++)
 	{
 		Chk+=*(ptr+i);
 	}
-	SysConfig.Checksum=Chk;
+	memcpy(	ptr+MtdBlockSize-4,&Chk,4);
 
-	// Save factory default setting value to file
-	fd = open("/mnt/FactoryDefaultConfig.bin", O_RDWR|O_CREAT);
-	if (fd < 0)
-	{
-
-		DEBUG_ERROR("open /mnt/FactoryDefaultConfig.bin NG\r\n");
-
-		free(ptr);
-		return 0;
-	}
-	wrd=write(fd, &SysConfig, sizeof(struct SysConfigData));
-	close(fd);
-	if(wrd!=(sizeof(struct SysConfigData)))
+	/*
+	 * Parameter process
+	 */
+	if(argc>1)
 	{
-		DEBUG_ERROR("write /mnt/FactoryDefaultConfig.bin NG\r\n");
-
-		free(ptr);
-		return 0;
+		char *arg = argv[1];
+		switch(arg[0])
+		{
+			case '-':
+				switch(arg[1])
+				{
+					case 'a':
+						outType |= OUTPUT_FILE;
+						outType |= OUTPUT_FLASH;
+						break;
+					case 'f':
+						outType |= OUTPUT_FILE;
+						break;
+					case 'm':
+						outType |= OUTPUT_FLASH;
+						break;
+					default:
+						helpOutput();
+						break;
+				}
+				break;
+			default:
+				helpOutput();
+				break;
+		}
 	}
-
-	// Save factory default setting value to flash factory default setting block
-	fd = open("/dev/mtdblock12", O_RDWR);
-	if (fd < 0)
+	else
 	{
-
-		DEBUG_ERROR("open /dev/mtdblock12 NG\r\n");
-
-		free(ptr);
-		return 0;
+		helpOutput();
 	}
-	wrd=write(fd, &SysConfig, sizeof(struct SysConfigData));
-	close(fd);
-	if(wrd!=(sizeof(struct SysConfigData)))
-	{
-		DEBUG_ERROR("write /dev/mtdblock12 NG\r\n");
 
-		free(ptr);
-		return 0;
-	}
-
-	// Save factory default setting value to flash backup setting block
-	fd = open("/dev/mtdblock11", O_RDWR);
-	if (fd < 0)
-	{
-		DEBUG_ERROR("open /dev/mtdblock11 NG\r\n");
-
-		free(ptr);
-		return 0;
-	}
-	wrd=write(fd, &SysConfig, sizeof(struct SysConfigData));
-	close(fd);
-	if(wrd!=(sizeof(struct SysConfigData)))
+	/*
+	 * Configuration bin file generate
+	 */
+	if((outType&OUTPUT_FILE)>0)
 	{
-		DEBUG_ERROR("write /dev/mtdblock11 NG\r\n");
-
-		free(ptr);
-		return 0;
+		// Save factory default setting value to file
+		fd = open("/mnt/FactoryDefaultConfig.bin", O_RDWR|O_CREAT);
+		if (fd < 0)
+		{
+
+			DEBUG_ERROR("open /mnt/FactoryDefaultConfig.bin NG\r\n");
+
+			free(ptr);
+			return 0;
+		}
+		wrd=write(fd, ptr, MtdBlockSize);
+		close(fd);
+		if(wrd<MtdBlockSize)
+		{
+			DEBUG_ERROR("write /mnt/FactoryDefaultConfig.bin NG\r\n");
+
+			free(ptr);
+			return 0;
+		}
+
+		DEBUG_INFO("FactoryConfig write to file in /mnt OK.\r\n");
 	}
 
-	// Save factory default setting value to flash setting block
-	fd = open("/dev/mtdblock10", O_RDWR);
-	if (fd < 0)
-	{
-		DEBUG_ERROR("open /dev/mtdblock10 NG\r\n");
-
-		free(ptr);
-		return 0;
-	}
-	wrd=write(fd, &SysConfig, sizeof(struct SysConfigData));
-	close(fd);
-	if(wrd!=(sizeof(struct SysConfigData)))
+	/*
+	 * Flash memory write
+	 */
+	if((outType&OUTPUT_FLASH)>0)
 	{
-		DEBUG_ERROR("write /dev/mtdblock10 NG\r\n");
-
-		free(ptr);
-		return 0;
+		// Save factory default setting value to flash factory default setting block
+		fd = open("/dev/mtdblock12", O_RDWR);
+		if (fd < 0)
+		{
+
+			DEBUG_ERROR("open /dev/mtdblock12 NG\r\n");
+
+			free(ptr);
+			return 0;
+		}
+		wrd=write(fd, ptr, MtdBlockSize);
+		close(fd);
+		if(wrd<MtdBlockSize)
+		{
+			DEBUG_ERROR("write /dev/mtdblock12 NG\r\n");
+
+			free(ptr);
+			return 0;
+		}
+
+		// Save factory default setting value to flash backup setting block
+		fd = open("/dev/mtdblock11", O_RDWR);
+		if (fd < 0)
+		{
+			DEBUG_ERROR("open /dev/mtdblock11 NG\r\n");
+
+			free(ptr);
+			return 0;
+		}
+		wrd=write(fd, ptr, MtdBlockSize);
+		close(fd);
+		if(wrd<MtdBlockSize)
+		{
+			DEBUG_ERROR("write /dev/mtdblock11 NG\r\n");
+
+			free(ptr);
+			return 0;
+		}
+
+		// Save factory default setting value to flash setting block
+		fd = open("/dev/mtdblock10", O_RDWR);
+		if (fd < 0)
+		{
+			DEBUG_ERROR("open /dev/mtdblock10 NG\r\n");
+
+			free(ptr);
+			return 0;
+		}
+		wrd=write(fd, ptr, MtdBlockSize);
+		close(fd);
+		if(wrd<MtdBlockSize)
+		{
+			DEBUG_ERROR("write /dev/mtdblock10 NG\r\n");
+
+			free(ptr);
+			return 0;
+		}
+
+		DEBUG_INFO("FactoryConfig write to flash OK\r\n");
 	}
 
 	free(ptr);
 
-	DEBUG_INFO("FactoryConfig OK\r\n");
-
-
 	return FAIL;
 }

+ 80 - 82
EVSE/Projects/AW-Regular/Apps/main.c

@@ -30,6 +30,8 @@
 #define TIMEOUT_SPEC_HANDSHAKING	180000
 #define TIMEOUT_SPEC_AUTH			30000
 
+#define MtdBlockSize 				0x600000
+
 //==========================
 // Declare method
 //==========================
@@ -422,11 +424,10 @@ void InitGPIO()
 int LoadSysConfigAndInfo(struct SysConfigData *ptr)
 {
 	int fd,wrd;
-	struct SysConfigData *buf;
-	unsigned char *PtrBuf;
+	unsigned char *buf;
 	unsigned int ChkSum,ChkSumOrg;
 
-	if((buf=malloc(sizeof(struct SysConfigData)))==NULL)
+	if((buf=malloc(MtdBlockSize))==NULL)
 	{
 
 		DEBUG_ERROR("malloc buffer NG,rebooting..\r\n");
@@ -440,7 +441,7 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
 		sleep(5);
 		system("reboot -f");
 	}
-	memset(buf, 0, sizeof(struct SysConfigData));
+	memset(buf, 0, MtdBlockSize);
 
 	//================================================
 	// Load configuration from mtdblock10
@@ -461,9 +462,9 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
 		sleep(5);
 		system("reboot -f");
 	}
-    wrd=read(fd, buf,sizeof(struct SysConfigData));
+    wrd=read(fd, buf, MtdBlockSize);
 	close(fd);
-	if(wrd!=(sizeof(struct SysConfigData)))
+	if(wrd<MtdBlockSize)
 	{
 		free(buf);
 
@@ -478,13 +479,12 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
 		sleep(5);
 		system("reboot -f");
 	}
-	PtrBuf=(unsigned char *)buf;
 	ChkSum=0;
-	for(wrd=0;wrd<(sizeof(struct SysConfigData)-4);wrd++)
+	for(wrd=0;wrd<MtdBlockSize-4;wrd++)
 	{
-		ChkSum+=PtrBuf[wrd];
+		ChkSum+=buf[wrd];
 	}
-	ChkSumOrg=buf->Checksum;
+	memcpy(&ChkSumOrg,buf+(0x00600000-4),sizeof(ChkSumOrg));
 
 	//================================================
 	// Load configuration from mtdblock11
@@ -510,10 +510,10 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
 			sleep(5);
 			system("reboot -f");
 	    }
-	    memset(buf, 0, sizeof(struct SysConfigData));
-   		wrd=read(fd, buf,sizeof(struct SysConfigData));
+	    memset(buf, 0, MtdBlockSize);
+   		wrd=read(fd, buf,MtdBlockSize);
     	close(fd);
-		if(wrd!=sizeof(struct SysConfigData))
+		if(wrd<MtdBlockSize)
 		{
 			free(buf);
 
@@ -528,13 +528,12 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
 			sleep(5);
 			system("reboot -f");
 		}
-		PtrBuf=(unsigned char *)buf;
 		ChkSum=0;
-		for(wrd=0;wrd<(sizeof(struct SysConfigData)-4);wrd++)
+		for(wrd=0;wrd<MtdBlockSize-4;wrd++)
 		{
-			ChkSum+=PtrBuf[wrd];
+			ChkSum+=buf[wrd];
 		}
-		ChkSumOrg=buf->Checksum;
+		memcpy(&ChkSumOrg,buf+(0x00600000-4),sizeof(ChkSumOrg));
 
 		//================================================
 		// Load configuration from mtdblock12 (Factory default)
@@ -560,10 +559,10 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
 				sleep(5);
 				system("reboot -f");
 	    	}
-	    	memset(buf, 0, sizeof(struct SysConfigData));
-   			wrd=read(fd, buf,sizeof(struct SysConfigData));
+	    	memset(buf, 0, MtdBlockSize);
+   			wrd=read(fd, buf,MtdBlockSize);
     		close(fd);
-			if(wrd!=sizeof(struct SysConfigData))
+			if(wrd<MtdBlockSize)
 			{
 				free(buf);
 
@@ -578,18 +577,17 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
 				sleep(5);
 				system("reboot -f");
 			}
-			PtrBuf=(unsigned char *)buf;
 			ChkSum=0;
-			for(wrd=0;wrd<(sizeof(struct SysConfigData)-4);wrd++)
+			for(wrd=0;wrd<MtdBlockSize-4;wrd++)
 			{
-				ChkSum+=PtrBuf[wrd];
+				ChkSum+=buf[wrd];
 			}
-			ChkSumOrg=buf->Checksum;
+			memcpy(&ChkSumOrg,buf+(0x00600000-4),sizeof(ChkSumOrg));
 			if(ChkSum!=ChkSumOrg)
 			{
 				DEBUG_WARN("factory default  SysConfigData checksum NG, restore factory default\r\n");
-
-				system("cd /root;./Module_FactoryConfig");
+				free(buf);
+				system("cd /root;./Module_FactoryConfig -m");
 				system("sync");
 				sleep(5);
 				system("reboot -f");
@@ -602,7 +600,7 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
 	}
 
 	//load OK
-	memcpy((struct SysConfigData *)ptr,(struct SysConfigData *)buf,sizeof(struct SysConfigData));
+	memcpy((struct SysConfigData *)ptr,buf,sizeof(struct SysConfigData));
 	free(buf);
 
 	DEBUG_INFO("Load SysConfigData OK\r\n");
@@ -616,6 +614,7 @@ void InitEthernet()
 	char tmpbuf[256];
 	//unsigned int address;
 
+	DEBUG_INFO("11111111111111111111");
 	//Init Eth0 for internet
 	if(isInterfaceUp("eth0")==PASS)
 	{
@@ -629,7 +628,7 @@ void InitEthernet()
 		ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthGatewayAddress);
 		system(tmpbuf);
 	}
-
+	DEBUG_INFO("2222222222222222");
 	if(isInterfaceUp("eth1")==PASS)
 	{
 		//Init Eth1 for administrator tool
@@ -639,7 +638,7 @@ void InitEthernet()
 		ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthSubmaskAddress);
 		system(tmpbuf);
 	}
-
+	DEBUG_INFO("3333333333333333333333");
 
     //Run DHCP client if enabled
 	system("killall udhcpc");
@@ -686,51 +685,60 @@ int StoreUsrConfigData(struct SysConfigData *UsrData)
 	int result = PASS;
 	int fd,wrd;
 	unsigned int i,Chk;
-	unsigned char *ptr;
+	unsigned char *ptr, *BufTmp;
 
 	Chk=0;
 	ptr=(unsigned char *)UsrData;
-	for(i=0;i<sizeof(struct SysConfigData)-4;i++)
-	{
-		Chk+=*(ptr+i);
-	}
-	UsrData->Checksum=Chk;
-
-	fd = open("/dev/mtdblock10", O_RDWR);
-	if (fd < 0)
+	if((BufTmp=malloc(MtdBlockSize))!=NULL)
 	{
-
-		DEBUG_ERROR("open /dev/mtdblock10 NG\r\n");
-
-		result = FAIL;
-	}
-   	wrd=write(fd, UsrData, sizeof(struct SysConfigData));
-	close(fd);
-	if(wrd!=(sizeof(struct SysConfigData)))
-	{
-
-    	DEBUG_ERROR("write /dev/mtdblock10 NG\r\n");
-
-    	result = FAIL;
+		memset(BufTmp,0,MtdBlockSize);
+		memcpy(BufTmp,ptr,sizeof(struct SysConfigData));
+		for(i=0;i<MtdBlockSize-4;i++)
+			Chk+=*(BufTmp+i);
+		memcpy(	BufTmp+MtdBlockSize-4,&Chk,4);
+		fd = open("/dev/mtdblock10", O_RDWR);
+		if (fd>0)
+		{
+			wrd=write(fd, BufTmp, MtdBlockSize);
+			close(fd);
+			if(wrd>=MtdBlockSize)
+			{
+				fd = open("/dev/mtdblock11", O_RDWR);
+				if (fd>0)
+				{
+					wrd=write(fd, BufTmp, MtdBlockSize);
+    					close(fd);
+				   	if(wrd<MtdBlockSize)
+					{
+						DEBUG_ERROR("write /dev/mtdblock11(backup) NG\r\n");
+				   		result = FAIL;
+					}
+				}
+				else
+				{
+					DEBUG_ERROR("open /dev/mtdblock11(backup) NG\r\n");
+					result = FAIL;
+				}
+			}
+			else
+			{
+		    		DEBUG_ERROR("write /dev/mtdblock10 NG\r\n");
+		    		result = FAIL;
+			}
+		}
+		else
+		{
+			DEBUG_ERROR("open /dev/mtdblock10 NG\r\n");
+			result = FAIL;
+		}
 	}
-
-	fd = open("/dev/mtdblock11", O_RDWR);
-	if (fd < 0)
-	{
-
-		DEBUG_ERROR("open /dev/mtdblock11(backup) NG\r\n");
-
-		result = FAIL;
-    }
-    wrd=write(fd, UsrData, sizeof(struct SysConfigData));
-    close(fd);
-   	if(wrd!=(sizeof(struct SysConfigData)))
+	else
 	{
-
-   		DEBUG_ERROR("write /dev/mtdblock11(backup) NG\r\n");
-
-   		result = FAIL;
+		DEBUG_ERROR("alloc BlockSize NG\r\n");
+    		result = FAIL;
 	}
+	if(BufTmp!=NULL)
+		free(BufTmp);
 
 	return result;
 }
@@ -849,23 +857,10 @@ void get_firmware_version(unsigned char gun_index)
 	sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuHwRev, "REV.XXXXXXX");
 
 	// Get CSU boot loader version
-	sprintf(cmd, "/usr/bin/strings /dev/mtdblock1 |grep U-Boot");
-	fp = popen(cmd, "r");
-	if(fp == NULL)
-		sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuBootLoadFwRev, "Unknown version");
-	else
-	{
-		while(fgets(buf, sizeof(buf), fp) != NULL)
-		{
-			if(strstr(buf, "U-Boot") > 0)
-			{
-				strcpy((char*)ShmSysConfigAndInfo->SysInfo.CsuBootLoadFwRev, buf);
-			}
-		}
-	}
+	memcpy(ShmSysConfigAndInfo->SysInfo.CsuBootLoadFwRev, ShmSysConfigAndInfo->SysConfig.CsuBootLoadFwRev, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.CsuBootLoadFwRev));
 
 	// Get CSU kernel version
-	sprintf(cmd, "/bin/uname -rv");
+	sprintf(cmd, "/bin/uname -r");
 	fp = popen(cmd, "r");
 	if(fp == NULL)
 		sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuKernelFwRev, "Unknown version");
@@ -890,6 +885,7 @@ void get_firmware_version(unsigned char gun_index)
 	DEBUG_INFO("CSU MCU-%2d firmware version: %s\r\n", gun_index, ShmCharger->gun_info[gun_index].ver.Version_FW);
 }
 
+
 //===============================================
 // Upgrade firmware
 //===============================================
@@ -1286,6 +1282,8 @@ int InitRfidPort()
 }
 
 
+
+
 //===============================================
 // Transfer RFID load data to string
 //===============================================

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


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


BIN
EVSE/rootfs/root/WebService