|
@@ -145,6 +145,7 @@ int StoreLogMsg(const char *fmt, ...)
|
|
|
char buffer[4096];
|
|
|
time_t CurrentTime;
|
|
|
struct tm *tm;
|
|
|
+ struct timeval tv;
|
|
|
va_list args;
|
|
|
|
|
|
va_start(args, fmt);
|
|
@@ -154,11 +155,12 @@ int StoreLogMsg(const char *fmt, ...)
|
|
|
memset(Buf,0,sizeof(Buf));
|
|
|
CurrentTime = time(NULL);
|
|
|
tm=localtime(&CurrentTime);
|
|
|
+ gettimeofday(&tv, NULL); // get microseconds, 10^-6
|
|
|
|
|
|
if((ShmSysConfigAndInfo->SysConfig.ModelName != NULL) && (ShmSysConfigAndInfo->SysConfig.SerialNumber != NULL) && (strlen((char*)ShmSysConfigAndInfo->SysConfig.ModelName) >= 14))
|
|
|
{
|
|
|
- sprintf(Buf,"echo -n \"[%04d.%02d.%02d %02d:%02d:%02d] - %s\" >> /Storage/SystemLog/[%04d.%02d]%s_%s_SystemLog",
|
|
|
- tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,
|
|
|
+ sprintf(Buf,"echo -n \"[%04d.%02d.%02d %02d:%02d:%02d.%06ld]%s\" >> /Storage/SystemLog/[%04d.%02d]%s_%s_SystemLog",
|
|
|
+ tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,tv.tv_usec,
|
|
|
buffer,
|
|
|
tm->tm_year+1900,tm->tm_mon+1,
|
|
|
ShmSysConfigAndInfo->SysConfig.ModelName,
|
|
@@ -166,8 +168,8 @@ int StoreLogMsg(const char *fmt, ...)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sprintf(Buf,"echo -n \"[%04d.%02d.%02d %02d:%02d:%02d] - %s\" >> /Storage/SystemLog/[%04d.%02d]SystemLog",
|
|
|
- tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,
|
|
|
+ sprintf(Buf,"echo -n \"[%04d.%02d.%02d %02d:%02d:%02d.%06ld]%s\" >> /Storage/SystemLog/[%04d.%02d]SystemLog",
|
|
|
+ tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,tv.tv_usec,
|
|
|
buffer,
|
|
|
tm->tm_year+1900,tm->tm_mon+1);
|
|
|
}
|
|
@@ -177,7 +179,7 @@ int StoreLogMsg(const char *fmt, ...)
|
|
|
#endif
|
|
|
|
|
|
#ifdef ConsloePrintLog
|
|
|
- printf("[%04d.%02d.%02d %02d:%02d:%02d] - %s", tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec, buffer);
|
|
|
+ printf("[%04d.%02d.%02d %02d:%02d:%02d.%06ld]%s", tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,tv.tv_usec, buffer);
|
|
|
#endif
|
|
|
|
|
|
return rc;
|
|
@@ -455,7 +457,7 @@ int DB_Open(sqlite3 *db)
|
|
|
if(sqlite3_open(DB_FILE, &db))
|
|
|
{
|
|
|
result = FAIL;
|
|
|
- DEBUG_INFO( "Can't open database: %s\n", sqlite3_errmsg(db));
|
|
|
+ DEBUG_ERROR( "Can't open database: %s\n", sqlite3_errmsg(db));
|
|
|
sqlite3_close(db);
|
|
|
}
|
|
|
else
|
|
@@ -465,7 +467,7 @@ int DB_Open(sqlite3 *db)
|
|
|
if (sqlite3_exec(db, createRecordSql, 0, 0, &errMsg) != SQLITE_OK)
|
|
|
{
|
|
|
result = FAIL;
|
|
|
- DEBUG_INFO( "Create local charging record table error message: %s\n", errMsg);
|
|
|
+ DEBUG_ERROR( "Create local charging record table error message: %s\n", errMsg);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -475,7 +477,7 @@ int DB_Open(sqlite3 *db)
|
|
|
if (sqlite3_exec(db, createCfgSql, 0, 0, &errMsg) != SQLITE_OK)
|
|
|
{
|
|
|
result = FAIL;
|
|
|
- DEBUG_INFO( "Create local config table error message: %s\n", errMsg);
|
|
|
+ DEBUG_ERROR( "Create local config table error message: %s\n", errMsg);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -495,17 +497,17 @@ int DB_Insert_Record(sqlite3 *db, int gun_index)
|
|
|
char sqlStr[1024];
|
|
|
|
|
|
sprintf(sqlStr, "insert into charging_record(reservationId, transactionId, startMethod, userId, dateTimeStart, dateTimeStop, socStart, socStop, chargeEnergy, stopReason) "
|
|
|
- "values('%d', '%d', '%d', '%s', '%s', '%s', '%d', '%d', '%f', '%s');",
|
|
|
- ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].ReservationId,
|
|
|
- ShmOCPP16Data->StartTransaction[gun_index].ResponseTransactionId,
|
|
|
- ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod,
|
|
|
- ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartUserId,
|
|
|
- ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartDateTime,
|
|
|
- ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StopDateTime,
|
|
|
- ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].EvBatterySoc,
|
|
|
- ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].EvBatterySoc,
|
|
|
- ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PresentChargedEnergy,
|
|
|
- ShmOCPP16Data->StopTransaction[gun_index].StopReason);
|
|
|
+ "values('%d', '%d', '%d', '%s', '%s', '%s', '%d', '%d', '%f', '%s');",
|
|
|
+ ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].ReservationId,
|
|
|
+ ShmOCPP16Data->StartTransaction[gun_index].ResponseTransactionId,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartUserId,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartDateTime,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StopDateTime,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].EvBatterySoc,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].EvBatterySoc,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PresentChargedEnergy,
|
|
|
+ ShmOCPP16Data->StopTransaction[gun_index].StopReason);
|
|
|
|
|
|
if(sqlite3_open(DB_FILE, &db))
|
|
|
{
|
|
@@ -613,7 +615,7 @@ int DB_Get_Operactive(sqlite3 *db, uint8_t gun_index)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- DEBUG_INFO("Query connector-%d fail, set default value to operactive.\n", gun_index);
|
|
|
+ DEBUG_INFO("Query connector-%d fail, default value as operactive.\n", gun_index);
|
|
|
}
|
|
|
|
|
|
sqlite3_free_table(rs);
|
|
@@ -704,7 +706,8 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
|
|
|
//================================================
|
|
|
// Load configuration from mtdblock10
|
|
|
//================================================
|
|
|
- fd = open("/dev/mtdblock10", O_RDWR);
|
|
|
+ system("nanddump /dev/mtd10 -f /mnt/EvseConfig.bin");
|
|
|
+ fd = open("/mnt/EvseConfig.bin", O_RDWR);
|
|
|
if (fd < 0)
|
|
|
{
|
|
|
free(buf);
|
|
@@ -750,8 +753,8 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
|
|
|
if(ChkSum!=ChkSumOrg)
|
|
|
{
|
|
|
DEBUG_ERROR("Primary SysConfigData checksum NG, read backup\n");
|
|
|
-
|
|
|
- fd = open("/dev/mtdblock11", O_RDWR);
|
|
|
+ system("nanddump /dev/mtd11 -f /mnt/EvseConfig.bin");
|
|
|
+ fd = open("/mnt/EvseConfig", O_RDWR);
|
|
|
if (fd < 0)
|
|
|
{
|
|
|
free(buf);
|
|
@@ -798,8 +801,8 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
|
|
|
if(ChkSum!=ChkSumOrg)
|
|
|
{
|
|
|
DEBUG_WARN("backup SysConfigData checksum NG, read Factory default\n");
|
|
|
-
|
|
|
- fd = open("/dev/mtdblock12", O_RDWR);
|
|
|
+ system("nanddump /dev/mtd12 -f /mnt/EvseConfig.bin");
|
|
|
+ fd = open("/mnt/EvseConfig.bin", O_RDWR);
|
|
|
if (fd < 0)
|
|
|
{
|
|
|
DEBUG_ERROR("open mtdblock12 (Factory default) NG,rebooting..\n");
|
|
@@ -842,6 +845,7 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
|
|
|
DEBUG_WARN("factory default SysConfigData checksum NG, restore factory default\n");
|
|
|
free(buf);
|
|
|
system("cd /root;./Module_FactoryConfig -m");
|
|
|
+ system("rm -f /Storage/OCPP/OCPPConfiguration");
|
|
|
system("sync");
|
|
|
sleep(5);
|
|
|
system("reboot -f");
|
|
@@ -857,6 +861,7 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
|
|
|
memcpy((struct SysConfigData *)ptr,buf,sizeof(struct SysConfigData));
|
|
|
free(buf);
|
|
|
|
|
|
+ system("rm -f /mnt/EvseConfig.bin");
|
|
|
DEBUG_INFO("Load SysConfigData OK\n");
|
|
|
|
|
|
return PASS;
|
|
@@ -877,49 +882,47 @@ int StoreUsrConfigData(struct SysConfigData *UsrData)
|
|
|
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)
|
|
|
+ memcpy(BufTmp+MtdBlockSize-4, &Chk, 4);
|
|
|
+
|
|
|
+ // Output configuration to file.
|
|
|
+ fd = open("/mnt/EvseConfig.bin", O_RDWR|O_CREAT);
|
|
|
+ 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\n");
|
|
|
- result = FAIL;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DEBUG_ERROR("open /dev/mtdblock11(backup) NG\n");
|
|
|
- result = FAIL;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DEBUG_ERROR("write /dev/mtdblock10 NG\n");
|
|
|
- result = FAIL;
|
|
|
- }
|
|
|
+ DEBUG_ERROR("open /mnt/EvseConfig.bin NG\n");
|
|
|
+
|
|
|
+ free(BufTmp);
|
|
|
+ return 0;
|
|
|
}
|
|
|
- else
|
|
|
+ wrd=write(fd, BufTmp, MtdBlockSize);
|
|
|
+ close(fd);
|
|
|
+ if(wrd<MtdBlockSize)
|
|
|
{
|
|
|
- DEBUG_ERROR("open /dev/mtdblock10 NG\n");
|
|
|
- result = FAIL;
|
|
|
+ DEBUG_ERROR("write /mnt/EvseConfig.bin NG\n");
|
|
|
+
|
|
|
+ free(BufTmp);
|
|
|
+ return 0;
|
|
|
}
|
|
|
+ DEBUG_INFO("EvseConfig write to file in /mnt OK.\n");
|
|
|
+
|
|
|
+ DEBUG_INFO("Erase /dev/mtd10.\n");
|
|
|
+ runShellCmd("flash_erase /dev/mtd10 0 12");
|
|
|
+ DEBUG_INFO("Write /dev/mtd10.\n");
|
|
|
+ runShellCmd("nandwrite -p /dev/mtd10 /mnt/EvseConfig.bin");
|
|
|
+
|
|
|
+ DEBUG_INFO("Erase /dev/mtd11.\n");
|
|
|
+ runShellCmd("flash_erase /dev/mtd11 0 12");
|
|
|
+ DEBUG_INFO("Write /dev/mtd11.\n");
|
|
|
+ runShellCmd("nandwrite -p /dev/mtd11 /mnt/EvseConfig.bin");
|
|
|
+
|
|
|
+ system("rm -f /mnt/EvseConfig.bin");
|
|
|
+ DEBUG_INFO("EvseConfig write to flash OK\n");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- DEBUG_ERROR("alloc BlockSize NG\n");
|
|
|
- result = FAIL;
|
|
|
+ DEBUG_ERROR("alloc BlockSize NG\r\n");
|
|
|
+ result = FAIL;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if(BufTmp!=NULL)
|
|
|
free(BufTmp);
|
|
|
|
|
@@ -937,23 +940,23 @@ void InitEthernet()
|
|
|
if(isInterfaceUp("eth0")==PASS)
|
|
|
{
|
|
|
memset(tmpbuf,0,256);
|
|
|
- sprintf(tmpbuf,"/sbin/ifconfig eth0 %s netmask %s up",
|
|
|
+ sprintf(tmpbuf,"/sbin/ifconfig eth0 %s netmask %s up &",
|
|
|
ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress,
|
|
|
ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthSubmaskAddress);
|
|
|
system(tmpbuf);
|
|
|
memset(tmpbuf,0,256);
|
|
|
- sprintf(tmpbuf,"route add default gw %s eth0 ",
|
|
|
+ sprintf(tmpbuf,"route add default gw %s eth0 &",
|
|
|
ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthGatewayAddress);
|
|
|
system(tmpbuf);
|
|
|
- system("/sbin/ifconfig eth0:1 192.168.201.201 netmask 255.255.255.248 up");
|
|
|
- system("ifconfig lo up");
|
|
|
+ system("/sbin/ifconfig eth0:1 192.168.201.201 netmask 255.255.255.248 up &");
|
|
|
+ system("ifconfig lo up &");
|
|
|
}
|
|
|
|
|
|
if(isInterfaceUp("eth1")==PASS)
|
|
|
{
|
|
|
//Init Eth1 for administrator tool
|
|
|
memset(tmpbuf,0,256);
|
|
|
- sprintf(tmpbuf,"/sbin/ifconfig eth1 %s netmask %s up",
|
|
|
+ sprintf(tmpbuf,"/sbin/ifconfig eth1 %s netmask %s up &",
|
|
|
ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthIpAddress,
|
|
|
ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthSubmaskAddress);
|
|
|
system(tmpbuf);
|
|
@@ -962,8 +965,8 @@ void InitEthernet()
|
|
|
//Run DHCP client if enabled
|
|
|
system("killall udhcpc");
|
|
|
system("rm -rf /etc/resolv.conf");
|
|
|
- system("echo nameserver 8.8.8.8 >> /etc/resolv.conf"); //Google DNS server
|
|
|
- system("echo nameserver 180.76.76.76 >> /etc/resolv.conf"); //Baidu DNS server
|
|
|
+ system("echo nameserver 8.8.8.8 >> /etc/resolv.conf"); //Google DNS server
|
|
|
+ system("echo nameserver 180.76.76.76 >> /etc/resolv.conf"); //Baidu DNS server
|
|
|
|
|
|
if(ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthDhcpClient==0)
|
|
|
{
|
|
@@ -986,7 +989,7 @@ void InitEthernet()
|
|
|
{
|
|
|
DEBUG_ERROR("eth0 not in route, restart eth0.\n");
|
|
|
system("/sbin/ifconfig eth0 down;/sbin/ifconfig eth0 up");
|
|
|
-
|
|
|
+
|
|
|
if((ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthDhcpClient==0))
|
|
|
{
|
|
|
system("pgrep -f \"udhcpc -i eth0\" | xargs kill");
|
|
@@ -994,7 +997,7 @@ void InitEthernet()
|
|
|
system(tmpbuf);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if(isReachableInternet() == PASS)
|
|
|
{
|
|
|
ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet=OFF;
|
|
@@ -1004,14 +1007,14 @@ void InitEthernet()
|
|
|
{
|
|
|
if(cnt_pingDNS_Fail >= 3)
|
|
|
{
|
|
|
- ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet=ON;
|
|
|
+ ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet=ON;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
cnt_pingDNS_Fail++;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if(ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet &&
|
|
|
ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi &&
|
|
|
ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi &&
|
|
@@ -1023,19 +1026,19 @@ void InitEthernet()
|
|
|
{
|
|
|
ShmSysConfigAndInfo->SysInfo.InternetConn = ON;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
//============================================================
|
|
|
- // Priority for internet 0 : First / 1 : Second / 2: Third
|
|
|
+ // Priority for internet 0 : First / 1 : Second / 2: Third
|
|
|
//============================================================
|
|
|
if(!ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet)
|
|
|
{
|
|
|
system("/sbin/ifmetric eth0 0");
|
|
|
-
|
|
|
+
|
|
|
if((ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W') || (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
|
|
|
{
|
|
|
system("/sbin/ifmetric mlan0 1");
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if((ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T') || (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
|
|
|
{
|
|
|
system("/sbin/ifmetric ppp0 2");
|
|
@@ -1048,7 +1051,7 @@ void InitEthernet()
|
|
|
system("/sbin/ifmetric eth0 1");
|
|
|
system("/sbin/ifmetric mlan0 0");
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if((ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T') || (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
|
|
|
{
|
|
|
system("/sbin/ifmetric ppp0 2");
|
|
@@ -1060,7 +1063,7 @@ void InitEthernet()
|
|
|
{
|
|
|
system("/sbin/ifmetric mlan0 2");
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if((ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T') || (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
|
|
|
{
|
|
|
system("/sbin/ifmetric eth0 1");
|
|
@@ -1086,17 +1089,12 @@ int SpawnTask()
|
|
|
system ("pkill Module_Speaker");
|
|
|
system ("pkill Module_ProduceUtils");
|
|
|
|
|
|
- if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T')
|
|
|
+ if((ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T') || (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
|
|
|
{
|
|
|
system("/root/Module_4g &");
|
|
|
}
|
|
|
- else if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W')
|
|
|
- {
|
|
|
- system("/root/Module_Wifi &");
|
|
|
- }
|
|
|
- else if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D')
|
|
|
+ else if((ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W') || (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
|
|
|
{
|
|
|
- system("/root/Module_4g &");
|
|
|
system("/root/Module_Wifi &");
|
|
|
}
|
|
|
|
|
@@ -1129,17 +1127,25 @@ int Initialization()
|
|
|
InitEthernet();
|
|
|
|
|
|
if(DB_Open(localDb) != PASS)
|
|
|
+ {
|
|
|
+ DEBUG_ERROR("Local database initial fail.\n");
|
|
|
result = FAIL;
|
|
|
+ }
|
|
|
|
|
|
for(int gun_index=0;gun_index< AC_QUANTITY;gun_index++)
|
|
|
ShmCharger->gun_info[gun_index].isOperactive = DB_Get_Operactive(localDb, gun_index);
|
|
|
|
|
|
- rfidFd = InitRfidPort();
|
|
|
-
|
|
|
- wtdFd = InitWatchDog();
|
|
|
+ if((rfidFd = InitRfidPort()) == FAIL)
|
|
|
+ {
|
|
|
+ DEBUG_ERROR("RFID port initial fail.\n");
|
|
|
+ result = FAIL;
|
|
|
+ }
|
|
|
|
|
|
- if((wtdFd < 0) || (rfidFd < 0))
|
|
|
+ if((wtdFd = InitWatchDog()) == FAIL)
|
|
|
+ {
|
|
|
+ DEBUG_ERROR("Watchdog initial fail.\n");
|
|
|
result = FAIL;
|
|
|
+ }
|
|
|
|
|
|
if(result == PASS)
|
|
|
DEBUG_INFO("Initialization OK.\n");
|
|
@@ -1259,7 +1265,7 @@ void get_firmware_version(unsigned char gun_index)
|
|
|
{
|
|
|
while(fgets(buf, sizeof(buf), fp) != NULL)
|
|
|
{
|
|
|
- strcpy((char*)ShmSysConfigAndInfo->SysInfo.CsuKernelFwRev, buf);
|
|
|
+ memcpy(ShmSysConfigAndInfo->SysInfo.CsuKernelFwRev, buf, strlen(buf)-1);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1267,7 +1273,7 @@ void get_firmware_version(unsigned char gun_index)
|
|
|
strcpy((char*)ShmSysConfigAndInfo->SysInfo.CsuPrimFwRev, ShmCharger->gun_info[gun_index].ver.Version_FW);
|
|
|
|
|
|
// Get CSU root file system version
|
|
|
- sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "V0.58.00.0000.00");
|
|
|
+ sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "V0.59.00.0000.00");
|
|
|
|
|
|
// Get AC connector type from model name
|
|
|
for(uint8_t idx=0;idx<3;idx++)
|
|
@@ -1346,14 +1352,14 @@ void get_firmware_version(unsigned char gun_index)
|
|
|
memcpy(&ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev[14], &ShmSysConfigAndInfo->SysConfig.ModelName[12], 0x02);
|
|
|
memcpy(&ShmSysConfigAndInfo->SysInfo.CsuPrimFwRev[14], &ShmSysConfigAndInfo->SysConfig.ModelName[12], 0x02);
|
|
|
|
|
|
- DEBUG_INFO("====================================================================\n");
|
|
|
+ DEBUG_INFO("========================================\n");
|
|
|
DEBUG_INFO("Model: %s\n", ShmSysConfigAndInfo->SysConfig.ModelName);
|
|
|
DEBUG_INFO("CSU hardware version: %s\n", ShmSysConfigAndInfo->SysInfo.CsuHwRev);
|
|
|
DEBUG_INFO("CSU boot loader version: %s\n", ShmSysConfigAndInfo->SysInfo.CsuBootLoadFwRev);
|
|
|
DEBUG_INFO("CSU kernel version: %s\n", ShmSysConfigAndInfo->SysInfo.CsuKernelFwRev);
|
|
|
DEBUG_INFO("CSU root file system version: %s\n", ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev);
|
|
|
DEBUG_INFO("CSU MCU-%2d firmware version: %s\n", gun_index, ShmCharger->gun_info[gun_index].ver.Version_FW);
|
|
|
- DEBUG_INFO("====================================================================\n");
|
|
|
+ DEBUG_INFO("========================================\n");
|
|
|
}
|
|
|
|
|
|
//===============================================
|
|
@@ -1774,7 +1780,7 @@ int isReachableInternet()
|
|
|
}
|
|
|
pclose(fp);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -1784,20 +1790,20 @@ int isReachableInternet()
|
|
|
int isRouteFail()
|
|
|
{
|
|
|
int result = YES;
|
|
|
- FILE *fp;
|
|
|
- char buf[512];
|
|
|
-
|
|
|
+ FILE *fp;
|
|
|
+ char buf[512];
|
|
|
+
|
|
|
fp = popen("route -n", "r");
|
|
|
- if(fp != NULL)
|
|
|
+ if(fp != NULL)
|
|
|
{
|
|
|
while(fgets(buf, sizeof(buf), fp) != NULL)
|
|
|
- {
|
|
|
+ {
|
|
|
if(strstr(buf, "eth0") != NULL)
|
|
|
result = NO;
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
pclose(fp);
|
|
|
-
|
|
|
+
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -1993,7 +1999,7 @@ int getEth0MacAddress()
|
|
|
//==========================================
|
|
|
void checkTask()
|
|
|
{
|
|
|
- if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T')
|
|
|
+ if((ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T') || (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
|
|
|
{
|
|
|
if(system("pidof -s Module_4g > /dev/null") != 0)
|
|
|
{
|
|
@@ -2001,22 +2007,9 @@ void checkTask()
|
|
|
system("/root/Module_4g &");
|
|
|
}
|
|
|
}
|
|
|
- else if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W')
|
|
|
- {
|
|
|
- if(system("pidof -s Module_Wifi > /dev/null") != 0)
|
|
|
- {
|
|
|
- DEBUG_INFO("Module_Wifi not running, restart it.\n");
|
|
|
- system("/root/Module_Wifi &");
|
|
|
- }
|
|
|
- }
|
|
|
- else if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D')
|
|
|
+
|
|
|
+ if((ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W') || (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
|
|
|
{
|
|
|
- if(system("pidof -s Module_4g > /dev/null") != 0)
|
|
|
- {
|
|
|
- DEBUG_INFO("Module_4g not running, restart it.\n");
|
|
|
- system("/root/Module_4g &");
|
|
|
- }
|
|
|
-
|
|
|
if(system("pidof -s Module_Wifi > /dev/null") != 0)
|
|
|
{
|
|
|
DEBUG_INFO("Module_Wifi not running, restart it.\n");
|
|
@@ -2380,14 +2373,14 @@ int main(void)
|
|
|
DEBUG_INFO("System ID: %s\n",ShmSysConfigAndInfo->SysConfig.SystemId);
|
|
|
DEBUG_INFO("==========================================\n");
|
|
|
|
|
|
- DEBUG_INFO("========== OCPP BootNotification information ==========\n");
|
|
|
- DEBUG_INFO("OCPP OcppServerURL: %s\n",ShmSysConfigAndInfo->SysConfig.OcppServerURL);
|
|
|
- DEBUG_INFO("OCPP ChargeBoxId: %s\n",ShmSysConfigAndInfo->SysConfig.ChargeBoxId);
|
|
|
- DEBUG_INFO("OCPP ChargePointVendor: %s\n",ShmSysConfigAndInfo->SysConfig.chargePointVendor);
|
|
|
- DEBUG_INFO("OCPP CpFwVersion: %s\n",ShmOCPP16Data->BootNotification.CpFwVersion);
|
|
|
- DEBUG_INFO("OCPP CpMeterSerialNumber: %s\n",ShmOCPP16Data->BootNotification.CpMeterSerialNumber);
|
|
|
- DEBUG_INFO("OCPP CpMeterType: %s\n",ShmOCPP16Data->BootNotification.CpMeterType);
|
|
|
- DEBUG_INFO("=======================================================\n");
|
|
|
+ DEBUG_INFO("=== OCPP BootNotification information ====\n");
|
|
|
+ DEBUG_INFO("OcppServerURL: %s\n",ShmSysConfigAndInfo->SysConfig.OcppServerURL);
|
|
|
+ DEBUG_INFO("ChargeBoxId: %s\n",ShmSysConfigAndInfo->SysConfig.ChargeBoxId);
|
|
|
+ DEBUG_INFO("ChargePointVendor: %s\n",ShmSysConfigAndInfo->SysConfig.chargePointVendor);
|
|
|
+ DEBUG_INFO("CpFwVersion: %s\n",ShmOCPP16Data->BootNotification.CpFwVersion);
|
|
|
+ DEBUG_INFO("CpMeterSerialNumber: %s\n",ShmOCPP16Data->BootNotification.CpMeterSerialNumber);
|
|
|
+ DEBUG_INFO("CpMeterType: %s\n",ShmOCPP16Data->BootNotification.CpMeterType);
|
|
|
+ DEBUG_INFO("==========================================\n");
|
|
|
|
|
|
DEBUG_INFO("========== Set Wifi information ==========\n");
|
|
|
DEBUG_INFO("Wifi mode: %d\n", ShmSysConfigAndInfo->SysConfig.AthInterface.WifiMode);
|
|
@@ -2806,7 +2799,7 @@ int main(void)
|
|
|
{
|
|
|
DEBUG_INFO("Should be remote stop charger... \n");
|
|
|
ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -2976,7 +2969,7 @@ int main(void)
|
|
|
{
|
|
|
ShmCharger->gun_info[gun_index].targetCurrent = ShmCharger->gun_info[gun_index].primaryMcuState.rating_current;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// Determine max charging current to MCU
|
|
|
if(ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent == 0)
|
|
|
{
|
|
@@ -3150,11 +3143,11 @@ int main(void)
|
|
|
{
|
|
|
setLedMotion(gun_index, LED_ACTION_STOP);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if(ShmCharger->gun_info[gun_index].rfidReq)
|
|
|
{
|
|
|
DEBUG_INFO("Certified in terminating mode... \n");
|
|
|
-
|
|
|
+
|
|
|
// If RFID SN different with start user, it need to authorize ID
|
|
|
if((ShmCharger->gun_info[gun_index].rfidReq == ON) && !isMatchStartUser(gun_index))
|
|
|
{
|
|
@@ -3203,7 +3196,7 @@ int main(void)
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
DEBUG_INFO("End request User Id : %s... \n", ShmSysConfigAndInfo->SysConfig.UserId);
|
|
|
DEBUG_INFO("Start method : %d... \n ", ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod);
|
|
|
|
|
@@ -3246,7 +3239,7 @@ int main(void)
|
|
|
{
|
|
|
DEBUG_INFO("Should be remote stop charger... \n");
|
|
|
ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -3278,7 +3271,7 @@ int main(void)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_C) &&
|
|
|
(ShmCharger->gun_info[gun_index].rfidReq != ON) &&
|
|
|
(ShmCharger->gun_info[gun_index].bleConfigData.isRequestStop != ON) &&
|
|
@@ -3346,6 +3339,7 @@ int main(void)
|
|
|
|
|
|
break;
|
|
|
case SYS_MODE_ALARM:
|
|
|
+ setLedMotion(gun_index,LED_ACTION_ALARM);
|
|
|
|
|
|
if((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PreviousSystemStatus == SYS_MODE_CHARGING) ||
|
|
|
(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PreviousSystemStatus == SYS_MODE_TERMINATING))
|
|
@@ -3370,7 +3364,6 @@ int main(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- setLedMotion(gun_index,LED_ACTION_ALARM);
|
|
|
break;
|
|
|
case SYS_MODE_FAULT:
|
|
|
if(isModeChange(gun_index))
|
|
@@ -3587,12 +3580,14 @@ int main(void)
|
|
|
case SYS_MODE_BOOKING:
|
|
|
if(isModeChange(gun_index))
|
|
|
{}
|
|
|
+
|
|
|
break;
|
|
|
case SYS_MODE_DEBUG:
|
|
|
if(isModeChange(gun_index))
|
|
|
{
|
|
|
setLedMotion(gun_index,LED_ACTION_DEBUG);
|
|
|
}
|
|
|
+
|
|
|
break;
|
|
|
}
|
|
|
}
|