[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