|
@@ -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
|
|
|
//===============================================
|