#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>      /*�зǿ�J��X�w�q*/
#include    <stdlib.h>     /*�зǨ�Ʈw�w�q*/
#include    <unistd.h>     /*Unix �зǨ�Ʃw�q*/
#include    <fcntl.h>      /*�ɱ���w�q*/
#include    <termios.h>    /*PPSIX �׺ݱ���w�q*/
#include    <errno.h>      /*���~���w�q*/
#include 	<errno.h>
#include 	<string.h>
#include	<time.h>
#include	<ctype.h>
#include 	<ifaddrs.h>
#include	<math.h>
#include	"define.h"
#include	"json.h"


#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 0x600000

struct SysConfigAndInfo		*ShmSysConfigAndInfo;
struct StatusCodeData		*ShmStatusCodeData;
struct CHAdeMOData			*ShmCHAdeMOData;
struct GBTData				*ShmGBTData;
struct CcsData				*ShmCcsData;
struct PsuData 				*ShmPsuData;
struct PrimaryMcuData		*ShmPrimaryMcuData;

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, "E") == 0){
		result= 1;//CCS
	}
	else if(strcmp(connector, "G") == 0 || strcmp(connector, "D") == 0){
		result= 2;//GB
	}
	else if(strcmp(connector, "J") == 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){
		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;
}
// �|�ˤ��J ���� �p���I�� 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 {
	}

	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=0;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 12");
		DEBUG_INFO("Write /dev/mtd10.\n");
		runShellCmd("nandwrite -p /dev/mtd10 /mnt/EvseConfig.bin");

		DEBUG_INFO("Erase /dev/mtd11.\n");
		runShellCmd("flash_erase /dev/mtd11 0 12");
		DEBUG_INFO("Write /dev/mtd11.\n");
		runShellCmd("nandwrite -p /dev/mtd11 /mnt/EvseConfig.bin");

		system("rm -f /mnt/EvseConfig.bin");
		DEBUG_INFO("EvseConfig write to flash OK\n");
	}
	else
	{
		DEBUG_ERROR("alloc BlockSize NG\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 *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 = 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, "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 = 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 = 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 = 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 = 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;
			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, "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 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 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, 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, ShmSysConfigAndInfo->SysConfig.AthInterface.WifiSsid) != 0) Wcnt++;
				strcpy((char *)&ShmSysConfigAndInfo->SysConfig.AthInterface.WifiPassword,WifiPassword);
			}
			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, 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, 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, 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, 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, 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, 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, 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(Wcnt>0){
				system ("pkill Module_Wifi");
			}
			if(Tcnt>0){
				system ("pkill Module_4g");
			}
		}
		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;

			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);
			}

		}
		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;
		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;
		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], "log") == 0) {
			unsigned char			ModelName[64];;
			unsigned char			SerialNo[64];;
			memcpy(ModelName,ShmSysConfigAndInfo->SysConfig.ModelName,ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.ModelName));
			printf("%s", ModelName);
			memcpy(SerialNo,ShmSysConfigAndInfo->SysConfig.SerialNumber,ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.SerialNumber));
			printf("%s", SerialNo);
			time_t tt = time(0); //������e�ɶ�
			int year,month;
			char cmd[512];
			struct tm *pst = localtime(&tt); //��time_t�����ഫ��struct tm����
			year = pst->tm_year + 1900;
			month = pst->tm_mon + 1;
//			sprintf(cmd,"cp /mnt/*%s*%s*.zip /var/www/log.zip",ModelName,SerialNo);
			if(system("exec /root/logPackTools 'log'")==0){
				system(cmd);
			}
		}

		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) {
			system("exec /usr/bin/run_evse_restart.sh");
		}
	}
	//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));

	}
	//web page query all
	if ((argc == 2) & (strcmp(argv[1], "query") == 0)) {
		char *IsAcDc[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 *)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(RatedPower1);
		int p2=atoi(RatedPower2);
		int p3=atoi(RatedPower3);
		if(strcmp(IsAcDc, "D") == 0){
			RatedPower=(p1*10+p2)*pow(10,p3-1);
			if(RatedPower>=30){
				PsuQuantity = RatedPower/30;
			}
		}
		if(strcmp(IsDO, "DO") == 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 *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 *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;
		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();

		//charging
		struct json_object *MaxChargingEnergy;
		struct json_object *MaxChargingPower;
		struct json_object *MaxChargingCurrent;
		struct json_object *AcMaxChargingCurrent;
		struct json_object *MaxChargingDuration;
		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 *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];
		/* 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 *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];

		//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 *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;
		//backend
		struct json_object *BackendConnTimeout;
		struct json_object *OfflinePolicy;
		struct json_object *OfflineMaxChargeEnergy;
		struct json_object *OfflineMaxChargeDuration;
		struct json_object *OcppConnStatus;
		struct json_object *OcppServerURL;
		struct json_object *ChargeBoxId;
		struct json_object *chargePointVendor;

		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);
		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);
		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);
		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){
			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]);
			}
		}

		//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);
		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);
				ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp);
				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);
				ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp);
				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);
				ConnectorTemp[0] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp);
				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);
				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);
				ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp);
				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);
				ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp);
				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);
				ConnectorTemp[1] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp);
				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);
				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);
				ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.CcsChargingData[CcsGunQty].ConnectorTemp);
				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);
				ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.GbChargingData[GbGunQty].ConnectorTemp);
				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);
				ConnectorTemp[2] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ChademoChargingData[CHAdeMOGunQty].ConnectorTemp);
				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);
				AcGunQty++;
			}
		}
		if(strcmp(IsDO, "DO") == 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);
				DDConnectorTemp[i] = json_object_new_int(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].GeneralChargingData.ConnectorTemp);
			}
		}
		//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);
		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);
		//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);
		OcppServerURL = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL);
		ChargeBoxId = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.ChargeBoxId);
		chargePointVendor = json_object_new_string((char *)&ShmSysConfigAndInfo->SysConfig.chargePointVendor);

		//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,"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,"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);
		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){
			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);
		}

		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_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,"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(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,"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(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,"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(jobj2,"ChargingInfo3",ChargingInfo3);
		}
		if(strcmp(IsDO, "DO") == 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,"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(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,"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(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,"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(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,"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(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,"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);
		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,"OcppServerURL",OcppServerURL);
		json_object_object_add(jobj4,"ChargeBoxId",ChargeBoxId);
		json_object_object_add(jobj4,"chargePointVendor",chargePointVendor);
		printf("%s\n", json_object_to_json_string(jobj4));
		json_object_put(jobj4);
	}
	//	for(;;)
	//	{

	//	}
	return FAIL;
}