[Feature][R306][task-view-1900][arms] Docking with ARMS platform

Change-Id: Ib858cb880f9f0bb1580429e0cfd16144ffb9815d
diff --git a/lynq/R306_MTN/ap/app/apparms/Makefile b/lynq/R306_MTN/ap/app/apparms/Makefile
index 26af823..9390829 100755
--- a/lynq/R306_MTN/ap/app/apparms/Makefile
+++ b/lynq/R306_MTN/ap/app/apparms/Makefile
@@ -165,7 +165,6 @@
 endif
 
 CFLAGS += $(APPARMS_DEFS)
-CFLAGS += -I$(LIB_DIR)/libnvram
 CFLAGS += -I$(zte_lib_path)/libnvram
 
 LDLIBS += -lnvram -L$(zte_lib_path)/libnvram
diff --git a/lynq/R306_MTN/ap/app/apparms/apparms_config_example.c b/lynq/R306_MTN/ap/app/apparms/apparms_config_example.c
index 81c2a99..9b65b48 100755
--- a/lynq/R306_MTN/ap/app/apparms/apparms_config_example.c
+++ b/lynq/R306_MTN/ap/app/apparms/apparms_config_example.c
@@ -59,7 +59,7 @@
 int arms_config_example_get_imei(unsigned char *pDMIMEI, unsigned char* pIMEI)

 {

 	char szIMEI[32] = {0};

-

+#if 0

 	#ifdef ARMS_SUPPORT_ARGV

 	if (arms_argv_get_imei(szIMEI, sizeof(szIMEI)) <= 0)

 	#endif

@@ -76,7 +76,9 @@
 			strcpy(szIMEI, "998199055256418");

 		#endif

 	}

-

+#endif

+	cfg_get_item("imei", szIMEI, sizeof(szIMEI));

+	printf("****arms_config_example_get_imei imei=[%s]\n", szIMEI);

 	if (pDMIMEI != NULL)

 	{

 		strcpy((char *)pDMIMEI, "0");

@@ -107,12 +109,13 @@
 

 int arms_config_example_get_networkst(char *pIPAddr)

 {

-	int ret;

-	char szIntf[128] = {0};

+	int ret = -3;

+	char buf[32] = {0};

+	char wan_ipaddr[32] = {0};

 	

 	if (pIPAddr == NULL)

 		return -1;

-

+#if 0

 	#ifdef ARMS_SUPPORT_ARGV

 	if (arms_argv_get_intf(szIntf, sizeof(szIntf)) <= 0)

 	#endif

@@ -126,6 +129,16 @@
 		ret = -3;

 	}

 	

+#endif

+	cfg_get_item("ppp_status", buf, sizeof(buf));

+	if (0 == strcmp(buf, "ppp_connected"))

+	{

+		cfg_get_item("wan_ipaddr", wan_ipaddr, sizeof(wan_ipaddr));

+		strcpy(pIPAddr, wan_ipaddr);

+		ret = 0;

+	}

+	printf("****ppp status:%s, ip:%s\n", buf, wan_ipaddr);

+

 	return ret;

 }

 

diff --git a/lynq/R306_MTN/ap/app/apparms/apparms_config_example_srv.h b/lynq/R306_MTN/ap/app/apparms/apparms_config_example_srv.h
index bfdd835..1721e7e 100755
--- a/lynq/R306_MTN/ap/app/apparms/apparms_config_example_srv.h
+++ b/lynq/R306_MTN/ap/app/apparms/apparms_config_example_srv.h
@@ -4,15 +4,15 @@
 //FOTA

 #define ARMS_FOTA_SRV_HTTP_ADDR "arms-fota-useast1.a-tracs.com"

 #define ARMS_FOTA_SRV_HTTPS_ADDR "https://arms-fota-useast1.a-tracs.com"

-#define ARMS_FOTA_ACCESS_ID ""

-#define ARMS_FOTA_ACCESS_PW ""

-#define ARMS_FOTA_DOWNLOAD_PATH "/tmp/downfile"

