Browse Source

2022-07-08 / ct_chen

Actions:
1. Webservice add web api for tcc
2. set_charging_action.php add RemoteApi for tcc

Files:
1. EVSE/Modularization/Webservice.c
2. EVSE/rootfs/var/www/set_charging_action.php
Wendell 2 years ago
parent
commit
5eb3753397
2 changed files with 3353 additions and 3309 deletions
  1. 3106 3067
      EVSE/Modularization/WebService.c
  2. 247 242
      EVSE/rootfs/var/www/set_charging_action.php

+ 3106 - 3067
EVSE/Modularization/WebService.c

@@ -1,3067 +1,3106 @@
-#include 	<sys/time.h>
-#include 	<sys/timeb.h>
-#include    <sys/types.h>
-#include    <sys/stat.h>
-#include 	<sys/types.h>
-#include 	<sys/ioctl.h>
-#include 	<sys/socket.h>
-#include 	<sys/ipc.h>
-#include 	<sys/shm.h>
-#include 	<sys/shm.h>
-#include 	<sys/mman.h>
-#include 	<linux/wireless.h>
-#include 	<arpa/inet.h>
-#include 	<netinet/in.h>
-
-#include 	<unistd.h>
-#include 	<stdarg.h>
-#include    <stdio.h>
-#include    <stdlib.h>
-#include    <unistd.h>
-#include    <fcntl.h>
-#include    <termios.h>
-#include    <errno.h>
-#include 	<errno.h>
-#include 	<string.h>
-#include	<time.h>
-#include	<ctype.h>
-#include 	<ifaddrs.h>
-#include	<math.h>
-#include	"define.h"
-#include	"json.h"
-#ifdef DO360
-#include	"../Projects/DO360/Apps/Config.h"
-#endif
-
-#define DEBUG_INFO(format, args...) StoreLogMsg("[%s:%d][%s][Info] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
-#define DEBUG_WARN(format, args...) StoreLogMsg("[%s:%d][%s][Warn] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
-#define DEBUG_ERROR(format, args...) StoreLogMsg("[%s:%d][%s][Error] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
-
-#define Debug
-#define SystemLogMessage
-#define ARRAY_SIZE(A)		(sizeof(A) / sizeof(A[0]))
-#define PASS				1
-#define FAIL				-1
-
-#define MtdBlockSize 0x300000
-
-struct SysConfigAndInfo		*ShmSysConfigAndInfo;
-struct StatusCodeData		*ShmStatusCodeData;
-struct CHAdeMOData			*ShmCHAdeMOData;
-struct GBTData				*ShmGBTData;
-struct CcsData				*ShmCcsData;
-struct PsuData 				*ShmPsuData;
-struct PrimaryMcuData		*ShmPrimaryMcuData;
-struct OCPP16Data			*ShmOCPP16Data;
-struct OCPP20Data			*ShmOCPP20Data;
-#ifdef DO360
-ChargerInfoData                 *ShmChargerInfo;
-struct ChargingInfoData 		*_chargingData[4];
-#endif
-void trim(char *s);
-int mystrcmp(char *p1, char *p2);
-void substr(char *dest, const char* src, unsigned int start, unsigned int cnt);
-void split(char **arr, char *str, const char *del);
-
-#ifdef SystemLogMessage
-int StoreLogMsg(const char *fmt, ...) {
-	char Buf[4096 + 256];
-	char buffer[4096];
-	time_t CurrentTime;
-	struct tm *tm;
-	va_list args;
-
-	va_start(args, fmt);
-	int rc = vsnprintf(buffer, sizeof(buffer), fmt, args);
-	va_end(args);
-
-	memset(Buf, 0, sizeof(Buf));
-	CurrentTime = time(NULL);
-	tm = localtime(&CurrentTime);
-	sprintf(Buf,
-			"echo \"[%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, buffer, tm->tm_year + 1900, tm->tm_mon + 1);
-	system(Buf);
-	#ifdef Debug
-	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);
-	#endif
-
-	return rc;
-}
-int WriteLogMsg(const char *fmt, ...) {
-	char Buf[4096 + 256];
-	char buffer[4096];
-	time_t CurrentTime;
-	struct tm *tm;
-	va_list args;
-
-	va_start(args, fmt);
-	int rc = vsnprintf(buffer, sizeof(buffer), fmt, args);
-	va_end(args);
-
-	memset(Buf, 0, sizeof(Buf));
-	CurrentTime = time(NULL);
-	tm = localtime(&CurrentTime);
-	sprintf(Buf,
-			"echo \"[%04d.%02d.%02d %02d:%02d:%02d WebService] - %s\" >> /Storage/SystemLog/[%04d.%02d]WebService_SystemLog",
-			tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour,
-			tm->tm_min, tm->tm_sec, buffer, tm->tm_year + 1900, tm->tm_mon + 1);
-	system(Buf);
-
-	return rc;
-}
-#endif
-
-int runShellCmd(const char*cmd)
-{
-	int result = FAIL;
-	char buf[256];
-	FILE *fp;
-
-	fp = popen(cmd, "r");
-	if(fp != NULL)
-	{
-		while(fgets(buf, sizeof(buf), fp) != NULL)
-		{
-			DEBUG_INFO("%s\n", buf);
-		}
-
-		result = PASS;
-	}
-	pclose(fp);
-
-	return result;
-}
-
-int DiffTimeb(struct timeb ST, struct timeb ET) {
-	//return milli-second
-	unsigned int StartTime, StopTime;
-
-	StartTime = (unsigned int) ST.time;
-	StopTime = (unsigned int) ET.time;
-	return (StopTime - StartTime) * 1000 + ET.millitm - ST.millitm;
-}
-
-//=================================
-// Common routine
-//=================================
-void trim(char *s) {
-	int i = 0, j, k, l = 0;
-
-	while ((s[i] == ' ') || (s[i] == '\t') || (s[i] == '\n'))
-		i++;
-
-	j = strlen(s) - 1;
-	while ((s[j] == ' ') || (s[j] == '\t') || (s[j] == '\n'))
-		j--;
-
-	if (i == 0 && j == strlen(s) - 1) {
-	} else if (i == 0)
-		s[j + 1] = '\0';
-	else {
-		for (k = i; k <= j; k++)
-			s[l++] = s[k];
-		s[l] = '\0';
-	}
-}
-
-int mystrcmp(char *p1, char *p2) {
-	while (*p1 == *p2) {
-		if (*p1 == '\0' || *p2 == '\0')
-			break;
-		p1++;
-		p2++;
-	}
-	if (*p1 == '\0' && *p2 == '\0')
-		return (PASS);
-	else
-		return (FAIL);
-}
-
-void substr(char *dest, const char* src, unsigned int start, unsigned int cnt) {
-	strncpy(dest, src + start, cnt);
-	dest[cnt] = 0;
-}
-
-void split(char **arr, char *str, const char *del) {
-	char *s = strtok(str, del);
-
-	while (s != NULL) {
-		*arr++ = s;
-		s = strtok(NULL, del);
-	}
-}
-
-int ConnectorType(char* connector){
-	int result;
-	if(strcmp(connector, "0") == 0){
-		result= 0;
-	}
-	else if(strcmp(connector, "U") == 0 || strcmp(connector, "V") == 0 || strcmp(connector, "E") == 0 || strcmp(connector, "F") == 0 || strcmp(connector, "T") == 0 || strcmp(connector, "D") == 0 || strcmp(connector, "M") == 0 || strcmp(connector, "N") == 0 || strcmp(connector, "P") == 0 || strcmp(connector, "R") == 0 || strcmp(connector, "Y") == 0 || strcmp(connector, "Z") == 0){
-		result= 1;//CCS
-	}
-	else if(strcmp(connector, "G") == 0 || strcmp(connector, "B") == 0){
-		result= 2;//GB
-	}
-	else if(strcmp(connector, "J") == 0 || strcmp(connector, "K") == 0 || strcmp(connector, "L") == 0 || strcmp(connector, "S") == 0){
-		result= 3;//CHAdeMO
-	}
-	else if(strcmp(connector, "1") == 0 || strcmp(connector, "2") == 0 || strcmp(connector, "3") == 0 || strcmp(connector, "4") == 0 || strcmp(connector, "5") == 0 || strcmp(connector, "6") == 0 || strcmp(connector, "7") == 0 || strcmp(connector, "8") == 0){
-		result= 4;//AC
-	}
-	else{
-		result= 0;
-	}
-	return result;
-}
-
-int ModelType(char* type,char* network){
-	int result=0;
-	if(strcmp(type, "A") == 0){
-		if(strcmp(network, "0") == 0 || strcmp(network, "R") == 0 || strcmp(network, "B") == 0){
-			result=0;
-		}
-		else if(strcmp(network, "E") == 0 || strcmp(network, "W") == 0 || strcmp(network, "T") == 0 || strcmp(network, "U") == 0){
-			result=1;
-		}
-	}
-	else if(strcmp(type, "D") == 0){
-		result=2;
-	}
-	return result;
-}
-// 四捨五入 取到 小數點第 2 位 
-float rounding(float a) 
-{
-    return (int)(a*100+0.5)/100.0;
-}
-//==========================================
-// Init all share memory
-//==========================================
-int InitShareMemory() {
-	int result = PASS;
-	int MeterSMId;
-
-	//creat ShmSysConfigAndInfo
-	if ((MeterSMId = shmget(ShmSysConfigAndInfoKey,
-			sizeof(struct SysConfigAndInfo), 0777)) < 0) {
-			printf("%s\n","InitShareMemory Error");
-	#ifdef SystemLogMessage
-		DEBUG_ERROR("shmget ShmSysConfigAndInfo NG\n");
-	#endif
-		result = FAIL;
-	} else if ((ShmSysConfigAndInfo = shmat(MeterSMId, NULL, 0))
-			== (void *) -1) {
-	#ifdef SystemLogMessage
-		DEBUG_ERROR("shmat ShmSysConfigAndInfo NG\n");
-	#endif
-		result = FAIL;
-	} else {
-	}
-
-	//creat ShmStatusCodeData
-	if ((MeterSMId = shmget(ShmStatusCodeKey, sizeof(struct StatusCodeData),
-			0777)) < 0) {
-	#ifdef SystemLogMessage
-		DEBUG_ERROR("shmget ShmStatusCodeData NG\n");
-	#endif
-		result = FAIL;
-	} else if ((ShmStatusCodeData = shmat(MeterSMId, NULL, 0)) == (void *) -1) {
-	#ifdef SystemLogMessage
-		DEBUG_ERROR("shmat ShmStatusCodeData NG\n");
-	#endif
-		result = FAIL;
-	} else {
-	}
-
-	//creat ShmPsuData
-	if ((MeterSMId = shmget(ShmPsuKey, sizeof(struct PsuData),
-			0777)) < 0) {
-	#ifdef SystemLogMessage
-		DEBUG_ERROR("shmget ShmPsuData NG\n");
-	#endif
-		result = FAIL;
-	} else if ((ShmPsuData = shmat(MeterSMId, NULL, 0)) == (void *) -1) {
-	#ifdef SystemLogMessage
-		DEBUG_ERROR("shmat ShmPsuData NG\n");
-	#endif
-		result = FAIL;
-	} else {
-	}
-
-	//creat ShmPrimaryMcuData
-	if ((MeterSMId = shmget(ShmPrimaryMcuKey, sizeof(struct PrimaryMcuData),
-			0777)) < 0) {
-	#ifdef SystemLogMessage
-		DEBUG_ERROR("shmget ShmPrimaryMcuData NG\n");
-	#endif
-		result = FAIL;
-	} else if ((ShmPrimaryMcuData = shmat(MeterSMId, NULL, 0)) == (void *) -1) {
-	#ifdef SystemLogMessage
-		DEBUG_ERROR("shmat ShmPrimaryMcuData NG\n");
-	#endif
-		result = FAIL;
-	} else {
-	}
-
-   	//creat ShmOCPP16Data
-   	if ((MeterSMId = shmget(ShmOcppModuleKey, sizeof(struct OCPP16Data), 0777)) < 0)
-    {
-
-   		DEBUG_ERROR("shmget ShmOCPP16Data NG\n");
-
-   		result = FAIL;
-	}
-    else if ((ShmOCPP16Data = shmat(MeterSMId, NULL, 0)) == (void *) -1)
-    {
-
-    	DEBUG_ERROR("shmat ShmOCPP16Data NG\n");
-
-    	result = FAIL;
-   	}
-
-   	//creat ShmOCPP20Data
-	if ((MeterSMId = shmget(ShmOcpp20ModuleKey, sizeof(struct OCPP20Data), 0777)) < 0)
-	{
-
-		DEBUG_ERROR("shmget OCPP20Data NG\n");
-
-		result = FAIL;
-	}
-	else if ((ShmOCPP20Data = shmat(MeterSMId, NULL, 0)) == (void *) -1)
-	{
-
-		DEBUG_ERROR("shmat OCPP20Data NG\n");
-
-		result = FAIL;
-	}
-
-#ifdef DO360
-	//creat ShmChargerInfo
-    if ((MeterSMId = shmget(SM_ChargerInfoKey, sizeof(ChargerInfoData), IPC_CREAT | 0777)) < 0)
-    {
-        #ifdef SystemLogMessage
-        DEBUG_ERROR("[main]CreatShareMemory:shmget ChargerInfoData NG");
-        #endif
-        return 0;
-    }
-    else if ((ShmChargerInfo = shmat(MeterSMId, NULL, 0)) == (void *) -1)
-    {
-        #ifdef SystemLogMessage
-        DEBUG_ERROR("[WebService]CreatShareMemory:shmat ChargerInfoData NG");
-        #endif
-        return 0;
-	} else {
-    }
-//    memset(ShmChargerInfo, 0, sizeof(ChargerInfoData));
-#endif
-	return result;
-}
-
-int StoreUsrConfigData(struct SysConfigData *UsrData)
-{
-	int result = PASS;
-	int fd,wrd;
-	unsigned int i,Chk;
-	unsigned char *ptr, *BufTmp;
-
-	Chk=0;
-	ptr=(unsigned char *)UsrData;
-	if((BufTmp=malloc(MtdBlockSize))!=NULL)
-	{
-		memset(BufTmp,0,MtdBlockSize);
-		memcpy(BufTmp,ptr,sizeof(struct SysConfigData));
-		for(i=ARRAY_SIZE(UsrData->CsuBootLoadFwRev);i<MtdBlockSize-4;i++)
-			Chk+=*(BufTmp+i);
-		memcpy(BufTmp+MtdBlockSize-4, &Chk, 4);
-
-		// Output configuration to file.
-		fd = open("/mnt/EvseConfig.bin", O_RDWR|O_CREAT);
-		if (fd < 0)
-		{
-			DEBUG_ERROR("open /mnt/EvseConfig.bin NG\n");
-
-			free(BufTmp);
-			return 0;
-		}
-		wrd=write(fd, BufTmp, MtdBlockSize);
-		close(fd);
-		if(wrd<MtdBlockSize)
-		{
-			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 0");
-		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 0");
-		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\r\n");
-    		result = FAIL;
-	}
-
-	if(BufTmp!=NULL)
-		free(BufTmp);
-
-	return result;
-}
-
-//================================================
-// Main process
-//================================================
-int main(int argc, char *argv[]) {
-	//int InitShMry = 1;
-	if (InitShareMemory() == FAIL) {
-		//InitShMry = 0;
-		#ifdef SystemLogMessage
-		DEBUG_ERROR("InitShareMemory NG\n");
-		#endif
-		if (ShmStatusCodeData != NULL) {
-			ShmStatusCodeData->AlarmCode.AlarmEvents.bits.FailToCreateShareMemory = 1;
-		}
-		sleep(5);
-		return 0;
-	}
-	//web page submit
-	if ((argc == 3) & (strlen(argv[1]) == 1)) {
-		//web page submit system
-		if (strcmp(argv[1], "1") == 0) {
-			struct json_object *jobj = json_tokener_parse(argv[2]);
-			json_object *val_obj = NULL;
-			char *SystemId=NULL;
-			char *SystemDateTime = NULL;
-			int PhaseLossPolicy = 0;
-			int FactoryConfiguration = 0;
-			int AuthorisationMode = 0;
-			int RfidCardNumEndian = 0;
-			int PsuAcInputType = 0;
-			char isAPP = 0;
-			char isQRCode = 0;
-			char isRFID = 0;
-			char QRCodeMadeMode = 0;
-			char *QRCodeContent = NULL;
-			char Intensity = 0;
-			char isAuthrizeByEVCCID = 0;
-			char *DDSystemId1=NULL;
-			int DDFactoryConfiguration1 = 0;
-			int DDAuthorisationMode1 = 0;
-			int DDRfidCardNumEndian1 = 0;
-			char DDisAPP1 = 0;
-			char DDisQRCode1 = 0;
-			char DDisRFID1 = 0;
-			char DDQRCodeMadeMode1 = 0;
-			char *DDQRCodeContent1 = NULL;
-			char DDIntensity1 = 0;
-			char *DDSystemId2=NULL;
-			int DDFactoryConfiguration2 = 0;
-			int DDAuthorisationMode2 = 0;
-			int DDRfidCardNumEndian2 = 0;
-			char DDisAPP2 = 0;
-			char DDisQRCode2 = 0;
-			char DDisRFID2 = 0;
-			char DDQRCodeMadeMode2 = 0;
-			char *DDQRCodeContent2 = NULL;
-			char DDIntensity2 = 0;
-			char *DDSystemId3=NULL;
-			int DDFactoryConfiguration3 = 0;
-			int DDAuthorisationMode3 = 0;
-			int DDRfidCardNumEndian3 = 0;
-			char DDisAPP3 = 0;
-			char DDisQRCode3 = 0;
-			char DDisRFID3 = 0;
-			char DDQRCodeMadeMode3 = 0;
-			char *DDQRCodeContent3 = NULL;
-			char DDIntensity3 = 0;
-			char *DDSystemId4=NULL;
-			int DDFactoryConfiguration4 = 0;
-			int DDAuthorisationMode4 = 0;
-			int DDRfidCardNumEndian4 = 0;
-			char DDisAPP4 = 0;
-			char DDisQRCode4 = 0;
-			char DDisRFID4 = 0;
-			char DDQRCodeMadeMode4 = 0;
-			char *DDQRCodeContent4 = NULL;
-			char DDIntensity4 = 0;
-
-			if( json_object_object_get_ex(jobj, "SystemId", &val_obj) ) {
-				SystemId = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.SystemId,SystemId);
-			}
-			if( json_object_object_get_ex(jobj, "SystemDateTime", &val_obj) ) {
-				SystemDateTime = (char*)json_object_get_string(val_obj);
-				if(strlen(SystemDateTime)>0){
-					char cmd[100];
-					sprintf(cmd,"date -s '%s'",SystemDateTime);
-					if(system(cmd)==0){
-						system("hwclock -w");
-					}
-				}
-			}
-			if( json_object_object_get_ex(jobj, "PhaseLossPolicy", &val_obj) ) {
-				PhaseLossPolicy = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.PhaseLossPolicy = PhaseLossPolicy;
-			}
-			if( json_object_object_get_ex(jobj, "FactoryConfiguration", &val_obj) ) {
-				FactoryConfiguration = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.FactoryConfiguration = FactoryConfiguration;
-			}
-			if( json_object_object_get_ex(jobj, "AuthorisationMode", &val_obj) ) {
-				AuthorisationMode = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.AuthorisationMode = AuthorisationMode;
-			}
-			if( json_object_object_get_ex(jobj, "RfidCardNumEndian", &val_obj) ) {
-				RfidCardNumEndian = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian = RfidCardNumEndian;
-			}
-			if( json_object_object_get_ex(jobj, "PsuAcInputType", &val_obj) ) {
-				PsuAcInputType = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.PsuAcInputType = PsuAcInputType;
-			}
-			if( json_object_object_get_ex(jobj, "isAPP", &val_obj) ) {
-				isAPP = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.isAPP = isAPP;
-			}
-			if( json_object_object_get_ex(jobj, "isQRCode", &val_obj) ) {
-				isQRCode = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.isQRCode = isQRCode;
-			}
-			if( json_object_object_get_ex(jobj, "isRFID", &val_obj) ) {
-				isRFID = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.isRFID = isRFID;
-			}
-			if( json_object_object_get_ex(jobj, "QRCodeMadeMode", &val_obj) ) {
-				QRCodeMadeMode = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.QRCodeMadeMode = QRCodeMadeMode;
-			}
-			if( json_object_object_get_ex(jobj, "QRCodeContent", &val_obj) ) {
-				QRCodeContent = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.QRCodeContent,QRCodeContent);
-			}
-			if( json_object_object_get_ex(jobj, "Intensity", &val_obj) ) {
-				Intensity = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.LedInfo.Intensity = Intensity;
-			}
-			if( json_object_object_get_ex(jobj, "isAuthrizeByEVCCID", &val_obj) ) {
-				isAuthrizeByEVCCID = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.isAuthrizeByEVCCID = isAuthrizeByEVCCID;
-			}
-			if( json_object_object_get_ex(jobj, "DDSystemId1", &val_obj) ) {
-				DDSystemId1 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].SystemId,DDSystemId1);
-			}
-			if( json_object_object_get_ex(jobj, "DDFactoryConfiguration1", &val_obj) ) {
-				DDFactoryConfiguration1 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].FactoryConfiguration = DDFactoryConfiguration1;
-			}
-			if( json_object_object_get_ex(jobj, "DDAuthorisationMode1", &val_obj) ) {
-				DDAuthorisationMode1 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].AuthorisationMode = DDAuthorisationMode1;
-			}
-			if( json_object_object_get_ex(jobj, "DDRfidCardNumEndian1", &val_obj) ) {
-				DDRfidCardNumEndian1 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].RfidCardNumEndian = DDRfidCardNumEndian1;
-			}
-			if( json_object_object_get_ex(jobj, "DDisAPP1", &val_obj) ) {
-				DDisAPP1 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].isAPP = DDisAPP1;
-			}
-			if( json_object_object_get_ex(jobj, "DDisQRCode1", &val_obj) ) {
-				DDisQRCode1 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].isQRCode = DDisQRCode1;
-			}
-			if( json_object_object_get_ex(jobj, "DDisRFID1", &val_obj) ) {
-				DDisRFID1 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].isRFID = DDisRFID1;
-			}
-			if( json_object_object_get_ex(jobj, "DDQRCodeMadeMode1", &val_obj) ) {
-				DDQRCodeMadeMode1 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].QRCodeMadeMode = DDQRCodeMadeMode1;
-			}
-			if( json_object_object_get_ex(jobj, "DDQRCodeContent1", &val_obj) ) {
-				DDQRCodeContent1 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].QRCodeContent,DDQRCodeContent1);
-			}
-			if( json_object_object_get_ex(jobj, "DDIntensity1", &val_obj) ) {
-				DDIntensity1 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].LedInfo.Intensity = DDIntensity1;
-			}
-			if( json_object_object_get_ex(jobj, "DDSystemId2", &val_obj) ) {
-				DDSystemId2 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].SystemId,DDSystemId2);
-			}
-			if( json_object_object_get_ex(jobj, "DDFactoryConfiguration2", &val_obj) ) {
-				DDFactoryConfiguration2 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].FactoryConfiguration = DDFactoryConfiguration2;
-			}
-			if( json_object_object_get_ex(jobj, "DDAuthorisationMode2", &val_obj) ) {
-				DDAuthorisationMode2 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].AuthorisationMode = DDAuthorisationMode2;
-			}
-			if( json_object_object_get_ex(jobj, "DDRfidCardNumEndian2", &val_obj) ) {
-				DDRfidCardNumEndian2 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].RfidCardNumEndian = DDRfidCardNumEndian2;
-			}
-			if( json_object_object_get_ex(jobj, "DDisAPP2", &val_obj) ) {
-				DDisAPP2 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].isAPP = DDisAPP2;
-			}
-			if( json_object_object_get_ex(jobj, "DDisQRCode2", &val_obj) ) {
-				DDisQRCode2 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].isQRCode = DDisQRCode2;
-			}
-			if( json_object_object_get_ex(jobj, "DDisRFID2", &val_obj) ) {
-				DDisRFID2 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].isRFID = DDisRFID2;
-			}
-			if( json_object_object_get_ex(jobj, "DDQRCodeMadeMode2", &val_obj) ) {
-				DDQRCodeMadeMode2 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].QRCodeMadeMode = DDQRCodeMadeMode2;
-			}
-			if( json_object_object_get_ex(jobj, "DDQRCodeContent2", &val_obj) ) {
-				DDQRCodeContent2 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].QRCodeContent,DDQRCodeContent2);
-			}
-			if( json_object_object_get_ex(jobj, "DDIntensity2", &val_obj) ) {
-				DDIntensity2 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].LedInfo.Intensity = DDIntensity2;
-			}
-			if( json_object_object_get_ex(jobj, "DDSystemId3", &val_obj) ) {
-				DDSystemId3 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].SystemId,DDSystemId3);
-			}
-			if( json_object_object_get_ex(jobj, "DDFactoryConfiguration3", &val_obj) ) {
-				DDFactoryConfiguration3 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].FactoryConfiguration = DDFactoryConfiguration3;
-			}
-			if( json_object_object_get_ex(jobj, "DDAuthorisationMode3", &val_obj) ) {
-				DDAuthorisationMode3 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].AuthorisationMode = DDAuthorisationMode3;
-			}
-			if( json_object_object_get_ex(jobj, "DDRfidCardNumEndian3", &val_obj) ) {
-				DDRfidCardNumEndian3 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].RfidCardNumEndian = DDRfidCardNumEndian3;
-			}
-			if( json_object_object_get_ex(jobj, "DDisAPP3", &val_obj) ) {
-				DDisAPP3 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].isAPP = DDisAPP3;
-			}
-			if( json_object_object_get_ex(jobj, "DDisQRCode3", &val_obj) ) {
-				DDisQRCode3 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].isQRCode = DDisQRCode3;
-			}
-			if( json_object_object_get_ex(jobj, "DDisRFID3", &val_obj) ) {
-				DDisRFID3 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].isRFID = DDisRFID3;
-			}
-			if( json_object_object_get_ex(jobj, "DDQRCodeMadeMode3", &val_obj) ) {
-				DDQRCodeMadeMode3 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].QRCodeMadeMode = DDQRCodeMadeMode3;
-			}
-			if( json_object_object_get_ex(jobj, "DDQRCodeContent3", &val_obj) ) {
-				DDQRCodeContent3 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].QRCodeContent,DDQRCodeContent3);
-			}
-			if( json_object_object_get_ex(jobj, "DDIntensity3", &val_obj) ) {
-				DDIntensity3 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].LedInfo.Intensity = DDIntensity3;
-			}
-			if( json_object_object_get_ex(jobj, "DDSystemId4", &val_obj) ) {
-				DDSystemId4 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].SystemId,DDSystemId4);
-			}
-			if( json_object_object_get_ex(jobj, "DDFactoryConfiguration4", &val_obj) ) {
-				DDFactoryConfiguration4 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].FactoryConfiguration = DDFactoryConfiguration4;
-			}
-			if( json_object_object_get_ex(jobj, "DDAuthorisationMode4", &val_obj) ) {
-				DDAuthorisationMode4 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].AuthorisationMode = DDAuthorisationMode4;
-			}
-			if( json_object_object_get_ex(jobj, "DDRfidCardNumEndian4", &val_obj) ) {
-				DDRfidCardNumEndian4 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].RfidCardNumEndian = DDRfidCardNumEndian4;
-			}
-			if( json_object_object_get_ex(jobj, "DDisAPP4", &val_obj) ) {
-				DDisAPP4 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].isAPP = DDisAPP4;
-			}
-			if( json_object_object_get_ex(jobj, "DDisQRCode4", &val_obj) ) {
-				DDisQRCode4 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].isQRCode = DDisQRCode4;
-			}
-			if( json_object_object_get_ex(jobj, "DDisRFID4", &val_obj) ) {
-				DDisRFID4 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].isRFID = DDisRFID4;
-			}
-			if( json_object_object_get_ex(jobj, "DDQRCodeMadeMode4", &val_obj) ) {
-				DDQRCodeMadeMode4 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].QRCodeMadeMode = DDQRCodeMadeMode4;
-			}
-			if( json_object_object_get_ex(jobj, "DDQRCodeContent4", &val_obj) ) {
-				DDQRCodeContent4 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].QRCodeContent,DDQRCodeContent4);
-			}
-			if( json_object_object_get_ex(jobj, "DDIntensity4", &val_obj) ) {
-				DDIntensity4 = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].LedInfo.Intensity = DDIntensity4;
-			}
-		}
-		if (strcmp(argv[1], "2") == 0) {
-			struct json_object *jobj = json_tokener_parse(argv[2]);
-			json_object *val_obj = NULL;
-			int MaxChargingEnergy= 0;
-			int MaxChargingPower = 0;
-			int MaxChargingCurrent = 0;
-			int AcMaxChargingCurrent = 0;
-			int MaxChargingDuration = 0;
-			int MaxChargingSoc = 0;
-			int StopChargingByButton = 0;
-			char *LocalWhiteCard0 = NULL;
-			char *LocalWhiteCard1 = NULL;
-			char *LocalWhiteCard2 = NULL;
-			char *LocalWhiteCard3 = NULL;
-			char *LocalWhiteCard4 = NULL;
-			char *LocalWhiteCard5 = NULL;
-			char *LocalWhiteCard6 = NULL;
-			char *LocalWhiteCard7 = NULL;
-			char *LocalWhiteCard8 = NULL;
-			char *LocalWhiteCard9 = NULL;
-			char isBilling = 0;
-			char Currency = 0;
-			float Fee0 = 0;
-			float Fee1 = 0;
-			float Fee2 = 0;
-			float Fee3 = 0;
-			float Fee4 = 0;
-			float Fee5 = 0;
-			float Fee6 = 0;
-			float Fee7 = 0;
-			float Fee8 = 0;
-			float Fee9 = 0;
-			float Fee10 = 0;
-			float Fee11 = 0;
-			float Fee12 = 0;
-			float Fee13 = 0;
-			float Fee14 = 0;
-			float Fee15 = 0;
-			float Fee16 = 0;
-			float Fee17 = 0;
-			float Fee18 = 0;
-			float Fee19 = 0;
-			float Fee20 = 0;
-			float Fee21 = 0;
-			float Fee22 = 0;
-			float Fee23 = 0;
-
-			if( json_object_object_get_ex(jobj, "MaxChargingEnergy", &val_obj) ) {
-				MaxChargingEnergy = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.MaxChargingEnergy = MaxChargingEnergy;
-			}
-			if( json_object_object_get_ex(jobj, "MaxChargingPower", &val_obj) ) {
-				MaxChargingPower = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.MaxChargingPower = MaxChargingPower;
-			}
-			if( json_object_object_get_ex(jobj, "MaxChargingCurrent", &val_obj) ) {
-				MaxChargingCurrent = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent = MaxChargingCurrent;
-			}
-			if( json_object_object_get_ex(jobj, "AcMaxChargingCurrent", &val_obj) ) {
-				AcMaxChargingCurrent = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.AcMaxChargingCurrent = AcMaxChargingCurrent;
-			}
-			if( json_object_object_get_ex(jobj, "MaxChargingDuration", &val_obj) ) {
-				MaxChargingDuration = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.MaxChargingDuration = MaxChargingDuration;
-			}
-			if( json_object_object_get_ex(jobj, "MaxChargingSoc", &val_obj) ) {
-				MaxChargingSoc = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.MaxChargingSoc = MaxChargingSoc;
-			}
-			if( json_object_object_get_ex(jobj, "StopChargingByButton", &val_obj) ) {
-				StopChargingByButton = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.StopChargingByButton = StopChargingByButton;
-			}
-			if( json_object_object_get_ex(jobj, "LocalWhiteCard0", &val_obj) ) {
-				LocalWhiteCard0 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[0],LocalWhiteCard0);
-			}
-			if( json_object_object_get_ex(jobj, "LocalWhiteCard1", &val_obj) ) {
-				LocalWhiteCard1 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[1],LocalWhiteCard1);
-			}
-			if( json_object_object_get_ex(jobj, "LocalWhiteCard2", &val_obj) ) {
-				LocalWhiteCard2 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[2],LocalWhiteCard2);
-			}
-			if( json_object_object_get_ex(jobj, "LocalWhiteCard3", &val_obj) ) {
-				LocalWhiteCard3 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[3],LocalWhiteCard3);
-			}
-			if( json_object_object_get_ex(jobj, "LocalWhiteCard4", &val_obj) ) {
-				LocalWhiteCard4 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[4],LocalWhiteCard4);
-			}
-			if( json_object_object_get_ex(jobj, "LocalWhiteCard5", &val_obj) ) {
-				LocalWhiteCard5 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[5],LocalWhiteCard5);
-			}
-			if( json_object_object_get_ex(jobj, "LocalWhiteCard6", &val_obj) ) {
-				LocalWhiteCard6 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[6],LocalWhiteCard6);
-			}
-			if( json_object_object_get_ex(jobj, "LocalWhiteCard7", &val_obj) ) {
-				LocalWhiteCard7 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[7],LocalWhiteCard7);
-			}
-			if( json_object_object_get_ex(jobj, "LocalWhiteCard8", &val_obj) ) {
-				LocalWhiteCard8 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[8],LocalWhiteCard8);
-			}
-			if( json_object_object_get_ex(jobj, "LocalWhiteCard9", &val_obj) ) {
-				LocalWhiteCard9 = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[9],LocalWhiteCard9);
-			}
-			if( json_object_object_get_ex(jobj, "isBilling", &val_obj) ) {
-				isBilling = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.isBilling = isBilling;
-			}
-			if( json_object_object_get_ex(jobj, "Currency", &val_obj) ) {
-				Currency = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Currency = Currency;
-			}
-			if( json_object_object_get_ex(jobj, "Fee0", &val_obj) ) {
-				Fee0 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[0] = rounding(Fee0);
-			}
-			if( json_object_object_get_ex(jobj, "Fee1", &val_obj) ) {
-				Fee1 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[1] = rounding(Fee1);
-			}
-			if( json_object_object_get_ex(jobj, "Fee2", &val_obj) ) {
-				Fee2 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[2] = rounding(Fee2);
-			}
-			if( json_object_object_get_ex(jobj, "Fee3", &val_obj) ) {
-				Fee3 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[3] = rounding(Fee3);
-			}
-			if( json_object_object_get_ex(jobj, "Fee4", &val_obj) ) {
-				Fee4 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[4] = rounding(Fee4);
-			}
-			if( json_object_object_get_ex(jobj, "Fee5", &val_obj) ) {
-				Fee5 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[5] = rounding(Fee5);
-			}
-			if( json_object_object_get_ex(jobj, "Fee6", &val_obj) ) {
-				Fee6 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[6] = rounding(Fee6);
-			}
-			if( json_object_object_get_ex(jobj, "Fee7", &val_obj) ) {
-				Fee7 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[7] = rounding(Fee7);
-			}
-			if( json_object_object_get_ex(jobj, "Fee8", &val_obj) ) {
-				Fee8 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[8] = rounding(Fee8);
-			}
-			if( json_object_object_get_ex(jobj, "Fee9", &val_obj) ) {
-				Fee9 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[9] = rounding(Fee9);
-			}
-			if( json_object_object_get_ex(jobj, "Fee10", &val_obj) ) {
-				Fee10 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[10] = rounding(Fee10);
-			}
-			if( json_object_object_get_ex(jobj, "Fee11", &val_obj) ) {
-				Fee11 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[11] = rounding(Fee11);
-			}
-			if( json_object_object_get_ex(jobj, "Fee12", &val_obj) ) {
-				Fee12 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[12] = rounding(Fee12);
-			}
-			if( json_object_object_get_ex(jobj, "Fee13", &val_obj) ) {
-				Fee13 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[13] = rounding(Fee13);
-			}
-			if( json_object_object_get_ex(jobj, "Fee14", &val_obj) ) {
-				Fee14 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[14] = rounding(Fee14);
-			}
-			if( json_object_object_get_ex(jobj, "Fee15", &val_obj) ) {
-				Fee15 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[15] = rounding(Fee15);
-			}
-			if( json_object_object_get_ex(jobj, "Fee16", &val_obj) ) {
-				Fee16 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[16] = rounding(Fee16);
-			}
-			if( json_object_object_get_ex(jobj, "Fee17", &val_obj) ) {
-				Fee17 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[17] = rounding(Fee17);
-			}
-			if( json_object_object_get_ex(jobj, "Fee18", &val_obj) ) {
-				Fee18 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[18] = rounding(Fee18);
-			}
-			if( json_object_object_get_ex(jobj, "Fee19", &val_obj) ) {
-				Fee19 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[19] = rounding(Fee19);
-			}
-			if( json_object_object_get_ex(jobj, "Fee20", &val_obj) ) {
-				Fee20 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[20] = rounding(Fee20);
-			}
-			if( json_object_object_get_ex(jobj, "Fee21", &val_obj) ) {
-				Fee21 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[21] = rounding(Fee21);
-			}
-			if( json_object_object_get_ex(jobj, "Fee22", &val_obj) ) {
-				Fee22 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[22] = rounding(Fee22);
-			}
-			if( json_object_object_get_ex(jobj, "Fee23", &val_obj) ) {
-				Fee23 = json_object_get_double(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[23] = rounding(Fee23);
-			}
-		}
-		if (strcmp(argv[1], "3") == 0) {
-			struct json_object *jobj = json_tokener_parse(argv[2]);
-			json_object *val_obj = NULL;
-			int Eth0DhcpClient=0;
-			char *Eth0IpAddress=NULL;
-			char *Eth0SubmaskAddress=NULL;
-			char *Eth0GatewayAddress=NULL;
-			int WifiMode=0;
-			char *WifiSsid=NULL;
-			char *WifiPassword=NULL;
-			int WifiBroadcastSsid=0;
-			char *WifiTargetBssidMac=NULL;
-			int WifiDhcpServer=0;
-			int WifiDhcpClient=0;
-			char *WifiIpAddress=NULL;
-			char *WifiSubmaskAddress=NULL;
-			char *WifiGatewayAddress=NULL;
-			char *TelcomApn=NULL;
-			char *TelcomChapPapId=NULL;
-			char *TelcomChapPapPwd=NULL;
-			char *TelcomIpAddress=NULL;
-			char TelcomEnabled=0;
-			char TelcomNetworkType=0;
-			char Wcnt=0;
-			char Tcnt=0;
-			if( json_object_object_get_ex(jobj, "Eth0DhcpClient", &val_obj) ) {
-				Eth0DhcpClient = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthDhcpClient=Eth0DhcpClient;
-			}
-			if( json_object_object_get_ex(jobj, "Eth0IpAddress", &val_obj) ) {
-				Eth0IpAddress = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress,Eth0IpAddress);
-			}
-			if( json_object_object_get_ex(jobj, "Eth0SubmaskAddress", &val_obj) ) {
-				Eth0SubmaskAddress = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthSubmaskAddress,Eth0SubmaskAddress);
-			}
-			if( json_object_object_get_ex(jobj, "Eth0GatewayAddress", &val_obj) ) {
-				Eth0GatewayAddress = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthGatewayAddress,Eth0GatewayAddress);
-			}
-			if( json_object_object_get_ex(jobj, "WifiMode", &val_obj) ) {
-				WifiMode = json_object_get_int(val_obj);
-				if(WifiMode!=ShmSysConfigAndInfo->SysConfig.AthInterface.WifiMode) Wcnt++;
-				ShmSysConfigAndInfo->SysConfig.AthInterface.WifiMode=WifiMode;
-			}
-			if( json_object_object_get_ex(jobj, "WifiSsid", &val_obj) ) {
-				WifiSsid = (char*)json_object_get_string(val_obj);
-				if (strcmp(WifiSsid, (char*)ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSsid) != 0) Wcnt++;
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSsid,WifiSsid);
-			}
-			if( json_object_object_get_ex(jobj, "WifiPassword", &val_obj) ) {
-				WifiPassword = (char*)json_object_get_string(val_obj);
-				if (strcmp(WifiSsid, (char*)ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSsid) != 0) Wcnt++;
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiPassword,WifiPassword);
-			}
-			if( json_object_object_get_ex(jobj, "WifiBroadcastSsid", &val_obj) ) {
-				WifiBroadcastSsid = json_object_get_int(val_obj);
-				if(WifiBroadcastSsid!=ShmSysConfigAndInfo->SysConfig.AthInterface.WifiBroadcastSsid) Wcnt++;
-				ShmSysConfigAndInfo->SysConfig.AthInterface.WifiBroadcastSsid=WifiBroadcastSsid;
-			}
-			if( json_object_object_get_ex(jobj, "WifiTargetBssidMac", &val_obj) ) {
-				WifiTargetBssidMac = (char*)json_object_get_string(val_obj);
-				if (strcmp(WifiTargetBssidMac, (char*)ShmSysConfigAndInfo->SysConfig.AthInterface.WifiTargetBssidMac) != 0) Wcnt++;
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiTargetBssidMac,WifiTargetBssidMac);
-			}
-			if( json_object_object_get_ex(jobj, "WifiDhcpServer", &val_obj) ) {
-				WifiDhcpServer = json_object_get_int(val_obj);
-				if(WifiDhcpServer!=ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpServer) Wcnt++;
-				ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpServer=WifiDhcpServer;
-			}
-			if( json_object_object_get_ex(jobj, "WifiDhcpClient", &val_obj) ) {
-				WifiDhcpClient = json_object_get_int(val_obj);
-				if(WifiDhcpClient!=ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpClient) Wcnt++;
-				ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpClient=WifiDhcpClient;
-			}
-			if( json_object_object_get_ex(jobj, "WifiIpAddress", &val_obj) ) {
-				WifiIpAddress = (char*)json_object_get_string(val_obj);
-				if (strcmp(WifiIpAddress, (char*)ShmSysConfigAndInfo->SysConfig.AthInterface.WifiIpAddress) != 0) Wcnt++;
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiIpAddress,WifiIpAddress);
-			}
-			if( json_object_object_get_ex(jobj, "WifiSubmaskAddress", &val_obj) ) {
-				WifiSubmaskAddress = (char*)json_object_get_string(val_obj);
-				if (strcmp(WifiSubmaskAddress, (char*)ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSubmaskAddress) != 0) Wcnt++;
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSubmaskAddress,WifiSubmaskAddress);
-			}
-			if( json_object_object_get_ex(jobj, "WifiGatewayAddress", &val_obj) ) {
-				WifiGatewayAddress = (char*)json_object_get_string(val_obj);
-				if (strcmp(WifiGatewayAddress, (char*)ShmSysConfigAndInfo->SysConfig.AthInterface.WifiGatewayAddress) != 0) Wcnt++;
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiGatewayAddress,WifiGatewayAddress);
-			}
-			if( json_object_object_get_ex(jobj, "TelcomApn", &val_obj) ) {
-				TelcomApn = (char*)json_object_get_string(val_obj);
-				if (strcmp(TelcomApn, (char*)ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomApn) != 0) Tcnt++;
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomApn,TelcomApn);
-			}
-			if( json_object_object_get_ex(jobj, "TelcomChapPapId", &val_obj) ) {
-				TelcomChapPapId = (char*)json_object_get_string(val_obj);
-				if (strcmp(TelcomChapPapId, (char*)ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapId) != 0) Tcnt++;
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapId,TelcomChapPapId);
-			}
-			if( json_object_object_get_ex(jobj, "TelcomChapPapPwd", &val_obj) ) {
-				TelcomChapPapPwd = (char*)json_object_get_string(val_obj);
-				if (strcmp(TelcomChapPapPwd, (char*)ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapPwd) != 0) Tcnt++;
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapPwd,TelcomChapPapPwd);
-			}
-			if( json_object_object_get_ex(jobj, "TelcomIpAddress", &val_obj) ) {
-				TelcomIpAddress = (char*)json_object_get_string(val_obj);
-				if (strcmp(TelcomIpAddress, (char*)ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomIpAddress) != 0) Tcnt++;
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomIpAddress,TelcomIpAddress);
-			}
-			if( json_object_object_get_ex(jobj, "TelcomEnabled", &val_obj) ) {
-				TelcomEnabled = json_object_get_int(val_obj);
-				if(TelcomEnabled!=ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomEnabled) Tcnt++;
-				ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomEnabled=TelcomEnabled;
-			}
-			if( json_object_object_get_ex(jobj, "TelcomNetworkType", &val_obj) ) {
-				TelcomNetworkType = json_object_get_int(val_obj);
-				if(TelcomNetworkType!=ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomNetworkType) Tcnt++;
-				ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomNetworkType=TelcomNetworkType;
-			}
-			if(Wcnt>0){
-				system ("pkill Module_Wifi");
-			}
-			if(Tcnt>0){
-				system ("pkill Module_4g");
-				system ("killall 4GDetection");
-				system ("killall pppd");
-			}
-		}
-		if (strcmp(argv[1], "4") == 0) {
-			struct json_object *jobj = json_tokener_parse(argv[2]);
-			json_object *val_obj = NULL;
-			int BackendConnTimeout=0;
-			int OfflinePolicy=0;
-			int OfflineMaxChargeEnergy=0;
-			int OfflineMaxChargeDuration=0;
-			char *OcppServerURL=NULL;
-			char *ChargeBoxId=NULL;
-			char *chargePointVendor=NULL;
-			int OcppSecurityProfile=0;
-			int MaintainServerSecurityProfile=0;
-			char *OcppSecurityPassword=NULL;
-			char *MaintainServerSecurityPassword=NULL;
-			int isEnableLocalPowerSharging=0;
-			int PowerSharingCapacity=0;
-			char *PowerSharingServerIP=NULL;
-			char *OcppReceiptrURL=NULL;
-			char *MaintainServerURL=NULL;
-			/*for TTIA*/
-			char isEnableTTIA=0;
-			char *server_addr=NULL;
-			int server_port=0;
-			int busVenderId=0;
-			char *EquipmentProvider=NULL;
-			char TransportationCompanyNo=0;
-			char TTIAChargeBoxId=0;
-			char *evseStation=NULL;
-
-			if( json_object_object_get_ex(jobj, "BackendConnTimeout", &val_obj) ) {
-				BackendConnTimeout = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.BackendConnTimeout = BackendConnTimeout;
-			}
-			if( json_object_object_get_ex(jobj, "OfflinePolicy", &val_obj) ) {
-				OfflinePolicy = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.OfflinePolicy = OfflinePolicy;
-			}
-			if( json_object_object_get_ex(jobj, "OfflineMaxChargeEnergy", &val_obj) ) {
-				OfflineMaxChargeEnergy = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.OfflineMaxChargeEnergy = OfflineMaxChargeEnergy;
-			}
-			if( json_object_object_get_ex(jobj, "OfflineMaxChargeDuration", &val_obj) ) {
-				OfflineMaxChargeDuration = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.OfflineMaxChargeDuration = OfflineMaxChargeDuration;
-			}
-			if( json_object_object_get_ex(jobj, "OcppServerURL", &val_obj) ) {
-				OcppServerURL = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,OcppServerURL);
-			}
-			if( json_object_object_get_ex(jobj, "ChargeBoxId", &val_obj) ) {
-				ChargeBoxId = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.ChargeBoxId,ChargeBoxId);
-			}
-			if( json_object_object_get_ex(jobj, "chargePointVendor", &val_obj) ) {
-				chargePointVendor = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.chargePointVendor,chargePointVendor);
-			}
-			if( json_object_object_get_ex(jobj, "OcppSecurityProfile", &val_obj) ) {
-				OcppSecurityProfile = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.OcppSecurityProfile = OcppSecurityProfile;
-			}
-			if( json_object_object_get_ex(jobj, "OcppSecurityPassword", &val_obj) ) {
-				OcppSecurityPassword = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.OcppSecurityPassword,OcppSecurityPassword);
-			}
-			if( json_object_object_get_ex(jobj, "MaintainServerSecurityProfile", &val_obj) ) {
-				MaintainServerSecurityProfile = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.MaintainServerSecurityProfile = MaintainServerSecurityProfile;
-			}
-			if( json_object_object_get_ex(jobj, "MaintainServerSecurityPassword", &val_obj) ) {
-				MaintainServerSecurityPassword = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.MaintainServerSecurityPassword,MaintainServerSecurityPassword);
-			}
-			if( json_object_object_get_ex(jobj, "isEnableLocalPowerSharging", &val_obj) ) {
-				isEnableLocalPowerSharging = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.isEnableLocalPowerSharing = isEnableLocalPowerSharging;
-			}
-			if( json_object_object_get_ex(jobj, "PowerSharingCapacity", &val_obj) ) {
-				PowerSharingCapacity = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.PowerSharingCapacityPower = PowerSharingCapacity;
-			}
-			if( json_object_object_get_ex(jobj, "PowerSharingServerIP", &val_obj) ) {
-				PowerSharingServerIP = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.PowerSharingServerIP,PowerSharingServerIP);
-			}
-			if( json_object_object_get_ex(jobj, "OcppReceiptrURL", &val_obj) ) {
-				OcppReceiptrURL = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.OcppReceiptrURL,OcppReceiptrURL);
-			}
-			if( json_object_object_get_ex(jobj, "MaintainServerURL", &val_obj) ) {
-				MaintainServerURL = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.MaintainServerURL,MaintainServerURL);
-			}
-			/*for TTIA*/
-			if( json_object_object_get_ex(jobj, "isEnableTTIA", &val_obj) ) {
-				isEnableTTIA = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.TTIA_Info.isEnableTTIA = isEnableTTIA;
-			}
-			if( json_object_object_get_ex(jobj, "server_addr", &val_obj) ) {
-				server_addr = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TTIA_Info.server_addr,server_addr);
-			}
-			if( json_object_object_get_ex(jobj, "server_port", &val_obj) ) {
-				server_port = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.TTIA_Info.server_port = server_port;
-			}
-			if( json_object_object_get_ex(jobj, "busVenderId", &val_obj) ) {
-				busVenderId = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.TTIA_Info.busVenderId = busVenderId;
-			}
-			if( json_object_object_get_ex(jobj, "EquipmentProvider", &val_obj) ) {
-				EquipmentProvider = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TTIA_Info.EquipmentProvider,EquipmentProvider);
-			}
-			if( json_object_object_get_ex(jobj, "TransportationCompanyNo", &val_obj) ) {
-				TransportationCompanyNo = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.TTIA_Info.TransportationCompanyNo = TransportationCompanyNo;
-			}
-			if( json_object_object_get_ex(jobj, "TTIAChargeBoxId", &val_obj) ) {
-				TTIAChargeBoxId = json_object_get_int(val_obj);
-				ShmSysConfigAndInfo->SysConfig.TTIA_Info.ChargeBoxId = TTIAChargeBoxId;
-			}
-			if( json_object_object_get_ex(jobj, "evseStation", &val_obj) ) {
-				evseStation = (char*)json_object_get_string(val_obj);
-				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TTIA_Info.evseStation,evseStation);
-			}
-
-		}
-		struct SysConfigData 	SysConfig;
-		memcpy(&SysConfig, &ShmSysConfigAndInfo->SysConfig, sizeof(struct SysConfigData));
-
-		int result = StoreUsrConfigData(&SysConfig);
-		if(result != 1){
-			#ifdef SystemLogMessage
-			StoreLogMsg("[WebService]StoreUsrConfigData: normal NG");
-			#endif
-		}
-		else{
-			#ifdef SystemLogMessage
-			StoreLogMsg("[WebService]StoreUsrConfigData: normal OK");
-			#endif
-		}
-
-		#ifdef SystemLogMessage
-			DEBUG_INFO("WebServiceConfig update OK");
-		#endif
-	}
-
-	if (argc == 2)
-	{	//init share memory for test
-		if (strcmp(argv[1], "aaa") == 0)
-		{
-			//struct SysConfigData 	SysConfig;
-			//system
-			ShmSysConfigAndInfo->SysInfo.DispenserInfo.DispenserQuantity=1;
-			ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity=1;
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.ModelName, "DO0E362001D1P0D");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.SerialNumber, "SerialNumber");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.SystemId, "1234567890");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.SystemDateTime, "2019-12-31 23:59:59");
-			ShmSysConfigAndInfo->SysConfig.AcPhaseCount=1;
-			ShmSysConfigAndInfo->SysConfig.PhaseLossPolicy=0;
-			ShmSysConfigAndInfo->SysInfo.FactoryConfiguration=0;
-			ShmSysConfigAndInfo->SysConfig.AuthorisationMode=0;
-			ShmSysConfigAndInfo->SysConfig.DefaultLanguage=0;
-			ShmSysConfigAndInfo->SysInfo.InputVoltageR=0;
-			ShmSysConfigAndInfo->SysInfo.InputVoltageS=0;
-			ShmSysConfigAndInfo->SysInfo.InputVoltageT=0;
-			ShmSysConfigAndInfo->SysInfo.SystemFanRotaSpeed=0;
-			ShmSysConfigAndInfo->SysInfo.PsuFanRotaSpeed=0;
-			ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian=0;
-			ShmSysConfigAndInfo->SysConfig.RatingCurrent=100;
-			ShmSysConfigAndInfo->SysConfig.PsuAcInputType=0;
-			ShmSysConfigAndInfo->SysInfo.AuxPower5V=0;
-			ShmSysConfigAndInfo->SysInfo.AuxPower12V=0;
-			ShmSysConfigAndInfo->SysInfo.AuxPower24V=0;
-			ShmSysConfigAndInfo->SysInfo.AuxPower48V=0;
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.CsuHwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.CsuBootLoadFwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.CsuKernelFwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.CsuPrimFwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.LcmHwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.LcmFwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.PsuHwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.PsuPrimFwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.PsuSecFwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.AuxPwrHwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.AuxPwrFwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.FanModuleHwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.FanModuleFwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.RelayModuleHwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.RelayModuleFwRev, "");
-			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.TelcomModemFwRev, "");
-			ShmSysConfigAndInfo->SysInfo.SystemAmbientTemp=0;
-			ShmSysConfigAndInfo->SysInfo.SystemCriticalTemp=0;
-			ShmSysConfigAndInfo->SysInfo.CcsConnectorTemp=0;
-			ShmSysConfigAndInfo->SysInfo.PsuAmbientTemp=0;
-			ShmSysConfigAndInfo->SysConfig.AcPlugInTimes=0;
-			ShmSysConfigAndInfo->SysConfig.GbPlugInTimes=0;
-			ShmSysConfigAndInfo->SysConfig.Ccs1PlugInTime=0;
-			ShmSysConfigAndInfo->SysConfig.Ccs2PlugInTimes=0;
-			ShmSysConfigAndInfo->SysConfig.ChademoPlugInTimes=0;
-			// strcpy((char *)&ShmPsuData->PsuVersion[0].FwPrimaryVersion, "DC 9.01");
-			// strcpy((char *)&ShmPsuData->PsuVersion[1].FwPrimaryVersion, "DC 9.02");
-			// strcpy((char *)&ShmPsuData->PsuVersion[0].FwSecondVersion, "PFC 9.02");
-			// strcpy((char *)&ShmPsuData->PsuVersion[1].FwSecondVersion, "PFC 9.03");
-
-			//charging
-			ShmSysConfigAndInfo->SysConfig.MaxChargingEnergy=0;
-			ShmSysConfigAndInfo->SysConfig.MaxChargingPower=0;
-			ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent= 0;
-			ShmSysConfigAndInfo->SysConfig.AcMaxChargingCurrent= 0;
-			ShmSysConfigAndInfo->SysConfig.MaxChargingDuration=0;
-			ShmSysConfigAndInfo->SysConfig.MaxChargingSoc=0;
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[0], "111");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[1], "222");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[2], "333");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[3], "444");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[4], "555");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[5], "666");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[6], "777");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[7], "888");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[8], "999");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[9], "aaa");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.UserId, "UserId");
-			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].PresentChargingVoltage=0;
-			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].PresentChargingCurrent=0;
-			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].PresentChargingPower=0;
-			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].PresentChargedEnergy=0;
-			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].PresentChargedDuration=0;
-			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].RemainChargingDuration=0;
-			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].EvBatteryMaxVoltage=0;
-			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].EvBatterytargetVoltage=0;
-			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].EvBatterySoc=0;
-			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].SystemStatus=1;
-			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].EvBatterytargetCurrent=1;
-			//network
-			ShmSysConfigAndInfo->SysInfo.InternetConn=0;
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.FtpServer,"");
-			ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthDhcpClient=1;
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthMacAddress,"");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress,"192.168.1.10");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthSubmaskAddress,"255.255.255.0");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthGatewayAddress,"192.168.1.1");
-			ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthDhcpClient=1;
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthMacAddress,"");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthIpAddress,"192.168.0.10");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthSubmaskAddress,"255.255.255.0");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthGatewayAddress,"192.168.0.1");
-			ShmSysConfigAndInfo->SysConfig.AthInterface.WifiMode=1;
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSsid,"");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiPassword,"");
-			ShmSysConfigAndInfo->SysConfig.AthInterface.WifiRssi=0;
-			ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpServer=0;
-			ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpClient=0;
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiMacAddress,"");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiIpAddress,"");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSubmaskAddress,"");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiGatewayAddress,"");
-			ShmSysConfigAndInfo->SysConfig.AthInterface.WifiNetworkConn=1;
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomApn,"");
-			ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomRssi=0;
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapId,"");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapPwd,"");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemImei,"");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimImsi,"");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimIccid,"");
-			ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimStatus=0;
-			ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemMode=0;
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomIpAddress,"");
-			//backend
-			ShmSysConfigAndInfo->SysConfig.BackendConnTimeout=300;
-			ShmSysConfigAndInfo->SysConfig.OfflinePolicy=0;
-			ShmSysConfigAndInfo->SysConfig.OfflineMaxChargeEnergy=0;
-			ShmSysConfigAndInfo->SysConfig.OfflineMaxChargeDuration=0;
-			ShmSysConfigAndInfo->SysInfo.OcppConnStatus=0;
-			ShmSysConfigAndInfo->SysInfo.MaintainServerConnStatus=0;
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.ChargeBoxId,"");
-			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.chargePointVendor,"Phihong");
-
-			ShmSysConfigAndInfo->SysInfo.FirmwareUpdate=0;
-			struct SysConfigData 	SysConfig;
-			memcpy(&SysConfig, &ShmSysConfigAndInfo->SysConfig, sizeof(struct SysConfigData));
-			StoreUsrConfigData(&SysConfig);
-
-			// struct PsuModuleVer 	PsuData;
-			// memcpy(&PsuData, &ShmPsuData->PsuVersion, sizeof(struct PsuModuleVer));
-			// StoreUsrConfigData(&PsuData);
-
-			#ifdef SystemLogMessage
-			DEBUG_INFO("WebService initial OK");
-			#endif
-		}
-
-		if (strcmp(argv[1], "button") == 0)
-		{
-			unsigned char			Button1;
-			unsigned char			Button2;
-			unsigned char			EmergencyButton;
-			Button1=ShmPrimaryMcuData->InputDet.bits.Button1;
-			Button2=ShmPrimaryMcuData->InputDet.bits.Button2;
-			EmergencyButton=ShmPrimaryMcuData->InputDet.bits.EmergencyButton;
-			struct json_object *jobj;
-			struct json_object *sButton1;
-			struct json_object *sButton2;
-			struct json_object *sEmergencyButton;
-			sButton1 = json_object_new_int(Button1);
-			sButton2 = json_object_new_int(Button2);
-			sEmergencyButton = json_object_new_int(EmergencyButton);
-			jobj=json_object_new_object();
-			json_object_object_add(jobj,"Button1",sButton1);
-			json_object_object_add(jobj,"Button2",sButton2);
-			json_object_object_add(jobj,"EmergencyButton",sEmergencyButton);
-			printf("%s\n", json_object_to_json_string(jobj));
-		}
-
-		if (strcmp(argv[1], "restart") == 0)
-		{
-			if((ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16) && (system("pidof -s OcppBackend > /dev/null") == 0))
-			{
-				sprintf((char*)ShmOCPP16Data->Reset.Type, "Soft");
-				ShmOCPP16Data->MsMsg.bits.ResetReq = 1;
-				DEBUG_INFO("Soft reset by OCPP1.6 form web page.\n");
-			}
-			else if((ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20) && (system("pidof -s OcppBackend20 > /dev/null") == 0))
-			{
-				sprintf((char*)ShmOCPP20Data->Reset.type, "OnIdle");
-				ShmOCPP20Data->MsMsg.bits.ResetReq = 1;
-				DEBUG_INFO("Soft reset by OCPP2.0.1 form web page.\n");
-			}
-			else
-			{
-				system("exec /usr/bin/run_evse_restart.sh");
-				DEBUG_INFO("Soft reset directly form web page.\n");
-			}
-		}
-	}
-
-	if(strcmp(argv[1], "log") == 0)
-	{
-		char cmd[512];
-
-		if((argc == 3) && isdigit(*argv[2]))
-		{
-			sprintf(cmd, "exec /root/logPackTools 'log' %s", argv[2]);
-		}
-		else
-		{
-			sprintf(cmd, "exec /root/logPackTools 'log'");
-		}
-
-		if(system(cmd) == 0)
-		{
-			DEBUG_INFO("Log pack success.\n");
-		}
-		else
-		{
-			DEBUG_INFO("Log pack fail.\n");
-		}
-	}
-
-	//upgrade firmware
-	if ((argc == 3) & (strcmp(argv[1], "upgrade") == 0))
-	{
-		struct json_object *jobj;
-		struct json_object *Result;
-		struct json_object *Message;
-		//char cmd[100];
-		jobj=json_object_new_object();
-		//system
-		//if((char)ShmSysConfigAndInfo->SysInfo.FirmwareUpdate == '0'){
-		ShmSysConfigAndInfo->SysInfo.FirmwareUpdate=1;
-		Result = json_object_new_string("success");
-		Message = json_object_new_string("File is uploaded, please wait a moment to upgrade");
-		//}
-		/*else{
-			sprintf(cmd,"rm /mnt/%s",argv[2]);
-			system(cmd);
-			Result = json_object_new_string("error");
-			Message = json_object_new_string("machine is busy");
-		}*/
-		json_object_object_add(jobj,"Result",Result);
-		json_object_object_add(jobj,"Message",Message);
-		printf("%s\n", json_object_to_json_string(jobj));
-
-	}
-
-#ifdef DO360
-	//set power cabinet
-	//  ./WebService "PowerCabinet" Cmd "{'FTargetVoltage': val,'FTargetCurrent': val, 'Gun': val}"
-	if ((strcmp(argv[1], "PowerCabinet") == 0)) {
-		char *IsDO[3];
-		substr((char *)IsDO,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,0,2);
-		if(strcmp(IsDO, "DO") == 0 || strcmp(IsDO, "DK") == 0 || strcmp(IsDO, "DB") == 0){
-			struct json_object *jobj2;
-			jobj2=json_object_new_object();
-			int Gun = 0;
-			//force charging
-			if (strcmp(argv[2], "1") == 0) {
-				json_object_object_add(jobj2,"Cmd",json_object_new_string("1"));
-				int FTargetVoltage = 0;
-				int FTargetCurrent = 0;
-				if(strlen(argv[3]) >0){
-					struct json_object *jobj = json_tokener_parse(argv[3]);
-					json_object *val_obj = NULL;
-					if( json_object_object_get_ex(jobj, "Gun", &val_obj) ) {
-						Gun = json_object_get_int(val_obj);
-						if( json_object_object_get_ex(jobj, "FTargetVoltage", &val_obj) ) {
-							FTargetVoltage = json_object_get_int(val_obj);
-							ShmChargerInfo->Control.FCharging[Gun].FTargetVoltage = FTargetVoltage * 10;
-							json_object_object_add(jobj2,"FTargetVoltage",json_object_new_int(FTargetVoltage));
-						}
-						if( json_object_object_get_ex(jobj, "FTargetCurrent", &val_obj) ) {
-							FTargetCurrent = json_object_get_int(val_obj);
-							ShmChargerInfo->Control.FCharging[Gun].FTargetCurrent = FTargetCurrent * 10;
-							json_object_object_add(jobj2,"FTargetCurrent",json_object_new_int(FTargetCurrent));
-						}
-						ShmChargerInfo->Control.FCharging[Gun].FCtrl.bits.EnableForceCharging=1;
-						ShmChargerInfo->Control.FCharging[Gun].FCtrl.bits.StartForceCharging=1;
-						ShmChargerInfo->Control.FCharging[Gun].FCtrl.bits.WebApiTrigger=1;
-					}
-				}
-				printf("%s\n", json_object_to_json_string(jobj2));
-			}
-			//remote stop
-			if (strcmp(argv[2], "2") == 0) {
-				if(strlen(argv[3]) >0){
-					struct json_object *jobj = json_tokener_parse(argv[3]);
-					json_object *val_obj = NULL;
-					if( json_object_object_get_ex(jobj, "Gun", &val_obj) ) {
-						Gun = json_object_get_int(val_obj);
-						json_object_object_add(jobj2,"Cmd",json_object_new_string("2"));
-						ShmSysConfigAndInfo->SysInfo.ConnectorInfo[Gun].GeneralChargingData.ChargingStopFlag.bits.ManualStop=1;
-						printf("%s\n", json_object_to_json_string(jobj2));
-					}
-				}
-			}
-			if (strcmp(argv[2], "0") == 0) {
-				struct json_object *jobj;
-				jobj=json_object_new_object();
-				struct json_object *FTargetVoltage;
-				struct json_object *FTargetCurrent;
-				struct json_object *EnableForceCharging;
-				struct json_object *StartForceCharging;
-				struct json_object *WebApiTrigger;
-				struct json_object *ManualStop;
-				FTargetVoltage = json_object_new_int(ShmChargerInfo->Control.FCharging[0].FTargetVoltage);
-				FTargetCurrent = json_object_new_int(ShmChargerInfo->Control.FCharging[0].FTargetCurrent);
-				EnableForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[0].FCtrl.bits.EnableForceCharging);
-				StartForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[0].FCtrl.bits.StartForceCharging);
-				WebApiTrigger = json_object_new_int(ShmChargerInfo->Control.FCharging[0].FCtrl.bits.WebApiTrigger);
-				ManualStop = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[0].GeneralChargingData.ChargingStopFlag.bits.ManualStop);
-				json_object_object_add(jobj,"FTargetVoltage0",FTargetVoltage);
-				json_object_object_add(jobj,"FTargetCurrent0",FTargetCurrent);
-				json_object_object_add(jobj,"EnableForceCharging0",EnableForceCharging);
-				json_object_object_add(jobj,"StartForceCharging0",StartForceCharging);
-				json_object_object_add(jobj,"WebApiTrigger0",WebApiTrigger);
-				json_object_object_add(jobj,"ManualStop0",ManualStop);
-				FTargetVoltage = json_object_new_int(ShmChargerInfo->Control.FCharging[1].FTargetVoltage);
-				FTargetCurrent = json_object_new_int(ShmChargerInfo->Control.FCharging[1].FTargetCurrent);
-				EnableForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[1].FCtrl.bits.EnableForceCharging);
-				StartForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[1].FCtrl.bits.StartForceCharging);
-				WebApiTrigger = json_object_new_int(ShmChargerInfo->Control.FCharging[1].FCtrl.bits.WebApiTrigger);
-				ManualStop = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[1].GeneralChargingData.ChargingStopFlag.bits.ManualStop);
-				json_object_object_add(jobj,"FTargetVoltage1",FTargetVoltage);
-				json_object_object_add(jobj,"FTargetCurrent1",FTargetCurrent);
-				json_object_object_add(jobj,"EnableForceCharging1",EnableForceCharging);
-				json_object_object_add(jobj,"StartForceCharging1",StartForceCharging);
-				json_object_object_add(jobj,"WebApiTrigger1",WebApiTrigger);
-				json_object_object_add(jobj,"ManualStop1",ManualStop);
-				FTargetVoltage = json_object_new_int(ShmChargerInfo->Control.FCharging[2].FTargetVoltage);
-				FTargetCurrent = json_object_new_int(ShmChargerInfo->Control.FCharging[2].FTargetCurrent);
-				EnableForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[2].FCtrl.bits.EnableForceCharging);
-				StartForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[2].FCtrl.bits.StartForceCharging);
-				WebApiTrigger = json_object_new_int(ShmChargerInfo->Control.FCharging[2].FCtrl.bits.WebApiTrigger);
-				ManualStop = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[2].GeneralChargingData.ChargingStopFlag.bits.ManualStop);
-				json_object_object_add(jobj,"FTargetVoltage2",FTargetVoltage);
-				json_object_object_add(jobj,"FTargetCurrent2",FTargetCurrent);
-				json_object_object_add(jobj,"EnableForceCharging2",EnableForceCharging);
-				json_object_object_add(jobj,"StartForceCharging2",StartForceCharging);
-				json_object_object_add(jobj,"WebApiTrigger2",WebApiTrigger);
-				json_object_object_add(jobj,"ManualStop2",ManualStop);
-				FTargetVoltage = json_object_new_int(ShmChargerInfo->Control.FCharging[3].FTargetVoltage);
-				FTargetCurrent = json_object_new_int(ShmChargerInfo->Control.FCharging[3].FTargetCurrent);
-				EnableForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[3].FCtrl.bits.EnableForceCharging);
-				StartForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[3].FCtrl.bits.StartForceCharging);
-				WebApiTrigger = json_object_new_int(ShmChargerInfo->Control.FCharging[3].FCtrl.bits.WebApiTrigger);
-				ManualStop = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[3].GeneralChargingData.ChargingStopFlag.bits.ManualStop);
-				json_object_object_add(jobj,"FTargetVoltage3",FTargetVoltage);
-				json_object_object_add(jobj,"FTargetCurrent3",FTargetCurrent);
-				json_object_object_add(jobj,"EnableForceCharging3",EnableForceCharging);
-				json_object_object_add(jobj,"StartForceCharging3",StartForceCharging);
-				json_object_object_add(jobj,"WebApiTrigger3",WebApiTrigger);
-				json_object_object_add(jobj,"ManualStop3",ManualStop);
-				printf("%s\n", json_object_to_json_string(jobj));
-				json_object_put(jobj);
-			}
-		}
-	}
-#endif
-
-	//web page query all
-	if ((argc == 2) & (strcmp(argv[1], "query") == 0)) {
-		char *IsAcDc[2];
-		char *SafetyRegulation[2];
-		char *IsDO[3];
-		char *Connector1[2];
-		char *Connector2[2];
-		char *Connector3[2];
-		char *Network[2];
-		//unsigned char connector1FwVer[32];
-		//unsigned char connector2FwVer[32];
-		short gunQty;
-		char *RatedPower1[2];
-		char *RatedPower2[2];
-		char *RatedPower3[2];
-		short RatedPower;
-		short PsuQuantity = 0;
-		substr((char *)IsAcDc,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,0,1);
-		substr((char *)SafetyRegulation,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,3,1);
-		substr((char *)IsDO,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,0,2);
-		substr((char *)Connector1,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,7,1);
-		substr((char *)Connector2,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,9,1);
-		substr((char *)Connector3,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,8,1);
-		substr((char *)Network,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,10,1);
-		int connectorType1,connectorType2,connectorType3;
-		connectorType1=ConnectorType((char *)Connector1);
-		connectorType2=ConnectorType((char *)Connector2);
-		connectorType3=ConnectorType((char *)Connector3);
-		if(connectorType1 == connectorType2){
-			gunQty = 1;
-		}
-		else{
-			gunQty = 0;
-		}
-		if(connectorType1 != 0){
-			if(connectorType1 == 1){
-//				strcpy((char *)&connector1FwVer,ShmCcsData->V2GMessage_DIN70121->version);
-//				memcpy(connector1FwVer,ShmCcsData->V2GMessage_DIN70121->version,ARRAY_SIZE(ShmCcsData->V2GMessage_DIN70121->version));
-			}
-			else if(connectorType1 == 2){
-//				strcpy((char *)&connector1FwVer,ShmGBTData->evse[0].version);
-//				memcpy(connector1FwVer,ShmGBTData->evse[0].version,ARRAY_SIZE(ShmGBTData->evse[0].version));
-			}
-			else if(connectorType1 == 3){
-//				strcpy((char *)&connector1FwVer,ShmCHAdeMOData->evse[0].version);
-//				memcpy(connector1FwVer,ShmCHAdeMOData->evse[0].version,ARRAY_SIZE(ShmCHAdeMOData->evse[0].version));
-			}
-		}
-		if(connectorType2 != 0){
-			if(connectorType2 == 1){
-//				strcpy((char *)&connector2FwVer,ShmCcsData->V2GMessage_DIN70121->version);
-//				memcpy(connector2FwVer,ShmCcsData->V2GMessage_DIN70121->version,ARRAY_SIZE(ShmCcsData->V2GMessage_DIN70121->version));
-			}
-			else if(connectorType2 == 2){
-//				strcpy((char *)&connector2FwVer,ShmGBTData->evse[gunQty].version);
-//				memcpy(connector2FwVer,ShmGBTData->evse[gunQty].version,ARRAY_SIZE(ShmGBTData->evse[gunQty].version));
-			}
-			else if(connectorType2 == 3){
-//				strcpy((char *)&connector2FwVer,ShmCHAdeMOData->evse[gunQty].version);
-//				memcpy(connector2FwVer,ShmCHAdeMOData->evse[gunQty].version,ARRAY_SIZE(ShmCHAdeMOData->evse[gunQty].version));
-			}
-		}
-		substr((char *)RatedPower1,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,4,1);
-		substr((char *)RatedPower2,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,5,1);
-		substr((char *)RatedPower3,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,6,1);
-		int p1=atoi((char *)RatedPower1);
-		int p2=atoi((char *)RatedPower2);
-		int p3=atoi((char *)RatedPower3);
-		if(strcmp(IsAcDc, "D") == 0){
-			RatedPower=(p1*10+p2)*pow(10,p3-1);
-			if(RatedPower==50){
-				PsuQuantity = 3;
-			}
-			else{
-//				if(RatedPower>=30){
-					PsuQuantity = RatedPower/30;
-//				}
-			}
-		}
-		if(strcmp(IsDO, "DO") == 0 || strcmp(IsDO, "DK") == 0 || strcmp(IsDO, "DB") == 0){
-		}
-		
-		struct json_object *jobj1;
-		struct json_object *jobj2;
-		struct json_object *jobj3;
-		struct json_object *jobj4;
-		//system
-		struct json_object *ModelName;
-		struct json_object *AcModelName;
-		struct json_object *SerialNumber;
-		struct json_object *SystemId;
-		struct json_object *AcPhaseCount;
-		struct json_object *PhaseLossPolicy;
-		struct json_object *FactoryConfiguration;
-		struct json_object *AuthorisationMode;
-		struct json_object *DefaultLanguage;
-		struct json_object *InputVoltageR;
-		struct json_object *InputVoltageS;
-		struct json_object *InputVoltageT;
-		struct json_object *InputVoltageDc;
-		struct json_object *SystemFanRotaSpeed;
-		struct json_object *PsuFanRotaSpeed;
-		struct json_object *RfidCardNumEndian;
-		struct json_object *PsuAcInputType;
-		struct json_object *RatingCurrent;
-		struct json_object *AcRatingCurrent;
-		struct json_object *isAPP;
-		struct json_object *isQRCode;
-		struct json_object *isRFID;
-		struct json_object *QRCodeMadeMode;
-		struct json_object *QRCodeContent;
-		struct json_object *Intensity;
-		struct json_object *isAuthrizeByEVCCID;
-		struct json_object *AuxPower5V;
-		struct json_object *AuxPower12V;
-		struct json_object *AuxPower24V;
-		struct json_object *AuxPower48V;
-		struct json_object *CsuHwRev;
-		struct json_object *CsuBootLoadFwRev;
-		struct json_object *CsuKernelFwRev;
-		struct json_object *CsuRootFsFwRev;
-		struct json_object *CsuPrimFwRev;
-		struct json_object *LcmHwRev;
-		struct json_object *LcmFwRev;
-		struct json_object *PsuHwRev;
-		struct json_object *PsuPrimFwRev;
-		struct json_object *PsuSecFwRev;
-		struct json_object *AuxPwrHwRev;
-		struct json_object *AuxPwrFwRev;
-		struct json_object *FanModuleHwRev;
-		struct json_object *FanModuleFwRev;
-		struct json_object *RelayModuleHwRev;
-		struct json_object *RelayModuleFwRev;
-		struct json_object *TelcomModemFwRev;
-		struct json_object *Connector1FwRev;
-		struct json_object *Connector2FwRev;
-		/* for DC+AC*/
-		struct json_object *Connector3FwRev;
-		struct json_object *LedModuleFwRev;
-		struct json_object *SystemAmbientTemp;
-		struct json_object *SystemCriticalTemp;
-		struct json_object *CcsConnectorTemp;
-		struct json_object *PsuAmbientTemp;
-		struct json_object *AcPlugInTimes;
-		struct json_object *GbPlugInTimes;
-		struct json_object *Ccs1PlugInTime;
-		struct json_object *Ccs2PlugInTimes;
-		struct json_object *ChademoPlugInTimes;
-		struct json_object *FirmwareUpdate;
-		struct json_object *FwPrimaryVersion[PsuQuantity];
-		struct json_object *FwPrimaryVersionArr= json_object_new_array();
-		struct json_object *FwSecondVersion[PsuQuantity];
-		struct json_object *FwSecondVersionArr= json_object_new_array();
-		/* for DO & DD*/
-		struct json_object *DispenserQuantity;
-		struct json_object *TotalConnectorQuantity;
-		struct json_object *DDModelName[4];
-		struct json_object *DDModelNameArr= json_object_new_array();
-		struct json_object *DDSerialNumber[4];
-		struct json_object *DDSerialNumberArr= json_object_new_array();
-		struct json_object *DDSystemId[4];
-		struct json_object *DDSystemIdArr= json_object_new_array();
-		struct json_object *DDAuthorisationMode[4];
-		struct json_object *DDAuthorisationModeArr= json_object_new_array();
-		struct json_object *DDRfidCardNumEndian[4];
-		struct json_object *DDRfidCardNumEndianArr= json_object_new_array();
-		struct json_object *DDisAPP[4];
-		struct json_object *DDisAPPArr= json_object_new_array();
-		struct json_object *DDisQRCode[4];
-		struct json_object *DDisQRCodeArr= json_object_new_array();
-		struct json_object *DDisRFID[4];
-		struct json_object *DDisRFIDArr= json_object_new_array();
-		struct json_object *DDQRCodeMadeMode[4];
-		struct json_object *DDQRCodeMadeModeArr= json_object_new_array();
-		struct json_object *DDQRCodeContent[4];
-		struct json_object *DDQRCodeContentArr= json_object_new_array();
-		struct json_object *DDFactoryConfiguration[4];
-		struct json_object *DDFactoryConfigurationArr= json_object_new_array();
-		struct json_object *DDCsuBootLoadFwRev[4];
-		struct json_object *DDCsuBootLoadFwRevArr= json_object_new_array();
-		struct json_object *DDCsuKernelFwRev[4];
-		struct json_object *DDCsuKernelFwRevArr= json_object_new_array();
-		struct json_object *DDCsuRootFsFwRev[4];
-		struct json_object *DDCsuRootFsFwRevArr= json_object_new_array();
-		struct json_object *DDCsuPrimFwRev[4];
-		struct json_object *DDCsuPrimFwRevArr= json_object_new_array();
-		struct json_object *DDLcmFwRev[4];
-		struct json_object *DDLcmFwRevArr= json_object_new_array();
-		struct json_object *DDPsuPrimFwRev[4];
-		struct json_object *DDPsuPrimFwRevArr= json_object_new_array();
-		struct json_object *DDPsuSecFwRev[4];
-		struct json_object *DDPsuSecFwRevArr= json_object_new_array();
-		struct json_object *DDFanModuleFwRev[4];
-		struct json_object *DDFanModuleFwRevArr= json_object_new_array();
-		struct json_object *DDRelayModuleFwRev[4];
-		struct json_object *DDRelayModuleFwRevArr= json_object_new_array();
-		struct json_object *DDTelcomModemFwRev[4];
-		struct json_object *DDTelcomModemFwRevArr= json_object_new_array();
-		struct json_object *DDLedModuleFwRev[4];
-		struct json_object *DDLedModuleFwRevArr= json_object_new_array();
-		struct json_object *DDConnector1FwRev[4];
-		struct json_object *DDConnector1FwRevArr= json_object_new_array();
-		struct json_object *DDConnector2FwRev[4];
-		struct json_object *DDConnector2FwRevArr= json_object_new_array();
-		struct json_object *DDIntensity[4];
-		struct json_object *DDIntensityArr= json_object_new_array();
-		struct json_object *Relay2ModuleFwRev;
-
-		//charging
-		struct json_object *MaxChargingEnergy;
-		struct json_object *MaxChargingPower;
-		struct json_object *MaxChargingCurrent;
-		struct json_object *AcMaxChargingCurrent;
-		struct json_object *MaxChargingDuration;
-		struct json_object *MaxChargingSoc;
-		struct json_object *StopChargingByButton;
-		struct json_object *LocalWhiteCard[10];
-		struct json_object *LocalWhiteCardArr= json_object_new_array();
-		struct json_object *isBilling;
-		struct json_object *Currency;
-		struct json_object *Fee[24];
-		struct json_object *FeeArr= json_object_new_array();
-		struct json_object *ChargingInfo1;
-		struct json_object *ChargingInfo2;
-		struct json_object *ChargingInfo3;
-		struct json_object *StartUserId[3];
-		struct json_object *StartDateTime[3];
-		struct json_object *StopDateTime[3];
-		struct json_object *StartMethod[3];
-		struct json_object *ConnectorTemp[3];
-		struct json_object *ChillerTemp[3];
-		struct json_object *PresentChargingVoltage[3];
-		struct json_object *PresentChargingCurrent[3];
-		struct json_object *PresentChargingPower[3];
-		struct json_object *PresentChargedEnergy[3];
-		struct json_object *PresentChargedDuration[3];
-		struct json_object *RemainChargingDuration[3];
-		struct json_object *EvBatteryMaxVoltage[3];
-		struct json_object *EvBatterytargetVoltage[3];
-		struct json_object *EvBatterySoc[3];
-		struct json_object *SystemStatus[3];
-		struct json_object *EvBatterytargetCurrent[3];
-		struct json_object *PowerConsumption[3];
-		struct json_object *isCalibratedVaGain[3];
-		struct json_object *isCalibratedVbGain[3];
-		struct json_object *isCalibratedVcGain[3];
-		struct json_object *isCalibratedVaOffset[3];
-		struct json_object *isCalibratedVbOffset[3];
-		struct json_object *isCalibratedVcOffset[3];
-		struct json_object *isCalibratedCaGain[3];
-		struct json_object *isCalibratedCbGain[3];
-		struct json_object *isCalibratedCcGain[3];
-		struct json_object *isCalibratedCaOffset[3];
-		struct json_object *isCalibratedCbOffset[3];
-		struct json_object *isCalibratedCcOffset[3];
-		struct json_object *isCalibratedPa[3];
-		struct json_object *isCalibratedPb[3];
-		struct json_object *isCalibratedPc[3];
-		/* for DO & DD*/
-		struct json_object *DDChargingInfo1;
-		struct json_object *DDChargingInfo2;
-		struct json_object *DDChargingInfo3;
-		struct json_object *DDChargingInfo4;
-		struct json_object *DDStartUserId[4];
-		struct json_object *DDStartDateTime[4];
-		struct json_object *DDStopDateTime[4];
-		struct json_object *DDStartMethod[4];
-		struct json_object *DDConnectorTemp[4];
-		struct json_object *DDChillerTemp[4];
-		struct json_object *DDPresentChargingVoltage[4];
-		struct json_object *DDPresentChargingCurrent[4];
-		struct json_object *DDPresentChargingPower[4];
-		struct json_object *DDPresentChargedEnergy[4];
-		struct json_object *DDPresentChargedDuration[4];
-		struct json_object *DDRemainChargingDuration[4];
-		struct json_object *DDEvBatteryMaxVoltage[4];
-		struct json_object *DDEvBatterytargetVoltage[4];
-		struct json_object *DDEvBatterySoc[4];
-		struct json_object *DDSystemStatus[4];
-		struct json_object *DDEvBatterytargetCurrent[4];
-		struct json_object *DDPowerConsumption[4];
-
-		//network
-		struct json_object *InternetConn;
-		struct json_object *FtpServer;
-		struct json_object *Eth0DhcpClient;
-		struct json_object *Eth0MacAddress;
-		struct json_object *Eth0IpAddress;
-		struct json_object *Eth0SubmaskAddress;
-		struct json_object *Eth0GatewayAddress;
-		struct json_object *Eth1DhcpClient;
-		struct json_object *Eth1MacAddress;
-		struct json_object *Eth1IpAddress;
-		struct json_object *Eth1SubmaskAddress;
-		struct json_object *Eth1GatewayAddress;
-		struct json_object *WifiMode;
-		struct json_object *WifiSsid;
-		struct json_object *WifiPassword;
-		struct json_object *WifiBroadcastSsid;
-		struct json_object *WifiTargetBssidMac;
-		struct json_object *WifiRssi;
-		struct json_object *WifiDhcpServer;
-		struct json_object *WifiDhcpClient;
-		struct json_object *WifiMacAddress;
-		struct json_object *WifiIpAddress;
-		struct json_object *WifiSubmaskAddress;
-		struct json_object *WifiGatewayAddress;
-		struct json_object *WifiNetworkConn;
-		struct json_object *TelcomApn;
-		struct json_object *TelcomRssi;
-		struct json_object *TelcomChapPapId;
-		struct json_object *TelcomChapPapPwd;
-		struct json_object *TelcomModemImei;
-		struct json_object *TelcomSimImsi;
-		struct json_object *TelcomSimIccid;
-		struct json_object *TelcomSimStatus;
-		struct json_object *TelcomModemMode;
-		struct json_object *TelcomIpAddress;
-		struct json_object *TelcomNetworkConn;
-		struct json_object *TelcomEnabled;
-		struct json_object *TelcomNetworkType;
-		//backend
-		struct json_object *BackendConnTimeout;
-		struct json_object *OfflinePolicy;
-		struct json_object *OfflineMaxChargeEnergy;
-		struct json_object *OfflineMaxChargeDuration;
-		struct json_object *OcppConnStatus;
-		struct json_object *MaintainServerConnStatus;
-		struct json_object *OcppServerURL;
-		struct json_object *ChargeBoxId;
-		struct json_object *chargePointVendor;
-		struct json_object *OcppSecurityProfile;
-		struct json_object *OcppSecurityPassword;
-		struct json_object *MaintainServerSecurityProfile;
-		struct json_object *MaintainServerSecurityPassword;
-		struct json_object *isEnableLocalPowerSharging;
-		struct json_object *PowerSharingCapacity;
-		struct json_object *PowerSharingServerIP;
-		struct json_object *OcppReceiptrURL;
-		struct json_object *MaintainServerURL;
-		/*for TTIA*/
-		struct json_object *isEnableTTIA;
-		struct json_object *server_addr;
-		struct json_object *server_port;
-		struct json_object *busVenderId;
-		struct json_object *EquipmentProvider;
-		struct json_object *TransportationCompanyNo;
-		struct json_object *TTIAChargeBoxId;
-		struct json_object *evseStation;
-
-		jobj1=json_object_new_object();
-		jobj2=json_object_new_object();
-		jobj3=json_object_new_object();
-		jobj4=json_object_new_object();
-		//system
-		ModelName = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.ModelName);
-		AcModelName = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AcModelName);
-		SerialNumber = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.SerialNumber);
-		SystemId = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.SystemId);
-		AcPhaseCount = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AcPhaseCount);
-		PhaseLossPolicy = json_object_new_int(ShmSysConfigAndInfo->SysConfig.PhaseLossPolicy);
-		FactoryConfiguration = json_object_new_int(ShmSysConfigAndInfo->SysInfo.FactoryConfiguration);
-		AuthorisationMode = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AuthorisationMode);
-		DefaultLanguage = json_object_new_int(ShmSysConfigAndInfo->SysConfig.DefaultLanguage);
-		InputVoltageR = json_object_new_double(ShmSysConfigAndInfo->SysInfo.InputVoltageR);
-		InputVoltageS = json_object_new_double(ShmSysConfigAndInfo->SysInfo.InputVoltageS);
-		InputVoltageT = json_object_new_double(ShmSysConfigAndInfo->SysInfo.InputVoltageT);
-		InputVoltageDc = json_object_new_double(ShmSysConfigAndInfo->SysInfo.InputVoltageDc);
-		SystemFanRotaSpeed = json_object_new_int(ShmSysConfigAndInfo->SysInfo.SystemFanRotaSpeed);
-		PsuFanRotaSpeed = json_object_new_int(ShmSysConfigAndInfo->SysInfo.PsuFanRotaSpeed);
-		RfidCardNumEndian = json_object_new_int(ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian);
-		PsuAcInputType = json_object_new_int(ShmSysConfigAndInfo->SysConfig.PsuAcInputType);
-		RatingCurrent = json_object_new_int(ShmSysConfigAndInfo->SysConfig.RatingCurrent);
-		AcRatingCurrent = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AcRatingCurrent);
-		isAPP = json_object_new_int(ShmSysConfigAndInfo->SysConfig.isAPP);
-		isQRCode = json_object_new_int(ShmSysConfigAndInfo->SysConfig.isQRCode);
-		isRFID = json_object_new_int(ShmSysConfigAndInfo->SysConfig.isRFID);
-		QRCodeMadeMode = json_object_new_int(ShmSysConfigAndInfo->SysConfig.QRCodeMadeMode);
-		QRCodeContent = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.QRCodeContent);
-		Intensity = json_object_new_int(ShmSysConfigAndInfo->SysConfig.LedInfo.Intensity);
-		isAuthrizeByEVCCID = json_object_new_int(ShmSysConfigAndInfo->SysConfig.isAuthrizeByEVCCID);
-		AuxPower5V = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AuxPower5V);
-		AuxPower12V = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AuxPower12V);
-		AuxPower24V = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AuxPower24V);
-		AuxPower48V = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AuxPower48V);
-		CsuHwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CsuHwRev);
-		CsuBootLoadFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CsuBootLoadFwRev);
-		CsuKernelFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CsuKernelFwRev);
-		CsuRootFsFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev);
-		CsuPrimFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CsuPrimFwRev);
-		LcmHwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.LcmHwRev);
-		LcmFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.LcmFwRev);
-		PsuHwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.PsuHwRev);
-		PsuPrimFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.PsuPrimFwRev);
-		PsuSecFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.PsuSecFwRev);
-		AuxPwrHwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AuxPwrHwRev);
-		AuxPwrFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AuxPwrFwRev);
-		FanModuleHwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.FanModuleHwRev);
-		FanModuleFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.FanModuleFwRev);
-		RelayModuleHwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.RelayModuleHwRev);
-		RelayModuleFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.RelayModuleFwRev);
-		TelcomModemFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.TelcomModemFwRev);
-		Connector1FwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.Connector1FwRev);
-		Connector2FwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.Connector2FwRev);
-		/* for DC+AC*/
-		if(connectorType3==4){
-			Connector3FwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[0].version);
-		}
-		LedModuleFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.LedModuleFwRev);
-		SystemAmbientTemp = json_object_new_int(ShmSysConfigAndInfo->SysInfo.SystemAmbientTemp);
-		SystemCriticalTemp = json_object_new_int(ShmSysConfigAndInfo->SysInfo.SystemCriticalTemp);
-		CcsConnectorTemp = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsConnectorTemp);
-		PsuAmbientTemp = json_object_new_int(ShmSysConfigAndInfo->SysInfo.PsuAmbientTemp);
-		AcPlugInTimes = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AcPlugInTimes);
-		GbPlugInTimes = json_object_new_int(ShmSysConfigAndInfo->SysConfig.GbPlugInTimes);
-		Ccs1PlugInTime = json_object_new_int(ShmSysConfigAndInfo->SysConfig.Ccs1PlugInTime);
-		Ccs2PlugInTimes = json_object_new_int(ShmSysConfigAndInfo->SysConfig.Ccs2PlugInTimes);
-		ChademoPlugInTimes = json_object_new_int(ShmSysConfigAndInfo->SysConfig.ChademoPlugInTimes);
-		FirmwareUpdate = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.FirmwareUpdate);
-		if(strcmp(IsAcDc, "D") == 0){
-			for(int i=0;i<PsuQuantity;i++){
-				FwPrimaryVersion[i] = json_object_new_string((char *)&ShmPsuData->PsuVersion[i].FwPrimaryVersion);
-				FwSecondVersion[i] = json_object_new_string((char *)&ShmPsuData->PsuVersion[i].FwSecondVersion);
-				json_object_array_add(FwPrimaryVersionArr,FwPrimaryVersion[i]);
-				json_object_array_add(FwSecondVersionArr,FwSecondVersion[i]);
-			}
-		}
-		if(strcmp(IsDO, "DO") == 0 || strcmp(IsDO, "DK") == 0 || strcmp(IsDO, "DB") == 0){
-			if(ShmSysConfigAndInfo->SysInfo.DispenserInfo.DispenserQuantity>4 || ShmSysConfigAndInfo->SysInfo.DispenserInfo.DispenserQuantity<0)ShmSysConfigAndInfo->SysInfo.DispenserInfo.DispenserQuantity=0;
-			DispenserQuantity = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.DispenserQuantity);
-			TotalConnectorQuantity = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity);
-			int DDDispenserQuantity = ShmSysConfigAndInfo->SysInfo.DispenserInfo.DispenserQuantity;
-			for(int i=0;i<DDDispenserQuantity;i++){
-				DDModelName[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].ModelName);
-				DDSerialNumber[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].SerialNumber);
-				DDSystemId[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].SystemId);
-				DDAuthorisationMode[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].AuthorisationMode);
-				DDRfidCardNumEndian[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].RfidCardNumEndian);
-				DDisAPP[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].isAPP);
-				DDisQRCode[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].isQRCode);
-				DDisRFID[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].isRFID);
-				DDQRCodeMadeMode[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].QRCodeMadeMode);
-				DDQRCodeContent[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].QRCodeContent);
-				DDFactoryConfiguration[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].FactoryConfiguration);
-				DDCsuBootLoadFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].CsuBootLoadFwRev);
-				DDCsuKernelFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].CsuKernelFwRev);
-				DDCsuRootFsFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].CsuRootFsFwRev);
-				DDCsuPrimFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].CsuPrimFwRev);
-				DDLcmFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].LcmFwRev);
-				DDPsuPrimFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].PsuPrimFwRev);
-				DDPsuSecFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].PsuSecFwRev);
-				DDFanModuleFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].FanModuleFwRev);
-				DDRelayModuleFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].RelayModuleFwRev);
-				DDTelcomModemFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].TelcomModemFwRev);
-				DDLedModuleFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].LedModuleFwRev);
-				DDConnector1FwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].Connector1FwRev);
-				DDConnector2FwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].Connector2FwRev);
-				DDIntensity[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].LedInfo.Intensity);
-				json_object_array_add(DDModelNameArr,DDModelName[i]);
-				json_object_array_add(DDSerialNumberArr,DDSerialNumber[i]);
-				json_object_array_add(DDSystemIdArr,DDSystemId[i]);
-				json_object_array_add(DDAuthorisationModeArr,DDAuthorisationMode[i]);
-				json_object_array_add(DDRfidCardNumEndianArr,DDRfidCardNumEndian[i]);
-				json_object_array_add(DDisAPPArr,DDisAPP[i]);
-				json_object_array_add(DDisQRCodeArr,DDisQRCode[i]);
-				json_object_array_add(DDisRFIDArr,DDisRFID[i]);
-				json_object_array_add(DDQRCodeMadeModeArr,DDQRCodeMadeMode[i]);
-				json_object_array_add(DDQRCodeContentArr,DDQRCodeContent[i]);
-				json_object_array_add(DDFactoryConfigurationArr,DDFactoryConfiguration[i]);
-				json_object_array_add(DDCsuBootLoadFwRevArr,DDCsuBootLoadFwRev[i]);
-				json_object_array_add(DDCsuKernelFwRevArr,DDCsuKernelFwRev[i]);
-				json_object_array_add(DDCsuRootFsFwRevArr,DDCsuRootFsFwRev[i]);
-				json_object_array_add(DDCsuPrimFwRevArr,DDCsuPrimFwRev[i]);
-				json_object_array_add(DDLcmFwRevArr,DDLcmFwRev[i]);
-				json_object_array_add(DDPsuPrimFwRevArr,DDPsuPrimFwRev[i]);
-				json_object_array_add(DDPsuSecFwRevArr,DDPsuSecFwRev[i]);
-				json_object_array_add(DDFanModuleFwRevArr,DDFanModuleFwRev[i]);
-				json_object_array_add(DDRelayModuleFwRevArr,DDRelayModuleFwRev[i]);
-				json_object_array_add(DDTelcomModemFwRevArr,DDTelcomModemFwRev[i]);
-				json_object_array_add(DDLedModuleFwRevArr,DDLedModuleFwRev[i]);
-				json_object_array_add(DDConnector1FwRevArr,DDConnector1FwRev[i]);
-				json_object_array_add(DDConnector2FwRevArr,DDConnector2FwRev[i]);
-				json_object_array_add(DDIntensityArr,DDIntensity[i]);
-			}
-			Relay2ModuleFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.Relay2ModuleFwRev);
-		}
-
-		//charging
-		int CcsGunQty=0;
-		int GbGunQty=0;
-		int CHAdeMOGunQty=0;
-		int AcGunQty=0;
-		ChargingInfo1=json_object_new_object();
-		ChargingInfo2=json_object_new_object();
-		ChargingInfo3=json_object_new_object();
-		MaxChargingEnergy = json_object_new_int(ShmSysConfigAndInfo->SysConfig.MaxChargingEnergy);
-		MaxChargingPower = json_object_new_int(ShmSysConfigAndInfo->SysConfig.MaxChargingPower);
-		MaxChargingCurrent = json_object_new_int(ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent);
-		AcMaxChargingCurrent = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AcMaxChargingCurrent);
-		MaxChargingDuration = json_object_new_int(ShmSysConfigAndInfo->SysConfig.MaxChargingDuration);
-		MaxChargingSoc = json_object_new_int(ShmSysConfigAndInfo->SysConfig.MaxChargingSoc);
-		StopChargingByButton = json_object_new_int(ShmSysConfigAndInfo->SysConfig.StopChargingByButton);
-		LocalWhiteCard[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[0]);
-		LocalWhiteCard[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[1]);
-		LocalWhiteCard[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[2]);
-		LocalWhiteCard[3] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[3]);
-		LocalWhiteCard[4] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[4]);
-		LocalWhiteCard[5] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[5]);
-		LocalWhiteCard[6] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[6]);
-		LocalWhiteCard[7] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[7]);
-		LocalWhiteCard[8] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[8]);
-		LocalWhiteCard[9] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[9]);
-		isBilling = json_object_new_int(ShmSysConfigAndInfo->SysConfig.BillingData.isBilling);
-		Currency = json_object_new_int(ShmSysConfigAndInfo->SysConfig.BillingData.Currency);
-		Fee[0] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[0]);
-		Fee[1] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[1]);
-		Fee[2] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[2]);
-		Fee[3] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[3]);
-		Fee[4] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[4]);
-		Fee[5] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[5]);
-		Fee[6] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[6]);
-		Fee[7] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[7]);
-		Fee[8] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[8]);
-		Fee[9] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[9]);
-		Fee[10] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[10]);
-		Fee[11] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[11]);
-		Fee[12] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[12]);
-		Fee[13] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[13]);
-		Fee[14] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[14]);
-		Fee[15] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[15]);
-		Fee[16] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[16]);
-		Fee[17] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[17]);
-		Fee[18] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[18]);
-		Fee[19] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[19]);
-		Fee[20] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[20]);
-		Fee[21] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[21]);
-		Fee[22] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[22]);
-		Fee[23] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[23]);
-		if(connectorType1 != 0){
-			if(connectorType1 == 1){//CCS
-				PresentChargingVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingVoltage);
-				PresentChargingCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingCurrent);
-				PresentChargingPower[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingPower);
-				PresentChargedEnergy[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargedEnergy);
-				PresentChargedDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargedDuration);
-				RemainChargingDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].RemainChargingDuration);
-				EvBatteryMaxVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatteryMaxVoltage);
-				EvBatterytargetVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterytargetVoltage);
-				EvBatterySoc[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterySoc);
-				SystemStatus[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].SystemStatus);
-				EvBatterytargetCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterytargetCurrent);
-				StartUserId[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartUserId);
-				StartDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartDateTime);
-				StopDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StopDateTime);
-				StartMethod[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartMethod);
-				if(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp == 255){
-					ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp);
-				}
-				else{
-					ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp-60);
-				}
-				if(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp == 255){
-					ChillerTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp);
-				}
-				else{
-					ChillerTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp-60);
-				}
-				PowerConsumption[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PowerConsumption);
-				CcsGunQty++;
-			}
-			else if(connectorType1 == 2){//GB
-				PresentChargingVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingVoltage);
-				PresentChargingCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingCurrent);
-				PresentChargingPower[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingPower);
-				PresentChargedEnergy[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargedEnergy);
-				PresentChargedDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargedDuration);
-				RemainChargingDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].RemainChargingDuration);
-				EvBatteryMaxVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatteryMaxVoltage);
-				EvBatterytargetVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterytargetVoltage);
-				EvBatterySoc[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterySoc);
-				SystemStatus[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].SystemStatus);
-				EvBatterytargetCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterytargetCurrent);
-				StartUserId[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartUserId);
-				StartDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartDateTime);
-				StopDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StopDateTime);
-				StartMethod[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartMethod);
-				if(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp == 255){
-					ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp);
-				}
-				else{
-					ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp-60);
-				}
-				if(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp == 255){
-					ChillerTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp);
-				}
-				else{
-					ChillerTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp-60);
-				}
-				PowerConsumption[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PowerConsumption);
-				GbGunQty++;
-			}
-			else if(connectorType1 == 3){//CHAdeMO
-				PresentChargingVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingVoltage);
-				PresentChargingCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingCurrent);
-				PresentChargingPower[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingPower);
-				PresentChargedEnergy[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargedEnergy);
-				PresentChargedDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargedDuration);
-				RemainChargingDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].RemainChargingDuration);
-				EvBatteryMaxVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatteryMaxVoltage);
-				EvBatterytargetVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterytargetVoltage);
-				EvBatterySoc[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterySoc);
-				SystemStatus[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].SystemStatus);
-				EvBatterytargetCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterytargetCurrent);
-				StartUserId[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartUserId);
-				StartDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartDateTime);
-				StopDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StopDateTime);
-				StartMethod[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartMethod);
-				if(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp == 255){
-					ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp);
-				}
-				else{
-					ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp-60);
-				}
-				if(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp == 255){
-					ChillerTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp);
-				}
-				else{
-					ChillerTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp-60);
-				}
-				PowerConsumption[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PowerConsumption);
-				CHAdeMOGunQty++;
-			}
-			else if(connectorType1 == 4){//AC
-				PresentChargingVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingVoltage);
-				PresentChargingCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingCurrent);
-				PresentChargingPower[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingPower);
-				PresentChargedEnergy[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargedEnergy);
-				PresentChargedDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargedDuration);
-				RemainChargingDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].RemainChargingDuration);
-				EvBatteryMaxVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatteryMaxVoltage);
-				EvBatterytargetVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterytargetVoltage);
-				EvBatterySoc[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterySoc);
-				SystemStatus[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].SystemStatus);
-				EvBatterytargetCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterytargetCurrent);
-				StartUserId[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartUserId);
-				StartDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartDateTime);
-				StopDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StopDateTime);
-				StartMethod[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartMethod);
-				ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].ConnectorTemp);
-				ChillerTemp[0] = json_object_new_int(255);
-				PowerConsumption[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PowerConsumption);
-				if(strcmp(IsDO, "AX") == 0){
-					isCalibratedVaGain[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVaGain);
-					isCalibratedVbGain[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVbGain);
-					isCalibratedVcGain[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVcGain);
-					isCalibratedVaOffset[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVaOffset);
-					isCalibratedVbOffset[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVbOffset);
-					isCalibratedVcOffset[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVcOffset);
-					isCalibratedCaGain[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCaGain);
-					isCalibratedCbGain[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCbGain);
-					isCalibratedCcGain[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCcGain);
-					isCalibratedCaOffset[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCaOffset);
-					isCalibratedCbOffset[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCbOffset);
-					isCalibratedCcOffset[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCcOffset);
-					isCalibratedPa[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPa);
-					isCalibratedPb[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPb);
-					isCalibratedPc[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPc);
-				}
-				AcGunQty++;
-			}
-		}
-		if(connectorType2 != 0){
-			if(connectorType2 == 1){//CCS
-				PresentChargingVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingVoltage);
-				PresentChargingCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingCurrent);
-				PresentChargingPower[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingPower);
-				PresentChargedEnergy[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargedEnergy);
-				PresentChargedDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargedDuration);
-				RemainChargingDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].RemainChargingDuration);
-				EvBatteryMaxVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatteryMaxVoltage);
-				EvBatterytargetVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterytargetVoltage);
-				EvBatterySoc[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterySoc);
-				SystemStatus[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].SystemStatus);
-				EvBatterytargetCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterytargetCurrent);
-				StartUserId[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartUserId);
-				StartDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartDateTime);
-				StopDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StopDateTime);
-				StartMethod[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartMethod);
-				if(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp == 255){
-					ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp);
-				}
-				else{
-					ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp-60);
-				}
-				if(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp == 255){
-					ChillerTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp);
-				}
-				else{
-					ChillerTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp-60);
-				}
-				PowerConsumption[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PowerConsumption);
-				CcsGunQty++;
-			}
-			else if(connectorType2 == 2){//GB
-				PresentChargingVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingVoltage);
-				PresentChargingCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingCurrent);
-				PresentChargingPower[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingPower);
-				PresentChargedEnergy[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargedEnergy);
-				PresentChargedDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargedDuration);
-				RemainChargingDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].RemainChargingDuration);
-				EvBatteryMaxVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatteryMaxVoltage);
-				EvBatterytargetVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterytargetVoltage);
-				EvBatterySoc[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterySoc);
-				SystemStatus[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].SystemStatus);
-				EvBatterytargetCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterytargetCurrent);
-				StartUserId[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartUserId);
-				StartDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartDateTime);
-				StopDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StopDateTime);
-				StartMethod[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartMethod);
-				if(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp == 255){
-					ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp);
-				}
-				else{
-					ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp-60);
-				}
-				if(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp == 255){
-					ChillerTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp);
-				}
-				else{
-					ChillerTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp-60);
-				}
-				PowerConsumption[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PowerConsumption);
-				GbGunQty++;
-			}
-			else if(connectorType2 == 3){//CHAdeMO
-				PresentChargingVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingVoltage);
-				PresentChargingCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingCurrent);
-				PresentChargingPower[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingPower);
-				PresentChargedEnergy[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargedEnergy);
-				PresentChargedDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargedDuration);
-				RemainChargingDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].RemainChargingDuration);
-				EvBatteryMaxVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatteryMaxVoltage);
-				EvBatterytargetVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterytargetVoltage);
-				EvBatterySoc[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterySoc);
-				SystemStatus[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].SystemStatus);
-				EvBatterytargetCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterytargetCurrent);
-				StartUserId[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartUserId);
-				StartDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartDateTime);
-				StopDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StopDateTime);
-				StartMethod[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartMethod);
-				if(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp == 255){
-					ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp);
-				}
-				else{
-					ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp-60);
-				}
-				if(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp == 255){
-					ChillerTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp);
-				}
-				else{
-					ChillerTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp-60);
-				}
-				PowerConsumption[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PowerConsumption);
-				CHAdeMOGunQty++;
-			}
-			else if(connectorType2 == 4){//AC
-				PresentChargingVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingVoltage);
-				PresentChargingCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingCurrent);
-				PresentChargingPower[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingPower);
-				PresentChargedEnergy[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargedEnergy);
-				PresentChargedDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargedDuration);
-				RemainChargingDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].RemainChargingDuration);
-				EvBatteryMaxVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatteryMaxVoltage);
-				EvBatterytargetVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterytargetVoltage);
-				EvBatterySoc[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterySoc);
-				SystemStatus[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].SystemStatus);
-				EvBatterytargetCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterytargetCurrent);
-				StartUserId[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartUserId);
-				StartDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartDateTime);
-				StopDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StopDateTime);
-				StartMethod[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartMethod);
-				ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].ConnectorTemp);
-				ChillerTemp[1] = json_object_new_int(255);
-				PowerConsumption[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PowerConsumption);
-				if(strcmp(IsDO, "AX") == 0){
-					isCalibratedVaGain[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVaGain);
-					isCalibratedVbGain[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVbGain);
-					isCalibratedVcGain[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVcGain);
-					isCalibratedVaOffset[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVaOffset);
-					isCalibratedVbOffset[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVbOffset);
-					isCalibratedVcOffset[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVcOffset);
-					isCalibratedCaGain[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCaGain);
-					isCalibratedCbGain[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCbGain);
-					isCalibratedCcGain[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCcGain);
-					isCalibratedCaOffset[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCaOffset);
-					isCalibratedCbOffset[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCbOffset);
-					isCalibratedCcOffset[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCcOffset);
-					isCalibratedPa[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPa);
-					isCalibratedPb[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPb);
-					isCalibratedPc[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPc);
-				}
-				AcGunQty++;
-			}
-		}
-		if(connectorType3 != 0){
-			if(connectorType3 == 1){//CCS
-				PresentChargingVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingVoltage);
-				PresentChargingCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingCurrent);
-				PresentChargingPower[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingPower);
-				PresentChargedEnergy[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargedEnergy);
-				PresentChargedDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargedDuration);
-				RemainChargingDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].RemainChargingDuration);
-				EvBatteryMaxVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatteryMaxVoltage);
-				EvBatterytargetVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterytargetVoltage);
-				EvBatterySoc[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterySoc);
-				SystemStatus[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].SystemStatus);
-				EvBatterytargetCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterytargetCurrent);
-				StartUserId[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartUserId);
-				StartDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartDateTime);
-				StopDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StopDateTime);
-				StartMethod[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartMethod);
-				if(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp == 0 ||ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp == 255){
-					ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp);
-				}
-				else{
-					ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp-60);
-				}
-				if(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp == 0 ||ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp == 255){
-					ChillerTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp);
-				}
-				else{
-					ChillerTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp-60);
-				}
-				PowerConsumption[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PowerConsumption);
-				CcsGunQty++;
-			}
-			else if(connectorType3 == 2){//GB
-				PresentChargingVoltage[2]= json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingVoltage);
-				PresentChargingCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingCurrent);
-				PresentChargingPower[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingPower);
-				PresentChargedEnergy[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargedEnergy);
-				PresentChargedDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargedDuration);
-				RemainChargingDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].RemainChargingDuration);
-				EvBatteryMaxVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatteryMaxVoltage);
-				EvBatterytargetVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterytargetVoltage);
-				EvBatterySoc[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterySoc);
-				SystemStatus[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].SystemStatus);
-				EvBatterytargetCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterytargetCurrent);
-				StartUserId[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartUserId);
-				StartDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartDateTime);
-				StopDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StopDateTime);
-				StartMethod[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartMethod);
-				if(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp == 255){
-					ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp);
-				}
-				else{
-					ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp-60);
-				}
-				if(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp == 255){
-					ChillerTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp);
-				}
-				else{
-					ChillerTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp-60);
-				}
-				PowerConsumption[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PowerConsumption);
-				GbGunQty++;
-			}
-			else if(connectorType3 == 3){//CHAdeMO
-				PresentChargingVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingVoltage);
-				PresentChargingCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingCurrent);
-				PresentChargingPower[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingPower);
-				PresentChargedEnergy[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargedEnergy);
-				PresentChargedDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargedDuration);
-				RemainChargingDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].RemainChargingDuration);
-				EvBatteryMaxVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatteryMaxVoltage);
-				EvBatterytargetVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterytargetVoltage);
-				EvBatterySoc[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterySoc);
-				SystemStatus[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].SystemStatus);
-				EvBatterytargetCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterytargetCurrent);
-				StartUserId[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartUserId);
-				StartDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartDateTime);
-				StopDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StopDateTime);
-				StartMethod[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartMethod);
-				if(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp == 255){
-					ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp);
-				}
-				else{
-					ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp-60);
-				}
-				if(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp == 255){
-					ChillerTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp);
-				}
-				else{
-					ChillerTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp-60);
-				}
-				PowerConsumption[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PowerConsumption);
-				CHAdeMOGunQty++;
-			}
-			else if(connectorType3 == 4){//AC
-				PresentChargingVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingVoltage);
-				PresentChargingCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingCurrent);
-				PresentChargingPower[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingPower);
-				PresentChargedEnergy[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargedEnergy);
-				PresentChargedDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargedDuration);
-				RemainChargingDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].RemainChargingDuration);
-				EvBatteryMaxVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatteryMaxVoltage);
-				EvBatterytargetVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterytargetVoltage);
-				EvBatterySoc[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterySoc);
-				SystemStatus[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].SystemStatus);
-				EvBatterytargetCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterytargetCurrent);
-				StartUserId[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartUserId);
-				StartDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartDateTime);
-				StopDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StopDateTime);
-				StartMethod[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartMethod);
-				ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].ConnectorTemp);
-				ChillerTemp[2] = json_object_new_int(255);
-				PowerConsumption[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PowerConsumption);
-				if(strcmp(IsDO, "AX") == 0){
-					isCalibratedVaGain[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVaGain);
-					isCalibratedVbGain[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVbGain);
-					isCalibratedVcGain[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVcGain);
-					isCalibratedVaOffset[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVaOffset);
-					isCalibratedVbOffset[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVbOffset);
-					isCalibratedVcOffset[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVcOffset);
-					isCalibratedCaGain[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCaGain);
-					isCalibratedCbGain[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCbGain);
-					isCalibratedCcGain[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCcGain);
-					isCalibratedCaOffset[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCaOffset);
-					isCalibratedCbOffset[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCbOffset);
-					isCalibratedCcOffset[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCcOffset);
-					isCalibratedPa[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPa);
-					isCalibratedPb[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPb);
-					isCalibratedPc[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPc);
-				}
-				AcGunQty++;
-			}
-		}
-		if(strcmp(IsDO, "DO") == 0 || strcmp(IsDO, "DK") == 0 || strcmp(IsDO, "DB") == 0){
-			if(ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity>4 || ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity<0)ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity=0;
-			int DDTotalConnectorQuantity = ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity;
-			for(int i=0;i<DDTotalConnectorQuantity;i++){
-				DDPresentChargingVoltage[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.PresentChargingVoltage);
-				DDPresentChargingCurrent[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.PresentChargingCurrent);
-				DDPresentChargingPower[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.PresentChargingPower);
-				DDPresentChargedEnergy[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.PresentChargedEnergy);
-				DDPresentChargedDuration[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.PresentChargedDuration);
-				DDRemainChargingDuration[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.RemainChargingDuration);
-				DDEvBatteryMaxVoltage[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.EvBatteryMaxVoltage);
-				DDEvBatterytargetVoltage[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.EvBatterytargetVoltage);
-				DDEvBatterySoc[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.EvBatterySoc);
-				DDSystemStatus[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.SystemStatus);
-				DDEvBatterytargetCurrent[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.EvBatterytargetCurrent);
-				DDStartUserId[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.StartUserId);
-				DDStartDateTime[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.StartDateTime);
-				DDStopDateTime[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.StopDateTime);
-				DDStartMethod[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.StartMethod);
-				if(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ConnectorTemp == 255){
-					DDConnectorTemp[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ConnectorTemp);
-				}
-				else{
-					DDConnectorTemp[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ConnectorTemp-60);
-				}
-				if(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ChillerTemp == 255){
-					DDChillerTemp[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ChillerTemp);
-				}
-				else{
-					DDChillerTemp[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ChillerTemp-60);
-				}
-				DDPowerConsumption[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.PowerConsumption);
-			}
-		}
-		//network
-		InternetConn = json_object_new_int(ShmSysConfigAndInfo->SysInfo.InternetConn);
-		FtpServer = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.FtpServer);
-		Eth0DhcpClient = json_object_new_int(ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthDhcpClient);
-		Eth0MacAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthMacAddress);
-		Eth0IpAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress);
-		Eth0SubmaskAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthSubmaskAddress);
-		Eth0GatewayAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthGatewayAddress);
-		Eth1DhcpClient = json_object_new_int(ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthDhcpClient);
-		Eth1MacAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthMacAddress);
-		Eth1IpAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthIpAddress);
-		Eth1SubmaskAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthSubmaskAddress);
-		Eth1GatewayAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthGatewayAddress);
-		WifiMode = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AthInterface.WifiMode);
-		WifiSsid = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSsid);
-		WifiPassword = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiPassword);
-		WifiBroadcastSsid = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AthInterface.WifiBroadcastSsid);
-		WifiTargetBssidMac = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiTargetBssidMac);
-		WifiRssi = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AthInterface.WifiRssi);
-		WifiDhcpServer = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpServer);
-		WifiDhcpClient = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpClient);
-		WifiMacAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiMacAddress);
-		WifiIpAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiIpAddress);
-		WifiSubmaskAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSubmaskAddress);
-		WifiGatewayAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiGatewayAddress);
-		WifiNetworkConn = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AthInterface.WifiNetworkConn);
-		TelcomApn = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomApn);
-		TelcomRssi = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomRssi);
-		TelcomChapPapId = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapId);
-		TelcomChapPapPwd = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapPwd);
-		TelcomModemImei = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemImei);
-		TelcomSimImsi = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimImsi);
-		TelcomSimIccid = json_object_new_string((char*)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimIccid);
-		TelcomSimStatus = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimStatus);
-		TelcomModemMode = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemMode);
-		TelcomIpAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomIpAddress);
-		TelcomNetworkConn = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomNetworkConn);
-		TelcomEnabled = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomEnabled);
-		TelcomNetworkType = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomNetworkType);
-		//backend
-		BackendConnTimeout = json_object_new_int(ShmSysConfigAndInfo->SysConfig.BackendConnTimeout);
-		OfflinePolicy = json_object_new_int(ShmSysConfigAndInfo->SysConfig.OfflinePolicy);
-		OfflineMaxChargeEnergy = json_object_new_int(ShmSysConfigAndInfo->SysConfig.OfflineMaxChargeEnergy);
-		OfflineMaxChargeDuration = json_object_new_int(ShmSysConfigAndInfo->SysConfig.OfflineMaxChargeDuration);
-		OcppConnStatus = json_object_new_int(ShmSysConfigAndInfo->SysInfo.OcppConnStatus);
-		MaintainServerConnStatus = json_object_new_int(ShmSysConfigAndInfo->SysInfo.MaintainServerConnStatus);
-		OcppServerURL = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL);
-		ChargeBoxId = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.ChargeBoxId);
-		OcppSecurityProfile = json_object_new_int(ShmSysConfigAndInfo->SysConfig.OcppSecurityProfile);
-		OcppSecurityPassword = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.OcppSecurityPassword);
-		MaintainServerSecurityProfile = json_object_new_int(ShmSysConfigAndInfo->SysConfig.MaintainServerSecurityProfile);
-		MaintainServerSecurityPassword = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.MaintainServerSecurityPassword);
-		chargePointVendor = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.chargePointVendor);
-		MaintainServerURL = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.MaintainServerURL);
-		if(strcmp(IsDO, "AX") == 0 ){
-			isEnableLocalPowerSharging = json_object_new_int(ShmSysConfigAndInfo->SysConfig.isEnableLocalPowerSharing);
-			PowerSharingCapacity = json_object_new_int(ShmSysConfigAndInfo->SysConfig.PowerSharingCapacityPower);
-			PowerSharingServerIP = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.PowerSharingServerIP);
-		}
-		if(strcmp(IsDO, "AX") == 0|| strcmp(IsAcDc, "D") == 0){
-			OcppReceiptrURL = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.OcppReceiptrURL);
-		}
-		/*for TTIA*/
-		if(strcmp(IsAcDc, "D") == 0 && strcmp(SafetyRegulation, "C") == 0){
-			isEnableTTIA = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TTIA_Info.isEnableTTIA);
-			server_addr = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TTIA_Info.server_addr);
-			server_port = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TTIA_Info.server_port);
-			busVenderId = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TTIA_Info.busVenderId);
-			EquipmentProvider = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TTIA_Info.EquipmentProvider);
-			TransportationCompanyNo = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TTIA_Info.TransportationCompanyNo);
-			TTIAChargeBoxId = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TTIA_Info.ChargeBoxId);
-			evseStation = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TTIA_Info.evseStation);
-		}
-
-		//system
-		json_object_object_add(jobj1,"ModelName",ModelName);
-		json_object_object_add(jobj1,"AcModelName",AcModelName);
-		json_object_object_add(jobj1,"SerialNumber",SerialNumber);
-		json_object_object_add(jobj1,"SystemId",SystemId);
-		json_object_object_add(jobj1,"AcPhaseCount",AcPhaseCount);
-		json_object_object_add(jobj1,"PhaseLossPolicy",PhaseLossPolicy);
-		json_object_object_add(jobj1,"FactoryConfiguration",FactoryConfiguration);
-		json_object_object_add(jobj1,"AuthorisationMode",AuthorisationMode);
-		json_object_object_add(jobj1,"DefaultLanguage",DefaultLanguage);
-		json_object_object_add(jobj1,"InputVoltageR",InputVoltageR);
-		json_object_object_add(jobj1,"InputVoltageS",InputVoltageS);
-		json_object_object_add(jobj1,"InputVoltageT",InputVoltageT);
-		json_object_object_add(jobj1,"InputVoltageDc",InputVoltageDc);
-		json_object_object_add(jobj1,"SystemFanRotaSpeed",SystemFanRotaSpeed);
-		json_object_object_add(jobj1,"PsuFanRotaSpeed",PsuFanRotaSpeed);
-		json_object_object_add(jobj1,"RfidCardNumEndian",RfidCardNumEndian);
-		json_object_object_add(jobj1,"PsuAcInputType",PsuAcInputType);
-		json_object_object_add(jobj1,"RatingCurrent",RatingCurrent);
-		json_object_object_add(jobj1,"AcRatingCurrent",AcRatingCurrent);
-		json_object_object_add(jobj1,"isAPP",isAPP);
-		json_object_object_add(jobj1,"isQRCode",isQRCode);
-		json_object_object_add(jobj1,"isRFID",isRFID);
-		json_object_object_add(jobj1,"QRCodeMadeMode",QRCodeMadeMode);
-		json_object_object_add(jobj1,"QRCodeContent",QRCodeContent);
-		json_object_object_add(jobj1,"Intensity",Intensity);
-		json_object_object_add(jobj1,"isAuthrizeByEVCCID",isAuthrizeByEVCCID);
-		json_object_object_add(jobj1,"AuxPower5V",AuxPower5V);
-		json_object_object_add(jobj1,"AuxPower12V",AuxPower12V);
-		json_object_object_add(jobj1,"AuxPower24V",AuxPower24V);
-		json_object_object_add(jobj1,"AuxPower48V",AuxPower48V);
-		json_object_object_add(jobj1,"CsuHwRev",CsuHwRev);
-		json_object_object_add(jobj1,"CsuBootLoadFwRev",CsuBootLoadFwRev);
-		json_object_object_add(jobj1,"CsuKernelFwRev",CsuKernelFwRev);
-		json_object_object_add(jobj1,"CsuRootFsFwRev",CsuRootFsFwRev);
-		json_object_object_add(jobj1,"CsuPrimFwRev",CsuPrimFwRev);
-		json_object_object_add(jobj1,"LcmHwRev",LcmHwRev);
-		json_object_object_add(jobj1,"LcmFwRev",LcmFwRev);
-		json_object_object_add(jobj1,"PsuHwRev",PsuHwRev);
-		json_object_object_add(jobj1,"PsuPrimFwRev",PsuPrimFwRev);
-		json_object_object_add(jobj1,"PsuSecFwRev",PsuSecFwRev);
-		json_object_object_add(jobj1,"AuxPwrHwRev",AuxPwrHwRev);
-		json_object_object_add(jobj1,"AuxPwrFwRev",AuxPwrFwRev);
-		json_object_object_add(jobj1,"FanModuleHwRev",FanModuleHwRev);
-		json_object_object_add(jobj1,"FanModuleFwRev",FanModuleFwRev);
-		json_object_object_add(jobj1,"RelayModuleHwRev",RelayModuleHwRev);
-		json_object_object_add(jobj1,"RelayModuleFwRev",RelayModuleFwRev);
-		json_object_object_add(jobj1,"TelcomModemFwRev",TelcomModemFwRev);
-		json_object_object_add(jobj1,"Connector1FwRev",Connector1FwRev);
-		json_object_object_add(jobj1,"Connector2FwRev",Connector2FwRev);
-		/* for DC+AC*/
-		if(connectorType3==4){
-			json_object_object_add(jobj1,"Connector3FwRev",Connector3FwRev);
-		}
-		json_object_object_add(jobj1,"LedModuleFwRev",LedModuleFwRev);
-		json_object_object_add(jobj1,"SystemAmbientTemp",SystemAmbientTemp);
-		json_object_object_add(jobj1,"SystemCriticalTemp",SystemCriticalTemp);
-		json_object_object_add(jobj1,"CcsConnectorTemp",CcsConnectorTemp);
-		json_object_object_add(jobj1,"PsuAmbientTemp",PsuAmbientTemp);
-		json_object_object_add(jobj1,"AcPlugInTimes",AcPlugInTimes);
-		json_object_object_add(jobj1,"GbPlugInTimes",GbPlugInTimes);
-		json_object_object_add(jobj1,"Ccs1PlugInTimes",Ccs1PlugInTime);
-		json_object_object_add(jobj1,"Ccs2PlugInTimes",Ccs2PlugInTimes);
-		json_object_object_add(jobj1,"ChademoPlugInTimes",ChademoPlugInTimes);
-		json_object_object_add(jobj1,"FirmwareUpdate",FirmwareUpdate);
-		if(strcmp(IsAcDc, "D") == 0){
-			json_object_object_add(jobj1,"FwPrimaryVersion",FwPrimaryVersionArr);
-			json_object_object_add(jobj1,"FwSecondVersion",FwSecondVersionArr);
-		}
-		if(strcmp(IsDO, "DO") == 0 || strcmp(IsDO, "DK") == 0 || strcmp(IsDO, "DB") == 0){
-			json_object_object_add(jobj1,"DispenserQuantity",DispenserQuantity);
-			json_object_object_add(jobj1,"TotalConnectorQuantity",TotalConnectorQuantity);
-			json_object_object_add(jobj1,"DDModelName",DDModelNameArr);
-			json_object_object_add(jobj1,"DDSerialNumber",DDSerialNumberArr);
-			json_object_object_add(jobj1,"DDSystemId",DDSystemIdArr);
-			json_object_object_add(jobj1,"DDAuthorisationMode",DDAuthorisationModeArr);
-			json_object_object_add(jobj1,"DDRfidCardNumEndian",DDRfidCardNumEndianArr);
-			json_object_object_add(jobj1,"DDisAPP",DDisAPPArr);
-			json_object_object_add(jobj1,"DDisQRCode",DDisQRCodeArr);
-			json_object_object_add(jobj1,"DDisRFID",DDisRFIDArr);
-			json_object_object_add(jobj1,"DDQRCodeMadeMode",DDQRCodeMadeModeArr);
-			json_object_object_add(jobj1,"DDQRCodeContent",DDQRCodeContentArr);
-			json_object_object_add(jobj1,"DDFactoryConfiguration",DDFactoryConfigurationArr);
-			json_object_object_add(jobj1,"DDCsuBootLoadFwRev",DDCsuBootLoadFwRevArr);
-			json_object_object_add(jobj1,"DDCsuKernelFwRev",DDCsuKernelFwRevArr);
-			json_object_object_add(jobj1,"DDCsuRootFsFwRev",DDCsuRootFsFwRevArr);
-			json_object_object_add(jobj1,"DDCsuPrimFwRev",DDCsuPrimFwRevArr);
-			json_object_object_add(jobj1,"DDLcmFwRev",DDLcmFwRevArr);
-			json_object_object_add(jobj1,"DDPsuPrimFwRev",DDPsuPrimFwRevArr);
-			json_object_object_add(jobj1,"DDPsuSecFwRev",DDPsuSecFwRevArr);
-			json_object_object_add(jobj1,"DDFanModuleFwRev",DDFanModuleFwRevArr);
-			json_object_object_add(jobj1,"DDRelayModuleFwRev",DDRelayModuleFwRevArr);
-			json_object_object_add(jobj1,"DDTelcomModemFwRev",DDTelcomModemFwRevArr);
-			json_object_object_add(jobj1,"DDLedModuleFwRev",DDLedModuleFwRevArr);
-			json_object_object_add(jobj1,"DDConnector1FwRev",DDConnector1FwRevArr);
-			json_object_object_add(jobj1,"DDConnector2FwRev",DDConnector2FwRevArr);
-			json_object_object_add(jobj1,"DDIntensity",DDIntensityArr);
-			json_object_object_add(jobj1,"Relay2ModuleFwRev",Relay2ModuleFwRev);
-		}
-
-		printf("%s\n", json_object_to_json_string(jobj1));
-		json_object_put(jobj1);
-
-		//charging
-		json_object_object_add(jobj2,"MaxChargingEnergy",MaxChargingEnergy);
-		json_object_object_add(jobj2,"MaxChargingPower",MaxChargingPower);
-		json_object_object_add(jobj2,"MaxChargingCurrent",MaxChargingCurrent);
-		json_object_object_add(jobj2,"AcMaxChargingCurrent",AcMaxChargingCurrent);
-		json_object_object_add(jobj2,"MaxChargingDuration",MaxChargingDuration);
-		json_object_object_add(jobj2,"MaxChargingSoc",MaxChargingSoc);
-		json_object_object_add(jobj2,"StopChargingByButton",StopChargingByButton);
-		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[0]);
-		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[1]);
-		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[2]);
-		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[3]);
-		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[4]);
-		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[5]);
-		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[6]);
-		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[7]);
-		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[8]);
-		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[9]);
-		json_object_object_add(jobj2,"LocalWhiteCard",LocalWhiteCardArr);
-		json_object_object_add(jobj2,"isBilling",isBilling);
-		json_object_object_add(jobj2,"Currency",Currency);
-		json_object_array_add(FeeArr,Fee[0]);
-		json_object_array_add(FeeArr,Fee[1]);
-		json_object_array_add(FeeArr,Fee[2]);
-		json_object_array_add(FeeArr,Fee[3]);
-		json_object_array_add(FeeArr,Fee[4]);
-		json_object_array_add(FeeArr,Fee[5]);
-		json_object_array_add(FeeArr,Fee[6]);
-		json_object_array_add(FeeArr,Fee[7]);
-		json_object_array_add(FeeArr,Fee[8]);
-		json_object_array_add(FeeArr,Fee[9]);
-		json_object_array_add(FeeArr,Fee[10]);
-		json_object_array_add(FeeArr,Fee[11]);
-		json_object_array_add(FeeArr,Fee[12]);
-		json_object_array_add(FeeArr,Fee[13]);
-		json_object_array_add(FeeArr,Fee[14]);
-		json_object_array_add(FeeArr,Fee[15]);
-		json_object_array_add(FeeArr,Fee[16]);
-		json_object_array_add(FeeArr,Fee[17]);
-		json_object_array_add(FeeArr,Fee[18]);
-		json_object_array_add(FeeArr,Fee[19]);
-		json_object_array_add(FeeArr,Fee[20]);
-		json_object_array_add(FeeArr,Fee[21]);
-		json_object_array_add(FeeArr,Fee[22]);
-		json_object_array_add(FeeArr,Fee[23]);
-		json_object_object_add(jobj2,"Fee",FeeArr);
-		if(connectorType1 != 0){
-			json_object_object_add(ChargingInfo1,"StartUserId",StartUserId[0]);
-			json_object_object_add(ChargingInfo1,"StartDateTime",StartDateTime[0]);
-			json_object_object_add(ChargingInfo1,"StopDateTime",StopDateTime[0]);
-			json_object_object_add(ChargingInfo1,"StartMethod",StartMethod[0]);
-			json_object_object_add(ChargingInfo1,"ConnectorTemp",ConnectorTemp[0]);
-			json_object_object_add(ChargingInfo1,"ChillerTemp",ChillerTemp[0]);
-			json_object_object_add(ChargingInfo1,"PresentChargingVoltage",PresentChargingVoltage[0]);
-			json_object_object_add(ChargingInfo1,"PresentChargingCurrent",PresentChargingCurrent[0]);
-			json_object_object_add(ChargingInfo1,"PresentChargingPower",PresentChargingPower[0]);
-			json_object_object_add(ChargingInfo1,"PresentChargedEnergy",PresentChargedEnergy[0]);
-			json_object_object_add(ChargingInfo1,"PresentChargedDuration",PresentChargedDuration[0]);
-			json_object_object_add(ChargingInfo1,"RemainChargingDuration",RemainChargingDuration[0]);
-			json_object_object_add(ChargingInfo1,"EvBatteryMaxVoltage",EvBatteryMaxVoltage[0]);
-			json_object_object_add(ChargingInfo1,"EvBatterytargetVoltage",EvBatterytargetVoltage[0]);
-			json_object_object_add(ChargingInfo1,"EvBatterySoc",EvBatterySoc[0]);
-			json_object_object_add(ChargingInfo1,"SystemStatus",SystemStatus[0]);
-			json_object_object_add(ChargingInfo1,"EvBatterytargetCurrent",EvBatterytargetCurrent[0]);
-			json_object_object_add(ChargingInfo1,"PowerConsumption",PowerConsumption[0]);
-			if(strcmp(IsDO, "AX") == 0){
-				json_object_object_add(ChargingInfo1,"isCalibratedVaGain",isCalibratedVaGain[0]);
-				json_object_object_add(ChargingInfo1,"isCalibratedVbGain",isCalibratedVbGain[0]);
-				json_object_object_add(ChargingInfo1,"isCalibratedVcGain",isCalibratedVcGain[0]);
-				json_object_object_add(ChargingInfo1,"isCalibratedVaOffset",isCalibratedVaOffset[0]);
-				json_object_object_add(ChargingInfo1,"isCalibratedVbOffset",isCalibratedVbOffset[0]);
-				json_object_object_add(ChargingInfo1,"isCalibratedVcOffset",isCalibratedVcOffset[0]);
-				json_object_object_add(ChargingInfo1,"isCalibratedCaGain",isCalibratedCaGain[0]);
-				json_object_object_add(ChargingInfo1,"isCalibratedCbGain",isCalibratedCbGain[0]);
-				json_object_object_add(ChargingInfo1,"isCalibratedCcGain",isCalibratedCcGain[0]);
-				json_object_object_add(ChargingInfo1,"isCalibratedCaOffset",isCalibratedCaOffset[0]);
-				json_object_object_add(ChargingInfo1,"isCalibratedCbOffset",isCalibratedCbOffset[0]);
-				json_object_object_add(ChargingInfo1,"isCalibratedCcOffset",isCalibratedCcOffset[0]);
-				json_object_object_add(ChargingInfo1,"isCalibratedPa",isCalibratedPa[0]);
-				json_object_object_add(ChargingInfo1,"isCalibratedPb",isCalibratedPb[0]);
-				json_object_object_add(ChargingInfo1,"isCalibratedPc",isCalibratedPc[0]);
-			}
-			json_object_object_add(jobj2,"ChargingInfo1",ChargingInfo1);
-		}
-		if(connectorType2 != 0){
-			json_object_object_add(ChargingInfo2,"StartUserId",StartUserId[1]);
-			json_object_object_add(ChargingInfo2,"StartDateTime",StartDateTime[1]);
-			json_object_object_add(ChargingInfo2,"StopDateTime",StopDateTime[1]);
-			json_object_object_add(ChargingInfo2,"StartMethod",StartMethod[1]);
-			json_object_object_add(ChargingInfo2,"ConnectorTemp",ConnectorTemp[1]);
-			json_object_object_add(ChargingInfo2,"ChillerTemp",ChillerTemp[1]);
-			json_object_object_add(ChargingInfo2,"PresentChargingVoltage",PresentChargingVoltage[1]);
-			json_object_object_add(ChargingInfo2,"PresentChargingCurrent",PresentChargingCurrent[1]);
-			json_object_object_add(ChargingInfo2,"PresentChargingPower",PresentChargingPower[1]);
-			json_object_object_add(ChargingInfo2,"PresentChargedEnergy",PresentChargedEnergy[1]);
-			json_object_object_add(ChargingInfo2,"PresentChargedDuration",PresentChargedDuration[1]);
-			json_object_object_add(ChargingInfo2,"RemainChargingDuration",RemainChargingDuration[1]);
-			json_object_object_add(ChargingInfo2,"EvBatteryMaxVoltage",EvBatteryMaxVoltage[1]);
-			json_object_object_add(ChargingInfo2,"EvBatterytargetVoltage",EvBatterytargetVoltage[1]);
-			json_object_object_add(ChargingInfo2,"EvBatterySoc",EvBatterySoc[1]);
-			json_object_object_add(ChargingInfo2,"SystemStatus",SystemStatus[1]);
-			json_object_object_add(ChargingInfo2,"EvBatterytargetCurrent",EvBatterytargetCurrent[1]);
-			json_object_object_add(ChargingInfo2,"PowerConsumption",PowerConsumption[1]);
-			if(strcmp(IsDO, "AX") == 0){
-				json_object_object_add(ChargingInfo2,"isCalibratedVaGain",isCalibratedVaGain[1]);
-				json_object_object_add(ChargingInfo2,"isCalibratedVbGain",isCalibratedVbGain[1]);
-				json_object_object_add(ChargingInfo2,"isCalibratedVcGain",isCalibratedVcGain[1]);
-				json_object_object_add(ChargingInfo2,"isCalibratedVaOffset",isCalibratedVaOffset[1]);
-				json_object_object_add(ChargingInfo2,"isCalibratedVbOffset",isCalibratedVbOffset[1]);
-				json_object_object_add(ChargingInfo2,"isCalibratedVcOffset",isCalibratedVcOffset[1]);
-				json_object_object_add(ChargingInfo2,"isCalibratedCaGain",isCalibratedCaGain[1]);
-				json_object_object_add(ChargingInfo2,"isCalibratedCbGain",isCalibratedCbGain[1]);
-				json_object_object_add(ChargingInfo2,"isCalibratedCcGain",isCalibratedCcGain[1]);
-				json_object_object_add(ChargingInfo2,"isCalibratedCaOffset",isCalibratedCaOffset[1]);
-				json_object_object_add(ChargingInfo2,"isCalibratedCbOffset",isCalibratedCbOffset[1]);
-				json_object_object_add(ChargingInfo2,"isCalibratedCcOffset",isCalibratedCcOffset[1]);
-				json_object_object_add(ChargingInfo2,"isCalibratedPa",isCalibratedPa[1]);
-				json_object_object_add(ChargingInfo2,"isCalibratedPb",isCalibratedPb[1]);
-				json_object_object_add(ChargingInfo2,"isCalibratedPc",isCalibratedPc[1]);
-			}
-			json_object_object_add(jobj2,"ChargingInfo2",ChargingInfo2);
-		}
-		if(connectorType3 != 0){
-			json_object_object_add(ChargingInfo3,"StartUserId",StartUserId[2]);
-			json_object_object_add(ChargingInfo3,"StartDateTime",StartDateTime[2]);
-			json_object_object_add(ChargingInfo3,"StopDateTime",StopDateTime[2]);
-			json_object_object_add(ChargingInfo3,"StartMethod",StartMethod[2]);
-			json_object_object_add(ChargingInfo3,"ConnectorTemp",ConnectorTemp[2]);
-			json_object_object_add(ChargingInfo3,"ChillerTemp",ChillerTemp[2]);
-			json_object_object_add(ChargingInfo3,"PresentChargingVoltage",PresentChargingVoltage[2]);
-			json_object_object_add(ChargingInfo3,"PresentChargingCurrent",PresentChargingCurrent[2]);
-			json_object_object_add(ChargingInfo3,"PresentChargingPower",PresentChargingPower[2]);
-			json_object_object_add(ChargingInfo3,"PresentChargedEnergy",PresentChargedEnergy[2]);
-			json_object_object_add(ChargingInfo3,"PresentChargedDuration",PresentChargedDuration[2]);
-			json_object_object_add(ChargingInfo3,"RemainChargingDuration",RemainChargingDuration[2]);
-			json_object_object_add(ChargingInfo3,"EvBatteryMaxVoltage",EvBatteryMaxVoltage[2]);
-			json_object_object_add(ChargingInfo3,"EvBatterytargetVoltage",EvBatterytargetVoltage[2]);
-			json_object_object_add(ChargingInfo3,"EvBatterySoc",EvBatterySoc[2]);
-			json_object_object_add(ChargingInfo3,"SystemStatus",SystemStatus[2]);
-			json_object_object_add(ChargingInfo3,"EvBatterytargetCurrent",EvBatterytargetCurrent[2]);
-			json_object_object_add(ChargingInfo3,"PowerConsumption",PowerConsumption[2]);
-			if(strcmp(IsDO, "AX") == 0){
-				json_object_object_add(ChargingInfo3,"isCalibratedVaGain",isCalibratedVaGain[2]);
-				json_object_object_add(ChargingInfo3,"isCalibratedVbGain",isCalibratedVbGain[2]);
-				json_object_object_add(ChargingInfo3,"isCalibratedVcGain",isCalibratedVcGain[2]);
-				json_object_object_add(ChargingInfo3,"isCalibratedVaOffset",isCalibratedVaOffset[2]);
-				json_object_object_add(ChargingInfo3,"isCalibratedVbOffset",isCalibratedVbOffset[2]);
-				json_object_object_add(ChargingInfo3,"isCalibratedVcOffset",isCalibratedVcOffset[2]);
-				json_object_object_add(ChargingInfo3,"isCalibratedCaGain",isCalibratedCaGain[2]);
-				json_object_object_add(ChargingInfo3,"isCalibratedCbGain",isCalibratedCbGain[2]);
-				json_object_object_add(ChargingInfo3,"isCalibratedCcGain",isCalibratedCcGain[2]);
-				json_object_object_add(ChargingInfo3,"isCalibratedCaOffset",isCalibratedCaOffset[2]);
-				json_object_object_add(ChargingInfo3,"isCalibratedCbOffset",isCalibratedCbOffset[2]);
-				json_object_object_add(ChargingInfo3,"isCalibratedCcOffset",isCalibratedCcOffset[2]);
-				json_object_object_add(ChargingInfo3,"isCalibratedPa",isCalibratedPa[2]);
-				json_object_object_add(ChargingInfo3,"isCalibratedPb",isCalibratedPb[2]);
-				json_object_object_add(ChargingInfo3,"isCalibratedPc",isCalibratedPc[2]);
-			}
-			json_object_object_add(jobj2,"ChargingInfo3",ChargingInfo3);
-		}
-		if(strcmp(IsDO, "DO") == 0 || strcmp(IsDO, "DK") == 0 || strcmp(IsDO, "DB") == 0){
-			if(ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity>4|| ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity<0)ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity=0;
-			int DDTotalConnectorQuantity = ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity;
-			DDChargingInfo1=json_object_new_object();
-			DDChargingInfo2=json_object_new_object();
-			DDChargingInfo3=json_object_new_object();
-			DDChargingInfo4=json_object_new_object();
-			if(DDTotalConnectorQuantity>0){
-				json_object_object_add(DDChargingInfo1,"StartUserId",DDStartUserId[0]);
-				json_object_object_add(DDChargingInfo1,"StartDateTime",DDStartDateTime[0]);
-				json_object_object_add(DDChargingInfo1,"StopDateTime",DDStopDateTime[0]);
-				json_object_object_add(DDChargingInfo1,"StartMethod",DDStartMethod[0]);
-				json_object_object_add(DDChargingInfo1,"ConnectorTemp",DDConnectorTemp[0]);
-				json_object_object_add(DDChargingInfo1,"ChillerTemp",DDChillerTemp[0]);
-				json_object_object_add(DDChargingInfo1,"PresentChargingVoltage",DDPresentChargingVoltage[0]);
-				json_object_object_add(DDChargingInfo1,"PresentChargingCurrent",DDPresentChargingCurrent[0]);
-				json_object_object_add(DDChargingInfo1,"PresentChargingPower",DDPresentChargingPower[0]);
-				json_object_object_add(DDChargingInfo1,"PresentChargedEnergy",DDPresentChargedEnergy[0]);
-				json_object_object_add(DDChargingInfo1,"PresentChargedDuration",DDPresentChargedDuration[0]);
-				json_object_object_add(DDChargingInfo1,"RemainChargingDuration",DDRemainChargingDuration[0]);
-				json_object_object_add(DDChargingInfo1,"EvBatteryMaxVoltage",DDEvBatteryMaxVoltage[0]);
-				json_object_object_add(DDChargingInfo1,"EvBatterytargetVoltage",DDEvBatterytargetVoltage[0]);
-				json_object_object_add(DDChargingInfo1,"EvBatterySoc",DDEvBatterySoc[0]);
-				json_object_object_add(DDChargingInfo1,"SystemStatus",DDSystemStatus[0]);
-				json_object_object_add(DDChargingInfo1,"EvBatterytargetCurrent",DDEvBatterytargetCurrent[0]);
-				json_object_object_add(DDChargingInfo1,"PowerConsumption",DDPowerConsumption[0]);
-				json_object_object_add(jobj2,"DDChargingInfo1",DDChargingInfo1);
-			}
-			if(DDTotalConnectorQuantity>1){
-				json_object_object_add(DDChargingInfo2,"StartUserId",DDStartUserId[1]);
-				json_object_object_add(DDChargingInfo2,"StartDateTime",DDStartDateTime[1]);
-				json_object_object_add(DDChargingInfo2,"StopDateTime",DDStopDateTime[1]);
-				json_object_object_add(DDChargingInfo2,"StartMethod",DDStartMethod[1]);
-				json_object_object_add(DDChargingInfo2,"ConnectorTemp",DDConnectorTemp[1]);
-				json_object_object_add(DDChargingInfo2,"ChillerTemp",DDChillerTemp[1]);
-				json_object_object_add(DDChargingInfo2,"PresentChargingVoltage",DDPresentChargingVoltage[1]);
-				json_object_object_add(DDChargingInfo2,"PresentChargingCurrent",DDPresentChargingCurrent[1]);
-				json_object_object_add(DDChargingInfo2,"PresentChargingPower",DDPresentChargingPower[1]);
-				json_object_object_add(DDChargingInfo2,"PresentChargedEnergy",DDPresentChargedEnergy[1]);
-				json_object_object_add(DDChargingInfo2,"PresentChargedDuration",DDPresentChargedDuration[1]);
-				json_object_object_add(DDChargingInfo2,"RemainChargingDuration",DDRemainChargingDuration[1]);
-				json_object_object_add(DDChargingInfo2,"EvBatteryMaxVoltage",DDEvBatteryMaxVoltage[1]);
-				json_object_object_add(DDChargingInfo2,"EvBatterytargetVoltage",DDEvBatterytargetVoltage[1]);
-				json_object_object_add(DDChargingInfo2,"EvBatterySoc",DDEvBatterySoc[1]);
-				json_object_object_add(DDChargingInfo2,"SystemStatus",DDSystemStatus[1]);
-				json_object_object_add(DDChargingInfo2,"EvBatterytargetCurrent",DDEvBatterytargetCurrent[1]);
-				json_object_object_add(DDChargingInfo2,"PowerConsumption",DDPowerConsumption[1]);
-				json_object_object_add(jobj2,"DDChargingInfo2",DDChargingInfo2);
-			}
-			if(DDTotalConnectorQuantity>2){
-				json_object_object_add(DDChargingInfo3,"StartUserId",DDStartUserId[2]);
-				json_object_object_add(DDChargingInfo3,"StartDateTime",DDStartDateTime[2]);
-				json_object_object_add(DDChargingInfo3,"StopDateTime",DDStopDateTime[2]);
-				json_object_object_add(DDChargingInfo3,"StartMethod",DDStartMethod[2]);
-				json_object_object_add(DDChargingInfo3,"ConnectorTemp",DDConnectorTemp[2]);
-				json_object_object_add(DDChargingInfo3,"ChillerTemp",DDChillerTemp[2]);
-				json_object_object_add(DDChargingInfo3,"PresentChargingVoltage",DDPresentChargingVoltage[2]);
-				json_object_object_add(DDChargingInfo3,"PresentChargingCurrent",DDPresentChargingCurrent[2]);
-				json_object_object_add(DDChargingInfo3,"PresentChargingPower",DDPresentChargingPower[2]);
-				json_object_object_add(DDChargingInfo3,"PresentChargedEnergy",DDPresentChargedEnergy[2]);
-				json_object_object_add(DDChargingInfo3,"PresentChargedDuration",DDPresentChargedDuration[2]);
-				json_object_object_add(DDChargingInfo3,"RemainChargingDuration",DDRemainChargingDuration[2]);
-				json_object_object_add(DDChargingInfo3,"EvBatteryMaxVoltage",DDEvBatteryMaxVoltage[2]);
-				json_object_object_add(DDChargingInfo3,"EvBatterytargetVoltage",DDEvBatterytargetVoltage[2]);
-				json_object_object_add(DDChargingInfo3,"EvBatterySoc",DDEvBatterySoc[2]);
-				json_object_object_add(DDChargingInfo3,"SystemStatus",DDSystemStatus[2]);
-				json_object_object_add(DDChargingInfo3,"EvBatterytargetCurrent",DDEvBatterytargetCurrent[2]);
-				json_object_object_add(DDChargingInfo3,"PowerConsumption",DDPowerConsumption[2]);
-				json_object_object_add(jobj2,"DDChargingInfo3",DDChargingInfo3);
-			}
-			if(DDTotalConnectorQuantity>3){
-				json_object_object_add(DDChargingInfo4,"StartUserId",DDStartUserId[3]);
-				json_object_object_add(DDChargingInfo4,"StartDateTime",DDStartDateTime[3]);
-				json_object_object_add(DDChargingInfo4,"StopDateTime",DDStopDateTime[3]);
-				json_object_object_add(DDChargingInfo4,"StartMethod",DDStartMethod[3]);
-				json_object_object_add(DDChargingInfo4,"ConnectorTemp",DDConnectorTemp[3]);
-				json_object_object_add(DDChargingInfo4,"ChillerTemp",DDChillerTemp[3]);
-				json_object_object_add(DDChargingInfo4,"PresentChargingVoltage",DDPresentChargingVoltage[3]);
-				json_object_object_add(DDChargingInfo4,"PresentChargingCurrent",DDPresentChargingCurrent[3]);
-				json_object_object_add(DDChargingInfo4,"PresentChargingPower",DDPresentChargingPower[3]);
-				json_object_object_add(DDChargingInfo4,"PresentChargedEnergy",DDPresentChargedEnergy[3]);
-				json_object_object_add(DDChargingInfo4,"PresentChargedDuration",DDPresentChargedDuration[3]);
-				json_object_object_add(DDChargingInfo4,"RemainChargingDuration",DDRemainChargingDuration[3]);
-				json_object_object_add(DDChargingInfo4,"EvBatteryMaxVoltage",DDEvBatteryMaxVoltage[3]);
-				json_object_object_add(DDChargingInfo4,"EvBatterytargetVoltage",DDEvBatterytargetVoltage[3]);
-				json_object_object_add(DDChargingInfo4,"EvBatterySoc",DDEvBatterySoc[3]);
-				json_object_object_add(DDChargingInfo4,"SystemStatus",DDSystemStatus[3]);
-				json_object_object_add(DDChargingInfo4,"EvBatterytargetCurrent",DDEvBatterytargetCurrent[3]);
-				json_object_object_add(DDChargingInfo4,"PowerConsumption",DDPowerConsumption[3]);
-				json_object_object_add(jobj2,"DDChargingInfo4",DDChargingInfo4);
-			}
-		}
-		printf("%s\n", json_object_to_json_string(jobj2));
-		json_object_put(jobj2);
-
-		//network
-		json_object_object_add(jobj3,"InternetConn",InternetConn);
-		json_object_object_add(jobj3,"FtpServer",FtpServer);
-		json_object_object_add(jobj3,"Eth0DhcpClient",Eth0DhcpClient);
-		json_object_object_add(jobj3,"Eth0MacAddress",Eth0MacAddress);
-		json_object_object_add(jobj3,"Eth0IpAddress",Eth0IpAddress);
-		json_object_object_add(jobj3,"Eth0SubmaskAddress",Eth0SubmaskAddress);
-		json_object_object_add(jobj3,"Eth0GatewayAddress",Eth0GatewayAddress);
-		json_object_object_add(jobj3,"Eth1DhcpClient",Eth1DhcpClient);
-		json_object_object_add(jobj3,"Eth1MacAddress",Eth1MacAddress);
-		json_object_object_add(jobj3,"Eth1IpAddress",Eth1IpAddress);
-		json_object_object_add(jobj3,"Eth1SubmaskAddress",Eth1SubmaskAddress);
-		json_object_object_add(jobj3,"Eth1GatewayAddress",Eth1GatewayAddress);
-		json_object_object_add(jobj3,"WifiMode",WifiMode);
-		json_object_object_add(jobj3,"WifiSsid",WifiSsid);
-		json_object_object_add(jobj3,"WifiPassword",WifiPassword);
-		json_object_object_add(jobj3,"WifiBroadcastSsid",WifiBroadcastSsid);
-		json_object_object_add(jobj3,"WifiTargetBssidMac",WifiTargetBssidMac);
-		json_object_object_add(jobj3,"WifiRssi",WifiRssi);
-		json_object_object_add(jobj3,"WifiDhcpServer",WifiDhcpServer);
-		json_object_object_add(jobj3,"WifiDhcpClient",WifiDhcpClient);
-		json_object_object_add(jobj3,"WifiMacAddress",WifiMacAddress);
-		json_object_object_add(jobj3,"WifiIpAddress",WifiIpAddress);
-		json_object_object_add(jobj3,"WifiSubmaskAddress",WifiSubmaskAddress);
-		json_object_object_add(jobj3,"WifiGatewayAddress",WifiGatewayAddress);
-		json_object_object_add(jobj3,"WifiNetworkConn",WifiNetworkConn);
-		json_object_object_add(jobj3,"TelcomApn",TelcomApn);
-		json_object_object_add(jobj3,"TelcomRssi",TelcomRssi);
-		json_object_object_add(jobj3,"TelcomChapPapId",TelcomChapPapId);
-		json_object_object_add(jobj3,"TelcomChapPapPwd",TelcomChapPapPwd);
-		json_object_object_add(jobj3,"TelcomModemImei",TelcomModemImei);
-		json_object_object_add(jobj3,"TelcomSimImsi",TelcomSimImsi);
-		json_object_object_add(jobj3,"TelcomSimIccid",TelcomSimIccid);
-		json_object_object_add(jobj3,"TelcomSimStatus",TelcomSimStatus);
-		json_object_object_add(jobj3,"TelcomModemMode",TelcomModemMode);
-		json_object_object_add(jobj3,"TelcomIpAddress",TelcomIpAddress);
-		json_object_object_add(jobj3,"TelcomNetworkConn",TelcomNetworkConn);
-		json_object_object_add(jobj3,"TelcomEnabled",TelcomEnabled);
-		json_object_object_add(jobj3,"TelcomNetworkType",TelcomNetworkType);
-		printf("%s\n", json_object_to_json_string(jobj3));
-		json_object_put(jobj3);
-
-		//backend
-		json_object_object_add(jobj4,"BackendConnTimeout",BackendConnTimeout);
-		json_object_object_add(jobj4,"OfflinePolicy",OfflinePolicy);
-		json_object_object_add(jobj4,"OfflineMaxChargeEnergy",OfflineMaxChargeEnergy);
-		json_object_object_add(jobj4,"OfflineMaxChargeDuration",OfflineMaxChargeDuration);
-		json_object_object_add(jobj4,"OcppConnStatus",OcppConnStatus);
-		json_object_object_add(jobj4,"MaintainServerConnStatus",MaintainServerConnStatus);
-		json_object_object_add(jobj4,"OcppServerURL",OcppServerURL);
-		json_object_object_add(jobj4,"ChargeBoxId",ChargeBoxId);
-		json_object_object_add(jobj4,"chargePointVendor",chargePointVendor);
-		json_object_object_add(jobj4,"OcppSecurityProfile",OcppSecurityProfile);
-		json_object_object_add(jobj4,"OcppSecurityPassword",OcppSecurityPassword);
-		json_object_object_add(jobj4,"MaintainServerSecurityProfile",MaintainServerSecurityProfile);
-		json_object_object_add(jobj4,"MaintainServerSecurityPassword",MaintainServerSecurityPassword);
-		json_object_object_add(jobj4,"MaintainServerURL",MaintainServerURL);
-		if(strcmp(IsDO, "AX") == 0){
-			json_object_object_add(jobj4,"isEnableLocalPowerSharging",isEnableLocalPowerSharging);
-			json_object_object_add(jobj4,"PowerSharingCapacity",PowerSharingCapacity);
-			json_object_object_add(jobj4,"PowerSharingServerIP",PowerSharingServerIP);
-		}
-		if(strcmp(IsDO, "AX") == 0 || strcmp(IsAcDc, "D") == 0){
-			json_object_object_add(jobj4,"OcppReceiptrURL",OcppReceiptrURL);
-		}
-		/*for TTIA*/
-		if(strcmp(IsAcDc, "D") == 0 && strcmp(SafetyRegulation, "C") == 0){
-			json_object_object_add(jobj4,"isEnableTTIA",isEnableTTIA);
-			json_object_object_add(jobj4,"server_addr",server_addr);
-			json_object_object_add(jobj4,"server_port",server_port);
-			json_object_object_add(jobj4,"busVenderId",busVenderId);
-			json_object_object_add(jobj4,"EquipmentProvider",EquipmentProvider);
-			json_object_object_add(jobj4,"TransportationCompanyNo",TransportationCompanyNo);
-			json_object_object_add(jobj4,"TTIAChargeBoxId",TTIAChargeBoxId);
-			json_object_object_add(jobj4,"evseStation",evseStation);
-		}
-
-		printf("%s\n", json_object_to_json_string(jobj4));
-		json_object_put(jobj4);
-	}
-	//	for(;;)
-	//	{
-
-	//	}
-	return FAIL;
-}
+#include 	<sys/time.h>
+#include 	<sys/timeb.h>
+#include    <sys/types.h>
+#include    <sys/stat.h>
+#include 	<sys/types.h>
+#include 	<sys/ioctl.h>
+#include 	<sys/socket.h>
+#include 	<sys/ipc.h>
+#include 	<sys/shm.h>
+#include 	<sys/shm.h>
+#include 	<sys/mman.h>
+#include 	<linux/wireless.h>
+#include 	<arpa/inet.h>
+#include 	<netinet/in.h>
+
+#include 	<unistd.h>
+#include 	<stdarg.h>
+#include    <stdio.h>
+#include    <stdlib.h>
+#include    <unistd.h>
+#include    <fcntl.h>
+#include    <termios.h>
+#include    <errno.h>
+#include 	<errno.h>
+#include 	<string.h>
+#include	<time.h>
+#include	<ctype.h>
+#include 	<ifaddrs.h>
+#include	<math.h>
+#include	"define.h"
+#include	"json.h"
+#ifdef DO360
+#include	"../Projects/DO360/Apps/Config.h"
+#endif
+
+#define DEBUG_INFO(format, args...) StoreLogMsg("[%s:%d][%s][Info] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
+#define DEBUG_WARN(format, args...) StoreLogMsg("[%s:%d][%s][Warn] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
+#define DEBUG_ERROR(format, args...) StoreLogMsg("[%s:%d][%s][Error] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
+
+#define Debug
+#define SystemLogMessage
+#define ARRAY_SIZE(A)		(sizeof(A) / sizeof(A[0]))
+#define PASS				1
+#define FAIL				-1
+
+#define MtdBlockSize 0x300000
+
+struct SysConfigAndInfo		*ShmSysConfigAndInfo;
+struct StatusCodeData		*ShmStatusCodeData;
+struct CHAdeMOData			*ShmCHAdeMOData;
+struct GBTData				*ShmGBTData;
+struct CcsData				*ShmCcsData;
+struct PsuData 				*ShmPsuData;
+struct PrimaryMcuData		*ShmPrimaryMcuData;
+struct OCPP16Data			*ShmOCPP16Data;
+struct OCPP20Data			*ShmOCPP20Data;
+#ifdef DO360
+ChargerInfoData                 *ShmChargerInfo;
+struct ChargingInfoData 		*_chargingData[4];
+#endif
+void trim(char *s);
+int mystrcmp(char *p1, char *p2);
+void substr(char *dest, const char* src, unsigned int start, unsigned int cnt);
+void split(char **arr, char *str, const char *del);
+
+#ifdef SystemLogMessage
+int StoreLogMsg(const char *fmt, ...) {
+	char Buf[4096 + 256];
+	char buffer[4096];
+	time_t CurrentTime;
+	struct tm *tm;
+	va_list args;
+
+	va_start(args, fmt);
+	int rc = vsnprintf(buffer, sizeof(buffer), fmt, args);
+	va_end(args);
+
+	memset(Buf, 0, sizeof(Buf));
+	CurrentTime = time(NULL);
+	tm = localtime(&CurrentTime);
+	sprintf(Buf,
+			"echo \"[%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, buffer, tm->tm_year + 1900, tm->tm_mon + 1);
+	system(Buf);
+	#ifdef Debug
+	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);
+	#endif
+
+	return rc;
+}
+int WriteLogMsg(const char *fmt, ...) {
+	char Buf[4096 + 256];
+	char buffer[4096];
+	time_t CurrentTime;
+	struct tm *tm;
+	va_list args;
+
+	va_start(args, fmt);
+	int rc = vsnprintf(buffer, sizeof(buffer), fmt, args);
+	va_end(args);
+
+	memset(Buf, 0, sizeof(Buf));
+	CurrentTime = time(NULL);
+	tm = localtime(&CurrentTime);
+	sprintf(Buf,
+			"echo \"[%04d.%02d.%02d %02d:%02d:%02d WebService] - %s\" >> /Storage/SystemLog/[%04d.%02d]WebService_SystemLog",
+			tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour,
+			tm->tm_min, tm->tm_sec, buffer, tm->tm_year + 1900, tm->tm_mon + 1);
+	system(Buf);
+
+	return rc;
+}
+#endif
+
+int runShellCmd(const char*cmd)
+{
+	int result = FAIL;
+	char buf[256];
+	FILE *fp;
+
+	fp = popen(cmd, "r");
+	if(fp != NULL)
+	{
+		while(fgets(buf, sizeof(buf), fp) != NULL)
+		{
+			DEBUG_INFO("%s\n", buf);
+		}
+
+		result = PASS;
+	}
+	pclose(fp);
+
+	return result;
+}
+
+int DiffTimeb(struct timeb ST, struct timeb ET) {
+	//return milli-second
+	unsigned int StartTime, StopTime;
+
+	StartTime = (unsigned int) ST.time;
+	StopTime = (unsigned int) ET.time;
+	return (StopTime - StartTime) * 1000 + ET.millitm - ST.millitm;
+}
+
+//=================================
+// Common routine
+//=================================
+void trim(char *s) {
+	int i = 0, j, k, l = 0;
+
+	while ((s[i] == ' ') || (s[i] == '\t') || (s[i] == '\n'))
+		i++;
+
+	j = strlen(s) - 1;
+	while ((s[j] == ' ') || (s[j] == '\t') || (s[j] == '\n'))
+		j--;
+
+	if (i == 0 && j == strlen(s) - 1) {
+	} else if (i == 0)
+		s[j + 1] = '\0';
+	else {
+		for (k = i; k <= j; k++)
+			s[l++] = s[k];
+		s[l] = '\0';
+	}
+}
+
+int mystrcmp(char *p1, char *p2) {
+	while (*p1 == *p2) {
+		if (*p1 == '\0' || *p2 == '\0')
+			break;
+		p1++;
+		p2++;
+	}
+	if (*p1 == '\0' && *p2 == '\0')
+		return (PASS);
+	else
+		return (FAIL);
+}
+
+void substr(char *dest, const char* src, unsigned int start, unsigned int cnt) {
+	strncpy(dest, src + start, cnt);
+	dest[cnt] = 0;
+}
+
+void split(char **arr, char *str, const char *del) {
+	char *s = strtok(str, del);
+
+	while (s != NULL) {
+		*arr++ = s;
+		s = strtok(NULL, del);
+	}
+}
+
+int ConnectorType(char* connector){
+	int result;
+	if(strcmp(connector, "0") == 0){
+		result= 0;
+	}
+	else if(strcmp(connector, "U") == 0 || strcmp(connector, "V") == 0 || strcmp(connector, "E") == 0 || strcmp(connector, "F") == 0 || strcmp(connector, "T") == 0 || strcmp(connector, "D") == 0 || strcmp(connector, "M") == 0 || strcmp(connector, "N") == 0 || strcmp(connector, "P") == 0 || strcmp(connector, "R") == 0 || strcmp(connector, "Y") == 0 || strcmp(connector, "Z") == 0){
+		result= 1;//CCS
+	}
+	else if(strcmp(connector, "G") == 0 || strcmp(connector, "B") == 0){
+		result= 2;//GB
+	}
+	else if(strcmp(connector, "J") == 0 || strcmp(connector, "K") == 0 || strcmp(connector, "L") == 0 || strcmp(connector, "S") == 0){
+		result= 3;//CHAdeMO
+	}
+	else if(strcmp(connector, "1") == 0 || strcmp(connector, "2") == 0 || strcmp(connector, "3") == 0 || strcmp(connector, "4") == 0 || strcmp(connector, "5") == 0 || strcmp(connector, "6") == 0 || strcmp(connector, "7") == 0 || strcmp(connector, "8") == 0){
+		result= 4;//AC
+	}
+	else{
+		result= 0;
+	}
+	return result;
+}
+
+int ModelType(char* type,char* network){
+	int result=0;
+	if(strcmp(type, "A") == 0){
+		if(strcmp(network, "0") == 0 || strcmp(network, "R") == 0 || strcmp(network, "B") == 0){
+			result=0;
+		}
+		else if(strcmp(network, "E") == 0 || strcmp(network, "W") == 0 || strcmp(network, "T") == 0 || strcmp(network, "U") == 0){
+			result=1;
+		}
+	}
+	else if(strcmp(type, "D") == 0){
+		result=2;
+	}
+	return result;
+}
+// 四捨五入 取到 小數點第 2 位 
+float rounding(float a) 
+{
+    return (int)(a*100+0.5)/100.0;
+}
+//==========================================
+// Init all share memory
+//==========================================
+int InitShareMemory() {
+	int result = PASS;
+	int MeterSMId;
+
+	//creat ShmSysConfigAndInfo
+	if ((MeterSMId = shmget(ShmSysConfigAndInfoKey,
+			sizeof(struct SysConfigAndInfo), 0777)) < 0) {
+			printf("%s\n","InitShareMemory Error");
+	#ifdef SystemLogMessage
+		DEBUG_ERROR("shmget ShmSysConfigAndInfo NG\n");
+	#endif
+		result = FAIL;
+	} else if ((ShmSysConfigAndInfo = shmat(MeterSMId, NULL, 0))
+			== (void *) -1) {
+	#ifdef SystemLogMessage
+		DEBUG_ERROR("shmat ShmSysConfigAndInfo NG\n");
+	#endif
+		result = FAIL;
+	} else {
+	}
+
+	//creat ShmStatusCodeData
+	if ((MeterSMId = shmget(ShmStatusCodeKey, sizeof(struct StatusCodeData),
+			0777)) < 0) {
+	#ifdef SystemLogMessage
+		DEBUG_ERROR("shmget ShmStatusCodeData NG\n");
+	#endif
+		result = FAIL;
+	} else if ((ShmStatusCodeData = shmat(MeterSMId, NULL, 0)) == (void *) -1) {
+	#ifdef SystemLogMessage
+		DEBUG_ERROR("shmat ShmStatusCodeData NG\n");
+	#endif
+		result = FAIL;
+	} else {
+	}
+
+	//creat ShmPsuData
+	if ((MeterSMId = shmget(ShmPsuKey, sizeof(struct PsuData),
+			0777)) < 0) {
+	#ifdef SystemLogMessage
+		DEBUG_ERROR("shmget ShmPsuData NG\n");
+	#endif
+		result = FAIL;
+	} else if ((ShmPsuData = shmat(MeterSMId, NULL, 0)) == (void *) -1) {
+	#ifdef SystemLogMessage
+		DEBUG_ERROR("shmat ShmPsuData NG\n");
+	#endif
+		result = FAIL;
+	} else {
+	}
+
+	//creat ShmPrimaryMcuData
+	if ((MeterSMId = shmget(ShmPrimaryMcuKey, sizeof(struct PrimaryMcuData),
+			0777)) < 0) {
+	#ifdef SystemLogMessage
+		DEBUG_ERROR("shmget ShmPrimaryMcuData NG\n");
+	#endif
+		result = FAIL;
+	} else if ((ShmPrimaryMcuData = shmat(MeterSMId, NULL, 0)) == (void *) -1) {
+	#ifdef SystemLogMessage
+		DEBUG_ERROR("shmat ShmPrimaryMcuData NG\n");
+	#endif
+		result = FAIL;
+	} else {
+	}
+
+   	//creat ShmOCPP16Data
+   	if ((MeterSMId = shmget(ShmOcppModuleKey, sizeof(struct OCPP16Data), 0777)) < 0)
+    {
+
+   		DEBUG_ERROR("shmget ShmOCPP16Data NG\n");
+
+   		result = FAIL;
+	}
+    else if ((ShmOCPP16Data = shmat(MeterSMId, NULL, 0)) == (void *) -1)
+    {
+
+    	DEBUG_ERROR("shmat ShmOCPP16Data NG\n");
+
+    	result = FAIL;
+   	}
+
+   	//creat ShmOCPP20Data
+	if ((MeterSMId = shmget(ShmOcpp20ModuleKey, sizeof(struct OCPP20Data), 0777)) < 0)
+	{
+
+		DEBUG_ERROR("shmget OCPP20Data NG\n");
+
+		result = FAIL;
+	}
+	else if ((ShmOCPP20Data = shmat(MeterSMId, NULL, 0)) == (void *) -1)
+	{
+
+		DEBUG_ERROR("shmat OCPP20Data NG\n");
+
+		result = FAIL;
+	}
+
+#ifdef DO360
+	//creat ShmChargerInfo
+    if ((MeterSMId = shmget(SM_ChargerInfoKey, sizeof(ChargerInfoData), IPC_CREAT | 0777)) < 0)
+    {
+        #ifdef SystemLogMessage
+        DEBUG_ERROR("[main]CreatShareMemory:shmget ChargerInfoData NG");
+        #endif
+        return 0;
+    }
+    else if ((ShmChargerInfo = shmat(MeterSMId, NULL, 0)) == (void *) -1)
+    {
+        #ifdef SystemLogMessage
+        DEBUG_ERROR("[WebService]CreatShareMemory:shmat ChargerInfoData NG");
+        #endif
+        return 0;
+	} else {
+    }
+//    memset(ShmChargerInfo, 0, sizeof(ChargerInfoData));
+#endif
+	return result;
+}
+
+int StoreUsrConfigData(struct SysConfigData *UsrData)
+{
+	int result = PASS;
+	int fd,wrd;
+	unsigned int i,Chk;
+	unsigned char *ptr, *BufTmp;
+
+	Chk=0;
+	ptr=(unsigned char *)UsrData;
+	if((BufTmp=malloc(MtdBlockSize))!=NULL)
+	{
+		memset(BufTmp,0,MtdBlockSize);
+		memcpy(BufTmp,ptr,sizeof(struct SysConfigData));
+		for(i=ARRAY_SIZE(UsrData->CsuBootLoadFwRev);i<MtdBlockSize-4;i++)
+			Chk+=*(BufTmp+i);
+		memcpy(BufTmp+MtdBlockSize-4, &Chk, 4);
+
+		// Output configuration to file.
+		fd = open("/mnt/EvseConfig.bin", O_RDWR|O_CREAT);
+		if (fd < 0)
+		{
+			DEBUG_ERROR("open /mnt/EvseConfig.bin NG\n");
+
+			free(BufTmp);
+			return 0;
+		}
+		wrd=write(fd, BufTmp, MtdBlockSize);
+		close(fd);
+		if(wrd<MtdBlockSize)
+		{
+			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 0");
+		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 0");
+		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\r\n");
+    		result = FAIL;
+	}
+
+	if(BufTmp!=NULL)
+		free(BufTmp);
+
+	return result;
+}
+
+//================================================
+// Main process
+//================================================
+int main(int argc, char *argv[]) {
+	//int InitShMry = 1;
+	if (InitShareMemory() == FAIL) {
+		//InitShMry = 0;
+		#ifdef SystemLogMessage
+		DEBUG_ERROR("InitShareMemory NG\n");
+		#endif
+		if (ShmStatusCodeData != NULL) {
+			ShmStatusCodeData->AlarmCode.AlarmEvents.bits.FailToCreateShareMemory = 1;
+		}
+		sleep(5);
+		return 0;
+	}
+	//web page submit
+	if ((argc == 3) & (strlen(argv[1]) == 1)) {
+		//web page submit system
+		if (strcmp(argv[1], "1") == 0) {
+			struct json_object *jobj = json_tokener_parse(argv[2]);
+			json_object *val_obj = NULL;
+			char *SystemId=NULL;
+			char *SystemDateTime = NULL;
+			int PhaseLossPolicy = 0;
+			int FactoryConfiguration = 0;
+			int AuthorisationMode = 0;
+			int RfidCardNumEndian = 0;
+			int PsuAcInputType = 0;
+			char isAPP = 0;
+			char isQRCode = 0;
+			char isRFID = 0;
+			char QRCodeMadeMode = 0;
+			char *QRCodeContent = NULL;
+			char Intensity = 0;
+			char isAuthrizeByEVCCID = 0;
+			char *DDSystemId1=NULL;
+			int DDFactoryConfiguration1 = 0;
+			int DDAuthorisationMode1 = 0;
+			int DDRfidCardNumEndian1 = 0;
+			char DDisAPP1 = 0;
+			char DDisQRCode1 = 0;
+			char DDisRFID1 = 0;
+			char DDQRCodeMadeMode1 = 0;
+			char *DDQRCodeContent1 = NULL;
+			char DDIntensity1 = 0;
+			char *DDSystemId2=NULL;
+			int DDFactoryConfiguration2 = 0;
+			int DDAuthorisationMode2 = 0;
+			int DDRfidCardNumEndian2 = 0;
+			char DDisAPP2 = 0;
+			char DDisQRCode2 = 0;
+			char DDisRFID2 = 0;
+			char DDQRCodeMadeMode2 = 0;
+			char *DDQRCodeContent2 = NULL;
+			char DDIntensity2 = 0;
+			char *DDSystemId3=NULL;
+			int DDFactoryConfiguration3 = 0;
+			int DDAuthorisationMode3 = 0;
+			int DDRfidCardNumEndian3 = 0;
+			char DDisAPP3 = 0;
+			char DDisQRCode3 = 0;
+			char DDisRFID3 = 0;
+			char DDQRCodeMadeMode3 = 0;
+			char *DDQRCodeContent3 = NULL;
+			char DDIntensity3 = 0;
+			char *DDSystemId4=NULL;
+			int DDFactoryConfiguration4 = 0;
+			int DDAuthorisationMode4 = 0;
+			int DDRfidCardNumEndian4 = 0;
+			char DDisAPP4 = 0;
+			char DDisQRCode4 = 0;
+			char DDisRFID4 = 0;
+			char DDQRCodeMadeMode4 = 0;
+			char *DDQRCodeContent4 = NULL;
+			char DDIntensity4 = 0;
+
+			if( json_object_object_get_ex(jobj, "SystemId", &val_obj) ) {
+				SystemId = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.SystemId,SystemId);
+			}
+			if( json_object_object_get_ex(jobj, "SystemDateTime", &val_obj) ) {
+				SystemDateTime = (char*)json_object_get_string(val_obj);
+				if(strlen(SystemDateTime)>0){
+					char cmd[100];
+					sprintf(cmd,"date -s '%s'",SystemDateTime);
+					if(system(cmd)==0){
+						system("hwclock -w");
+					}
+				}
+			}
+			if( json_object_object_get_ex(jobj, "PhaseLossPolicy", &val_obj) ) {
+				PhaseLossPolicy = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.PhaseLossPolicy = PhaseLossPolicy;
+			}
+			if( json_object_object_get_ex(jobj, "FactoryConfiguration", &val_obj) ) {
+				FactoryConfiguration = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.FactoryConfiguration = FactoryConfiguration;
+			}
+			if( json_object_object_get_ex(jobj, "AuthorisationMode", &val_obj) ) {
+				AuthorisationMode = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.AuthorisationMode = AuthorisationMode;
+			}
+			if( json_object_object_get_ex(jobj, "RfidCardNumEndian", &val_obj) ) {
+				RfidCardNumEndian = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian = RfidCardNumEndian;
+			}
+			if( json_object_object_get_ex(jobj, "PsuAcInputType", &val_obj) ) {
+				PsuAcInputType = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.PsuAcInputType = PsuAcInputType;
+			}
+			if( json_object_object_get_ex(jobj, "isAPP", &val_obj) ) {
+				isAPP = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.isAPP = isAPP;
+			}
+			if( json_object_object_get_ex(jobj, "isQRCode", &val_obj) ) {
+				isQRCode = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.isQRCode = isQRCode;
+			}
+			if( json_object_object_get_ex(jobj, "isRFID", &val_obj) ) {
+				isRFID = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.isRFID = isRFID;
+			}
+			if( json_object_object_get_ex(jobj, "QRCodeMadeMode", &val_obj) ) {
+				QRCodeMadeMode = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.QRCodeMadeMode = QRCodeMadeMode;
+			}
+			if( json_object_object_get_ex(jobj, "QRCodeContent", &val_obj) ) {
+				QRCodeContent = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.QRCodeContent,QRCodeContent);
+			}
+			if( json_object_object_get_ex(jobj, "Intensity", &val_obj) ) {
+				Intensity = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.LedInfo.Intensity = Intensity;
+			}
+			if( json_object_object_get_ex(jobj, "isAuthrizeByEVCCID", &val_obj) ) {
+				isAuthrizeByEVCCID = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.isAuthrizeByEVCCID = isAuthrizeByEVCCID;
+			}
+			if( json_object_object_get_ex(jobj, "DDSystemId1", &val_obj) ) {
+				DDSystemId1 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].SystemId,DDSystemId1);
+			}
+			if( json_object_object_get_ex(jobj, "DDFactoryConfiguration1", &val_obj) ) {
+				DDFactoryConfiguration1 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].FactoryConfiguration = DDFactoryConfiguration1;
+			}
+			if( json_object_object_get_ex(jobj, "DDAuthorisationMode1", &val_obj) ) {
+				DDAuthorisationMode1 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].AuthorisationMode = DDAuthorisationMode1;
+			}
+			if( json_object_object_get_ex(jobj, "DDRfidCardNumEndian1", &val_obj) ) {
+				DDRfidCardNumEndian1 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].RfidCardNumEndian = DDRfidCardNumEndian1;
+			}
+			if( json_object_object_get_ex(jobj, "DDisAPP1", &val_obj) ) {
+				DDisAPP1 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].isAPP = DDisAPP1;
+			}
+			if( json_object_object_get_ex(jobj, "DDisQRCode1", &val_obj) ) {
+				DDisQRCode1 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].isQRCode = DDisQRCode1;
+			}
+			if( json_object_object_get_ex(jobj, "DDisRFID1", &val_obj) ) {
+				DDisRFID1 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].isRFID = DDisRFID1;
+			}
+			if( json_object_object_get_ex(jobj, "DDQRCodeMadeMode1", &val_obj) ) {
+				DDQRCodeMadeMode1 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].QRCodeMadeMode = DDQRCodeMadeMode1;
+			}
+			if( json_object_object_get_ex(jobj, "DDQRCodeContent1", &val_obj) ) {
+				DDQRCodeContent1 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].QRCodeContent,DDQRCodeContent1);
+			}
+			if( json_object_object_get_ex(jobj, "DDIntensity1", &val_obj) ) {
+				DDIntensity1 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[0].LedInfo.Intensity = DDIntensity1;
+			}
+			if( json_object_object_get_ex(jobj, "DDSystemId2", &val_obj) ) {
+				DDSystemId2 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].SystemId,DDSystemId2);
+			}
+			if( json_object_object_get_ex(jobj, "DDFactoryConfiguration2", &val_obj) ) {
+				DDFactoryConfiguration2 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].FactoryConfiguration = DDFactoryConfiguration2;
+			}
+			if( json_object_object_get_ex(jobj, "DDAuthorisationMode2", &val_obj) ) {
+				DDAuthorisationMode2 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].AuthorisationMode = DDAuthorisationMode2;
+			}
+			if( json_object_object_get_ex(jobj, "DDRfidCardNumEndian2", &val_obj) ) {
+				DDRfidCardNumEndian2 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].RfidCardNumEndian = DDRfidCardNumEndian2;
+			}
+			if( json_object_object_get_ex(jobj, "DDisAPP2", &val_obj) ) {
+				DDisAPP2 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].isAPP = DDisAPP2;
+			}
+			if( json_object_object_get_ex(jobj, "DDisQRCode2", &val_obj) ) {
+				DDisQRCode2 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].isQRCode = DDisQRCode2;
+			}
+			if( json_object_object_get_ex(jobj, "DDisRFID2", &val_obj) ) {
+				DDisRFID2 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].isRFID = DDisRFID2;
+			}
+			if( json_object_object_get_ex(jobj, "DDQRCodeMadeMode2", &val_obj) ) {
+				DDQRCodeMadeMode2 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].QRCodeMadeMode = DDQRCodeMadeMode2;
+			}
+			if( json_object_object_get_ex(jobj, "DDQRCodeContent2", &val_obj) ) {
+				DDQRCodeContent2 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].QRCodeContent,DDQRCodeContent2);
+			}
+			if( json_object_object_get_ex(jobj, "DDIntensity2", &val_obj) ) {
+				DDIntensity2 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[1].LedInfo.Intensity = DDIntensity2;
+			}
+			if( json_object_object_get_ex(jobj, "DDSystemId3", &val_obj) ) {
+				DDSystemId3 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].SystemId,DDSystemId3);
+			}
+			if( json_object_object_get_ex(jobj, "DDFactoryConfiguration3", &val_obj) ) {
+				DDFactoryConfiguration3 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].FactoryConfiguration = DDFactoryConfiguration3;
+			}
+			if( json_object_object_get_ex(jobj, "DDAuthorisationMode3", &val_obj) ) {
+				DDAuthorisationMode3 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].AuthorisationMode = DDAuthorisationMode3;
+			}
+			if( json_object_object_get_ex(jobj, "DDRfidCardNumEndian3", &val_obj) ) {
+				DDRfidCardNumEndian3 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].RfidCardNumEndian = DDRfidCardNumEndian3;
+			}
+			if( json_object_object_get_ex(jobj, "DDisAPP3", &val_obj) ) {
+				DDisAPP3 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].isAPP = DDisAPP3;
+			}
+			if( json_object_object_get_ex(jobj, "DDisQRCode3", &val_obj) ) {
+				DDisQRCode3 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].isQRCode = DDisQRCode3;
+			}
+			if( json_object_object_get_ex(jobj, "DDisRFID3", &val_obj) ) {
+				DDisRFID3 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].isRFID = DDisRFID3;
+			}
+			if( json_object_object_get_ex(jobj, "DDQRCodeMadeMode3", &val_obj) ) {
+				DDQRCodeMadeMode3 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].QRCodeMadeMode = DDQRCodeMadeMode3;
+			}
+			if( json_object_object_get_ex(jobj, "DDQRCodeContent3", &val_obj) ) {
+				DDQRCodeContent3 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].QRCodeContent,DDQRCodeContent3);
+			}
+			if( json_object_object_get_ex(jobj, "DDIntensity3", &val_obj) ) {
+				DDIntensity3 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[2].LedInfo.Intensity = DDIntensity3;
+			}
+			if( json_object_object_get_ex(jobj, "DDSystemId4", &val_obj) ) {
+				DDSystemId4 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].SystemId,DDSystemId4);
+			}
+			if( json_object_object_get_ex(jobj, "DDFactoryConfiguration4", &val_obj) ) {
+				DDFactoryConfiguration4 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].FactoryConfiguration = DDFactoryConfiguration4;
+			}
+			if( json_object_object_get_ex(jobj, "DDAuthorisationMode4", &val_obj) ) {
+				DDAuthorisationMode4 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].AuthorisationMode = DDAuthorisationMode4;
+			}
+			if( json_object_object_get_ex(jobj, "DDRfidCardNumEndian4", &val_obj) ) {
+				DDRfidCardNumEndian4 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].RfidCardNumEndian = DDRfidCardNumEndian4;
+			}
+			if( json_object_object_get_ex(jobj, "DDisAPP4", &val_obj) ) {
+				DDisAPP4 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].isAPP = DDisAPP4;
+			}
+			if( json_object_object_get_ex(jobj, "DDisQRCode4", &val_obj) ) {
+				DDisQRCode4 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].isQRCode = DDisQRCode4;
+			}
+			if( json_object_object_get_ex(jobj, "DDisRFID4", &val_obj) ) {
+				DDisRFID4 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].isRFID = DDisRFID4;
+			}
+			if( json_object_object_get_ex(jobj, "DDQRCodeMadeMode4", &val_obj) ) {
+				DDQRCodeMadeMode4 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].QRCodeMadeMode = DDQRCodeMadeMode4;
+			}
+			if( json_object_object_get_ex(jobj, "DDQRCodeContent4", &val_obj) ) {
+				DDQRCodeContent4 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].QRCodeContent,DDQRCodeContent4);
+			}
+			if( json_object_object_get_ex(jobj, "DDIntensity4", &val_obj) ) {
+				DDIntensity4 = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[3].LedInfo.Intensity = DDIntensity4;
+			}
+		}
+		if (strcmp(argv[1], "2") == 0) {
+			struct json_object *jobj = json_tokener_parse(argv[2]);
+			json_object *val_obj = NULL;
+			int MaxChargingEnergy= 0;
+			int MaxChargingPower = 0;
+			int MaxChargingCurrent = 0;
+			int AcMaxChargingCurrent = 0;
+			int MaxChargingDuration = 0;
+			int MaxChargingSoc = 0;
+			int StopChargingByButton = 0;
+			char *LocalWhiteCard0 = NULL;
+			char *LocalWhiteCard1 = NULL;
+			char *LocalWhiteCard2 = NULL;
+			char *LocalWhiteCard3 = NULL;
+			char *LocalWhiteCard4 = NULL;
+			char *LocalWhiteCard5 = NULL;
+			char *LocalWhiteCard6 = NULL;
+			char *LocalWhiteCard7 = NULL;
+			char *LocalWhiteCard8 = NULL;
+			char *LocalWhiteCard9 = NULL;
+			char isBilling = 0;
+			char Currency = 0;
+			float Fee0 = 0;
+			float Fee1 = 0;
+			float Fee2 = 0;
+			float Fee3 = 0;
+			float Fee4 = 0;
+			float Fee5 = 0;
+			float Fee6 = 0;
+			float Fee7 = 0;
+			float Fee8 = 0;
+			float Fee9 = 0;
+			float Fee10 = 0;
+			float Fee11 = 0;
+			float Fee12 = 0;
+			float Fee13 = 0;
+			float Fee14 = 0;
+			float Fee15 = 0;
+			float Fee16 = 0;
+			float Fee17 = 0;
+			float Fee18 = 0;
+			float Fee19 = 0;
+			float Fee20 = 0;
+			float Fee21 = 0;
+			float Fee22 = 0;
+			float Fee23 = 0;
+
+			if( json_object_object_get_ex(jobj, "MaxChargingEnergy", &val_obj) ) {
+				MaxChargingEnergy = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.MaxChargingEnergy = MaxChargingEnergy;
+			}
+			if( json_object_object_get_ex(jobj, "MaxChargingPower", &val_obj) ) {
+				MaxChargingPower = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.MaxChargingPower = MaxChargingPower;
+			}
+			if( json_object_object_get_ex(jobj, "MaxChargingCurrent", &val_obj) ) {
+				MaxChargingCurrent = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent = MaxChargingCurrent;
+			}
+			if( json_object_object_get_ex(jobj, "AcMaxChargingCurrent", &val_obj) ) {
+				AcMaxChargingCurrent = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.AcMaxChargingCurrent = AcMaxChargingCurrent;
+			}
+			if( json_object_object_get_ex(jobj, "MaxChargingDuration", &val_obj) ) {
+				MaxChargingDuration = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.MaxChargingDuration = MaxChargingDuration;
+			}
+			if( json_object_object_get_ex(jobj, "MaxChargingSoc", &val_obj) ) {
+				MaxChargingSoc = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.MaxChargingSoc = MaxChargingSoc;
+			}
+			if( json_object_object_get_ex(jobj, "StopChargingByButton", &val_obj) ) {
+				StopChargingByButton = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.StopChargingByButton = StopChargingByButton;
+			}
+			if( json_object_object_get_ex(jobj, "LocalWhiteCard0", &val_obj) ) {
+				LocalWhiteCard0 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[0],LocalWhiteCard0);
+			}
+			if( json_object_object_get_ex(jobj, "LocalWhiteCard1", &val_obj) ) {
+				LocalWhiteCard1 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[1],LocalWhiteCard1);
+			}
+			if( json_object_object_get_ex(jobj, "LocalWhiteCard2", &val_obj) ) {
+				LocalWhiteCard2 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[2],LocalWhiteCard2);
+			}
+			if( json_object_object_get_ex(jobj, "LocalWhiteCard3", &val_obj) ) {
+				LocalWhiteCard3 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[3],LocalWhiteCard3);
+			}
+			if( json_object_object_get_ex(jobj, "LocalWhiteCard4", &val_obj) ) {
+				LocalWhiteCard4 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[4],LocalWhiteCard4);
+			}
+			if( json_object_object_get_ex(jobj, "LocalWhiteCard5", &val_obj) ) {
+				LocalWhiteCard5 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[5],LocalWhiteCard5);
+			}
+			if( json_object_object_get_ex(jobj, "LocalWhiteCard6", &val_obj) ) {
+				LocalWhiteCard6 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[6],LocalWhiteCard6);
+			}
+			if( json_object_object_get_ex(jobj, "LocalWhiteCard7", &val_obj) ) {
+				LocalWhiteCard7 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[7],LocalWhiteCard7);
+			}
+			if( json_object_object_get_ex(jobj, "LocalWhiteCard8", &val_obj) ) {
+				LocalWhiteCard8 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[8],LocalWhiteCard8);
+			}
+			if( json_object_object_get_ex(jobj, "LocalWhiteCard9", &val_obj) ) {
+				LocalWhiteCard9 = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[9],LocalWhiteCard9);
+			}
+			if( json_object_object_get_ex(jobj, "isBilling", &val_obj) ) {
+				isBilling = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.isBilling = isBilling;
+			}
+			if( json_object_object_get_ex(jobj, "Currency", &val_obj) ) {
+				Currency = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Currency = Currency;
+			}
+			if( json_object_object_get_ex(jobj, "Fee0", &val_obj) ) {
+				Fee0 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[0] = rounding(Fee0);
+			}
+			if( json_object_object_get_ex(jobj, "Fee1", &val_obj) ) {
+				Fee1 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[1] = rounding(Fee1);
+			}
+			if( json_object_object_get_ex(jobj, "Fee2", &val_obj) ) {
+				Fee2 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[2] = rounding(Fee2);
+			}
+			if( json_object_object_get_ex(jobj, "Fee3", &val_obj) ) {
+				Fee3 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[3] = rounding(Fee3);
+			}
+			if( json_object_object_get_ex(jobj, "Fee4", &val_obj) ) {
+				Fee4 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[4] = rounding(Fee4);
+			}
+			if( json_object_object_get_ex(jobj, "Fee5", &val_obj) ) {
+				Fee5 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[5] = rounding(Fee5);
+			}
+			if( json_object_object_get_ex(jobj, "Fee6", &val_obj) ) {
+				Fee6 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[6] = rounding(Fee6);
+			}
+			if( json_object_object_get_ex(jobj, "Fee7", &val_obj) ) {
+				Fee7 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[7] = rounding(Fee7);
+			}
+			if( json_object_object_get_ex(jobj, "Fee8", &val_obj) ) {
+				Fee8 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[8] = rounding(Fee8);
+			}
+			if( json_object_object_get_ex(jobj, "Fee9", &val_obj) ) {
+				Fee9 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[9] = rounding(Fee9);
+			}
+			if( json_object_object_get_ex(jobj, "Fee10", &val_obj) ) {
+				Fee10 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[10] = rounding(Fee10);
+			}
+			if( json_object_object_get_ex(jobj, "Fee11", &val_obj) ) {
+				Fee11 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[11] = rounding(Fee11);
+			}
+			if( json_object_object_get_ex(jobj, "Fee12", &val_obj) ) {
+				Fee12 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[12] = rounding(Fee12);
+			}
+			if( json_object_object_get_ex(jobj, "Fee13", &val_obj) ) {
+				Fee13 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[13] = rounding(Fee13);
+			}
+			if( json_object_object_get_ex(jobj, "Fee14", &val_obj) ) {
+				Fee14 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[14] = rounding(Fee14);
+			}
+			if( json_object_object_get_ex(jobj, "Fee15", &val_obj) ) {
+				Fee15 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[15] = rounding(Fee15);
+			}
+			if( json_object_object_get_ex(jobj, "Fee16", &val_obj) ) {
+				Fee16 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[16] = rounding(Fee16);
+			}
+			if( json_object_object_get_ex(jobj, "Fee17", &val_obj) ) {
+				Fee17 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[17] = rounding(Fee17);
+			}
+			if( json_object_object_get_ex(jobj, "Fee18", &val_obj) ) {
+				Fee18 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[18] = rounding(Fee18);
+			}
+			if( json_object_object_get_ex(jobj, "Fee19", &val_obj) ) {
+				Fee19 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[19] = rounding(Fee19);
+			}
+			if( json_object_object_get_ex(jobj, "Fee20", &val_obj) ) {
+				Fee20 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[20] = rounding(Fee20);
+			}
+			if( json_object_object_get_ex(jobj, "Fee21", &val_obj) ) {
+				Fee21 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[21] = rounding(Fee21);
+			}
+			if( json_object_object_get_ex(jobj, "Fee22", &val_obj) ) {
+				Fee22 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[22] = rounding(Fee22);
+			}
+			if( json_object_object_get_ex(jobj, "Fee23", &val_obj) ) {
+				Fee23 = json_object_get_double(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BillingData.Fee[23] = rounding(Fee23);
+			}
+		}
+		if (strcmp(argv[1], "3") == 0) {
+			struct json_object *jobj = json_tokener_parse(argv[2]);
+			json_object *val_obj = NULL;
+			int Eth0DhcpClient=0;
+			char *Eth0IpAddress=NULL;
+			char *Eth0SubmaskAddress=NULL;
+			char *Eth0GatewayAddress=NULL;
+			int WifiMode=0;
+			char *WifiSsid=NULL;
+			char *WifiPassword=NULL;
+			int WifiBroadcastSsid=0;
+			char *WifiTargetBssidMac=NULL;
+			int WifiDhcpServer=0;
+			int WifiDhcpClient=0;
+			char *WifiIpAddress=NULL;
+			char *WifiSubmaskAddress=NULL;
+			char *WifiGatewayAddress=NULL;
+			char *TelcomApn=NULL;
+			char *TelcomChapPapId=NULL;
+			char *TelcomChapPapPwd=NULL;
+			char *TelcomIpAddress=NULL;
+			char TelcomEnabled=0;
+			char TelcomNetworkType=0;
+			char Wcnt=0;
+			char Tcnt=0;
+			if( json_object_object_get_ex(jobj, "Eth0DhcpClient", &val_obj) ) {
+				Eth0DhcpClient = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthDhcpClient=Eth0DhcpClient;
+			}
+			if( json_object_object_get_ex(jobj, "Eth0IpAddress", &val_obj) ) {
+				Eth0IpAddress = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress,Eth0IpAddress);
+			}
+			if( json_object_object_get_ex(jobj, "Eth0SubmaskAddress", &val_obj) ) {
+				Eth0SubmaskAddress = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthSubmaskAddress,Eth0SubmaskAddress);
+			}
+			if( json_object_object_get_ex(jobj, "Eth0GatewayAddress", &val_obj) ) {
+				Eth0GatewayAddress = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthGatewayAddress,Eth0GatewayAddress);
+			}
+			if( json_object_object_get_ex(jobj, "WifiMode", &val_obj) ) {
+				WifiMode = json_object_get_int(val_obj);
+				if(WifiMode!=ShmSysConfigAndInfo->SysConfig.AthInterface.WifiMode) Wcnt++;
+				ShmSysConfigAndInfo->SysConfig.AthInterface.WifiMode=WifiMode;
+			}
+			if( json_object_object_get_ex(jobj, "WifiSsid", &val_obj) ) {
+				WifiSsid = (char*)json_object_get_string(val_obj);
+				if (strcmp(WifiSsid, (char*)ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSsid) != 0) Wcnt++;
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSsid,WifiSsid);
+			}
+			if( json_object_object_get_ex(jobj, "WifiPassword", &val_obj) ) {
+				WifiPassword = (char*)json_object_get_string(val_obj);
+				if (strcmp(WifiSsid, (char*)ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSsid) != 0) Wcnt++;
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiPassword,WifiPassword);
+			}
+			if( json_object_object_get_ex(jobj, "WifiBroadcastSsid", &val_obj) ) {
+				WifiBroadcastSsid = json_object_get_int(val_obj);
+				if(WifiBroadcastSsid!=ShmSysConfigAndInfo->SysConfig.AthInterface.WifiBroadcastSsid) Wcnt++;
+				ShmSysConfigAndInfo->SysConfig.AthInterface.WifiBroadcastSsid=WifiBroadcastSsid;
+			}
+			if( json_object_object_get_ex(jobj, "WifiTargetBssidMac", &val_obj) ) {
+				WifiTargetBssidMac = (char*)json_object_get_string(val_obj);
+				if (strcmp(WifiTargetBssidMac, (char*)ShmSysConfigAndInfo->SysConfig.AthInterface.WifiTargetBssidMac) != 0) Wcnt++;
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiTargetBssidMac,WifiTargetBssidMac);
+			}
+			if( json_object_object_get_ex(jobj, "WifiDhcpServer", &val_obj) ) {
+				WifiDhcpServer = json_object_get_int(val_obj);
+				if(WifiDhcpServer!=ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpServer) Wcnt++;
+				ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpServer=WifiDhcpServer;
+			}
+			if( json_object_object_get_ex(jobj, "WifiDhcpClient", &val_obj) ) {
+				WifiDhcpClient = json_object_get_int(val_obj);
+				if(WifiDhcpClient!=ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpClient) Wcnt++;
+				ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpClient=WifiDhcpClient;
+			}
+			if( json_object_object_get_ex(jobj, "WifiIpAddress", &val_obj) ) {
+				WifiIpAddress = (char*)json_object_get_string(val_obj);
+				if (strcmp(WifiIpAddress, (char*)ShmSysConfigAndInfo->SysConfig.AthInterface.WifiIpAddress) != 0) Wcnt++;
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiIpAddress,WifiIpAddress);
+			}
+			if( json_object_object_get_ex(jobj, "WifiSubmaskAddress", &val_obj) ) {
+				WifiSubmaskAddress = (char*)json_object_get_string(val_obj);
+				if (strcmp(WifiSubmaskAddress, (char*)ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSubmaskAddress) != 0) Wcnt++;
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSubmaskAddress,WifiSubmaskAddress);
+			}
+			if( json_object_object_get_ex(jobj, "WifiGatewayAddress", &val_obj) ) {
+				WifiGatewayAddress = (char*)json_object_get_string(val_obj);
+				if (strcmp(WifiGatewayAddress, (char*)ShmSysConfigAndInfo->SysConfig.AthInterface.WifiGatewayAddress) != 0) Wcnt++;
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiGatewayAddress,WifiGatewayAddress);
+			}
+			if( json_object_object_get_ex(jobj, "TelcomApn", &val_obj) ) {
+				TelcomApn = (char*)json_object_get_string(val_obj);
+				if (strcmp(TelcomApn, (char*)ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomApn) != 0) Tcnt++;
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomApn,TelcomApn);
+			}
+			if( json_object_object_get_ex(jobj, "TelcomChapPapId", &val_obj) ) {
+				TelcomChapPapId = (char*)json_object_get_string(val_obj);
+				if (strcmp(TelcomChapPapId, (char*)ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapId) != 0) Tcnt++;
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapId,TelcomChapPapId);
+			}
+			if( json_object_object_get_ex(jobj, "TelcomChapPapPwd", &val_obj) ) {
+				TelcomChapPapPwd = (char*)json_object_get_string(val_obj);
+				if (strcmp(TelcomChapPapPwd, (char*)ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapPwd) != 0) Tcnt++;
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapPwd,TelcomChapPapPwd);
+			}
+			if( json_object_object_get_ex(jobj, "TelcomIpAddress", &val_obj) ) {
+				TelcomIpAddress = (char*)json_object_get_string(val_obj);
+				if (strcmp(TelcomIpAddress, (char*)ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomIpAddress) != 0) Tcnt++;
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomIpAddress,TelcomIpAddress);
+			}
+			if( json_object_object_get_ex(jobj, "TelcomEnabled", &val_obj) ) {
+				TelcomEnabled = json_object_get_int(val_obj);
+				if(TelcomEnabled!=ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomEnabled) Tcnt++;
+				ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomEnabled=TelcomEnabled;
+			}
+			if( json_object_object_get_ex(jobj, "TelcomNetworkType", &val_obj) ) {
+				TelcomNetworkType = json_object_get_int(val_obj);
+				if(TelcomNetworkType!=ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomNetworkType) Tcnt++;
+				ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomNetworkType=TelcomNetworkType;
+			}
+			if(Wcnt>0){
+				system ("pkill Module_Wifi");
+			}
+			if(Tcnt>0){
+				system ("pkill Module_4g");
+				system ("killall 4GDetection");
+				system ("killall pppd");
+			}
+		}
+		if (strcmp(argv[1], "4") == 0) {
+			struct json_object *jobj = json_tokener_parse(argv[2]);
+			json_object *val_obj = NULL;
+			int BackendConnTimeout=0;
+			int OfflinePolicy=0;
+			int OfflineMaxChargeEnergy=0;
+			int OfflineMaxChargeDuration=0;
+			char *OcppServerURL=NULL;
+			char *ChargeBoxId=NULL;
+			char *chargePointVendor=NULL;
+			int OcppSecurityProfile=0;
+			int MaintainServerSecurityProfile=0;
+			char *OcppSecurityPassword=NULL;
+			char *MaintainServerSecurityPassword=NULL;
+			int isEnableLocalPowerSharging=0;
+			int PowerSharingCapacity=0;
+			char *PowerSharingServerIP=NULL;
+			char *OcppReceiptrURL=NULL;
+			char *MaintainServerURL=NULL;
+			/*for TTIA*/
+			char isEnableTTIA=0;
+			char *server_addr=NULL;
+			int server_port=0;
+			int busVenderId=0;
+			char *EquipmentProvider=NULL;
+			char TransportationCompanyNo=0;
+			char TTIAChargeBoxId=0;
+			char *evseStation=NULL;
+
+			if( json_object_object_get_ex(jobj, "BackendConnTimeout", &val_obj) ) {
+				BackendConnTimeout = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.BackendConnTimeout = BackendConnTimeout;
+			}
+			if( json_object_object_get_ex(jobj, "OfflinePolicy", &val_obj) ) {
+				OfflinePolicy = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.OfflinePolicy = OfflinePolicy;
+			}
+			if( json_object_object_get_ex(jobj, "OfflineMaxChargeEnergy", &val_obj) ) {
+				OfflineMaxChargeEnergy = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.OfflineMaxChargeEnergy = OfflineMaxChargeEnergy;
+			}
+			if( json_object_object_get_ex(jobj, "OfflineMaxChargeDuration", &val_obj) ) {
+				OfflineMaxChargeDuration = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.OfflineMaxChargeDuration = OfflineMaxChargeDuration;
+			}
+			if( json_object_object_get_ex(jobj, "OcppServerURL", &val_obj) ) {
+				OcppServerURL = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,OcppServerURL);
+			}
+			if( json_object_object_get_ex(jobj, "ChargeBoxId", &val_obj) ) {
+				ChargeBoxId = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.ChargeBoxId,ChargeBoxId);
+			}
+			if( json_object_object_get_ex(jobj, "chargePointVendor", &val_obj) ) {
+				chargePointVendor = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.chargePointVendor,chargePointVendor);
+			}
+			if( json_object_object_get_ex(jobj, "OcppSecurityProfile", &val_obj) ) {
+				OcppSecurityProfile = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.OcppSecurityProfile = OcppSecurityProfile;
+			}
+			if( json_object_object_get_ex(jobj, "OcppSecurityPassword", &val_obj) ) {
+				OcppSecurityPassword = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.OcppSecurityPassword,OcppSecurityPassword);
+			}
+			if( json_object_object_get_ex(jobj, "MaintainServerSecurityProfile", &val_obj) ) {
+				MaintainServerSecurityProfile = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.MaintainServerSecurityProfile = MaintainServerSecurityProfile;
+			}
+			if( json_object_object_get_ex(jobj, "MaintainServerSecurityPassword", &val_obj) ) {
+				MaintainServerSecurityPassword = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.MaintainServerSecurityPassword,MaintainServerSecurityPassword);
+			}
+			if( json_object_object_get_ex(jobj, "isEnableLocalPowerSharging", &val_obj) ) {
+				isEnableLocalPowerSharging = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.isEnableLocalPowerSharing = isEnableLocalPowerSharging;
+			}
+			if( json_object_object_get_ex(jobj, "PowerSharingCapacity", &val_obj) ) {
+				PowerSharingCapacity = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.PowerSharingCapacityPower = PowerSharingCapacity;
+			}
+			if( json_object_object_get_ex(jobj, "PowerSharingServerIP", &val_obj) ) {
+				PowerSharingServerIP = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.PowerSharingServerIP,PowerSharingServerIP);
+			}
+			if( json_object_object_get_ex(jobj, "OcppReceiptrURL", &val_obj) ) {
+				OcppReceiptrURL = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.OcppReceiptrURL,OcppReceiptrURL);
+			}
+			if( json_object_object_get_ex(jobj, "MaintainServerURL", &val_obj) ) {
+				MaintainServerURL = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.MaintainServerURL,MaintainServerURL);
+			}
+			/*for TTIA*/
+			if( json_object_object_get_ex(jobj, "isEnableTTIA", &val_obj) ) {
+				isEnableTTIA = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.TTIA_Info.isEnableTTIA = isEnableTTIA;
+			}
+			if( json_object_object_get_ex(jobj, "server_addr", &val_obj) ) {
+				server_addr = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TTIA_Info.server_addr,server_addr);
+			}
+			if( json_object_object_get_ex(jobj, "server_port", &val_obj) ) {
+				server_port = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.TTIA_Info.server_port = server_port;
+			}
+			if( json_object_object_get_ex(jobj, "busVenderId", &val_obj) ) {
+				busVenderId = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.TTIA_Info.busVenderId = busVenderId;
+			}
+			if( json_object_object_get_ex(jobj, "EquipmentProvider", &val_obj) ) {
+				EquipmentProvider = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TTIA_Info.EquipmentProvider,EquipmentProvider);
+			}
+			if( json_object_object_get_ex(jobj, "TransportationCompanyNo", &val_obj) ) {
+				TransportationCompanyNo = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.TTIA_Info.TransportationCompanyNo = TransportationCompanyNo;
+			}
+			if( json_object_object_get_ex(jobj, "TTIAChargeBoxId", &val_obj) ) {
+				TTIAChargeBoxId = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.TTIA_Info.ChargeBoxId = TTIAChargeBoxId;
+			}
+			if( json_object_object_get_ex(jobj, "evseStation", &val_obj) ) {
+				evseStation = (char*)json_object_get_string(val_obj);
+				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TTIA_Info.evseStation,evseStation);
+			}
+
+		}
+		struct SysConfigData 	SysConfig;
+		memcpy(&SysConfig, &ShmSysConfigAndInfo->SysConfig, sizeof(struct SysConfigData));
+
+		int result = StoreUsrConfigData(&SysConfig);
+		if(result != 1){
+			#ifdef SystemLogMessage
+			StoreLogMsg("[WebService]StoreUsrConfigData: normal NG");
+			#endif
+		}
+		else{
+			#ifdef SystemLogMessage
+			StoreLogMsg("[WebService]StoreUsrConfigData: normal OK");
+			#endif
+		}
+
+		#ifdef SystemLogMessage
+			DEBUG_INFO("WebServiceConfig update OK");
+		#endif
+	}
+
+	//web api
+	if ((argc == 3) & (strlen(argv[1]) == 2)) {
+		if (strcmp(argv[1], "21") == 0) {
+			struct json_object *jobj = json_tokener_parse(argv[2]);
+			json_object *val_obj = NULL;
+			int MaxChargingEnergy= 0;
+			int MaxChargingPower = 0;
+			int MaxChargingCurrent = 0;
+			int AcMaxChargingCurrent = 0;
+			int MaxChargingDuration = 0;
+			int MaxChargingSoc = 0;
+
+			if( json_object_object_get_ex(jobj, "MaxChargingEnergy", &val_obj) ) {
+				MaxChargingEnergy = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.MaxChargingEnergy = MaxChargingEnergy;
+			}
+			if( json_object_object_get_ex(jobj, "MaxChargingPower", &val_obj) ) {
+				MaxChargingPower = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.MaxChargingPower = MaxChargingPower;
+			}
+			if( json_object_object_get_ex(jobj, "MaxChargingCurrent", &val_obj) ) {
+				MaxChargingCurrent = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent = MaxChargingCurrent;
+			}
+			if( json_object_object_get_ex(jobj, "AcMaxChargingCurrent", &val_obj) ) {
+				AcMaxChargingCurrent = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.AcMaxChargingCurrent = AcMaxChargingCurrent;
+			}
+			if( json_object_object_get_ex(jobj, "MaxChargingDuration", &val_obj) ) {
+				MaxChargingDuration = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.MaxChargingDuration = MaxChargingDuration;
+			}
+			if( json_object_object_get_ex(jobj, "MaxChargingSoc", &val_obj) ) {
+				MaxChargingSoc = json_object_get_int(val_obj);
+				ShmSysConfigAndInfo->SysConfig.MaxChargingSoc = MaxChargingSoc;
+			}
+			DEBUG_INFO("WebService Remote Api update OK");
+		}
+	}
+	if (argc == 2)
+	{	//init share memory for test
+		if (strcmp(argv[1], "aaa") == 0)
+		{
+			//struct SysConfigData 	SysConfig;
+			//system
+			ShmSysConfigAndInfo->SysInfo.DispenserInfo.DispenserQuantity=1;
+			ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity=1;
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.ModelName, "DO0E362001D1P0D");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.SerialNumber, "SerialNumber");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.SystemId, "1234567890");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.SystemDateTime, "2019-12-31 23:59:59");
+			ShmSysConfigAndInfo->SysConfig.AcPhaseCount=1;
+			ShmSysConfigAndInfo->SysConfig.PhaseLossPolicy=0;
+			ShmSysConfigAndInfo->SysInfo.FactoryConfiguration=0;
+			ShmSysConfigAndInfo->SysConfig.AuthorisationMode=0;
+			ShmSysConfigAndInfo->SysConfig.DefaultLanguage=0;
+			ShmSysConfigAndInfo->SysInfo.InputVoltageR=0;
+			ShmSysConfigAndInfo->SysInfo.InputVoltageS=0;
+			ShmSysConfigAndInfo->SysInfo.InputVoltageT=0;
+			ShmSysConfigAndInfo->SysInfo.SystemFanRotaSpeed=0;
+			ShmSysConfigAndInfo->SysInfo.PsuFanRotaSpeed=0;
+			ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian=0;
+			ShmSysConfigAndInfo->SysConfig.RatingCurrent=100;
+			ShmSysConfigAndInfo->SysConfig.PsuAcInputType=0;
+			ShmSysConfigAndInfo->SysInfo.AuxPower5V=0;
+			ShmSysConfigAndInfo->SysInfo.AuxPower12V=0;
+			ShmSysConfigAndInfo->SysInfo.AuxPower24V=0;
+			ShmSysConfigAndInfo->SysInfo.AuxPower48V=0;
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.CsuHwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.CsuBootLoadFwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.CsuKernelFwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.CsuPrimFwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.LcmHwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.LcmFwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.PsuHwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.PsuPrimFwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.PsuSecFwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.AuxPwrHwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.AuxPwrFwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.FanModuleHwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.FanModuleFwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.RelayModuleHwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.RelayModuleFwRev, "");
+			strcpy((char *)&ShmSysConfigAndInfo->SysInfo.TelcomModemFwRev, "");
+			ShmSysConfigAndInfo->SysInfo.SystemAmbientTemp=0;
+			ShmSysConfigAndInfo->SysInfo.SystemCriticalTemp=0;
+			ShmSysConfigAndInfo->SysInfo.CcsConnectorTemp=0;
+			ShmSysConfigAndInfo->SysInfo.PsuAmbientTemp=0;
+			ShmSysConfigAndInfo->SysConfig.AcPlugInTimes=0;
+			ShmSysConfigAndInfo->SysConfig.GbPlugInTimes=0;
+			ShmSysConfigAndInfo->SysConfig.Ccs1PlugInTime=0;
+			ShmSysConfigAndInfo->SysConfig.Ccs2PlugInTimes=0;
+			ShmSysConfigAndInfo->SysConfig.ChademoPlugInTimes=0;
+			// strcpy((char *)&ShmPsuData->PsuVersion[0].FwPrimaryVersion, "DC 9.01");
+			// strcpy((char *)&ShmPsuData->PsuVersion[1].FwPrimaryVersion, "DC 9.02");
+			// strcpy((char *)&ShmPsuData->PsuVersion[0].FwSecondVersion, "PFC 9.02");
+			// strcpy((char *)&ShmPsuData->PsuVersion[1].FwSecondVersion, "PFC 9.03");
+
+			//charging
+			ShmSysConfigAndInfo->SysConfig.MaxChargingEnergy=0;
+			ShmSysConfigAndInfo->SysConfig.MaxChargingPower=0;
+			ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent= 0;
+			ShmSysConfigAndInfo->SysConfig.AcMaxChargingCurrent= 0;
+			ShmSysConfigAndInfo->SysConfig.MaxChargingDuration=0;
+			ShmSysConfigAndInfo->SysConfig.MaxChargingSoc=0;
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[0], "111");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[1], "222");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[2], "333");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[3], "444");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[4], "555");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[5], "666");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[6], "777");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[7], "888");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[8], "999");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[9], "aaa");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.UserId, "UserId");
+			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].PresentChargingVoltage=0;
+			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].PresentChargingCurrent=0;
+			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].PresentChargingPower=0;
+			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].PresentChargedEnergy=0;
+			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].PresentChargedDuration=0;
+			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].RemainChargingDuration=0;
+			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].EvBatteryMaxVoltage=0;
+			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].EvBatterytargetVoltage=0;
+			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].EvBatterySoc=0;
+			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].SystemStatus=1;
+			ShmSysConfigAndInfo->SysInfo.CcsChargingData[0].EvBatterytargetCurrent=1;
+			//network
+			ShmSysConfigAndInfo->SysInfo.InternetConn=0;
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.FtpServer,"");
+			ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthDhcpClient=1;
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthMacAddress,"");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress,"192.168.1.10");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthSubmaskAddress,"255.255.255.0");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthGatewayAddress,"192.168.1.1");
+			ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthDhcpClient=1;
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthMacAddress,"");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthIpAddress,"192.168.0.10");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthSubmaskAddress,"255.255.255.0");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthGatewayAddress,"192.168.0.1");
+			ShmSysConfigAndInfo->SysConfig.AthInterface.WifiMode=1;
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSsid,"");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiPassword,"");
+			ShmSysConfigAndInfo->SysConfig.AthInterface.WifiRssi=0;
+			ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpServer=0;
+			ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpClient=0;
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiMacAddress,"");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiIpAddress,"");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSubmaskAddress,"");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiGatewayAddress,"");
+			ShmSysConfigAndInfo->SysConfig.AthInterface.WifiNetworkConn=1;
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomApn,"");
+			ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomRssi=0;
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapId,"");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapPwd,"");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemImei,"");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimImsi,"");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimIccid,"");
+			ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimStatus=0;
+			ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemMode=0;
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomIpAddress,"");
+			//backend
+			ShmSysConfigAndInfo->SysConfig.BackendConnTimeout=300;
+			ShmSysConfigAndInfo->SysConfig.OfflinePolicy=0;
+			ShmSysConfigAndInfo->SysConfig.OfflineMaxChargeEnergy=0;
+			ShmSysConfigAndInfo->SysConfig.OfflineMaxChargeDuration=0;
+			ShmSysConfigAndInfo->SysInfo.OcppConnStatus=0;
+			ShmSysConfigAndInfo->SysInfo.MaintainServerConnStatus=0;
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.ChargeBoxId,"");
+			strcpy((char *)&ShmSysConfigAndInfo->SysConfig.chargePointVendor,"Phihong");
+
+			ShmSysConfigAndInfo->SysInfo.FirmwareUpdate=0;
+			struct SysConfigData 	SysConfig;
+			memcpy(&SysConfig, &ShmSysConfigAndInfo->SysConfig, sizeof(struct SysConfigData));
+			StoreUsrConfigData(&SysConfig);
+
+			// struct PsuModuleVer 	PsuData;
+			// memcpy(&PsuData, &ShmPsuData->PsuVersion, sizeof(struct PsuModuleVer));
+			// StoreUsrConfigData(&PsuData);
+
+			#ifdef SystemLogMessage
+			DEBUG_INFO("WebService initial OK");
+			#endif
+		}
+
+		if (strcmp(argv[1], "button") == 0)
+		{
+			unsigned char			Button1;
+			unsigned char			Button2;
+			unsigned char			EmergencyButton;
+			Button1=ShmPrimaryMcuData->InputDet.bits.Button1;
+			Button2=ShmPrimaryMcuData->InputDet.bits.Button2;
+			EmergencyButton=ShmPrimaryMcuData->InputDet.bits.EmergencyButton;
+			struct json_object *jobj;
+			struct json_object *sButton1;
+			struct json_object *sButton2;
+			struct json_object *sEmergencyButton;
+			sButton1 = json_object_new_int(Button1);
+			sButton2 = json_object_new_int(Button2);
+			sEmergencyButton = json_object_new_int(EmergencyButton);
+			jobj=json_object_new_object();
+			json_object_object_add(jobj,"Button1",sButton1);
+			json_object_object_add(jobj,"Button2",sButton2);
+			json_object_object_add(jobj,"EmergencyButton",sEmergencyButton);
+			printf("%s\n", json_object_to_json_string(jobj));
+		}
+
+		if (strcmp(argv[1], "restart") == 0)
+		{
+			if((ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16) && (system("pidof -s OcppBackend > /dev/null") == 0))
+			{
+				sprintf((char*)ShmOCPP16Data->Reset.Type, "Soft");
+				ShmOCPP16Data->MsMsg.bits.ResetReq = 1;
+				DEBUG_INFO("Soft reset by OCPP1.6 form web page.\n");
+			}
+			else if((ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20) && (system("pidof -s OcppBackend20 > /dev/null") == 0))
+			{
+				sprintf((char*)ShmOCPP20Data->Reset.type, "OnIdle");
+				ShmOCPP20Data->MsMsg.bits.ResetReq = 1;
+				DEBUG_INFO("Soft reset by OCPP2.0.1 form web page.\n");
+			}
+			else
+			{
+				system("exec /usr/bin/run_evse_restart.sh");
+				DEBUG_INFO("Soft reset directly form web page.\n");
+			}
+		}
+	}
+
+	if(strcmp(argv[1], "log") == 0)
+	{
+		char cmd[512];
+
+		if((argc == 3) && isdigit(*argv[2]))
+		{
+			sprintf(cmd, "exec /root/logPackTools 'log' %s", argv[2]);
+		}
+		else
+		{
+			sprintf(cmd, "exec /root/logPackTools 'log'");
+		}
+
+		if(system(cmd) == 0)
+		{
+			DEBUG_INFO("Log pack success.\n");
+		}
+		else
+		{
+			DEBUG_INFO("Log pack fail.\n");
+		}
+	}
+
+	//upgrade firmware
+	if ((argc == 3) & (strcmp(argv[1], "upgrade") == 0))
+	{
+		struct json_object *jobj;
+		struct json_object *Result;
+		struct json_object *Message;
+		//char cmd[100];
+		jobj=json_object_new_object();
+		//system
+		//if((char)ShmSysConfigAndInfo->SysInfo.FirmwareUpdate == '0'){
+		ShmSysConfigAndInfo->SysInfo.FirmwareUpdate=1;
+		Result = json_object_new_string("success");
+		Message = json_object_new_string("File is uploaded, please wait a moment to upgrade");
+		//}
+		/*else{
+			sprintf(cmd,"rm /mnt/%s",argv[2]);
+			system(cmd);
+			Result = json_object_new_string("error");
+			Message = json_object_new_string("machine is busy");
+		}*/
+		json_object_object_add(jobj,"Result",Result);
+		json_object_object_add(jobj,"Message",Message);
+		printf("%s\n", json_object_to_json_string(jobj));
+
+	}
+
+#ifdef DO360
+	//set power cabinet
+	//  ./WebService "PowerCabinet" Cmd "{'FTargetVoltage': val,'FTargetCurrent': val, 'Gun': val}"
+	if ((strcmp(argv[1], "PowerCabinet") == 0)) {
+		char *IsDO[3];
+		substr((char *)IsDO,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,0,2);
+		if(strcmp(IsDO, "DO") == 0 || strcmp(IsDO, "DK") == 0 || strcmp(IsDO, "DB") == 0){
+			struct json_object *jobj2;
+			jobj2=json_object_new_object();
+			int Gun = 0;
+			//force charging
+			if (strcmp(argv[2], "1") == 0) {
+				json_object_object_add(jobj2,"Cmd",json_object_new_string("1"));
+				int FTargetVoltage = 0;
+				int FTargetCurrent = 0;
+				if(strlen(argv[3]) >0){
+					struct json_object *jobj = json_tokener_parse(argv[3]);
+					json_object *val_obj = NULL;
+					if( json_object_object_get_ex(jobj, "Gun", &val_obj) ) {
+						Gun = json_object_get_int(val_obj);
+						if( json_object_object_get_ex(jobj, "FTargetVoltage", &val_obj) ) {
+							FTargetVoltage = json_object_get_int(val_obj);
+							ShmChargerInfo->Control.FCharging[Gun].FTargetVoltage = FTargetVoltage * 10;
+							json_object_object_add(jobj2,"FTargetVoltage",json_object_new_int(FTargetVoltage));
+						}
+						if( json_object_object_get_ex(jobj, "FTargetCurrent", &val_obj) ) {
+							FTargetCurrent = json_object_get_int(val_obj);
+							ShmChargerInfo->Control.FCharging[Gun].FTargetCurrent = FTargetCurrent * 10;
+							json_object_object_add(jobj2,"FTargetCurrent",json_object_new_int(FTargetCurrent));
+						}
+						ShmChargerInfo->Control.FCharging[Gun].FCtrl.bits.EnableForceCharging=1;
+						ShmChargerInfo->Control.FCharging[Gun].FCtrl.bits.StartForceCharging=1;
+						ShmChargerInfo->Control.FCharging[Gun].FCtrl.bits.WebApiTrigger=1;
+					}
+				}
+				printf("%s\n", json_object_to_json_string(jobj2));
+			}
+			//remote stop
+			if (strcmp(argv[2], "2") == 0) {
+				if(strlen(argv[3]) >0){
+					struct json_object *jobj = json_tokener_parse(argv[3]);
+					json_object *val_obj = NULL;
+					if( json_object_object_get_ex(jobj, "Gun", &val_obj) ) {
+						Gun = json_object_get_int(val_obj);
+						json_object_object_add(jobj2,"Cmd",json_object_new_string("2"));
+						ShmSysConfigAndInfo->SysInfo.ConnectorInfo[Gun].GeneralChargingData.ChargingStopFlag.bits.ManualStop=1;
+						printf("%s\n", json_object_to_json_string(jobj2));
+					}
+				}
+			}
+			if (strcmp(argv[2], "0") == 0) {
+				struct json_object *jobj;
+				jobj=json_object_new_object();
+				struct json_object *FTargetVoltage;
+				struct json_object *FTargetCurrent;
+				struct json_object *EnableForceCharging;
+				struct json_object *StartForceCharging;
+				struct json_object *WebApiTrigger;
+				struct json_object *ManualStop;
+				FTargetVoltage = json_object_new_int(ShmChargerInfo->Control.FCharging[0].FTargetVoltage);
+				FTargetCurrent = json_object_new_int(ShmChargerInfo->Control.FCharging[0].FTargetCurrent);
+				EnableForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[0].FCtrl.bits.EnableForceCharging);
+				StartForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[0].FCtrl.bits.StartForceCharging);
+				WebApiTrigger = json_object_new_int(ShmChargerInfo->Control.FCharging[0].FCtrl.bits.WebApiTrigger);
+				ManualStop = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[0].GeneralChargingData.ChargingStopFlag.bits.ManualStop);
+				json_object_object_add(jobj,"FTargetVoltage0",FTargetVoltage);
+				json_object_object_add(jobj,"FTargetCurrent0",FTargetCurrent);
+				json_object_object_add(jobj,"EnableForceCharging0",EnableForceCharging);
+				json_object_object_add(jobj,"StartForceCharging0",StartForceCharging);
+				json_object_object_add(jobj,"WebApiTrigger0",WebApiTrigger);
+				json_object_object_add(jobj,"ManualStop0",ManualStop);
+				FTargetVoltage = json_object_new_int(ShmChargerInfo->Control.FCharging[1].FTargetVoltage);
+				FTargetCurrent = json_object_new_int(ShmChargerInfo->Control.FCharging[1].FTargetCurrent);
+				EnableForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[1].FCtrl.bits.EnableForceCharging);
+				StartForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[1].FCtrl.bits.StartForceCharging);
+				WebApiTrigger = json_object_new_int(ShmChargerInfo->Control.FCharging[1].FCtrl.bits.WebApiTrigger);
+				ManualStop = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[1].GeneralChargingData.ChargingStopFlag.bits.ManualStop);
+				json_object_object_add(jobj,"FTargetVoltage1",FTargetVoltage);
+				json_object_object_add(jobj,"FTargetCurrent1",FTargetCurrent);
+				json_object_object_add(jobj,"EnableForceCharging1",EnableForceCharging);
+				json_object_object_add(jobj,"StartForceCharging1",StartForceCharging);
+				json_object_object_add(jobj,"WebApiTrigger1",WebApiTrigger);
+				json_object_object_add(jobj,"ManualStop1",ManualStop);
+				FTargetVoltage = json_object_new_int(ShmChargerInfo->Control.FCharging[2].FTargetVoltage);
+				FTargetCurrent = json_object_new_int(ShmChargerInfo->Control.FCharging[2].FTargetCurrent);
+				EnableForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[2].FCtrl.bits.EnableForceCharging);
+				StartForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[2].FCtrl.bits.StartForceCharging);
+				WebApiTrigger = json_object_new_int(ShmChargerInfo->Control.FCharging[2].FCtrl.bits.WebApiTrigger);
+				ManualStop = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[2].GeneralChargingData.ChargingStopFlag.bits.ManualStop);
+				json_object_object_add(jobj,"FTargetVoltage2",FTargetVoltage);
+				json_object_object_add(jobj,"FTargetCurrent2",FTargetCurrent);
+				json_object_object_add(jobj,"EnableForceCharging2",EnableForceCharging);
+				json_object_object_add(jobj,"StartForceCharging2",StartForceCharging);
+				json_object_object_add(jobj,"WebApiTrigger2",WebApiTrigger);
+				json_object_object_add(jobj,"ManualStop2",ManualStop);
+				FTargetVoltage = json_object_new_int(ShmChargerInfo->Control.FCharging[3].FTargetVoltage);
+				FTargetCurrent = json_object_new_int(ShmChargerInfo->Control.FCharging[3].FTargetCurrent);
+				EnableForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[3].FCtrl.bits.EnableForceCharging);
+				StartForceCharging = json_object_new_int(ShmChargerInfo->Control.FCharging[3].FCtrl.bits.StartForceCharging);
+				WebApiTrigger = json_object_new_int(ShmChargerInfo->Control.FCharging[3].FCtrl.bits.WebApiTrigger);
+				ManualStop = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[3].GeneralChargingData.ChargingStopFlag.bits.ManualStop);
+				json_object_object_add(jobj,"FTargetVoltage3",FTargetVoltage);
+				json_object_object_add(jobj,"FTargetCurrent3",FTargetCurrent);
+				json_object_object_add(jobj,"EnableForceCharging3",EnableForceCharging);
+				json_object_object_add(jobj,"StartForceCharging3",StartForceCharging);
+				json_object_object_add(jobj,"WebApiTrigger3",WebApiTrigger);
+				json_object_object_add(jobj,"ManualStop3",ManualStop);
+				printf("%s\n", json_object_to_json_string(jobj));
+				json_object_put(jobj);
+			}
+		}
+	}
+#endif
+
+	//web page query all
+	if ((argc == 2) & (strcmp(argv[1], "query") == 0)) {
+		char *IsAcDc[2];
+		char *SafetyRegulation[2];
+		char *IsDO[3];
+		char *Connector1[2];
+		char *Connector2[2];
+		char *Connector3[2];
+		char *Network[2];
+		//unsigned char connector1FwVer[32];
+		//unsigned char connector2FwVer[32];
+		short gunQty;
+		char *RatedPower1[2];
+		char *RatedPower2[2];
+		char *RatedPower3[2];
+		short RatedPower;
+		short PsuQuantity = 0;
+		substr((char *)IsAcDc,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,0,1);
+		substr((char *)SafetyRegulation,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,3,1);
+		substr((char *)IsDO,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,0,2);
+		substr((char *)Connector1,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,7,1);
+		substr((char *)Connector2,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,9,1);
+		substr((char *)Connector3,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,8,1);
+		substr((char *)Network,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,10,1);
+		int connectorType1,connectorType2,connectorType3;
+		connectorType1=ConnectorType((char *)Connector1);
+		connectorType2=ConnectorType((char *)Connector2);
+		connectorType3=ConnectorType((char *)Connector3);
+		if(connectorType1 == connectorType2){
+			gunQty = 1;
+		}
+		else{
+			gunQty = 0;
+		}
+		if(connectorType1 != 0){
+			if(connectorType1 == 1){
+//				strcpy((char *)&connector1FwVer,ShmCcsData->V2GMessage_DIN70121->version);
+//				memcpy(connector1FwVer,ShmCcsData->V2GMessage_DIN70121->version,ARRAY_SIZE(ShmCcsData->V2GMessage_DIN70121->version));
+			}
+			else if(connectorType1 == 2){
+//				strcpy((char *)&connector1FwVer,ShmGBTData->evse[0].version);
+//				memcpy(connector1FwVer,ShmGBTData->evse[0].version,ARRAY_SIZE(ShmGBTData->evse[0].version));
+			}
+			else if(connectorType1 == 3){
+//				strcpy((char *)&connector1FwVer,ShmCHAdeMOData->evse[0].version);
+//				memcpy(connector1FwVer,ShmCHAdeMOData->evse[0].version,ARRAY_SIZE(ShmCHAdeMOData->evse[0].version));
+			}
+		}
+		if(connectorType2 != 0){
+			if(connectorType2 == 1){
+//				strcpy((char *)&connector2FwVer,ShmCcsData->V2GMessage_DIN70121->version);
+//				memcpy(connector2FwVer,ShmCcsData->V2GMessage_DIN70121->version,ARRAY_SIZE(ShmCcsData->V2GMessage_DIN70121->version));
+			}
+			else if(connectorType2 == 2){
+//				strcpy((char *)&connector2FwVer,ShmGBTData->evse[gunQty].version);
+//				memcpy(connector2FwVer,ShmGBTData->evse[gunQty].version,ARRAY_SIZE(ShmGBTData->evse[gunQty].version));
+			}
+			else if(connectorType2 == 3){
+//				strcpy((char *)&connector2FwVer,ShmCHAdeMOData->evse[gunQty].version);
+//				memcpy(connector2FwVer,ShmCHAdeMOData->evse[gunQty].version,ARRAY_SIZE(ShmCHAdeMOData->evse[gunQty].version));
+			}
+		}
+		substr((char *)RatedPower1,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,4,1);
+		substr((char *)RatedPower2,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,5,1);
+		substr((char *)RatedPower3,(const char *)ShmSysConfigAndInfo->SysConfig.ModelName,6,1);
+		int p1=atoi((char *)RatedPower1);
+		int p2=atoi((char *)RatedPower2);
+		int p3=atoi((char *)RatedPower3);
+		if(strcmp(IsAcDc, "D") == 0){
+			RatedPower=(p1*10+p2)*pow(10,p3-1);
+			if(RatedPower==50){
+				PsuQuantity = 3;
+			}
+			else{
+//				if(RatedPower>=30){
+					PsuQuantity = RatedPower/30;
+//				}
+			}
+		}
+		if(strcmp(IsDO, "DO") == 0 || strcmp(IsDO, "DK") == 0 || strcmp(IsDO, "DB") == 0){
+		}
+		
+		struct json_object *jobj1;
+		struct json_object *jobj2;
+		struct json_object *jobj3;
+		struct json_object *jobj4;
+		//system
+		struct json_object *ModelName;
+		struct json_object *AcModelName;
+		struct json_object *SerialNumber;
+		struct json_object *SystemId;
+		struct json_object *AcPhaseCount;
+		struct json_object *PhaseLossPolicy;
+		struct json_object *FactoryConfiguration;
+		struct json_object *AuthorisationMode;
+		struct json_object *DefaultLanguage;
+		struct json_object *InputVoltageR;
+		struct json_object *InputVoltageS;
+		struct json_object *InputVoltageT;
+		struct json_object *InputVoltageDc;
+		struct json_object *SystemFanRotaSpeed;
+		struct json_object *PsuFanRotaSpeed;
+		struct json_object *RfidCardNumEndian;
+		struct json_object *PsuAcInputType;
+		struct json_object *RatingCurrent;
+		struct json_object *AcRatingCurrent;
+		struct json_object *isAPP;
+		struct json_object *isQRCode;
+		struct json_object *isRFID;
+		struct json_object *QRCodeMadeMode;
+		struct json_object *QRCodeContent;
+		struct json_object *Intensity;
+		struct json_object *isAuthrizeByEVCCID;
+		struct json_object *AuxPower5V;
+		struct json_object *AuxPower12V;
+		struct json_object *AuxPower24V;
+		struct json_object *AuxPower48V;
+		struct json_object *CsuHwRev;
+		struct json_object *CsuBootLoadFwRev;
+		struct json_object *CsuKernelFwRev;
+		struct json_object *CsuRootFsFwRev;
+		struct json_object *CsuPrimFwRev;
+		struct json_object *LcmHwRev;
+		struct json_object *LcmFwRev;
+		struct json_object *PsuHwRev;
+		struct json_object *PsuPrimFwRev;
+		struct json_object *PsuSecFwRev;
+		struct json_object *AuxPwrHwRev;
+		struct json_object *AuxPwrFwRev;
+		struct json_object *FanModuleHwRev;
+		struct json_object *FanModuleFwRev;
+		struct json_object *RelayModuleHwRev;
+		struct json_object *RelayModuleFwRev;
+		struct json_object *TelcomModemFwRev;
+		struct json_object *Connector1FwRev;
+		struct json_object *Connector2FwRev;
+		/* for DC+AC*/
+		struct json_object *Connector3FwRev;
+		struct json_object *LedModuleFwRev;
+		struct json_object *SystemAmbientTemp;
+		struct json_object *SystemCriticalTemp;
+		struct json_object *CcsConnectorTemp;
+		struct json_object *PsuAmbientTemp;
+		struct json_object *AcPlugInTimes;
+		struct json_object *GbPlugInTimes;
+		struct json_object *Ccs1PlugInTime;
+		struct json_object *Ccs2PlugInTimes;
+		struct json_object *ChademoPlugInTimes;
+		struct json_object *FirmwareUpdate;
+		struct json_object *FwPrimaryVersion[PsuQuantity];
+		struct json_object *FwPrimaryVersionArr= json_object_new_array();
+		struct json_object *FwSecondVersion[PsuQuantity];
+		struct json_object *FwSecondVersionArr= json_object_new_array();
+		/* for DO & DD*/
+		struct json_object *DispenserQuantity;
+		struct json_object *TotalConnectorQuantity;
+		struct json_object *DDModelName[4];
+		struct json_object *DDModelNameArr= json_object_new_array();
+		struct json_object *DDSerialNumber[4];
+		struct json_object *DDSerialNumberArr= json_object_new_array();
+		struct json_object *DDSystemId[4];
+		struct json_object *DDSystemIdArr= json_object_new_array();
+		struct json_object *DDAuthorisationMode[4];
+		struct json_object *DDAuthorisationModeArr= json_object_new_array();
+		struct json_object *DDRfidCardNumEndian[4];
+		struct json_object *DDRfidCardNumEndianArr= json_object_new_array();
+		struct json_object *DDisAPP[4];
+		struct json_object *DDisAPPArr= json_object_new_array();
+		struct json_object *DDisQRCode[4];
+		struct json_object *DDisQRCodeArr= json_object_new_array();
+		struct json_object *DDisRFID[4];
+		struct json_object *DDisRFIDArr= json_object_new_array();
+		struct json_object *DDQRCodeMadeMode[4];
+		struct json_object *DDQRCodeMadeModeArr= json_object_new_array();
+		struct json_object *DDQRCodeContent[4];
+		struct json_object *DDQRCodeContentArr= json_object_new_array();
+		struct json_object *DDFactoryConfiguration[4];
+		struct json_object *DDFactoryConfigurationArr= json_object_new_array();
+		struct json_object *DDCsuBootLoadFwRev[4];
+		struct json_object *DDCsuBootLoadFwRevArr= json_object_new_array();
+		struct json_object *DDCsuKernelFwRev[4];
+		struct json_object *DDCsuKernelFwRevArr= json_object_new_array();
+		struct json_object *DDCsuRootFsFwRev[4];
+		struct json_object *DDCsuRootFsFwRevArr= json_object_new_array();
+		struct json_object *DDCsuPrimFwRev[4];
+		struct json_object *DDCsuPrimFwRevArr= json_object_new_array();
+		struct json_object *DDLcmFwRev[4];
+		struct json_object *DDLcmFwRevArr= json_object_new_array();
+		struct json_object *DDPsuPrimFwRev[4];
+		struct json_object *DDPsuPrimFwRevArr= json_object_new_array();
+		struct json_object *DDPsuSecFwRev[4];
+		struct json_object *DDPsuSecFwRevArr= json_object_new_array();
+		struct json_object *DDFanModuleFwRev[4];
+		struct json_object *DDFanModuleFwRevArr= json_object_new_array();
+		struct json_object *DDRelayModuleFwRev[4];
+		struct json_object *DDRelayModuleFwRevArr= json_object_new_array();
+		struct json_object *DDTelcomModemFwRev[4];
+		struct json_object *DDTelcomModemFwRevArr= json_object_new_array();
+		struct json_object *DDLedModuleFwRev[4];
+		struct json_object *DDLedModuleFwRevArr= json_object_new_array();
+		struct json_object *DDConnector1FwRev[4];
+		struct json_object *DDConnector1FwRevArr= json_object_new_array();
+		struct json_object *DDConnector2FwRev[4];
+		struct json_object *DDConnector2FwRevArr= json_object_new_array();
+		struct json_object *DDIntensity[4];
+		struct json_object *DDIntensityArr= json_object_new_array();
+		struct json_object *Relay2ModuleFwRev;
+
+		//charging
+		struct json_object *MaxChargingEnergy;
+		struct json_object *MaxChargingPower;
+		struct json_object *MaxChargingCurrent;
+		struct json_object *AcMaxChargingCurrent;
+		struct json_object *MaxChargingDuration;
+		struct json_object *MaxChargingSoc;
+		struct json_object *StopChargingByButton;
+		struct json_object *LocalWhiteCard[10];
+		struct json_object *LocalWhiteCardArr= json_object_new_array();
+		struct json_object *isBilling;
+		struct json_object *Currency;
+		struct json_object *Fee[24];
+		struct json_object *FeeArr= json_object_new_array();
+		struct json_object *ChargingInfo1;
+		struct json_object *ChargingInfo2;
+		struct json_object *ChargingInfo3;
+		struct json_object *StartUserId[3];
+		struct json_object *StartDateTime[3];
+		struct json_object *StopDateTime[3];
+		struct json_object *StartMethod[3];
+		struct json_object *ConnectorTemp[3];
+		struct json_object *ChillerTemp[3];
+		struct json_object *PresentChargingVoltage[3];
+		struct json_object *PresentChargingCurrent[3];
+		struct json_object *PresentChargingPower[3];
+		struct json_object *PresentChargedEnergy[3];
+		struct json_object *PresentChargedDuration[3];
+		struct json_object *RemainChargingDuration[3];
+		struct json_object *EvBatteryMaxVoltage[3];
+		struct json_object *EvBatterytargetVoltage[3];
+		struct json_object *EvBatterySoc[3];
+		struct json_object *SystemStatus[3];
+		struct json_object *EvBatterytargetCurrent[3];
+		struct json_object *PowerConsumption[3];
+		struct json_object *isCalibratedVaGain[3];
+		struct json_object *isCalibratedVbGain[3];
+		struct json_object *isCalibratedVcGain[3];
+		struct json_object *isCalibratedVaOffset[3];
+		struct json_object *isCalibratedVbOffset[3];
+		struct json_object *isCalibratedVcOffset[3];
+		struct json_object *isCalibratedCaGain[3];
+		struct json_object *isCalibratedCbGain[3];
+		struct json_object *isCalibratedCcGain[3];
+		struct json_object *isCalibratedCaOffset[3];
+		struct json_object *isCalibratedCbOffset[3];
+		struct json_object *isCalibratedCcOffset[3];
+		struct json_object *isCalibratedPa[3];
+		struct json_object *isCalibratedPb[3];
+		struct json_object *isCalibratedPc[3];
+		/* for DO & DD*/
+		struct json_object *DDChargingInfo1;
+		struct json_object *DDChargingInfo2;
+		struct json_object *DDChargingInfo3;
+		struct json_object *DDChargingInfo4;
+		struct json_object *DDStartUserId[4];
+		struct json_object *DDStartDateTime[4];
+		struct json_object *DDStopDateTime[4];
+		struct json_object *DDStartMethod[4];
+		struct json_object *DDConnectorTemp[4];
+		struct json_object *DDChillerTemp[4];
+		struct json_object *DDPresentChargingVoltage[4];
+		struct json_object *DDPresentChargingCurrent[4];
+		struct json_object *DDPresentChargingPower[4];
+		struct json_object *DDPresentChargedEnergy[4];
+		struct json_object *DDPresentChargedDuration[4];
+		struct json_object *DDRemainChargingDuration[4];
+		struct json_object *DDEvBatteryMaxVoltage[4];
+		struct json_object *DDEvBatterytargetVoltage[4];
+		struct json_object *DDEvBatterySoc[4];
+		struct json_object *DDSystemStatus[4];
+		struct json_object *DDEvBatterytargetCurrent[4];
+		struct json_object *DDPowerConsumption[4];
+
+		//network
+		struct json_object *InternetConn;
+		struct json_object *FtpServer;
+		struct json_object *Eth0DhcpClient;
+		struct json_object *Eth0MacAddress;
+		struct json_object *Eth0IpAddress;
+		struct json_object *Eth0SubmaskAddress;
+		struct json_object *Eth0GatewayAddress;
+		struct json_object *Eth1DhcpClient;
+		struct json_object *Eth1MacAddress;
+		struct json_object *Eth1IpAddress;
+		struct json_object *Eth1SubmaskAddress;
+		struct json_object *Eth1GatewayAddress;
+		struct json_object *WifiMode;
+		struct json_object *WifiSsid;
+		struct json_object *WifiPassword;
+		struct json_object *WifiBroadcastSsid;
+		struct json_object *WifiTargetBssidMac;
+		struct json_object *WifiRssi;
+		struct json_object *WifiDhcpServer;
+		struct json_object *WifiDhcpClient;
+		struct json_object *WifiMacAddress;
+		struct json_object *WifiIpAddress;
+		struct json_object *WifiSubmaskAddress;
+		struct json_object *WifiGatewayAddress;
+		struct json_object *WifiNetworkConn;
+		struct json_object *TelcomApn;
+		struct json_object *TelcomRssi;
+		struct json_object *TelcomChapPapId;
+		struct json_object *TelcomChapPapPwd;
+		struct json_object *TelcomModemImei;
+		struct json_object *TelcomSimImsi;
+		struct json_object *TelcomSimIccid;
+		struct json_object *TelcomSimStatus;
+		struct json_object *TelcomModemMode;
+		struct json_object *TelcomIpAddress;
+		struct json_object *TelcomNetworkConn;
+		struct json_object *TelcomEnabled;
+		struct json_object *TelcomNetworkType;
+		//backend
+		struct json_object *BackendConnTimeout;
+		struct json_object *OfflinePolicy;
+		struct json_object *OfflineMaxChargeEnergy;
+		struct json_object *OfflineMaxChargeDuration;
+		struct json_object *OcppConnStatus;
+		struct json_object *MaintainServerConnStatus;
+		struct json_object *OcppServerURL;
+		struct json_object *ChargeBoxId;
+		struct json_object *chargePointVendor;
+		struct json_object *OcppSecurityProfile;
+		struct json_object *OcppSecurityPassword;
+		struct json_object *MaintainServerSecurityProfile;
+		struct json_object *MaintainServerSecurityPassword;
+		struct json_object *isEnableLocalPowerSharging;
+		struct json_object *PowerSharingCapacity;
+		struct json_object *PowerSharingServerIP;
+		struct json_object *OcppReceiptrURL;
+		struct json_object *MaintainServerURL;
+		/*for TTIA*/
+		struct json_object *isEnableTTIA;
+		struct json_object *server_addr;
+		struct json_object *server_port;
+		struct json_object *busVenderId;
+		struct json_object *EquipmentProvider;
+		struct json_object *TransportationCompanyNo;
+		struct json_object *TTIAChargeBoxId;
+		struct json_object *evseStation;
+
+		jobj1=json_object_new_object();
+		jobj2=json_object_new_object();
+		jobj3=json_object_new_object();
+		jobj4=json_object_new_object();
+		//system
+		ModelName = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.ModelName);
+		AcModelName = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AcModelName);
+		SerialNumber = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.SerialNumber);
+		SystemId = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.SystemId);
+		AcPhaseCount = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AcPhaseCount);
+		PhaseLossPolicy = json_object_new_int(ShmSysConfigAndInfo->SysConfig.PhaseLossPolicy);
+		FactoryConfiguration = json_object_new_int(ShmSysConfigAndInfo->SysInfo.FactoryConfiguration);
+		AuthorisationMode = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AuthorisationMode);
+		DefaultLanguage = json_object_new_int(ShmSysConfigAndInfo->SysConfig.DefaultLanguage);
+		InputVoltageR = json_object_new_double(ShmSysConfigAndInfo->SysInfo.InputVoltageR);
+		InputVoltageS = json_object_new_double(ShmSysConfigAndInfo->SysInfo.InputVoltageS);
+		InputVoltageT = json_object_new_double(ShmSysConfigAndInfo->SysInfo.InputVoltageT);
+		InputVoltageDc = json_object_new_double(ShmSysConfigAndInfo->SysInfo.InputVoltageDc);
+		SystemFanRotaSpeed = json_object_new_int(ShmSysConfigAndInfo->SysInfo.SystemFanRotaSpeed);
+		PsuFanRotaSpeed = json_object_new_int(ShmSysConfigAndInfo->SysInfo.PsuFanRotaSpeed);
+		RfidCardNumEndian = json_object_new_int(ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian);
+		PsuAcInputType = json_object_new_int(ShmSysConfigAndInfo->SysConfig.PsuAcInputType);
+		RatingCurrent = json_object_new_int(ShmSysConfigAndInfo->SysConfig.RatingCurrent);
+		AcRatingCurrent = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AcRatingCurrent);
+		isAPP = json_object_new_int(ShmSysConfigAndInfo->SysConfig.isAPP);
+		isQRCode = json_object_new_int(ShmSysConfigAndInfo->SysConfig.isQRCode);
+		isRFID = json_object_new_int(ShmSysConfigAndInfo->SysConfig.isRFID);
+		QRCodeMadeMode = json_object_new_int(ShmSysConfigAndInfo->SysConfig.QRCodeMadeMode);
+		QRCodeContent = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.QRCodeContent);
+		Intensity = json_object_new_int(ShmSysConfigAndInfo->SysConfig.LedInfo.Intensity);
+		isAuthrizeByEVCCID = json_object_new_int(ShmSysConfigAndInfo->SysConfig.isAuthrizeByEVCCID);
+		AuxPower5V = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AuxPower5V);
+		AuxPower12V = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AuxPower12V);
+		AuxPower24V = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AuxPower24V);
+		AuxPower48V = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AuxPower48V);
+		CsuHwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CsuHwRev);
+		CsuBootLoadFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CsuBootLoadFwRev);
+		CsuKernelFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CsuKernelFwRev);
+		CsuRootFsFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev);
+		CsuPrimFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CsuPrimFwRev);
+		LcmHwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.LcmHwRev);
+		LcmFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.LcmFwRev);
+		PsuHwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.PsuHwRev);
+		PsuPrimFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.PsuPrimFwRev);
+		PsuSecFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.PsuSecFwRev);
+		AuxPwrHwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AuxPwrHwRev);
+		AuxPwrFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AuxPwrFwRev);
+		FanModuleHwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.FanModuleHwRev);
+		FanModuleFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.FanModuleFwRev);
+		RelayModuleHwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.RelayModuleHwRev);
+		RelayModuleFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.RelayModuleFwRev);
+		TelcomModemFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.TelcomModemFwRev);
+		Connector1FwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.Connector1FwRev);
+		Connector2FwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.Connector2FwRev);
+		/* for DC+AC*/
+		if(connectorType3==4){
+			Connector3FwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[0].version);
+		}
+		LedModuleFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.LedModuleFwRev);
+		SystemAmbientTemp = json_object_new_int(ShmSysConfigAndInfo->SysInfo.SystemAmbientTemp);
+		SystemCriticalTemp = json_object_new_int(ShmSysConfigAndInfo->SysInfo.SystemCriticalTemp);
+		CcsConnectorTemp = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsConnectorTemp);
+		PsuAmbientTemp = json_object_new_int(ShmSysConfigAndInfo->SysInfo.PsuAmbientTemp);
+		AcPlugInTimes = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AcPlugInTimes);
+		GbPlugInTimes = json_object_new_int(ShmSysConfigAndInfo->SysConfig.GbPlugInTimes);
+		Ccs1PlugInTime = json_object_new_int(ShmSysConfigAndInfo->SysConfig.Ccs1PlugInTime);
+		Ccs2PlugInTimes = json_object_new_int(ShmSysConfigAndInfo->SysConfig.Ccs2PlugInTimes);
+		ChademoPlugInTimes = json_object_new_int(ShmSysConfigAndInfo->SysConfig.ChademoPlugInTimes);
+		FirmwareUpdate = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.FirmwareUpdate);
+		if(strcmp(IsAcDc, "D") == 0){
+			for(int i=0;i<PsuQuantity;i++){
+				FwPrimaryVersion[i] = json_object_new_string((char *)&ShmPsuData->PsuVersion[i].FwPrimaryVersion);
+				FwSecondVersion[i] = json_object_new_string((char *)&ShmPsuData->PsuVersion[i].FwSecondVersion);
+				json_object_array_add(FwPrimaryVersionArr,FwPrimaryVersion[i]);
+				json_object_array_add(FwSecondVersionArr,FwSecondVersion[i]);
+			}
+		}
+		if(strcmp(IsDO, "DO") == 0 || strcmp(IsDO, "DK") == 0 || strcmp(IsDO, "DB") == 0){
+			if(ShmSysConfigAndInfo->SysInfo.DispenserInfo.DispenserQuantity>4 || ShmSysConfigAndInfo->SysInfo.DispenserInfo.DispenserQuantity<0)ShmSysConfigAndInfo->SysInfo.DispenserInfo.DispenserQuantity=0;
+			DispenserQuantity = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.DispenserQuantity);
+			TotalConnectorQuantity = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity);
+			int DDDispenserQuantity = ShmSysConfigAndInfo->SysInfo.DispenserInfo.DispenserQuantity;
+			for(int i=0;i<DDDispenserQuantity;i++){
+				DDModelName[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].ModelName);
+				DDSerialNumber[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].SerialNumber);
+				DDSystemId[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].SystemId);
+				DDAuthorisationMode[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].AuthorisationMode);
+				DDRfidCardNumEndian[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].RfidCardNumEndian);
+				DDisAPP[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].isAPP);
+				DDisQRCode[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].isQRCode);
+				DDisRFID[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].isRFID);
+				DDQRCodeMadeMode[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].QRCodeMadeMode);
+				DDQRCodeContent[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].QRCodeContent);
+				DDFactoryConfiguration[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].FactoryConfiguration);
+				DDCsuBootLoadFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].CsuBootLoadFwRev);
+				DDCsuKernelFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].CsuKernelFwRev);
+				DDCsuRootFsFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].CsuRootFsFwRev);
+				DDCsuPrimFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].CsuPrimFwRev);
+				DDLcmFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].LcmFwRev);
+				DDPsuPrimFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].PsuPrimFwRev);
+				DDPsuSecFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].PsuSecFwRev);
+				DDFanModuleFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].FanModuleFwRev);
+				DDRelayModuleFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].RelayModuleFwRev);
+				DDTelcomModemFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].TelcomModemFwRev);
+				DDLedModuleFwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].LedModuleFwRev);
+				DDConnector1FwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].Connector1FwRev);
+				DDConnector2FwRev[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].Connector2FwRev);
+				DDIntensity[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.DispenserInfo.Dispenser[i].LedInfo.Intensity);
+				json_object_array_add(DDModelNameArr,DDModelName[i]);
+				json_object_array_add(DDSerialNumberArr,DDSerialNumber[i]);
+				json_object_array_add(DDSystemIdArr,DDSystemId[i]);
+				json_object_array_add(DDAuthorisationModeArr,DDAuthorisationMode[i]);
+				json_object_array_add(DDRfidCardNumEndianArr,DDRfidCardNumEndian[i]);
+				json_object_array_add(DDisAPPArr,DDisAPP[i]);
+				json_object_array_add(DDisQRCodeArr,DDisQRCode[i]);
+				json_object_array_add(DDisRFIDArr,DDisRFID[i]);
+				json_object_array_add(DDQRCodeMadeModeArr,DDQRCodeMadeMode[i]);
+				json_object_array_add(DDQRCodeContentArr,DDQRCodeContent[i]);
+				json_object_array_add(DDFactoryConfigurationArr,DDFactoryConfiguration[i]);
+				json_object_array_add(DDCsuBootLoadFwRevArr,DDCsuBootLoadFwRev[i]);
+				json_object_array_add(DDCsuKernelFwRevArr,DDCsuKernelFwRev[i]);
+				json_object_array_add(DDCsuRootFsFwRevArr,DDCsuRootFsFwRev[i]);
+				json_object_array_add(DDCsuPrimFwRevArr,DDCsuPrimFwRev[i]);
+				json_object_array_add(DDLcmFwRevArr,DDLcmFwRev[i]);
+				json_object_array_add(DDPsuPrimFwRevArr,DDPsuPrimFwRev[i]);
+				json_object_array_add(DDPsuSecFwRevArr,DDPsuSecFwRev[i]);
+				json_object_array_add(DDFanModuleFwRevArr,DDFanModuleFwRev[i]);
+				json_object_array_add(DDRelayModuleFwRevArr,DDRelayModuleFwRev[i]);
+				json_object_array_add(DDTelcomModemFwRevArr,DDTelcomModemFwRev[i]);
+				json_object_array_add(DDLedModuleFwRevArr,DDLedModuleFwRev[i]);
+				json_object_array_add(DDConnector1FwRevArr,DDConnector1FwRev[i]);
+				json_object_array_add(DDConnector2FwRevArr,DDConnector2FwRev[i]);
+				json_object_array_add(DDIntensityArr,DDIntensity[i]);
+			}
+			Relay2ModuleFwRev = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.Relay2ModuleFwRev);
+		}
+
+		//charging
+		int CcsGunQty=0;
+		int GbGunQty=0;
+		int CHAdeMOGunQty=0;
+		int AcGunQty=0;
+		ChargingInfo1=json_object_new_object();
+		ChargingInfo2=json_object_new_object();
+		ChargingInfo3=json_object_new_object();
+		MaxChargingEnergy = json_object_new_int(ShmSysConfigAndInfo->SysConfig.MaxChargingEnergy);
+		MaxChargingPower = json_object_new_int(ShmSysConfigAndInfo->SysConfig.MaxChargingPower);
+		MaxChargingCurrent = json_object_new_int(ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent);
+		AcMaxChargingCurrent = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AcMaxChargingCurrent);
+		MaxChargingDuration = json_object_new_int(ShmSysConfigAndInfo->SysConfig.MaxChargingDuration);
+		MaxChargingSoc = json_object_new_int(ShmSysConfigAndInfo->SysConfig.MaxChargingSoc);
+		StopChargingByButton = json_object_new_int(ShmSysConfigAndInfo->SysConfig.StopChargingByButton);
+		LocalWhiteCard[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[0]);
+		LocalWhiteCard[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[1]);
+		LocalWhiteCard[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[2]);
+		LocalWhiteCard[3] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[3]);
+		LocalWhiteCard[4] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[4]);
+		LocalWhiteCard[5] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[5]);
+		LocalWhiteCard[6] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[6]);
+		LocalWhiteCard[7] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[7]);
+		LocalWhiteCard[8] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[8]);
+		LocalWhiteCard[9] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.LocalWhiteCard[9]);
+		isBilling = json_object_new_int(ShmSysConfigAndInfo->SysConfig.BillingData.isBilling);
+		Currency = json_object_new_int(ShmSysConfigAndInfo->SysConfig.BillingData.Currency);
+		Fee[0] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[0]);
+		Fee[1] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[1]);
+		Fee[2] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[2]);
+		Fee[3] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[3]);
+		Fee[4] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[4]);
+		Fee[5] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[5]);
+		Fee[6] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[6]);
+		Fee[7] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[7]);
+		Fee[8] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[8]);
+		Fee[9] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[9]);
+		Fee[10] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[10]);
+		Fee[11] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[11]);
+		Fee[12] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[12]);
+		Fee[13] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[13]);
+		Fee[14] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[14]);
+		Fee[15] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[15]);
+		Fee[16] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[16]);
+		Fee[17] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[17]);
+		Fee[18] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[18]);
+		Fee[19] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[19]);
+		Fee[20] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[20]);
+		Fee[21] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[21]);
+		Fee[22] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[22]);
+		Fee[23] = json_object_new_double(ShmSysConfigAndInfo->SysConfig.BillingData.Fee[23]);
+		if(connectorType1 != 0){
+			if(connectorType1 == 1){//CCS
+				PresentChargingVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingVoltage);
+				PresentChargingCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingCurrent);
+				PresentChargingPower[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingPower);
+				PresentChargedEnergy[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargedEnergy);
+				PresentChargedDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargedDuration);
+				RemainChargingDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].RemainChargingDuration);
+				EvBatteryMaxVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatteryMaxVoltage);
+				EvBatterytargetVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterytargetVoltage);
+				EvBatterySoc[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterySoc);
+				SystemStatus[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].SystemStatus);
+				EvBatterytargetCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterytargetCurrent);
+				StartUserId[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartUserId);
+				StartDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartDateTime);
+				StopDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StopDateTime);
+				StartMethod[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartMethod);
+				if(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp == 255){
+					ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp);
+				}
+				else{
+					ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp-60);
+				}
+				if(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp == 255){
+					ChillerTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp);
+				}
+				else{
+					ChillerTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp-60);
+				}
+				PowerConsumption[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PowerConsumption);
+				CcsGunQty++;
+			}
+			else if(connectorType1 == 2){//GB
+				PresentChargingVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingVoltage);
+				PresentChargingCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingCurrent);
+				PresentChargingPower[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingPower);
+				PresentChargedEnergy[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargedEnergy);
+				PresentChargedDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargedDuration);
+				RemainChargingDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].RemainChargingDuration);
+				EvBatteryMaxVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatteryMaxVoltage);
+				EvBatterytargetVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterytargetVoltage);
+				EvBatterySoc[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterySoc);
+				SystemStatus[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].SystemStatus);
+				EvBatterytargetCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterytargetCurrent);
+				StartUserId[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartUserId);
+				StartDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartDateTime);
+				StopDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StopDateTime);
+				StartMethod[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartMethod);
+				if(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp == 255){
+					ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp);
+				}
+				else{
+					ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp-60);
+				}
+				if(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp == 255){
+					ChillerTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp);
+				}
+				else{
+					ChillerTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp-60);
+				}
+				PowerConsumption[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PowerConsumption);
+				GbGunQty++;
+			}
+			else if(connectorType1 == 3){//CHAdeMO
+				PresentChargingVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingVoltage);
+				PresentChargingCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingCurrent);
+				PresentChargingPower[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingPower);
+				PresentChargedEnergy[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargedEnergy);
+				PresentChargedDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargedDuration);
+				RemainChargingDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].RemainChargingDuration);
+				EvBatteryMaxVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatteryMaxVoltage);
+				EvBatterytargetVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterytargetVoltage);
+				EvBatterySoc[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterySoc);
+				SystemStatus[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].SystemStatus);
+				EvBatterytargetCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterytargetCurrent);
+				StartUserId[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartUserId);
+				StartDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartDateTime);
+				StopDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StopDateTime);
+				StartMethod[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartMethod);
+				if(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp == 255){
+					ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp);
+				}
+				else{
+					ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp-60);
+				}
+				if(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp == 255){
+					ChillerTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp);
+				}
+				else{
+					ChillerTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp-60);
+				}
+				PowerConsumption[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PowerConsumption);
+				CHAdeMOGunQty++;
+			}
+			else if(connectorType1 == 4){//AC
+				PresentChargingVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingVoltage);
+				PresentChargingCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingCurrent);
+				PresentChargingPower[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingPower);
+				PresentChargedEnergy[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargedEnergy);
+				PresentChargedDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargedDuration);
+				RemainChargingDuration[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].RemainChargingDuration);
+				EvBatteryMaxVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatteryMaxVoltage);
+				EvBatterytargetVoltage[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterytargetVoltage);
+				EvBatterySoc[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterySoc);
+				SystemStatus[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].SystemStatus);
+				EvBatterytargetCurrent[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterytargetCurrent);
+				StartUserId[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartUserId);
+				StartDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartDateTime);
+				StopDateTime[0] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StopDateTime);
+				StartMethod[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartMethod);
+				ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].ConnectorTemp);
+				ChillerTemp[0] = json_object_new_int(255);
+				PowerConsumption[0] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PowerConsumption);
+				if(strcmp(IsDO, "AX") == 0){
+					isCalibratedVaGain[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVaGain);
+					isCalibratedVbGain[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVbGain);
+					isCalibratedVcGain[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVcGain);
+					isCalibratedVaOffset[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVaOffset);
+					isCalibratedVbOffset[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVbOffset);
+					isCalibratedVcOffset[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVcOffset);
+					isCalibratedCaGain[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCaGain);
+					isCalibratedCbGain[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCbGain);
+					isCalibratedCcGain[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCcGain);
+					isCalibratedCaOffset[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCaOffset);
+					isCalibratedCbOffset[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCbOffset);
+					isCalibratedCcOffset[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCcOffset);
+					isCalibratedPa[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPa);
+					isCalibratedPb[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPb);
+					isCalibratedPc[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPc);
+				}
+				AcGunQty++;
+			}
+		}
+		if(connectorType2 != 0){
+			if(connectorType2 == 1){//CCS
+				PresentChargingVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingVoltage);
+				PresentChargingCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingCurrent);
+				PresentChargingPower[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingPower);
+				PresentChargedEnergy[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargedEnergy);
+				PresentChargedDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargedDuration);
+				RemainChargingDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].RemainChargingDuration);
+				EvBatteryMaxVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatteryMaxVoltage);
+				EvBatterytargetVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterytargetVoltage);
+				EvBatterySoc[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterySoc);
+				SystemStatus[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].SystemStatus);
+				EvBatterytargetCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterytargetCurrent);
+				StartUserId[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartUserId);
+				StartDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartDateTime);
+				StopDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StopDateTime);
+				StartMethod[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartMethod);
+				if(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp == 255){
+					ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp);
+				}
+				else{
+					ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp-60);
+				}
+				if(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp == 255){
+					ChillerTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp);
+				}
+				else{
+					ChillerTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp-60);
+				}
+				PowerConsumption[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PowerConsumption);
+				CcsGunQty++;
+			}
+			else if(connectorType2 == 2){//GB
+				PresentChargingVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingVoltage);
+				PresentChargingCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingCurrent);
+				PresentChargingPower[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingPower);
+				PresentChargedEnergy[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargedEnergy);
+				PresentChargedDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargedDuration);
+				RemainChargingDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].RemainChargingDuration);
+				EvBatteryMaxVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatteryMaxVoltage);
+				EvBatterytargetVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterytargetVoltage);
+				EvBatterySoc[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterySoc);
+				SystemStatus[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].SystemStatus);
+				EvBatterytargetCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterytargetCurrent);
+				StartUserId[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartUserId);
+				StartDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartDateTime);
+				StopDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StopDateTime);
+				StartMethod[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartMethod);
+				if(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp == 255){
+					ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp);
+				}
+				else{
+					ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp-60);
+				}
+				if(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp == 255){
+					ChillerTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp);
+				}
+				else{
+					ChillerTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp-60);
+				}
+				PowerConsumption[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PowerConsumption);
+				GbGunQty++;
+			}
+			else if(connectorType2 == 3){//CHAdeMO
+				PresentChargingVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingVoltage);
+				PresentChargingCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingCurrent);
+				PresentChargingPower[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingPower);
+				PresentChargedEnergy[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargedEnergy);
+				PresentChargedDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargedDuration);
+				RemainChargingDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].RemainChargingDuration);
+				EvBatteryMaxVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatteryMaxVoltage);
+				EvBatterytargetVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterytargetVoltage);
+				EvBatterySoc[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterySoc);
+				SystemStatus[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].SystemStatus);
+				EvBatterytargetCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterytargetCurrent);
+				StartUserId[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartUserId);
+				StartDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartDateTime);
+				StopDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StopDateTime);
+				StartMethod[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartMethod);
+				if(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp == 255){
+					ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp);
+				}
+				else{
+					ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp-60);
+				}
+				if(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp == 255){
+					ChillerTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp);
+				}
+				else{
+					ChillerTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp-60);
+				}
+				PowerConsumption[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PowerConsumption);
+				CHAdeMOGunQty++;
+			}
+			else if(connectorType2 == 4){//AC
+				PresentChargingVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingVoltage);
+				PresentChargingCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingCurrent);
+				PresentChargingPower[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingPower);
+				PresentChargedEnergy[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargedEnergy);
+				PresentChargedDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargedDuration);
+				RemainChargingDuration[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].RemainChargingDuration);
+				EvBatteryMaxVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatteryMaxVoltage);
+				EvBatterytargetVoltage[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterytargetVoltage);
+				EvBatterySoc[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterySoc);
+				SystemStatus[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].SystemStatus);
+				EvBatterytargetCurrent[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterytargetCurrent);
+				StartUserId[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartUserId);
+				StartDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartDateTime);
+				StopDateTime[1] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StopDateTime);
+				StartMethod[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartMethod);
+				ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].ConnectorTemp);
+				ChillerTemp[1] = json_object_new_int(255);
+				PowerConsumption[1] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PowerConsumption);
+				if(strcmp(IsDO, "AX") == 0){
+					isCalibratedVaGain[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVaGain);
+					isCalibratedVbGain[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVbGain);
+					isCalibratedVcGain[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVcGain);
+					isCalibratedVaOffset[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVaOffset);
+					isCalibratedVbOffset[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVbOffset);
+					isCalibratedVcOffset[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVcOffset);
+					isCalibratedCaGain[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCaGain);
+					isCalibratedCbGain[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCbGain);
+					isCalibratedCcGain[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCcGain);
+					isCalibratedCaOffset[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCaOffset);
+					isCalibratedCbOffset[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCbOffset);
+					isCalibratedCcOffset[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCcOffset);
+					isCalibratedPa[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPa);
+					isCalibratedPb[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPb);
+					isCalibratedPc[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPc);
+				}
+				AcGunQty++;
+			}
+		}
+		if(connectorType3 != 0){
+			if(connectorType3 == 1){//CCS
+				PresentChargingVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingVoltage);
+				PresentChargingCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingCurrent);
+				PresentChargingPower[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargingPower);
+				PresentChargedEnergy[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargedEnergy);
+				PresentChargedDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PresentChargedDuration);
+				RemainChargingDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].RemainChargingDuration);
+				EvBatteryMaxVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatteryMaxVoltage);
+				EvBatterytargetVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterytargetVoltage);
+				EvBatterySoc[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterySoc);
+				SystemStatus[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].SystemStatus);
+				EvBatterytargetCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].EvBatterytargetCurrent);
+				StartUserId[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartUserId);
+				StartDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartDateTime);
+				StopDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StopDateTime);
+				StartMethod[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].StartMethod);
+				if(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp == 0 ||ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp == 255){
+					ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp);
+				}
+				else{
+					ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp-60);
+				}
+				if(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp == 0 ||ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp == 255){
+					ChillerTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp);
+				}
+				else{
+					ChillerTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ChillerTemp-60);
+				}
+				PowerConsumption[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].PowerConsumption);
+				CcsGunQty++;
+			}
+			else if(connectorType3 == 2){//GB
+				PresentChargingVoltage[2]= json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingVoltage);
+				PresentChargingCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingCurrent);
+				PresentChargingPower[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargingPower);
+				PresentChargedEnergy[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargedEnergy);
+				PresentChargedDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PresentChargedDuration);
+				RemainChargingDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].RemainChargingDuration);
+				EvBatteryMaxVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatteryMaxVoltage);
+				EvBatterytargetVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterytargetVoltage);
+				EvBatterySoc[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterySoc);
+				SystemStatus[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].SystemStatus);
+				EvBatterytargetCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].EvBatterytargetCurrent);
+				StartUserId[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartUserId);
+				StartDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartDateTime);
+				StopDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StopDateTime);
+				StartMethod[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].StartMethod);
+				if(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp == 255){
+					ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp);
+				}
+				else{
+					ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp-60);
+				}
+				if(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp == 255){
+					ChillerTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp);
+				}
+				else{
+					ChillerTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ChillerTemp-60);
+				}
+				PowerConsumption[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].PowerConsumption);
+				GbGunQty++;
+			}
+			else if(connectorType3 == 3){//CHAdeMO
+				PresentChargingVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingVoltage);
+				PresentChargingCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingCurrent);
+				PresentChargingPower[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargingPower);
+				PresentChargedEnergy[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargedEnergy);
+				PresentChargedDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PresentChargedDuration);
+				RemainChargingDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].RemainChargingDuration);
+				EvBatteryMaxVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatteryMaxVoltage);
+				EvBatterytargetVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterytargetVoltage);
+				EvBatterySoc[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterySoc);
+				SystemStatus[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].SystemStatus);
+				EvBatterytargetCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].EvBatterytargetCurrent);
+				StartUserId[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartUserId);
+				StartDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartDateTime);
+				StopDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StopDateTime);
+				StartMethod[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].StartMethod);
+				if(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp == 255){
+					ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp);
+				}
+				else{
+					ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp-60);
+				}
+				if(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp == 255){
+					ChillerTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp);
+				}
+				else{
+					ChillerTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ChillerTemp-60);
+				}
+				PowerConsumption[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].PowerConsumption);
+				CHAdeMOGunQty++;
+			}
+			else if(connectorType3 == 4){//AC
+				PresentChargingVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingVoltage);
+				PresentChargingCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingCurrent);
+				PresentChargingPower[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargingPower);
+				PresentChargedEnergy[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargedEnergy);
+				PresentChargedDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PresentChargedDuration);
+				RemainChargingDuration[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].RemainChargingDuration);
+				EvBatteryMaxVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatteryMaxVoltage);
+				EvBatterytargetVoltage[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterytargetVoltage);
+				EvBatterySoc[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterySoc);
+				SystemStatus[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].SystemStatus);
+				EvBatterytargetCurrent[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].EvBatterytargetCurrent);
+				StartUserId[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartUserId);
+				StartDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartDateTime);
+				StopDateTime[2] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StopDateTime);
+				StartMethod[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].StartMethod);
+				ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].ConnectorTemp);
+				ChillerTemp[2] = json_object_new_int(255);
+				PowerConsumption[2] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].PowerConsumption);
+				if(strcmp(IsDO, "AX") == 0){
+					isCalibratedVaGain[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVaGain);
+					isCalibratedVbGain[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVbGain);
+					isCalibratedVcGain[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVcGain);
+					isCalibratedVaOffset[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVaOffset);
+					isCalibratedVbOffset[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVbOffset);
+					isCalibratedVcOffset[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedVcOffset);
+					isCalibratedCaGain[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCaGain);
+					isCalibratedCbGain[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCbGain);
+					isCalibratedCcGain[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCcGain);
+					isCalibratedCaOffset[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCaOffset);
+					isCalibratedCbOffset[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCbOffset);
+					isCalibratedCcOffset[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedCcOffset);
+					isCalibratedPa[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPa);
+					isCalibratedPb[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPb);
+					isCalibratedPc[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.AcChargingData[AcGunQty].meterIcCalInfo.isCalibratedPc);
+				}
+				AcGunQty++;
+			}
+		}
+		if(strcmp(IsDO, "DO") == 0 || strcmp(IsDO, "DK") == 0 || strcmp(IsDO, "DB") == 0){
+			if(ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity>4 || ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity<0)ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity=0;
+			int DDTotalConnectorQuantity = ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity;
+			for(int i=0;i<DDTotalConnectorQuantity;i++){
+				DDPresentChargingVoltage[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.PresentChargingVoltage);
+				DDPresentChargingCurrent[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.PresentChargingCurrent);
+				DDPresentChargingPower[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.PresentChargingPower);
+				DDPresentChargedEnergy[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.PresentChargedEnergy);
+				DDPresentChargedDuration[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.PresentChargedDuration);
+				DDRemainChargingDuration[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.RemainChargingDuration);
+				DDEvBatteryMaxVoltage[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.EvBatteryMaxVoltage);
+				DDEvBatterytargetVoltage[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.EvBatterytargetVoltage);
+				DDEvBatterySoc[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.EvBatterySoc);
+				DDSystemStatus[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.SystemStatus);
+				DDEvBatterytargetCurrent[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.EvBatterytargetCurrent);
+				DDStartUserId[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.StartUserId);
+				DDStartDateTime[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.StartDateTime);
+				DDStopDateTime[i] = json_object_new_string((char *)&ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.StopDateTime);
+				DDStartMethod[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.StartMethod);
+				if(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ConnectorTemp == 0 || ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ConnectorTemp == 255){
+					DDConnectorTemp[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ConnectorTemp);
+				}
+				else{
+					DDConnectorTemp[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ConnectorTemp-60);
+				}
+				if(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ChillerTemp == 0 || ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ChillerTemp == 255){
+					DDChillerTemp[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ChillerTemp);
+				}
+				else{
+					DDChillerTemp[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ChillerTemp-60);
+				}
+				DDPowerConsumption[i] = json_object_new_double(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.PowerConsumption);
+			}
+		}
+		//network
+		InternetConn = json_object_new_int(ShmSysConfigAndInfo->SysInfo.InternetConn);
+		FtpServer = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.FtpServer);
+		Eth0DhcpClient = json_object_new_int(ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthDhcpClient);
+		Eth0MacAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthMacAddress);
+		Eth0IpAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress);
+		Eth0SubmaskAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthSubmaskAddress);
+		Eth0GatewayAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthGatewayAddress);
+		Eth1DhcpClient = json_object_new_int(ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthDhcpClient);
+		Eth1MacAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthMacAddress);
+		Eth1IpAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthIpAddress);
+		Eth1SubmaskAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthSubmaskAddress);
+		Eth1GatewayAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthGatewayAddress);
+		WifiMode = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AthInterface.WifiMode);
+		WifiSsid = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSsid);
+		WifiPassword = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiPassword);
+		WifiBroadcastSsid = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AthInterface.WifiBroadcastSsid);
+		WifiTargetBssidMac = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiTargetBssidMac);
+		WifiRssi = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AthInterface.WifiRssi);
+		WifiDhcpServer = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpServer);
+		WifiDhcpClient = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AthInterface.WifiDhcpClient);
+		WifiMacAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiMacAddress);
+		WifiIpAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiIpAddress);
+		WifiSubmaskAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSubmaskAddress);
+		WifiGatewayAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiGatewayAddress);
+		WifiNetworkConn = json_object_new_int(ShmSysConfigAndInfo->SysConfig.AthInterface.WifiNetworkConn);
+		TelcomApn = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomApn);
+		TelcomRssi = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomRssi);
+		TelcomChapPapId = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapId);
+		TelcomChapPapPwd = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomChapPapPwd);
+		TelcomModemImei = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemImei);
+		TelcomSimImsi = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimImsi);
+		TelcomSimIccid = json_object_new_string((char*)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimIccid);
+		TelcomSimStatus = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomSimStatus);
+		TelcomModemMode = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomModemMode);
+		TelcomIpAddress = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomIpAddress);
+		TelcomNetworkConn = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomNetworkConn);
+		TelcomEnabled = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomEnabled);
+		TelcomNetworkType = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TelecomInterface.TelcomNetworkType);
+		//backend
+		BackendConnTimeout = json_object_new_int(ShmSysConfigAndInfo->SysConfig.BackendConnTimeout);
+		OfflinePolicy = json_object_new_int(ShmSysConfigAndInfo->SysConfig.OfflinePolicy);
+		OfflineMaxChargeEnergy = json_object_new_int(ShmSysConfigAndInfo->SysConfig.OfflineMaxChargeEnergy);
+		OfflineMaxChargeDuration = json_object_new_int(ShmSysConfigAndInfo->SysConfig.OfflineMaxChargeDuration);
+		OcppConnStatus = json_object_new_int(ShmSysConfigAndInfo->SysInfo.OcppConnStatus);
+		MaintainServerConnStatus = json_object_new_int(ShmSysConfigAndInfo->SysInfo.MaintainServerConnStatus);
+		OcppServerURL = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL);
+		ChargeBoxId = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.ChargeBoxId);
+		OcppSecurityProfile = json_object_new_int(ShmSysConfigAndInfo->SysConfig.OcppSecurityProfile);
+		OcppSecurityPassword = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.OcppSecurityPassword);
+		MaintainServerSecurityProfile = json_object_new_int(ShmSysConfigAndInfo->SysConfig.MaintainServerSecurityProfile);
+		MaintainServerSecurityPassword = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.MaintainServerSecurityPassword);
+		chargePointVendor = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.chargePointVendor);
+		MaintainServerURL = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.MaintainServerURL);
+		if(strcmp(IsDO, "AX") == 0 ){
+			isEnableLocalPowerSharging = json_object_new_int(ShmSysConfigAndInfo->SysConfig.isEnableLocalPowerSharing);
+			PowerSharingCapacity = json_object_new_int(ShmSysConfigAndInfo->SysConfig.PowerSharingCapacityPower);
+			PowerSharingServerIP = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.PowerSharingServerIP);
+		}
+		if(strcmp(IsDO, "AX") == 0|| strcmp(IsAcDc, "D") == 0){
+			OcppReceiptrURL = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.OcppReceiptrURL);
+		}
+		/*for TTIA*/
+		if(strcmp(IsAcDc, "D") == 0 && strcmp(SafetyRegulation, "C") == 0){
+			isEnableTTIA = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TTIA_Info.isEnableTTIA);
+			server_addr = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TTIA_Info.server_addr);
+			server_port = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TTIA_Info.server_port);
+			busVenderId = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TTIA_Info.busVenderId);
+			EquipmentProvider = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TTIA_Info.EquipmentProvider);
+			TransportationCompanyNo = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TTIA_Info.TransportationCompanyNo);
+			TTIAChargeBoxId = json_object_new_int(ShmSysConfigAndInfo->SysConfig.TTIA_Info.ChargeBoxId);
+			evseStation = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.TTIA_Info.evseStation);
+		}
+
+		//system
+		json_object_object_add(jobj1,"ModelName",ModelName);
+		json_object_object_add(jobj1,"AcModelName",AcModelName);
+		json_object_object_add(jobj1,"SerialNumber",SerialNumber);
+		json_object_object_add(jobj1,"SystemId",SystemId);
+		json_object_object_add(jobj1,"AcPhaseCount",AcPhaseCount);
+		json_object_object_add(jobj1,"PhaseLossPolicy",PhaseLossPolicy);
+		json_object_object_add(jobj1,"FactoryConfiguration",FactoryConfiguration);
+		json_object_object_add(jobj1,"AuthorisationMode",AuthorisationMode);
+		json_object_object_add(jobj1,"DefaultLanguage",DefaultLanguage);
+		json_object_object_add(jobj1,"InputVoltageR",InputVoltageR);
+		json_object_object_add(jobj1,"InputVoltageS",InputVoltageS);
+		json_object_object_add(jobj1,"InputVoltageT",InputVoltageT);
+		json_object_object_add(jobj1,"InputVoltageDc",InputVoltageDc);
+		json_object_object_add(jobj1,"SystemFanRotaSpeed",SystemFanRotaSpeed);
+		json_object_object_add(jobj1,"PsuFanRotaSpeed",PsuFanRotaSpeed);
+		json_object_object_add(jobj1,"RfidCardNumEndian",RfidCardNumEndian);
+		json_object_object_add(jobj1,"PsuAcInputType",PsuAcInputType);
+		json_object_object_add(jobj1,"RatingCurrent",RatingCurrent);
+		json_object_object_add(jobj1,"AcRatingCurrent",AcRatingCurrent);
+		json_object_object_add(jobj1,"isAPP",isAPP);
+		json_object_object_add(jobj1,"isQRCode",isQRCode);
+		json_object_object_add(jobj1,"isRFID",isRFID);
+		json_object_object_add(jobj1,"QRCodeMadeMode",QRCodeMadeMode);
+		json_object_object_add(jobj1,"QRCodeContent",QRCodeContent);
+		json_object_object_add(jobj1,"Intensity",Intensity);
+		json_object_object_add(jobj1,"isAuthrizeByEVCCID",isAuthrizeByEVCCID);
+		json_object_object_add(jobj1,"AuxPower5V",AuxPower5V);
+		json_object_object_add(jobj1,"AuxPower12V",AuxPower12V);
+		json_object_object_add(jobj1,"AuxPower24V",AuxPower24V);
+		json_object_object_add(jobj1,"AuxPower48V",AuxPower48V);
+		json_object_object_add(jobj1,"CsuHwRev",CsuHwRev);
+		json_object_object_add(jobj1,"CsuBootLoadFwRev",CsuBootLoadFwRev);
+		json_object_object_add(jobj1,"CsuKernelFwRev",CsuKernelFwRev);
+		json_object_object_add(jobj1,"CsuRootFsFwRev",CsuRootFsFwRev);
+		json_object_object_add(jobj1,"CsuPrimFwRev",CsuPrimFwRev);
+		json_object_object_add(jobj1,"LcmHwRev",LcmHwRev);
+		json_object_object_add(jobj1,"LcmFwRev",LcmFwRev);
+		json_object_object_add(jobj1,"PsuHwRev",PsuHwRev);
+		json_object_object_add(jobj1,"PsuPrimFwRev",PsuPrimFwRev);
+		json_object_object_add(jobj1,"PsuSecFwRev",PsuSecFwRev);
+		json_object_object_add(jobj1,"AuxPwrHwRev",AuxPwrHwRev);
+		json_object_object_add(jobj1,"AuxPwrFwRev",AuxPwrFwRev);
+		json_object_object_add(jobj1,"FanModuleHwRev",FanModuleHwRev);
+		json_object_object_add(jobj1,"FanModuleFwRev",FanModuleFwRev);
+		json_object_object_add(jobj1,"RelayModuleHwRev",RelayModuleHwRev);
+		json_object_object_add(jobj1,"RelayModuleFwRev",RelayModuleFwRev);
+		json_object_object_add(jobj1,"TelcomModemFwRev",TelcomModemFwRev);
+		json_object_object_add(jobj1,"Connector1FwRev",Connector1FwRev);
+		json_object_object_add(jobj1,"Connector2FwRev",Connector2FwRev);
+		/* for DC+AC*/
+		if(connectorType3==4){
+			json_object_object_add(jobj1,"Connector3FwRev",Connector3FwRev);
+		}
+		json_object_object_add(jobj1,"LedModuleFwRev",LedModuleFwRev);
+		json_object_object_add(jobj1,"SystemAmbientTemp",SystemAmbientTemp);
+		json_object_object_add(jobj1,"SystemCriticalTemp",SystemCriticalTemp);
+		json_object_object_add(jobj1,"CcsConnectorTemp",CcsConnectorTemp);
+		json_object_object_add(jobj1,"PsuAmbientTemp",PsuAmbientTemp);
+		json_object_object_add(jobj1,"AcPlugInTimes",AcPlugInTimes);
+		json_object_object_add(jobj1,"GbPlugInTimes",GbPlugInTimes);
+		json_object_object_add(jobj1,"Ccs1PlugInTimes",Ccs1PlugInTime);
+		json_object_object_add(jobj1,"Ccs2PlugInTimes",Ccs2PlugInTimes);
+		json_object_object_add(jobj1,"ChademoPlugInTimes",ChademoPlugInTimes);
+		json_object_object_add(jobj1,"FirmwareUpdate",FirmwareUpdate);
+		if(strcmp(IsAcDc, "D") == 0){
+			json_object_object_add(jobj1,"FwPrimaryVersion",FwPrimaryVersionArr);
+			json_object_object_add(jobj1,"FwSecondVersion",FwSecondVersionArr);
+		}
+		if(strcmp(IsDO, "DO") == 0 || strcmp(IsDO, "DK") == 0 || strcmp(IsDO, "DB") == 0){
+			json_object_object_add(jobj1,"DispenserQuantity",DispenserQuantity);
+			json_object_object_add(jobj1,"TotalConnectorQuantity",TotalConnectorQuantity);
+			json_object_object_add(jobj1,"DDModelName",DDModelNameArr);
+			json_object_object_add(jobj1,"DDSerialNumber",DDSerialNumberArr);
+			json_object_object_add(jobj1,"DDSystemId",DDSystemIdArr);
+			json_object_object_add(jobj1,"DDAuthorisationMode",DDAuthorisationModeArr);
+			json_object_object_add(jobj1,"DDRfidCardNumEndian",DDRfidCardNumEndianArr);
+			json_object_object_add(jobj1,"DDisAPP",DDisAPPArr);
+			json_object_object_add(jobj1,"DDisQRCode",DDisQRCodeArr);
+			json_object_object_add(jobj1,"DDisRFID",DDisRFIDArr);
+			json_object_object_add(jobj1,"DDQRCodeMadeMode",DDQRCodeMadeModeArr);
+			json_object_object_add(jobj1,"DDQRCodeContent",DDQRCodeContentArr);
+			json_object_object_add(jobj1,"DDFactoryConfiguration",DDFactoryConfigurationArr);
+			json_object_object_add(jobj1,"DDCsuBootLoadFwRev",DDCsuBootLoadFwRevArr);
+			json_object_object_add(jobj1,"DDCsuKernelFwRev",DDCsuKernelFwRevArr);
+			json_object_object_add(jobj1,"DDCsuRootFsFwRev",DDCsuRootFsFwRevArr);
+			json_object_object_add(jobj1,"DDCsuPrimFwRev",DDCsuPrimFwRevArr);
+			json_object_object_add(jobj1,"DDLcmFwRev",DDLcmFwRevArr);
+			json_object_object_add(jobj1,"DDPsuPrimFwRev",DDPsuPrimFwRevArr);
+			json_object_object_add(jobj1,"DDPsuSecFwRev",DDPsuSecFwRevArr);
+			json_object_object_add(jobj1,"DDFanModuleFwRev",DDFanModuleFwRevArr);
+			json_object_object_add(jobj1,"DDRelayModuleFwRev",DDRelayModuleFwRevArr);
+			json_object_object_add(jobj1,"DDTelcomModemFwRev",DDTelcomModemFwRevArr);
+			json_object_object_add(jobj1,"DDLedModuleFwRev",DDLedModuleFwRevArr);
+			json_object_object_add(jobj1,"DDConnector1FwRev",DDConnector1FwRevArr);
+			json_object_object_add(jobj1,"DDConnector2FwRev",DDConnector2FwRevArr);
+			json_object_object_add(jobj1,"DDIntensity",DDIntensityArr);
+			json_object_object_add(jobj1,"Relay2ModuleFwRev",Relay2ModuleFwRev);
+		}
+
+		printf("%s\n", json_object_to_json_string(jobj1));
+		json_object_put(jobj1);
+
+		//charging
+		json_object_object_add(jobj2,"MaxChargingEnergy",MaxChargingEnergy);
+		json_object_object_add(jobj2,"MaxChargingPower",MaxChargingPower);
+		json_object_object_add(jobj2,"MaxChargingCurrent",MaxChargingCurrent);
+		json_object_object_add(jobj2,"AcMaxChargingCurrent",AcMaxChargingCurrent);
+		json_object_object_add(jobj2,"MaxChargingDuration",MaxChargingDuration);
+		json_object_object_add(jobj2,"MaxChargingSoc",MaxChargingSoc);
+		json_object_object_add(jobj2,"StopChargingByButton",StopChargingByButton);
+		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[0]);
+		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[1]);
+		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[2]);
+		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[3]);
+		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[4]);
+		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[5]);
+		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[6]);
+		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[7]);
+		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[8]);
+		json_object_array_add(LocalWhiteCardArr,LocalWhiteCard[9]);
+		json_object_object_add(jobj2,"LocalWhiteCard",LocalWhiteCardArr);
+		json_object_object_add(jobj2,"isBilling",isBilling);
+		json_object_object_add(jobj2,"Currency",Currency);
+		json_object_array_add(FeeArr,Fee[0]);
+		json_object_array_add(FeeArr,Fee[1]);
+		json_object_array_add(FeeArr,Fee[2]);
+		json_object_array_add(FeeArr,Fee[3]);
+		json_object_array_add(FeeArr,Fee[4]);
+		json_object_array_add(FeeArr,Fee[5]);
+		json_object_array_add(FeeArr,Fee[6]);
+		json_object_array_add(FeeArr,Fee[7]);
+		json_object_array_add(FeeArr,Fee[8]);
+		json_object_array_add(FeeArr,Fee[9]);
+		json_object_array_add(FeeArr,Fee[10]);
+		json_object_array_add(FeeArr,Fee[11]);
+		json_object_array_add(FeeArr,Fee[12]);
+		json_object_array_add(FeeArr,Fee[13]);
+		json_object_array_add(FeeArr,Fee[14]);
+		json_object_array_add(FeeArr,Fee[15]);
+		json_object_array_add(FeeArr,Fee[16]);
+		json_object_array_add(FeeArr,Fee[17]);
+		json_object_array_add(FeeArr,Fee[18]);
+		json_object_array_add(FeeArr,Fee[19]);
+		json_object_array_add(FeeArr,Fee[20]);
+		json_object_array_add(FeeArr,Fee[21]);
+		json_object_array_add(FeeArr,Fee[22]);
+		json_object_array_add(FeeArr,Fee[23]);
+		json_object_object_add(jobj2,"Fee",FeeArr);
+		if(connectorType1 != 0){
+			json_object_object_add(ChargingInfo1,"StartUserId",StartUserId[0]);
+			json_object_object_add(ChargingInfo1,"StartDateTime",StartDateTime[0]);
+			json_object_object_add(ChargingInfo1,"StopDateTime",StopDateTime[0]);
+			json_object_object_add(ChargingInfo1,"StartMethod",StartMethod[0]);
+			json_object_object_add(ChargingInfo1,"ConnectorTemp",ConnectorTemp[0]);
+			json_object_object_add(ChargingInfo1,"ChillerTemp",ChillerTemp[0]);
+			json_object_object_add(ChargingInfo1,"PresentChargingVoltage",PresentChargingVoltage[0]);
+			json_object_object_add(ChargingInfo1,"PresentChargingCurrent",PresentChargingCurrent[0]);
+			json_object_object_add(ChargingInfo1,"PresentChargingPower",PresentChargingPower[0]);
+			json_object_object_add(ChargingInfo1,"PresentChargedEnergy",PresentChargedEnergy[0]);
+			json_object_object_add(ChargingInfo1,"PresentChargedDuration",PresentChargedDuration[0]);
+			json_object_object_add(ChargingInfo1,"RemainChargingDuration",RemainChargingDuration[0]);
+			json_object_object_add(ChargingInfo1,"EvBatteryMaxVoltage",EvBatteryMaxVoltage[0]);
+			json_object_object_add(ChargingInfo1,"EvBatterytargetVoltage",EvBatterytargetVoltage[0]);
+			json_object_object_add(ChargingInfo1,"EvBatterySoc",EvBatterySoc[0]);
+			json_object_object_add(ChargingInfo1,"SystemStatus",SystemStatus[0]);
+			json_object_object_add(ChargingInfo1,"EvBatterytargetCurrent",EvBatterytargetCurrent[0]);
+			json_object_object_add(ChargingInfo1,"PowerConsumption",PowerConsumption[0]);
+			if(strcmp(IsDO, "AX") == 0){
+				json_object_object_add(ChargingInfo1,"isCalibratedVaGain",isCalibratedVaGain[0]);
+				json_object_object_add(ChargingInfo1,"isCalibratedVbGain",isCalibratedVbGain[0]);
+				json_object_object_add(ChargingInfo1,"isCalibratedVcGain",isCalibratedVcGain[0]);
+				json_object_object_add(ChargingInfo1,"isCalibratedVaOffset",isCalibratedVaOffset[0]);
+				json_object_object_add(ChargingInfo1,"isCalibratedVbOffset",isCalibratedVbOffset[0]);
+				json_object_object_add(ChargingInfo1,"isCalibratedVcOffset",isCalibratedVcOffset[0]);
+				json_object_object_add(ChargingInfo1,"isCalibratedCaGain",isCalibratedCaGain[0]);
+				json_object_object_add(ChargingInfo1,"isCalibratedCbGain",isCalibratedCbGain[0]);
+				json_object_object_add(ChargingInfo1,"isCalibratedCcGain",isCalibratedCcGain[0]);
+				json_object_object_add(ChargingInfo1,"isCalibratedCaOffset",isCalibratedCaOffset[0]);
+				json_object_object_add(ChargingInfo1,"isCalibratedCbOffset",isCalibratedCbOffset[0]);
+				json_object_object_add(ChargingInfo1,"isCalibratedCcOffset",isCalibratedCcOffset[0]);
+				json_object_object_add(ChargingInfo1,"isCalibratedPa",isCalibratedPa[0]);
+				json_object_object_add(ChargingInfo1,"isCalibratedPb",isCalibratedPb[0]);
+				json_object_object_add(ChargingInfo1,"isCalibratedPc",isCalibratedPc[0]);
+			}
+			json_object_object_add(jobj2,"ChargingInfo1",ChargingInfo1);
+		}
+		if(connectorType2 != 0){
+			json_object_object_add(ChargingInfo2,"StartUserId",StartUserId[1]);
+			json_object_object_add(ChargingInfo2,"StartDateTime",StartDateTime[1]);
+			json_object_object_add(ChargingInfo2,"StopDateTime",StopDateTime[1]);
+			json_object_object_add(ChargingInfo2,"StartMethod",StartMethod[1]);
+			json_object_object_add(ChargingInfo2,"ConnectorTemp",ConnectorTemp[1]);
+			json_object_object_add(ChargingInfo2,"ChillerTemp",ChillerTemp[1]);
+			json_object_object_add(ChargingInfo2,"PresentChargingVoltage",PresentChargingVoltage[1]);
+			json_object_object_add(ChargingInfo2,"PresentChargingCurrent",PresentChargingCurrent[1]);
+			json_object_object_add(ChargingInfo2,"PresentChargingPower",PresentChargingPower[1]);
+			json_object_object_add(ChargingInfo2,"PresentChargedEnergy",PresentChargedEnergy[1]);
+			json_object_object_add(ChargingInfo2,"PresentChargedDuration",PresentChargedDuration[1]);
+			json_object_object_add(ChargingInfo2,"RemainChargingDuration",RemainChargingDuration[1]);
+			json_object_object_add(ChargingInfo2,"EvBatteryMaxVoltage",EvBatteryMaxVoltage[1]);
+			json_object_object_add(ChargingInfo2,"EvBatterytargetVoltage",EvBatterytargetVoltage[1]);
+			json_object_object_add(ChargingInfo2,"EvBatterySoc",EvBatterySoc[1]);
+			json_object_object_add(ChargingInfo2,"SystemStatus",SystemStatus[1]);
+			json_object_object_add(ChargingInfo2,"EvBatterytargetCurrent",EvBatterytargetCurrent[1]);
+			json_object_object_add(ChargingInfo2,"PowerConsumption",PowerConsumption[1]);
+			if(strcmp(IsDO, "AX") == 0){
+				json_object_object_add(ChargingInfo2,"isCalibratedVaGain",isCalibratedVaGain[1]);
+				json_object_object_add(ChargingInfo2,"isCalibratedVbGain",isCalibratedVbGain[1]);
+				json_object_object_add(ChargingInfo2,"isCalibratedVcGain",isCalibratedVcGain[1]);
+				json_object_object_add(ChargingInfo2,"isCalibratedVaOffset",isCalibratedVaOffset[1]);
+				json_object_object_add(ChargingInfo2,"isCalibratedVbOffset",isCalibratedVbOffset[1]);
+				json_object_object_add(ChargingInfo2,"isCalibratedVcOffset",isCalibratedVcOffset[1]);
+				json_object_object_add(ChargingInfo2,"isCalibratedCaGain",isCalibratedCaGain[1]);
+				json_object_object_add(ChargingInfo2,"isCalibratedCbGain",isCalibratedCbGain[1]);
+				json_object_object_add(ChargingInfo2,"isCalibratedCcGain",isCalibratedCcGain[1]);
+				json_object_object_add(ChargingInfo2,"isCalibratedCaOffset",isCalibratedCaOffset[1]);
+				json_object_object_add(ChargingInfo2,"isCalibratedCbOffset",isCalibratedCbOffset[1]);
+				json_object_object_add(ChargingInfo2,"isCalibratedCcOffset",isCalibratedCcOffset[1]);
+				json_object_object_add(ChargingInfo2,"isCalibratedPa",isCalibratedPa[1]);
+				json_object_object_add(ChargingInfo2,"isCalibratedPb",isCalibratedPb[1]);
+				json_object_object_add(ChargingInfo2,"isCalibratedPc",isCalibratedPc[1]);
+			}
+			json_object_object_add(jobj2,"ChargingInfo2",ChargingInfo2);
+		}
+		if(connectorType3 != 0){
+			json_object_object_add(ChargingInfo3,"StartUserId",StartUserId[2]);
+			json_object_object_add(ChargingInfo3,"StartDateTime",StartDateTime[2]);
+			json_object_object_add(ChargingInfo3,"StopDateTime",StopDateTime[2]);
+			json_object_object_add(ChargingInfo3,"StartMethod",StartMethod[2]);
+			json_object_object_add(ChargingInfo3,"ConnectorTemp",ConnectorTemp[2]);
+			json_object_object_add(ChargingInfo3,"ChillerTemp",ChillerTemp[2]);
+			json_object_object_add(ChargingInfo3,"PresentChargingVoltage",PresentChargingVoltage[2]);
+			json_object_object_add(ChargingInfo3,"PresentChargingCurrent",PresentChargingCurrent[2]);
+			json_object_object_add(ChargingInfo3,"PresentChargingPower",PresentChargingPower[2]);
+			json_object_object_add(ChargingInfo3,"PresentChargedEnergy",PresentChargedEnergy[2]);
+			json_object_object_add(ChargingInfo3,"PresentChargedDuration",PresentChargedDuration[2]);
+			json_object_object_add(ChargingInfo3,"RemainChargingDuration",RemainChargingDuration[2]);
+			json_object_object_add(ChargingInfo3,"EvBatteryMaxVoltage",EvBatteryMaxVoltage[2]);
+			json_object_object_add(ChargingInfo3,"EvBatterytargetVoltage",EvBatterytargetVoltage[2]);
+			json_object_object_add(ChargingInfo3,"EvBatterySoc",EvBatterySoc[2]);
+			json_object_object_add(ChargingInfo3,"SystemStatus",SystemStatus[2]);
+			json_object_object_add(ChargingInfo3,"EvBatterytargetCurrent",EvBatterytargetCurrent[2]);
+			json_object_object_add(ChargingInfo3,"PowerConsumption",PowerConsumption[2]);
+			if(strcmp(IsDO, "AX") == 0){
+				json_object_object_add(ChargingInfo3,"isCalibratedVaGain",isCalibratedVaGain[2]);
+				json_object_object_add(ChargingInfo3,"isCalibratedVbGain",isCalibratedVbGain[2]);
+				json_object_object_add(ChargingInfo3,"isCalibratedVcGain",isCalibratedVcGain[2]);
+				json_object_object_add(ChargingInfo3,"isCalibratedVaOffset",isCalibratedVaOffset[2]);
+				json_object_object_add(ChargingInfo3,"isCalibratedVbOffset",isCalibratedVbOffset[2]);
+				json_object_object_add(ChargingInfo3,"isCalibratedVcOffset",isCalibratedVcOffset[2]);
+				json_object_object_add(ChargingInfo3,"isCalibratedCaGain",isCalibratedCaGain[2]);
+				json_object_object_add(ChargingInfo3,"isCalibratedCbGain",isCalibratedCbGain[2]);
+				json_object_object_add(ChargingInfo3,"isCalibratedCcGain",isCalibratedCcGain[2]);
+				json_object_object_add(ChargingInfo3,"isCalibratedCaOffset",isCalibratedCaOffset[2]);
+				json_object_object_add(ChargingInfo3,"isCalibratedCbOffset",isCalibratedCbOffset[2]);
+				json_object_object_add(ChargingInfo3,"isCalibratedCcOffset",isCalibratedCcOffset[2]);
+				json_object_object_add(ChargingInfo3,"isCalibratedPa",isCalibratedPa[2]);
+				json_object_object_add(ChargingInfo3,"isCalibratedPb",isCalibratedPb[2]);
+				json_object_object_add(ChargingInfo3,"isCalibratedPc",isCalibratedPc[2]);
+			}
+			json_object_object_add(jobj2,"ChargingInfo3",ChargingInfo3);
+		}
+		if(strcmp(IsDO, "DO") == 0 || strcmp(IsDO, "DK") == 0 || strcmp(IsDO, "DB") == 0){
+			if(ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity>4|| ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity<0)ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity=0;
+			int DDTotalConnectorQuantity = ShmSysConfigAndInfo->SysInfo.DispenserInfo.TotalConnectorQuantity;
+			DDChargingInfo1=json_object_new_object();
+			DDChargingInfo2=json_object_new_object();
+			DDChargingInfo3=json_object_new_object();
+			DDChargingInfo4=json_object_new_object();
+			if(DDTotalConnectorQuantity>0){
+				json_object_object_add(DDChargingInfo1,"StartUserId",DDStartUserId[0]);
+				json_object_object_add(DDChargingInfo1,"StartDateTime",DDStartDateTime[0]);
+				json_object_object_add(DDChargingInfo1,"StopDateTime",DDStopDateTime[0]);
+				json_object_object_add(DDChargingInfo1,"StartMethod",DDStartMethod[0]);
+				json_object_object_add(DDChargingInfo1,"ConnectorTemp",DDConnectorTemp[0]);
+				json_object_object_add(DDChargingInfo1,"ChillerTemp",DDChillerTemp[0]);
+				json_object_object_add(DDChargingInfo1,"PresentChargingVoltage",DDPresentChargingVoltage[0]);
+				json_object_object_add(DDChargingInfo1,"PresentChargingCurrent",DDPresentChargingCurrent[0]);
+				json_object_object_add(DDChargingInfo1,"PresentChargingPower",DDPresentChargingPower[0]);
+				json_object_object_add(DDChargingInfo1,"PresentChargedEnergy",DDPresentChargedEnergy[0]);
+				json_object_object_add(DDChargingInfo1,"PresentChargedDuration",DDPresentChargedDuration[0]);
+				json_object_object_add(DDChargingInfo1,"RemainChargingDuration",DDRemainChargingDuration[0]);
+				json_object_object_add(DDChargingInfo1,"EvBatteryMaxVoltage",DDEvBatteryMaxVoltage[0]);
+				json_object_object_add(DDChargingInfo1,"EvBatterytargetVoltage",DDEvBatterytargetVoltage[0]);
+				json_object_object_add(DDChargingInfo1,"EvBatterySoc",DDEvBatterySoc[0]);
+				json_object_object_add(DDChargingInfo1,"SystemStatus",DDSystemStatus[0]);
+				json_object_object_add(DDChargingInfo1,"EvBatterytargetCurrent",DDEvBatterytargetCurrent[0]);
+				json_object_object_add(DDChargingInfo1,"PowerConsumption",DDPowerConsumption[0]);
+				json_object_object_add(jobj2,"DDChargingInfo1",DDChargingInfo1);
+			}
+			if(DDTotalConnectorQuantity>1){
+				json_object_object_add(DDChargingInfo2,"StartUserId",DDStartUserId[1]);
+				json_object_object_add(DDChargingInfo2,"StartDateTime",DDStartDateTime[1]);
+				json_object_object_add(DDChargingInfo2,"StopDateTime",DDStopDateTime[1]);
+				json_object_object_add(DDChargingInfo2,"StartMethod",DDStartMethod[1]);
+				json_object_object_add(DDChargingInfo2,"ConnectorTemp",DDConnectorTemp[1]);
+				json_object_object_add(DDChargingInfo2,"ChillerTemp",DDChillerTemp[1]);
+				json_object_object_add(DDChargingInfo2,"PresentChargingVoltage",DDPresentChargingVoltage[1]);
+				json_object_object_add(DDChargingInfo2,"PresentChargingCurrent",DDPresentChargingCurrent[1]);
+				json_object_object_add(DDChargingInfo2,"PresentChargingPower",DDPresentChargingPower[1]);
+				json_object_object_add(DDChargingInfo2,"PresentChargedEnergy",DDPresentChargedEnergy[1]);
+				json_object_object_add(DDChargingInfo2,"PresentChargedDuration",DDPresentChargedDuration[1]);
+				json_object_object_add(DDChargingInfo2,"RemainChargingDuration",DDRemainChargingDuration[1]);
+				json_object_object_add(DDChargingInfo2,"EvBatteryMaxVoltage",DDEvBatteryMaxVoltage[1]);
+				json_object_object_add(DDChargingInfo2,"EvBatterytargetVoltage",DDEvBatterytargetVoltage[1]);
+				json_object_object_add(DDChargingInfo2,"EvBatterySoc",DDEvBatterySoc[1]);
+				json_object_object_add(DDChargingInfo2,"SystemStatus",DDSystemStatus[1]);
+				json_object_object_add(DDChargingInfo2,"EvBatterytargetCurrent",DDEvBatterytargetCurrent[1]);
+				json_object_object_add(DDChargingInfo2,"PowerConsumption",DDPowerConsumption[1]);
+				json_object_object_add(jobj2,"DDChargingInfo2",DDChargingInfo2);
+			}
+			if(DDTotalConnectorQuantity>2){
+				json_object_object_add(DDChargingInfo3,"StartUserId",DDStartUserId[2]);
+				json_object_object_add(DDChargingInfo3,"StartDateTime",DDStartDateTime[2]);
+				json_object_object_add(DDChargingInfo3,"StopDateTime",DDStopDateTime[2]);
+				json_object_object_add(DDChargingInfo3,"StartMethod",DDStartMethod[2]);
+				json_object_object_add(DDChargingInfo3,"ConnectorTemp",DDConnectorTemp[2]);
+				json_object_object_add(DDChargingInfo3,"ChillerTemp",DDChillerTemp[2]);
+				json_object_object_add(DDChargingInfo3,"PresentChargingVoltage",DDPresentChargingVoltage[2]);
+				json_object_object_add(DDChargingInfo3,"PresentChargingCurrent",DDPresentChargingCurrent[2]);
+				json_object_object_add(DDChargingInfo3,"PresentChargingPower",DDPresentChargingPower[2]);
+				json_object_object_add(DDChargingInfo3,"PresentChargedEnergy",DDPresentChargedEnergy[2]);
+				json_object_object_add(DDChargingInfo3,"PresentChargedDuration",DDPresentChargedDuration[2]);
+				json_object_object_add(DDChargingInfo3,"RemainChargingDuration",DDRemainChargingDuration[2]);
+				json_object_object_add(DDChargingInfo3,"EvBatteryMaxVoltage",DDEvBatteryMaxVoltage[2]);
+				json_object_object_add(DDChargingInfo3,"EvBatterytargetVoltage",DDEvBatterytargetVoltage[2]);
+				json_object_object_add(DDChargingInfo3,"EvBatterySoc",DDEvBatterySoc[2]);
+				json_object_object_add(DDChargingInfo3,"SystemStatus",DDSystemStatus[2]);
+				json_object_object_add(DDChargingInfo3,"EvBatterytargetCurrent",DDEvBatterytargetCurrent[2]);
+				json_object_object_add(DDChargingInfo3,"PowerConsumption",DDPowerConsumption[2]);
+				json_object_object_add(jobj2,"DDChargingInfo3",DDChargingInfo3);
+			}
+			if(DDTotalConnectorQuantity>3){
+				json_object_object_add(DDChargingInfo4,"StartUserId",DDStartUserId[3]);
+				json_object_object_add(DDChargingInfo4,"StartDateTime",DDStartDateTime[3]);
+				json_object_object_add(DDChargingInfo4,"StopDateTime",DDStopDateTime[3]);
+				json_object_object_add(DDChargingInfo4,"StartMethod",DDStartMethod[3]);
+				json_object_object_add(DDChargingInfo4,"ConnectorTemp",DDConnectorTemp[3]);
+				json_object_object_add(DDChargingInfo4,"ChillerTemp",DDChillerTemp[3]);
+				json_object_object_add(DDChargingInfo4,"PresentChargingVoltage",DDPresentChargingVoltage[3]);
+				json_object_object_add(DDChargingInfo4,"PresentChargingCurrent",DDPresentChargingCurrent[3]);
+				json_object_object_add(DDChargingInfo4,"PresentChargingPower",DDPresentChargingPower[3]);
+				json_object_object_add(DDChargingInfo4,"PresentChargedEnergy",DDPresentChargedEnergy[3]);
+				json_object_object_add(DDChargingInfo4,"PresentChargedDuration",DDPresentChargedDuration[3]);
+				json_object_object_add(DDChargingInfo4,"RemainChargingDuration",DDRemainChargingDuration[3]);
+				json_object_object_add(DDChargingInfo4,"EvBatteryMaxVoltage",DDEvBatteryMaxVoltage[3]);
+				json_object_object_add(DDChargingInfo4,"EvBatterytargetVoltage",DDEvBatterytargetVoltage[3]);
+				json_object_object_add(DDChargingInfo4,"EvBatterySoc",DDEvBatterySoc[3]);
+				json_object_object_add(DDChargingInfo4,"SystemStatus",DDSystemStatus[3]);
+				json_object_object_add(DDChargingInfo4,"EvBatterytargetCurrent",DDEvBatterytargetCurrent[3]);
+				json_object_object_add(DDChargingInfo4,"PowerConsumption",DDPowerConsumption[3]);
+				json_object_object_add(jobj2,"DDChargingInfo4",DDChargingInfo4);
+			}
+		}
+		printf("%s\n", json_object_to_json_string(jobj2));
+		json_object_put(jobj2);
+
+		//network
+		json_object_object_add(jobj3,"InternetConn",InternetConn);
+		json_object_object_add(jobj3,"FtpServer",FtpServer);
+		json_object_object_add(jobj3,"Eth0DhcpClient",Eth0DhcpClient);
+		json_object_object_add(jobj3,"Eth0MacAddress",Eth0MacAddress);
+		json_object_object_add(jobj3,"Eth0IpAddress",Eth0IpAddress);
+		json_object_object_add(jobj3,"Eth0SubmaskAddress",Eth0SubmaskAddress);
+		json_object_object_add(jobj3,"Eth0GatewayAddress",Eth0GatewayAddress);
+		json_object_object_add(jobj3,"Eth1DhcpClient",Eth1DhcpClient);
+		json_object_object_add(jobj3,"Eth1MacAddress",Eth1MacAddress);
+		json_object_object_add(jobj3,"Eth1IpAddress",Eth1IpAddress);
+		json_object_object_add(jobj3,"Eth1SubmaskAddress",Eth1SubmaskAddress);
+		json_object_object_add(jobj3,"Eth1GatewayAddress",Eth1GatewayAddress);
+		json_object_object_add(jobj3,"WifiMode",WifiMode);
+		json_object_object_add(jobj3,"WifiSsid",WifiSsid);
+		json_object_object_add(jobj3,"WifiPassword",WifiPassword);
+		json_object_object_add(jobj3,"WifiBroadcastSsid",WifiBroadcastSsid);
+		json_object_object_add(jobj3,"WifiTargetBssidMac",WifiTargetBssidMac);
+		json_object_object_add(jobj3,"WifiRssi",WifiRssi);
+		json_object_object_add(jobj3,"WifiDhcpServer",WifiDhcpServer);
+		json_object_object_add(jobj3,"WifiDhcpClient",WifiDhcpClient);
+		json_object_object_add(jobj3,"WifiMacAddress",WifiMacAddress);
+		json_object_object_add(jobj3,"WifiIpAddress",WifiIpAddress);
+		json_object_object_add(jobj3,"WifiSubmaskAddress",WifiSubmaskAddress);
+		json_object_object_add(jobj3,"WifiGatewayAddress",WifiGatewayAddress);
+		json_object_object_add(jobj3,"WifiNetworkConn",WifiNetworkConn);
+		json_object_object_add(jobj3,"TelcomApn",TelcomApn);
+		json_object_object_add(jobj3,"TelcomRssi",TelcomRssi);
+		json_object_object_add(jobj3,"TelcomChapPapId",TelcomChapPapId);
+		json_object_object_add(jobj3,"TelcomChapPapPwd",TelcomChapPapPwd);
+		json_object_object_add(jobj3,"TelcomModemImei",TelcomModemImei);
+		json_object_object_add(jobj3,"TelcomSimImsi",TelcomSimImsi);
+		json_object_object_add(jobj3,"TelcomSimIccid",TelcomSimIccid);
+		json_object_object_add(jobj3,"TelcomSimStatus",TelcomSimStatus);
+		json_object_object_add(jobj3,"TelcomModemMode",TelcomModemMode);
+		json_object_object_add(jobj3,"TelcomIpAddress",TelcomIpAddress);
+		json_object_object_add(jobj3,"TelcomNetworkConn",TelcomNetworkConn);
+		json_object_object_add(jobj3,"TelcomEnabled",TelcomEnabled);
+		json_object_object_add(jobj3,"TelcomNetworkType",TelcomNetworkType);
+		printf("%s\n", json_object_to_json_string(jobj3));
+		json_object_put(jobj3);
+
+		//backend
+		json_object_object_add(jobj4,"BackendConnTimeout",BackendConnTimeout);
+		json_object_object_add(jobj4,"OfflinePolicy",OfflinePolicy);
+		json_object_object_add(jobj4,"OfflineMaxChargeEnergy",OfflineMaxChargeEnergy);
+		json_object_object_add(jobj4,"OfflineMaxChargeDuration",OfflineMaxChargeDuration);
+		json_object_object_add(jobj4,"OcppConnStatus",OcppConnStatus);
+		json_object_object_add(jobj4,"MaintainServerConnStatus",MaintainServerConnStatus);
+		json_object_object_add(jobj4,"OcppServerURL",OcppServerURL);
+		json_object_object_add(jobj4,"ChargeBoxId",ChargeBoxId);
+		json_object_object_add(jobj4,"chargePointVendor",chargePointVendor);
+		json_object_object_add(jobj4,"OcppSecurityProfile",OcppSecurityProfile);
+		json_object_object_add(jobj4,"OcppSecurityPassword",OcppSecurityPassword);
+		json_object_object_add(jobj4,"MaintainServerSecurityProfile",MaintainServerSecurityProfile);
+		json_object_object_add(jobj4,"MaintainServerSecurityPassword",MaintainServerSecurityPassword);
+		json_object_object_add(jobj4,"MaintainServerURL",MaintainServerURL);
+		if(strcmp(IsDO, "AX") == 0){
+			json_object_object_add(jobj4,"isEnableLocalPowerSharging",isEnableLocalPowerSharging);
+			json_object_object_add(jobj4,"PowerSharingCapacity",PowerSharingCapacity);
+			json_object_object_add(jobj4,"PowerSharingServerIP",PowerSharingServerIP);
+		}
+		if(strcmp(IsDO, "AX") == 0 || strcmp(IsAcDc, "D") == 0){
+			json_object_object_add(jobj4,"OcppReceiptrURL",OcppReceiptrURL);
+		}
+		/*for TTIA*/
+		if(strcmp(IsAcDc, "D") == 0 && strcmp(SafetyRegulation, "C") == 0){
+			json_object_object_add(jobj4,"isEnableTTIA",isEnableTTIA);
+			json_object_object_add(jobj4,"server_addr",server_addr);
+			json_object_object_add(jobj4,"server_port",server_port);
+			json_object_object_add(jobj4,"busVenderId",busVenderId);
+			json_object_object_add(jobj4,"EquipmentProvider",EquipmentProvider);
+			json_object_object_add(jobj4,"TransportationCompanyNo",TransportationCompanyNo);
+			json_object_object_add(jobj4,"TTIAChargeBoxId",TTIAChargeBoxId);
+			json_object_object_add(jobj4,"evseStation",evseStation);
+		}
+
+		printf("%s\n", json_object_to_json_string(jobj4));
+		json_object_put(jobj4);
+	}
+	//	for(;;)
+	//	{
+
+	//	}
+	return FAIL;
+}

+ 247 - 242
EVSE/rootfs/var/www/set_charging_action.php

@@ -1,242 +1,247 @@
-<?php
-	// 設置資料類型 json,編碼格式 utf-8
-	header('Content-Type: application/json; charset=UTF-8');
-	
-	// 判斷如果是 GET 請求,則進行搜尋;如果是 POST 請求,則進行新建
-	// $_SERVER['REQUEST_METHOD'] 返回訪問頁面使用的請求方法
-	if ($_SERVER['REQUEST_METHOD'] == "GET") {
-		create();
-	} else if ($_SERVER['REQUEST_METHOD'] == "POST") {
-		create();
-	}
-
-	// 新建員工
-	function create() {
-		checkLength("LocalWhiteCard0");
-		checkLength("LocalWhiteCard1");
-		checkLength("LocalWhiteCard2");
-		checkLength("LocalWhiteCard3");
-		checkLength("LocalWhiteCard4");
-		checkLength("LocalWhiteCard5");
-		checkLength("LocalWhiteCard6");
-		checkLength("LocalWhiteCard7");
-		checkLength("LocalWhiteCard8");
-		checkLength("LocalWhiteCard9");
-		checkMaxValue("MaxChargingEnergy");
-		checkMaxValue("MaxChargingPower");
-		checkMaxValue("MaxChargingCurrent");
-		checkMaxValue("AcMaxChargingCurrent");
-		checkMaxValue("MaxChargingDuration");
-		checkMaxValue("MaxChargingSoc");
-		checkValue("StopChargingByButton");
-		if(substr($_POST['ModelName'],0,1)=="A" && $_POST['MaxChargingCurrent']<6 && $_POST['MaxChargingCurrent']!=0){
-			$jsone['result'] = "Fail";
-			$jsone['message'] = "MaxChargingCurrent must > 6";
-			echo json_encode($jsone);
-			exit;
-		}
-
-		if(isset($_POST['MaxChargingEnergy'])){
-			$json['MaxChargingEnergy']			= (int)$_POST['MaxChargingEnergy'];
-		}
-		if(isset($_POST['MaxChargingPower'])){
-			$json['MaxChargingPower'] 			= (int)$_POST['MaxChargingPower'];
-		}
-		if(isset($_POST['MaxChargingCurrent'])){
-			$json['MaxChargingCurrent']			= (int)$_POST['MaxChargingCurrent'];
-		}
-		if(isset($_POST['AcMaxChargingCurrent'])){
-			$json['AcMaxChargingCurrent']		= (int)$_POST['AcMaxChargingCurrent'];
-		}
-		if(isset($_POST['MaxChargingDuration'])){
-			$json['MaxChargingDuration'] 		= (int)$_POST['MaxChargingDuration'];
-		}
-		if(isset($_POST['MaxChargingSoc'])){
-			$json['MaxChargingSoc'] 		= (int)$_POST['MaxChargingSoc'];
-		}
-		if(isset($_POST['StopChargingByButton'])){
-			$json['StopChargingByButton'] 		= (int)$_POST['StopChargingByButton'];
-		}
-		if(isset($_POST['LocalWhiteCard0'])){
-			$json['LocalWhiteCard0']			= isset($_POST['LocalWhiteCard0'])?$_POST['LocalWhiteCard0']:"";
-		}
-		if(isset($_POST['LocalWhiteCard1'])){
-			$json['LocalWhiteCard1']	 		= isset($_POST['LocalWhiteCard1'])?$_POST['LocalWhiteCard1']:"";
-		}
-		if(isset($_POST['LocalWhiteCard2'])){
-			$json['LocalWhiteCard2']			= isset($_POST['LocalWhiteCard2'])?$_POST['LocalWhiteCard2']:"";
-		}
-		if(isset($_POST['LocalWhiteCard3'])){
-			$json['LocalWhiteCard3']			= isset($_POST['LocalWhiteCard3'])?$_POST['LocalWhiteCard3']:"";
-		}
-		if(isset($_POST['LocalWhiteCard4'])){
-			$json['LocalWhiteCard4']			= isset($_POST['LocalWhiteCard4'])?$_POST['LocalWhiteCard4']:"";
-		}
-		if(isset($_POST['LocalWhiteCard5'])){
-			$json['LocalWhiteCard5']			= isset($_POST['LocalWhiteCard5'])?$_POST['LocalWhiteCard5']:"";
-		}
-		if(isset($_POST['LocalWhiteCard6'])){
-			$json['LocalWhiteCard6']			= isset($_POST['LocalWhiteCard6'])?$_POST['LocalWhiteCard6']:"";
-		}
-		if(isset($_POST['LocalWhiteCard7'])){
-			$json['LocalWhiteCard7']			= isset($_POST['LocalWhiteCard7'])?$_POST['LocalWhiteCard7']:"";
-		}
-		if(isset($_POST['LocalWhiteCard8'])){
-			$json['LocalWhiteCard8']			= isset($_POST['LocalWhiteCard8'])?$_POST['LocalWhiteCard8']:"";
-		}
-		if(isset($_POST['LocalWhiteCard9'])){
-			$json['LocalWhiteCard9']			= isset($_POST['LocalWhiteCard9'])?$_POST['LocalWhiteCard9']:"";
-		}
-		if(isset($_POST['isBilling'])){
-			$json['isBilling']					= (int)$_POST['isBilling'];
-		}
-		if(isset($_POST['Currency'])){
-			$json['Currency']					= (int)$_POST['Currency'];
-		}
-		if(isset($_POST['Fee0'])){
-			$json['Fee0']						= isset($_POST['Fee0'])?round($_POST['Fee0'], 2):"";
-		}
-		if(isset($_POST['Fee1'])){
-			$json['Fee1']						= isset($_POST['Fee1'])?round($_POST['Fee1'], 2):"";
-		}
-		if(isset($_POST['Fee2'])){
-			$json['Fee2']						= isset($_POST['Fee2'])?round($_POST['Fee2'], 2):"";
-		}
-		if(isset($_POST['Fee3'])){
-			$json['Fee3']						= isset($_POST['Fee3'])?round($_POST['Fee3'], 2):"";
-		}
-		if(isset($_POST['Fee4'])){
-			$json['Fee4']						= isset($_POST['Fee4'])?round($_POST['Fee4'], 2):"";
-		}
-		if(isset($_POST['Fee5'])){
-			$json['Fee5']						= isset($_POST['Fee5'])?round($_POST['Fee5'], 2):"";
-		}
-		if(isset($_POST['Fee6'])){
-			$json['Fee6']						= isset($_POST['Fee6'])?round($_POST['Fee6'], 2):"";
-		}
-		if(isset($_POST['Fee7'])){
-			$json['Fee7']						= isset($_POST['Fee7'])?round($_POST['Fee7'], 2):"";
-		}
-		if(isset($_POST['Fee8'])){
-			$json['Fee8']						= isset($_POST['Fee8'])?round($_POST['Fee8'], 2):"";
-		}
-		if(isset($_POST['Fee9'])){
-			$json['Fee9']						= isset($_POST['Fee9'])?round($_POST['Fee9'], 2):"";
-		}
-		if(isset($_POST['Fee10'])){
-			$json['Fee10']						= isset($_POST['Fee10'])?round($_POST['Fee10'], 2):"";
-		}
-		if(isset($_POST['Fee11'])){
-			$json['Fee11']						= isset($_POST['Fee11'])?round($_POST['Fee11'], 2):"";
-		}
-		if(isset($_POST['Fee12'])){
-			$json['Fee12']						= isset($_POST['Fee12'])?round($_POST['Fee12'], 2):"";
-		}
-		if(isset($_POST['Fee13'])){
-			$json['Fee13']						= isset($_POST['Fee13'])?round($_POST['Fee13'], 2):"";
-		}
-		if(isset($_POST['Fee14'])){
-			$json['Fee14']						= isset($_POST['Fee14'])?round($_POST['Fee14'], 2):"";
-		}
-		if(isset($_POST['Fee15'])){
-			$json['Fee15']						= isset($_POST['Fee15'])?round($_POST['Fee15'], 2):"";
-		}
-		if(isset($_POST['Fee16'])){
-			$json['Fee16']						= isset($_POST['Fee16'])?round($_POST['Fee16'], 2):"";
-		}
-		if(isset($_POST['Fee17'])){
-			$json['Fee17']						= isset($_POST['Fee17'])?round($_POST['Fee17'], 2):"";
-		}
-		if(isset($_POST['Fee18'])){
-			$json['Fee18']						= isset($_POST['Fee18'])?round($_POST['Fee18'], 2):"";
-		}
-		if(isset($_POST['Fee19'])){
-			$json['Fee19']						= isset($_POST['Fee19'])?round($_POST['Fee19'], 2):"";
-		}
-		if(isset($_POST['Fee20'])){
-			$json['Fee20']						= isset($_POST['Fee20'])?round($_POST['Fee20'], 2):"";
-		}
-		if(isset($_POST['Fee21'])){
-			$json['Fee21']						= isset($_POST['Fee21'])?round($_POST['Fee21'], 2):"";
-		}
-		if(isset($_POST['Fee22'])){
-			$json['Fee22']						= isset($_POST['Fee22'])?round($_POST['Fee22'], 2):"";
-		}
-		if(isset($_POST['Fee23'])){
-			$json['Fee23']						= isset($_POST['Fee23'])?round($_POST['Fee23'], 2):"";
-		}
-		
-//		ob_start();
-		
-		shell_exec('sync;sync;sync');
-		chdir("/root");
-		$str_json=json_encode($json);
-		exec("'./WebService' '2' '".$str_json."'",$output,$return_var);
-		 if(count($output)!=0){
-			 $jsone['result'] = "Success";
-			 $jsone['message'] = $json;
-			 echo json_encode($jsone);
-			 exit;
-		 }
-		 else{
-			 $jsone['result'] = "Error";
-			 $jsone['message'] = "Something went wrong on machine";
-			 echo json_encode($jsone);
-			 return false;
-			 exit;
-		 }
-//		ob_end_clean();	
-	}
-
-	function checkMaxValue($id){
-		if($_POST[$id] != ""){
-			if(!is_numeric($_POST[$id])){
-				$jsone['result'] = "Fail";
-				$jsone['message'] = "You have entered a wrong value on " . $id . ", it should be numeric";
-				echo json_encode($jsone);
-				exit;
-			}
-			if($_POST[$id]>65535){
-				$jsone['result'] = "Fail";
-				$jsone['message'] = "You have entered a over value on " . $id . ", it should be less than 65535";
-				echo json_encode($jsone);
-				exit;
-			}
-			if($_POST[$id]<0){
-				$jsone['result'] = "Fail";
-				$jsone['message'] = "You have entered a over value on " . $id . ", it should be more than 0";
-				echo json_encode($jsone);
-				exit;
-			}
-		}
-	}
-
-	function checkValue($id){
-		if($_POST[$id] != ""){
-			if(strlen($_POST[$id])!=1){
-					$jsone['result'] = "Fail";
-					$jsone['message'] = "You have entered a wrong value on " . $id . ", it should be numeric";
-					echo json_encode($jsone);
-					exit;
-			}
-			if(!is_numeric($_POST[$id])){
-					$jsone['result'] = "Fail";
-					$jsone['message'] = "You have entered a wrong value on " . $id . ", it should be numeric";
-					echo json_encode($jsone);
-					exit;
-			}
-		}
-	}
-
-	function checkLength($id){
-		if($_POST[$id] != ""){
-			if(strlen($_POST[$id])>32){
-					$jsone['result'] = "Fail";
-					$jsone['message'] = "You have entered a wrong value on " . $id . ", it should be less than 32 bytes";
-					echo json_encode($jsone);
-					exit;
-			}
-		}
-	}
-
-?>
+<?php
+	// 設置資料類型 json,編碼格式 utf-8
+	header('Content-Type: application/json; charset=UTF-8');
+	
+	// 判斷如果是 GET 請求,則進行搜尋;如果是 POST 請求,則進行新建
+	// $_SERVER['REQUEST_METHOD'] 返回訪問頁面使用的請求方法
+	if ($_SERVER['REQUEST_METHOD'] == "GET") {
+		create();
+	} else if ($_SERVER['REQUEST_METHOD'] == "POST") {
+		create();
+	}
+
+	// 新建員工
+	function create() {
+		checkLength("LocalWhiteCard0");
+		checkLength("LocalWhiteCard1");
+		checkLength("LocalWhiteCard2");
+		checkLength("LocalWhiteCard3");
+		checkLength("LocalWhiteCard4");
+		checkLength("LocalWhiteCard5");
+		checkLength("LocalWhiteCard6");
+		checkLength("LocalWhiteCard7");
+		checkLength("LocalWhiteCard8");
+		checkLength("LocalWhiteCard9");
+		checkMaxValue("MaxChargingEnergy");
+		checkMaxValue("MaxChargingPower");
+		checkMaxValue("MaxChargingCurrent");
+		checkMaxValue("AcMaxChargingCurrent");
+		checkMaxValue("MaxChargingDuration");
+		checkMaxValue("MaxChargingSoc");
+		checkValue("StopChargingByButton");
+		if(substr($_POST['ModelName'],0,1)=="A" && $_POST['MaxChargingCurrent']<6 && $_POST['MaxChargingCurrent']!=0){
+			$jsone['result'] = "Fail";
+			$jsone['message'] = "MaxChargingCurrent must > 6";
+			echo json_encode($jsone);
+			exit;
+		}
+
+		if(isset($_POST['MaxChargingEnergy'])){
+			$json['MaxChargingEnergy']			= (int)$_POST['MaxChargingEnergy'];
+		}
+		if(isset($_POST['MaxChargingPower'])){
+			$json['MaxChargingPower'] 			= (int)$_POST['MaxChargingPower'];
+		}
+		if(isset($_POST['MaxChargingCurrent'])){
+			$json['MaxChargingCurrent']			= (int)$_POST['MaxChargingCurrent'];
+		}
+		if(isset($_POST['AcMaxChargingCurrent'])){
+			$json['AcMaxChargingCurrent']		= (int)$_POST['AcMaxChargingCurrent'];
+		}
+		if(isset($_POST['MaxChargingDuration'])){
+			$json['MaxChargingDuration'] 		= (int)$_POST['MaxChargingDuration'];
+		}
+		if(isset($_POST['MaxChargingSoc'])){
+			$json['MaxChargingSoc'] 		= (int)$_POST['MaxChargingSoc'];
+		}
+		if(isset($_POST['StopChargingByButton'])){
+			$json['StopChargingByButton'] 		= (int)$_POST['StopChargingByButton'];
+		}
+		if(isset($_POST['LocalWhiteCard0'])){
+			$json['LocalWhiteCard0']			= isset($_POST['LocalWhiteCard0'])?$_POST['LocalWhiteCard0']:"";
+		}
+		if(isset($_POST['LocalWhiteCard1'])){
+			$json['LocalWhiteCard1']	 		= isset($_POST['LocalWhiteCard1'])?$_POST['LocalWhiteCard1']:"";
+		}
+		if(isset($_POST['LocalWhiteCard2'])){
+			$json['LocalWhiteCard2']			= isset($_POST['LocalWhiteCard2'])?$_POST['LocalWhiteCard2']:"";
+		}
+		if(isset($_POST['LocalWhiteCard3'])){
+			$json['LocalWhiteCard3']			= isset($_POST['LocalWhiteCard3'])?$_POST['LocalWhiteCard3']:"";
+		}
+		if(isset($_POST['LocalWhiteCard4'])){
+			$json['LocalWhiteCard4']			= isset($_POST['LocalWhiteCard4'])?$_POST['LocalWhiteCard4']:"";
+		}
+		if(isset($_POST['LocalWhiteCard5'])){
+			$json['LocalWhiteCard5']			= isset($_POST['LocalWhiteCard5'])?$_POST['LocalWhiteCard5']:"";
+		}
+		if(isset($_POST['LocalWhiteCard6'])){
+			$json['LocalWhiteCard6']			= isset($_POST['LocalWhiteCard6'])?$_POST['LocalWhiteCard6']:"";
+		}
+		if(isset($_POST['LocalWhiteCard7'])){
+			$json['LocalWhiteCard7']			= isset($_POST['LocalWhiteCard7'])?$_POST['LocalWhiteCard7']:"";
+		}
+		if(isset($_POST['LocalWhiteCard8'])){
+			$json['LocalWhiteCard8']			= isset($_POST['LocalWhiteCard8'])?$_POST['LocalWhiteCard8']:"";
+		}
+		if(isset($_POST['LocalWhiteCard9'])){
+			$json['LocalWhiteCard9']			= isset($_POST['LocalWhiteCard9'])?$_POST['LocalWhiteCard9']:"";
+		}
+		if(isset($_POST['isBilling'])){
+			$json['isBilling']					= (int)$_POST['isBilling'];
+		}
+		if(isset($_POST['Currency'])){
+			$json['Currency']					= (int)$_POST['Currency'];
+		}
+		if(isset($_POST['Fee0'])){
+			$json['Fee0']						= isset($_POST['Fee0'])?round($_POST['Fee0'], 2):"";
+		}
+		if(isset($_POST['Fee1'])){
+			$json['Fee1']						= isset($_POST['Fee1'])?round($_POST['Fee1'], 2):"";
+		}
+		if(isset($_POST['Fee2'])){
+			$json['Fee2']						= isset($_POST['Fee2'])?round($_POST['Fee2'], 2):"";
+		}
+		if(isset($_POST['Fee3'])){
+			$json['Fee3']						= isset($_POST['Fee3'])?round($_POST['Fee3'], 2):"";
+		}
+		if(isset($_POST['Fee4'])){
+			$json['Fee4']						= isset($_POST['Fee4'])?round($_POST['Fee4'], 2):"";
+		}
+		if(isset($_POST['Fee5'])){
+			$json['Fee5']						= isset($_POST['Fee5'])?round($_POST['Fee5'], 2):"";
+		}
+		if(isset($_POST['Fee6'])){
+			$json['Fee6']						= isset($_POST['Fee6'])?round($_POST['Fee6'], 2):"";
+		}
+		if(isset($_POST['Fee7'])){
+			$json['Fee7']						= isset($_POST['Fee7'])?round($_POST['Fee7'], 2):"";
+		}
+		if(isset($_POST['Fee8'])){
+			$json['Fee8']						= isset($_POST['Fee8'])?round($_POST['Fee8'], 2):"";
+		}
+		if(isset($_POST['Fee9'])){
+			$json['Fee9']						= isset($_POST['Fee9'])?round($_POST['Fee9'], 2):"";
+		}
+		if(isset($_POST['Fee10'])){
+			$json['Fee10']						= isset($_POST['Fee10'])?round($_POST['Fee10'], 2):"";
+		}
+		if(isset($_POST['Fee11'])){
+			$json['Fee11']						= isset($_POST['Fee11'])?round($_POST['Fee11'], 2):"";
+		}
+		if(isset($_POST['Fee12'])){
+			$json['Fee12']						= isset($_POST['Fee12'])?round($_POST['Fee12'], 2):"";
+		}
+		if(isset($_POST['Fee13'])){
+			$json['Fee13']						= isset($_POST['Fee13'])?round($_POST['Fee13'], 2):"";
+		}
+		if(isset($_POST['Fee14'])){
+			$json['Fee14']						= isset($_POST['Fee14'])?round($_POST['Fee14'], 2):"";
+		}
+		if(isset($_POST['Fee15'])){
+			$json['Fee15']						= isset($_POST['Fee15'])?round($_POST['Fee15'], 2):"";
+		}
+		if(isset($_POST['Fee16'])){
+			$json['Fee16']						= isset($_POST['Fee16'])?round($_POST['Fee16'], 2):"";
+		}
+		if(isset($_POST['Fee17'])){
+			$json['Fee17']						= isset($_POST['Fee17'])?round($_POST['Fee17'], 2):"";
+		}
+		if(isset($_POST['Fee18'])){
+			$json['Fee18']						= isset($_POST['Fee18'])?round($_POST['Fee18'], 2):"";
+		}
+		if(isset($_POST['Fee19'])){
+			$json['Fee19']						= isset($_POST['Fee19'])?round($_POST['Fee19'], 2):"";
+		}
+		if(isset($_POST['Fee20'])){
+			$json['Fee20']						= isset($_POST['Fee20'])?round($_POST['Fee20'], 2):"";
+		}
+		if(isset($_POST['Fee21'])){
+			$json['Fee21']						= isset($_POST['Fee21'])?round($_POST['Fee21'], 2):"";
+		}
+		if(isset($_POST['Fee22'])){
+			$json['Fee22']						= isset($_POST['Fee22'])?round($_POST['Fee22'], 2):"";
+		}
+		if(isset($_POST['Fee23'])){
+			$json['Fee23']						= isset($_POST['Fee23'])?round($_POST['Fee23'], 2):"";
+		}
+		
+//		ob_start();
+		
+		shell_exec('sync;sync;sync');
+		chdir("/root");
+		$str_json=json_encode($json);
+		if(isset($_POST['RemoteApi'])){
+			exec("'./WebService' '21' '".$str_json."'",$output,$return_var);
+		}
+		else{
+			exec("'./WebService' '2' '".$str_json."'",$output,$return_var);
+		}
+		 if(count($output)!=0){
+			 $jsone['result'] = "Success";
+			 $jsone['message'] = $json;
+			 echo json_encode($jsone);
+			 exit;
+		 }
+		 else{
+			 $jsone['result'] = "Error";
+			 $jsone['message'] = "Something went wrong on machine";
+			 echo json_encode($jsone);
+			 return false;
+			 exit;
+		 }
+//		ob_end_clean();	
+	}
+
+	function checkMaxValue($id){
+		if($_POST[$id] != ""){
+			if(!is_numeric($_POST[$id])){
+				$jsone['result'] = "Fail";
+				$jsone['message'] = "You have entered a wrong value on " . $id . ", it should be numeric";
+				echo json_encode($jsone);
+				exit;
+			}
+			if($_POST[$id]>65535){
+				$jsone['result'] = "Fail";
+				$jsone['message'] = "You have entered a over value on " . $id . ", it should be less than 65535";
+				echo json_encode($jsone);
+				exit;
+			}
+			if($_POST[$id]<0){
+				$jsone['result'] = "Fail";
+				$jsone['message'] = "You have entered a over value on " . $id . ", it should be more than 0";
+				echo json_encode($jsone);
+				exit;
+			}
+		}
+	}
+
+	function checkValue($id){
+		if($_POST[$id] != ""){
+			if(strlen($_POST[$id])!=1){
+					$jsone['result'] = "Fail";
+					$jsone['message'] = "You have entered a wrong value on " . $id . ", it should be numeric";
+					echo json_encode($jsone);
+					exit;
+			}
+			if(!is_numeric($_POST[$id])){
+					$jsone['result'] = "Fail";
+					$jsone['message'] = "You have entered a wrong value on " . $id . ", it should be numeric";
+					echo json_encode($jsone);
+					exit;
+			}
+		}
+	}
+
+	function checkLength($id){
+		if($_POST[$id] != ""){
+			if(strlen($_POST[$id])>32){
+					$jsone['result'] = "Fail";
+					$jsone['message'] = "You have entered a wrong value on " . $id . ", it should be less than 32 bytes";
+					echo json_encode($jsone);
+					exit;
+			}
+		}
+	}
+
+?>