+#define ARMS_FOTA_ACCESS_ID "1755240079"

+#define ARMS_FOTA_ACCESS_PW "NB216@BJ!8361"

+#define ARMS_FOTA_DOWNLOAD_PATH "/cache/zte_fota/delta.package"

 #define ARMS_FOTA_CHECK_INTERVAL (24 * 60 * 60 * 1000)

 

 //DM

 #define ARMS_DM_SRV_MQTT_ADDR "arms-mqtt-useast1.a-tracs.com"

-#define ARMS_DM_ACCESS_ID_MQTT (0)

-#define ARMS_DM_ACCESS_PW_MQTT ""

+#define ARMS_DM_ACCESS_ID_MQTT (136944)

+#define ARMS_DM_ACCESS_PW_MQTT "NB216@BJ!8361"

 

 #define ARMS_DM_SRV_UDP_ADDR ""

 #define ARMS_DM_ACCESS_ID_UDP (0)

diff --git a/lynq/R306_MTN/ap/app/apparms/apparms_data_example.c b/lynq/R306_MTN/ap/app/apparms/apparms_data_example.c
index 2858847..eafaf44 100755
--- a/lynq/R306_MTN/ap/app/apparms/apparms_data_example.c
+++ b/lynq/R306_MTN/ap/app/apparms/apparms_data_example.c
@@ -574,7 +574,7 @@
 {

 	if (pVerFW == NULL)

 		return -1;

-

+#if 0

 #ifdef EXAMPLE_REF_VALUE

 	memset(g_stFotaData.stFWVerArr,0,sizeof(FOTADATAFW)*ARMS_FOTA_FW_VER_NUM);

 	if (1 != arms_util_readConfigValue(ARMS_SW_VERSION_FILE_PATH, "Project Rev", g_stFotaData.stFWVerArr[0].szFOTAFwVer))

@@ -589,6 +589,11 @@
 

 	memcpy(pVerFW,g_stFotaData.stFWVerArr,sizeof(FOTADATAFW)*ARMS_FOTA_FW_VER_NUM);

 #endif

+#endif

+	char buf[64] = {0};

+	cfg_get_item("wa_version", buf, sizeof(buf));

+	strcpy(g_stFotaData.stFWVerArr[0].szFOTAFwVer, buf);

+	memcpy(pVerFW, g_stFotaData.stFWVerArr, sizeof(FOTADATAFW)*ARMS_FOTA_FW_VER_NUM);

 

 	return 0;

 }

@@ -638,7 +643,10 @@
 #ifdef EXAMPLE_REF_VALUE

 	*pTaskId = g_stFotaData.nTaskId;

 #endif

-	

+	char buf[16] = {0};

+	cfg_get_item("arms_task_id", buf, sizeof(buf));

+	*pTaskId = atoi(buf);

+

 	return 0;		

 }

 

@@ -647,6 +655,11 @@
 #ifdef EXAMPLE_REF_VALUE

 	g_stFotaData.nTaskId = nTaskId;

 #endif

+	printf("******task id:%u\n", nTaskId);

+	char buf[16] = {0};

+	sprintf(buf, "%u", nTaskId);

+	cfg_set("arms_task_id", buf);

+	cfg_save();

 

 	return 0;		

 }

@@ -659,6 +672,9 @@
 #ifdef EXAMPLE_REF_VALUE

 	strcpy(pDevId,g_stFotaData.cDeviceId);

 #endif

+	char buf[ARMS_FOTA_DEVICE_ID_BUF_SIZE] = {0};

+	cfg_get_item("arms_device_id", buf, sizeof(buf));

+	strcpy(pDevId, buf);

 

 	return 0;		

 }

@@ -672,6 +688,9 @@
 	memset(g_stFotaData.cDeviceId,0,sizeof(g_stFotaData.cDeviceId));

 	strcpy(g_stFotaData.cDeviceId,pDevId);

 #endif

+	printf("******device_id:%s\n", pDevId);

+	cfg_set("arms_device_id", pDevId);

+	cfg_save();

 

 	return 0;		

 }

@@ -684,6 +703,9 @@
 #ifdef EXAMPLE_REF_VALUE

 	strcpy(pDevSec,g_stFotaData.cDeviceSec);

 #endif

+	char buf[ARMS_FOTA_DEVICE_SEC_BUF_SIZE] = {0};

+	cfg_get_item("arms_device_sec", buf, sizeof(buf));

+	strcpy(pDevSec, buf);

 

 	return 0;		

 }

@@ -697,6 +719,9 @@
 	memset(g_stFotaData.cDeviceSec,0,sizeof(g_stFotaData.cDeviceSec));

 	strcpy(g_stFotaData.cDeviceSec,pDevSec);

 #endif

+	printf("******device_sec:%s\n", pDevSec);

+	cfg_set("arms_device_sec", pDevSec);

+	cfg_save();

 

 	return 0;		

 }

@@ -709,6 +734,9 @@
 #ifdef EXAMPLE_REF_VALUE

 	strcpy(pDevIdMD5,g_stFotaData.cDeviceidMD5);

 #endif

+	char buf[ARMS_FOTA_DEVICEID_MD5_BUF_SIZE] = {0};

+	cfg_get_item("arms_device_md5", buf, sizeof(buf));

+	strcpy(pDevIdMD5, buf);

 

 	return 0;		

 }

@@ -722,6 +750,9 @@
 	memset(g_stFotaData.cDeviceidMD5,0,sizeof(g_stFotaData.cDeviceidMD5));

 	strcpy(g_stFotaData.cDeviceidMD5,pDevIdMD5);

 #endif

+	printf("******deviceid_md5:%s\n", pDevIdMD5);

+	cfg_set("arms_device_md5", pDevIdMD5);

+	cfg_save();

 

 	return 0;		

 }

@@ -747,6 +778,9 @@
 	memset(g_stFotaData.stFWPreVerArr,0,sizeof(FOTADATAFW)*ARMS_FOTA_FW_VER_NUM);

 	memcpy(g_stFotaData.stFWPreVerArr,pPreVerFW,sizeof(FOTADATAFW)*ARMS_FOTA_FW_VER_NUM);

 #endif

+	printf("******pPreVerFW version:%s, nFOTAFwRet:%d\n", pPreVerFW->szFOTAFwVer, pPreVerFW->nFOTAFwRet);

+	cfg_set("arms_fota_version", pPreVerFW->szFOTAFwVer);

+	cfg_save();

 

 	return 0;		

 }

@@ -759,6 +793,11 @@
 #ifdef EXAMPLE_REF_VALUE

 	memcpy(pPreVerCFG,g_stFotaData.stCFGPreVerArr,sizeof(FOTADATAFCFG)*ARMS_FOTA_CFG_VER_NUM);

 #endif

+	FOTADATAFCFG stCFGPreVerArr[ARMS_FOTA_CFG_VER_NUM];

+	char buf[ARMS_FOTA_CFG_VER_BUF_SIZE] = {0};

+	cfg_get_item("wa_version", buf, sizeof(buf));

+	strcpy(stCFGPreVerArr[0].szFOTCfgVer, buf);

+	memcpy(pPreVerCFG, stCFGPreVerArr, sizeof(FOTADATAFCFG)*ARMS_FOTA_CFG_VER_NUM);

 

 	return 0;		

 }

@@ -847,11 +886,121 @@
 	return 0;	

 }

 

+#define FOTA_UPDATE_STATUS_FILE "/cache/zte_fota/update_status"

+

+int fota_is_file_exist(const char* path)

+{

+	if ( (path == NULL) || (*path == '\0') )

+		return 0;

+	if (access(path, R_OK) != 0)

+		return 0;

+

+	return 1;

+}

+

+int fota_read_file(const char*path, char*buf, size_t sz)

+{

+	int fd = -1;

+	size_t cnt;

+

+	fd = open(path, O_RDONLY, 0);

+	if(fd < 0)

+	{

+		printf("fota_read_file failed to open %s\n", path);

+		cnt = -1;

+		return cnt;

+	}

+	cnt = read(fd, buf, sz - 1);

+	if(cnt <= 0)

+	{

+		printf("failed to read %s\n", path);

+		close(fd);

+		cnt = -1;

+		return cnt;

+	}

+	buf[cnt] = '\0';

+	if(buf[cnt - 1] == '\n')

+	{

+		cnt--;

+		buf[cnt] = '\0';

+	}

+	close(fd);

+

+	return cnt;

+}

+

+int fota_read_file_int(const char* path, int *val)

+{

+	char buf[32];

+	char *end;

+	int ret;

+	int tmp;

+

+	ret = fota_read_file(path, buf, sizeof(buf));

+	if(ret < 0)

+		return -1;

+

+	tmp = strtol(buf, &end, 0);

+	if ((end == buf) || ((end < buf + sizeof(buf)) && (*end != '\0')))

+	{

+		return -1;

+	}

+

+	*val = tmp;

+

+	return 0;

+}

+

+int fota_get_update_status(int *fota_status)

+{

+

+	int status = 0;

+	int ret = 0;

+	if(!fota_is_file_exist(FOTA_UPDATE_STATUS_FILE))

+	{

+		printf("fota_get_update_status file not exist\n");

+		*fota_status = -1;

+		return -1;

+	}

+	ret = fota_read_file_int(FOTA_UPDATE_STATUS_FILE, &status);

+	if(ret < 0) {

+		printf("fota_get_update_status read update_status error\n");

+		*fota_status = -1;

+		return -1;

+	}

+	printf("fota_get_update_status read status:%d\n", status);

+	*fota_status = status;

+

+	return 0;

+}

+

 int arms_data_example_upgrade(char *pPath)

 {

 	if (pPath == NULL)

 		return -1;

 

+	int upgradeStatus = 0;

+	int result = 0;

+

+	printf("arms_data_example_upgrade upgrade file path:[%s]\n");

+	system("fota_upi -u verify");

+	result = fota_get_update_status(&upgradeStatus);

+	if(result < 0)

+	{

+		printf("arms_data_example_upgrade failed to read the update_status file\n");

+		return -1;

+	}

+	else if(upgradeStatus != 0)

+	{

+		printf("arms_data_example_upgrade verify failed\n");

+		return -1;

+	}

+	else

+	{

+		printf("arms_data_example_upgrade verify success, start upgrade!\n");

+		system("fota_upi -u recovery");

+	}

+

 #ifdef EXAMPLE_REF_VALUE

 	remove(pPath);

 #endif

diff --git a/lynq/R306_MTN/ap/app/apparms/util/apparms_util.h b/lynq/R306_MTN/ap/app/apparms/util/apparms_util.h
index 4bfbea4..dce7549 100755
--- a/lynq/R306_MTN/ap/app/apparms/util/apparms_util.h
+++ b/lynq/R306_MTN/ap/app/apparms/util/apparms_util.h
@@ -38,6 +38,7 @@
 #include <time.h>
 #include <semaphore.h>
 #include <errno.h>
+#include "../../include/cfg_api.h"
 
 int arms_util_open_file(char* pLogPath);
 void arms_util_close_file(int *pFd);
diff --git a/lynq/R306_MTN/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/default/default_parameter_user b/lynq/R306_MTN/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/default/default_parameter_user
index 58489fd..3bacc49 100755
--- a/lynq/R306_MTN/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/default/default_parameter_user
+++ b/lynq/R306_MTN/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/default/default_parameter_user
@@ -498,3 +498,10 @@
 use_network_adb=usb
 SSIDbak=
 wifi_switch_status=
+#for apparms begin
+arms_task_id=
+arms_device_id=
+arms_device_sec=
+arms_device_md5=
+arms_fota_version=
+#for apparms end
\ No newline at end of file