[Feature][ZXW-136]merge P50U04 version

Only Configure: No
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: No

Change-Id: I7b6a8e22777591bc7a9ede91d6695d9415116f81
diff --git a/ap/lib/libatext/ext_amt_func.c b/ap/lib/libatext/ext_amt_func.c
index 4460b51..431819f 100755
--- a/ap/lib/libatext/ext_amt_func.c
+++ b/ap/lib/libatext/ext_amt_func.c
@@ -2015,6 +2015,7 @@
 	cmdline_fd = open("/proc/cmdline", O_RDONLY);

 	if (cmdline_fd < 0) {

 		at_print(AT_ERR,"open %s fail.\n","/proc/cmdline");

+		free(cmdline_buf);

 		return -1;

 	}

 	ret_size = read(cmdline_fd, cmdline_buf, CMDLINE_MAX_SIZE);

@@ -2022,6 +2023,7 @@
 	{

 		at_print(AT_ERR,"read /proc/cmdline fail.\n");

 		close(cmdline_fd);

+		free(cmdline_buf);

 		return -1;

 	}

 	close(cmdline_fd);

@@ -2029,25 +2031,30 @@
 	if(temp == NULL)

 	{

     	at_print(AT_ERR,"can not find EnhancedSecurity=\n");

+		free(cmdline_buf);

 		return -1;

 	}

 	temp = temp + strlen("EnhancedSecurity=");

 	if(temp == NULL)

 	{

     	at_print(AT_ERR,"temp = NULL\n");

+		free(cmdline_buf);

 		return -1;

 	}

 	if(*temp == '0')

 	{

+	    free(cmdline_buf);

 		return 0;

 	}

 	else if(*temp == '1')

 	{

 	    at_print(AT_ERR,"EnhancedSecurity=1\n");

+		free(cmdline_buf);

 		return 1;

 	}

 	else

 	{

+	    free(cmdline_buf);

 		return -1;

 	}

 }

@@ -2137,7 +2144,7 @@
 

 

 	   // ´òÓ¡¹«Ô¿

-		#if 1

+		#if 0

 		strLog[0] = '\0';

 		for (i = 0; i < 16; i++)

 		{

@@ -2195,10 +2202,9 @@
         strcat(strLog, strValue);

     }

 

-    at_print(AT_ERR, "Public key hash: %s\n", strLog);

+    at_print(AT_ERR, "efuse Public key hash: %s\n", strLog);

 	

 	/*************************½«°²È«ÐÅϢдÈëefuse**************************/

-	#if 1

 	if (memcmp(efuseInfo.pubKeyHash, pubKeyHash, sizeof(pubKeyHash)) != 0)

 	{

 		// ¹«Ô¿hashֵдÈëefuse

@@ -2217,7 +2223,7 @@
     }

 	else

 	{

-		at_print(AT_ERR, "Public key's hash value already exists!\n");

+		at_print(AT_ERR, "efuse Public key's hash value already exists!\n");

 	}

 

     /*************************ÅжÏдÈëµÄ¹«Ô¿hashÖµÊÇ·ñÕýÈ·**************************/

@@ -2233,69 +2239,12 @@
     }

 	if (memcmp(efuseInfo.pubKeyHash, pubKeyHash, sizeof(pubKeyHash)) != 0)

     {

-        at_print(AT_ERR, "Public key hash is not consistent!\n");

+        at_print(AT_ERR, "efuse Public key hash is not consistent!\n");

         *res_msg = at_err_build(ATERR_PROC_FAILED);

         *res_msglen = strlen(*res_msg);

 		close(efuse_fd);

         return AT_END;

     }

-	#endif

-

-	#if 1

-

-	/*efuseInfo.secureFlagÇ°Ãæ3¸ö×Ö½ÚÊÇchip flag,×îºóÒ»¸ö×Ö½ÚÊǰ²È«Ê¹ÄܱêÖ¾*/

-	

-    if ((efuseInfo.secureFlag&0xff) != secureFlag)

-    {

-        // ʹÄܱêʶλдÈëefuse

-        if (ioctl(efuse_fd , EFUSE_SET_SECURE_EN, &secureFlag) != 0)

-        {

-            at_print(AT_ERR, "Write security flag to efuse fail!\r");

-            *res_msg = at_err_build(ATERR_PROC_FAILED);

-            *res_msglen = strlen(*res_msg);

-			close(efuse_fd);

-            return AT_END;

-        }

-        else

-        {

-            at_print(AT_NORMAL, "Write security flag to efuse success!\r");

-        }

-    }

-

-    else

-    {

-        at_print(AT_NORMAL, "Secure flag already exists!\r");

-    }

-	

-    /*************************ÅжÏдÈëµÄÐÅÏ¢ÊÇ·ñÕýÈ·**************************/

-    // ´Óefuse¶ÁÈ¡

-    memset(&efuseInfo, 0, sizeof(efuseInfo));

-    if(ioctl(efuse_fd , EFUSE_GET_DATA, &efuseInfo)!= 0)

-    {

-        at_print(AT_ERR,"ioctl: EFUSE_GET_DATA fail.\n");

-		*res_msg = at_err_build(ATERR_PROC_FAILED);

-		*res_msglen = strlen(*res_msg);

-		close(efuse_fd);

-		return AT_END;

-    }

-

-    if ((efuseInfo.secureFlag&0xff) != secureFlag)

-    {

-        at_print(AT_ERR, "Security flag(%#08X) is not consistent!\r", efuseInfo.secureFlag);

-        *res_msg = at_err_build(ATERR_PROC_FAILED);

-        *res_msglen = strlen(*res_msg);

-		close(efuse_fd);

-        return AT_END;

-    }

-	#endif

-    close(efuse_fd);

-	

-	if(is_Enhanced_Security == 0)

-	{

-		*res_msg = at_query_result_build("write security infomation", NULL);

-    	*res_msglen = strlen(*res_msg);

-	     return AT_END;

-	}

 	

 	if(is_Enhanced_Security == 1)

 	{

@@ -2322,7 +2271,7 @@
 		at_print(AT_ERR, "security flag in otp: %08X\n", otpInfo.secureFlag);

 

 		// ´òÓ¡¹«Ô¿

-		#if 1

+		#if 0

 		strLog[0] = '\0';

 		for (i = 0; i < 16; i++)

 		{

@@ -2389,8 +2338,6 @@
 

 		at_print(AT_ERR, "OTP Public key hash: %s\n", strLog);

 

-		#if 1

-		

 		/*************************½«°²È«ÐÅϢдÈëotp**************************/

 		

 		if (memcmp(otpInfo.pubKeyHash, pubKeyHash_otp, sizeof(pubKeyHash_otp)) != 0)

@@ -2406,12 +2353,12 @@
 			}

 			else

 			{

-				at_print(AT_NORMAL, "Write public key hash to otp success!\n");

+				at_print(AT_ERR, "Write public key hash to otp success!\n");

 			}

 	    }

 		else

 		{

-			at_print(AT_NORMAL, "Public key's hash value in otp already exists!\n");

+			at_print(AT_ERR, "Public key's hash value in otp already exists!\n");

 		}

 

 		/*************************ÅжÏдÈëµÄ¹«Ô¿hashÖµÊÇ·ñÕýÈ·**************************/

@@ -2434,11 +2381,8 @@
 			close(otp_fd);

 	        return AT_END;

 	    }

-		#endif

-

-		#if 1

 		

-		/*efuseInfo.secureFlagÇ°Ãæ3¸ö×Ö½ÚÊÇchip flag,×îºóÒ»¸ö×Ö½ÚÊǰ²È«Ê¹ÄܱêÖ¾*/

+		/*otpInfo.secureFlag×îºóÒ»¸ö×Ö½ÚÊǰ²È«Ê¹ÄܱêÖ¾*/

 		

 	    if ((otpInfo.secureFlag&0xff) != secureFlag_otp)

 	    {

@@ -2453,12 +2397,12 @@
 	        }

 	        else

 	        {

-	            at_print(AT_NORMAL, "Write security flag to otp success!\n");

+	            at_print(AT_ERR, "Write security flag to otp success!\n");

 	        }

 	    }

 		else

 	    {

-	        at_print(AT_NORMAL, "Secure flag already exists!\n");

+	        at_print(AT_ERR, "Secure flag in otp already exists!\n");

 	    }

 		

 	    /*************************ÅжÏдÈëµÄsecure flagÊÇ·ñÕýÈ·**************************/

@@ -2473,23 +2417,66 @@
 			return AT_END;

 	    }

 

-	    if ((otpInfo.secureFlag&0xff) != secureFlag_otp)

+		close(otp_fd);

+

+		if ((otpInfo.secureFlag&0xff) != secureFlag_otp)

 	    {

-	        at_print(AT_ERR, "Security flag(%#08X) is not consistent!\n", otpInfo.secureFlag);

+	        at_print(AT_ERR, "Security flag(%#08X) in otp is not consistent!\n", otpInfo.secureFlag);

 	        *res_msg = at_err_build(ATERR_PROC_FAILED);

 	        *res_msglen = strlen(*res_msg);

-			close(otp_fd);

-	        return AT_END;

+		    return AT_END;

 	    }

-

-		#endif

-

-	    *res_msg = at_query_result_build("write security infomation", NULL);

-	    *res_msglen = strlen(*res_msg);

-		close(otp_fd);

-	    return AT_END;

-     

 	}

+	

+	//×îºóдefuse°²È«flag

+    /*efuseInfo.secureFlagÇ°Ãæ3¸ö×Ö½ÚÊÇchip flag,×îºóÒ»¸ö×Ö½ÚÊǰ²È«Ê¹ÄܱêÖ¾*/

+	

+    if ((efuseInfo.secureFlag&0xff) != secureFlag)

+    {

+        // ʹÄܱêʶλдÈëefuse

+        if (ioctl(efuse_fd , EFUSE_SET_SECURE_EN, &secureFlag) != 0)

+        {

+            at_print(AT_ERR, "Write security flag to efuse fail!\n");

+            *res_msg = at_err_build(ATERR_PROC_FAILED);

+            *res_msglen = strlen(*res_msg);

+			close(efuse_fd);

+            return AT_END;

+        }

+        else

+        {

+            at_print(AT_ERR, "Write security flag to efuse success!\n");

+        }

+    }

+    else

+    {

+        at_print(AT_ERR, "Secure flag in efuse already exists!\n");

+    }

+	

+    /*************************ÅжÏдÈëµÄÐÅÏ¢ÊÇ·ñÕýÈ·**************************/

+    // ´Óefuse¶ÁÈ¡

+    memset(&efuseInfo, 0, sizeof(efuseInfo));

+    if(ioctl(efuse_fd , EFUSE_GET_DATA, &efuseInfo)!= 0)

+    {

+        at_print(AT_ERR,"ioctl: EFUSE_GET_DATA fail.\n");

+		*res_msg = at_err_build(ATERR_PROC_FAILED);

+		*res_msglen = strlen(*res_msg);

+		close(efuse_fd);

+		return AT_END;

+    }

+

+	close(efuse_fd);

+

+    if ((efuseInfo.secureFlag&0xff) != secureFlag)

+    {

+        at_print(AT_ERR, "Security flag(%#08X) in efuse is not consistent!\n", efuseInfo.secureFlag);

+        *res_msg = at_err_build(ATERR_PROC_FAILED);

+        *res_msglen = strlen(*res_msg);

+		return AT_END;

+    }

+	

+	*res_msg = at_query_result_build("write security infomation", NULL);

+    *res_msglen = strlen(*res_msg);

+	return AT_END;

 }

 

 int read_security_info(int at_fd, char *at_paras, void **res_msg, int *res_msglen)

@@ -2556,9 +2543,7 @@
 		}

 	} 

 

-	#if 1

-	

-    if(is_Enhanced_Security == 1)

+	if(is_Enhanced_Security == 1)

     {

 		otp_fd = open("/dev/otp", O_RDWR);

 		if (otp_fd < 0) 

@@ -2597,10 +2582,32 @@
 		    return AT_END;

 		} 

     }

-	#endif

 	

 }

 

+#ifdef USE_NVRO_BACKUP

+int backup_nvro_func(int at_fd, char *at_paras, void **res_msg, int *res_msglen)

+{

+    unsigned int ret = CPNV_ERROR;

+	

+	ret = cpnv_NvroBackup();

+    if (CPNV_ERROR== ret)

+    {

+        at_print(AT_ERR,"nvro backup failed\n");

+        *res_msg = at_err_build(ATERR_PROC_FAILED);

+	}

+	else

+	{

+		at_print(AT_ERR, "nvro backup success\n");

+		*res_msg = at_ok_build();

+	}

+

+	*res_msglen = strlen(*res_msg);

+	return AT_END;

+}

+#endif

+

+

 

 /*

 int auth_device_key(int at_fd, char *at_paras,void ** res_msg, int *res_msglen)

@@ -2676,5 +2683,9 @@
 	//register_serv_func2("ZAUTH=",0,0,0,auth_device_key,NULL);

     register_serv_func2("RSCYINFO",0,0,0,read_security_info,NULL);

 	

+	#ifdef USE_NVRO_BACKUP

+	register_serv_func2("NVROBACKUP",0,0,0,backup_nvro_func,NULL);

+	#endif

+	

     return 0;

 }

diff --git a/ap/lib/libatext/ext_user_modem.c b/ap/lib/libatext/ext_user_modem.c
index 780a582..782ed7d 100755
--- a/ap/lib/libatext/ext_user_modem.c
+++ b/ap/lib/libatext/ext_user_modem.c
@@ -10,11 +10,12 @@
 char netcon_value_char[70] = {0};
 extern char* normal_getzversion();
 int urcsysinfo = 0;
-typedef struct {
-	int mode;
-	int creg;
-	int cgreg;
-	int cereg;
+typedef struct
+{
+    int mode;
+    int creg;
+    int cgreg;
+    int cereg;
 } EXT_NETSTATE_INFO;
 EXT_NETSTATE_INFO urcinfo = {0};
 //========================================================================================================//
@@ -24,561 +25,712 @@
 
 static void comm_rspmsg_proc(void *rsp_msg, void**ret, int *retlen)
 {
-	AT_COMM_RSPMSG *msg = (AT_COMM_RSPMSG*)rsp_msg;
-	char *at_str = NULL;
-	int offset = 0;
+    AT_COMM_RSPMSG *msg = (AT_COMM_RSPMSG*)rsp_msg;
+    char *at_str = NULL;
+    int offset = 0;
 
-	if (msg->result < 0) {
-		at_str = malloc(32);
-		assert(at_str);
-		memset(at_str, 0x00, 32);
-		if (msg->errcode) {
-			sprintf(at_str, "\r\nERROR: %d\r\n", msg->errcode);
-		} else {
-			sprintf(at_str, "\r\nERROR\r\n");
-		}
-	} else {
-		at_str = malloc(64);
-		assert(at_str);
-		memset(at_str, 0x00, 64);
-		if (msg->msg_cmd == MSG_CMD_NETACT_REQ) {
-			offset += sprintf(at_str, "\r\nOK\r\n");
-			if (msg->urc_switch) {
-				if (g_customer_type == CUSTOMER_GUODIAN)
-					offset += sprintf(at_str + offset, "\r\n$MYURCACT: %d,%d\r\n", msg->extcid, msg->act_type);
-				else if (g_customer_type == CUSTOMER_NANDIAN)
-					offset += sprintf(at_str + offset, "\r\n$MYURCACT: %d,%d,\"%s\"\r\n", msg->extcid, msg->act_type, msg->ip);
-			}
+    if (msg->result < 0)
+    {
+        at_str = malloc(32);
+        assert(at_str);
+        memset(at_str, 0x00, 32);
+        if (msg->errcode)
+        {
+            sprintf(at_str, "\r\nERROR: %d\r\n", msg->errcode);
+        }
+        else
+        {
+            sprintf(at_str, "\r\nERROR\r\n");
+        }
+    }
+    else
+    {
+        at_str = malloc(64);
+        assert(at_str);
+        memset(at_str, 0x00, 64);
+        if (msg->msg_cmd == MSG_CMD_NETACT_REQ)
+        {
+            offset += sprintf(at_str, "\r\nOK\r\n");
+            if (msg->urc_switch)
+            {
+                if (g_customer_type == CUSTOMER_GUODIAN)
+                {
+                    offset += sprintf(at_str + offset, "\r\n$MYURCACT: %d,%d\r\n", msg->extcid, msg->act_type);
+                }
+                else if (g_customer_type == CUSTOMER_NANDIAN)
+                {
+                    offset += sprintf(at_str + offset, "\r\n$MYURCACT: %d,%d,\"%s\"\r\n", msg->extcid, msg->act_type, msg->ip);
+                }
+            }
 
-			*ret = at_str;
-			*retlen = offset;
-			return;
-		}
-		sprintf(at_str, "\r\nOK\r\n");
-	}
-	*ret = at_str;
-	*retlen = strlen(at_str);
+            *ret = at_str;
+            *retlen = offset;
+            return;
+        }
+        sprintf(at_str, "\r\nOK\r\n");
+    }
+    *ret = at_str;
+    *retlen = strlen(at_str);
 
 }
 
 
 int ext_netcon_req(int at_fd, char *at_paras, void ** res_msg, int *res_msglen)
 {
-	struct netcon_reqmsg *reqmsg = malloc(sizeof(struct netcon_reqmsg));
-	assert(reqmsg);
-	char configname[10] = {0};
-	char *l_quota = NULL;//×óË«ÒýºÅ
-	char *r_quota = NULL;//ÓÒË«ÒýºÅ
-	char *at_str = NULL;
+    struct netcon_reqmsg *reqmsg = malloc(sizeof(struct netcon_reqmsg));
+    assert(reqmsg);
+    char configname[10] = {0};
+    char *l_quota = NULL;//×óË«ÒýºÅ
+    char *r_quota = NULL;//ÓÒË«ÒýºÅ
+    char *at_str = NULL;
 
-	//if (NULL == reqmsg) softap_assert("");
-	//³õʼ»¯
-	memset(reqmsg, 0x00, sizeof(struct netcon_reqmsg));
-	reqmsg->auth_type = -1;
-	reqmsg->cfgp = -1;
-	reqmsg->cfgt = -1;
+    //if (NULL == reqmsg) softap_assert("");
+    //³õʼ»¯
+    memset(reqmsg, 0x00, sizeof(struct netcon_reqmsg));
+    reqmsg->auth_type = -1;
+    reqmsg->cfgp = -1;
+    reqmsg->cfgt = -1;
 
-	reqmsg->extcid = at_paras[0] - '0';
-	if (reqmsg->extcid < 0 || reqmsg->extcid >= 6)
-		goto error;
-	l_quota = strstr(at_paras, "\"");
-	if (NULL == l_quota) {
-		goto error;
-	}
-	r_quota = strstr(l_quota + 1, "\"");
+    reqmsg->extcid = at_paras[0] - '0';
+    if (reqmsg->extcid < 0 || reqmsg->extcid >= 6)
+    {
+        goto error;
+    }
+    l_quota = strstr(at_paras, "\"");
+    if (NULL == l_quota)
+    {
+        goto error;
+    }
+    r_quota = strstr(l_quota + 1, "\"");
 
-	if (NULL == r_quota) {
-		goto error;
-	}
-	memcpy(configname, l_quota + 1, r_quota - l_quota - 1);
-	if (0 == at_strncmp(configname, "APN", strlen("APN"))) {
-		l_quota = strstr(r_quota + 1, "\"");
-		if (l_quota == NULL)
-			goto error;
-		r_quota = strstr(l_quota + 1, "\"");
-		if (r_quota == NULL)
-			goto error;
-		memcpy(reqmsg->apn, l_quota + 1, r_quota - l_quota - 1);
-		memset(netcon_value_char, 0, sizeof(netcon_value_char));
-		memcpy(netcon_value_char, l_quota + 1, r_quota - l_quota - 1);
-	} else if (0 == at_strncmp(configname, "USERPWD", strlen("USERPWD"))) {
-		l_quota = strstr(r_quota + 1, "\"");
-		if (l_quota == NULL)
-			goto error;
-		r_quota = strstr(l_quota + 1, "\"");
-		if (r_quota == NULL)
-			goto error;
-		char *comma = strstr(l_quota + 1, ",");
-		if (NULL != comma) { //ÓжººÅ£¬Óû§ÃûÃÜÂ벻Ϊ¿Õ
-			if (comma > r_quota)
-				goto error;
-			memcpy(reqmsg->username, l_quota + 1, comma - l_quota - 1);
-			memcpy(reqmsg->password, comma + 1, r_quota - comma - 1);
-		}
-		memset(netcon_value_char, 0, sizeof(netcon_value_char));
-		memcpy(netcon_value_char, l_quota + 1, r_quota - l_quota - 1);
-
-		reqmsg->is_userpwd = 1;
-	} else if (0 == at_strncmp(configname, "CFGT", strlen("CFGT"))) {
-		int len = strlen(r_quota + 2);
-		char* str = malloc(len + 1);
-		assert(str);
-		strcpy(str, r_quota + 2);
-		reqmsg->cfgt = atoi(str);
-		if (reqmsg->cfgt < 1 || reqmsg->cfgt > 65535){
-            free(str);
-			goto error;
+    if (NULL == r_quota)
+    {
+        goto error;
+    }
+    memcpy(configname, l_quota + 1, r_quota - l_quota - 1);
+    if (0 == at_strncmp(configname, "APN", strlen("APN")))
+    {
+        l_quota = strstr(r_quota + 1, "\"");
+        if (l_quota == NULL)
+        {
+            goto error;
         }
-		netcon_value_int = atoi(str);
-		free(str);
-	} else if (0 == at_strncmp(configname, "CFGP", strlen("CFGP"))) {
-		int len = strlen(r_quota + 2);
-		char* str = malloc(len + 1);
-		assert(str);
-		strcpy(str, r_quota + 2);
-		reqmsg->cfgp = atoi(str);
-		if (reqmsg->cfgp < 1 || reqmsg->cfgp > 1460) {
-            free(str);
-			goto error;
+        r_quota = strstr(l_quota + 1, "\"");
+        if (r_quota == NULL)
+        {
+            goto error;
         }
-		netcon_value_int = atoi(str);
-		free(str);
-	} else if (0 == at_strncmp(configname, "AUTH", strlen("AUTH"))) {
-		int len = strlen(r_quota + 2);
-		char* str = malloc(len + 1);
-		assert(str);
-		strcpy(str, r_quota + 2);
-		reqmsg->auth_type = atoi(str);
-		if (reqmsg->auth_type < 0 || reqmsg->auth_type > 2) {
-            free(str);
-			goto error;
+        memcpy(reqmsg->apn, l_quota + 1, r_quota - l_quota - 1);
+        memset(netcon_value_char, 0, sizeof(netcon_value_char));
+        memcpy(netcon_value_char, l_quota + 1, r_quota - l_quota - 1);
+    }
+    else if (0 == at_strncmp(configname, "USERPWD", strlen("USERPWD")))
+    {
+        l_quota = strstr(r_quota + 1, "\"");
+        if (l_quota == NULL)
+        {
+            goto error;
         }
-		netcon_value_int = atoi(str);
-		free(str);
-	} else {
-		goto error;
-	}
-	netcon_extcid = reqmsg->extcid;
-	strncpy(netcon_configname, configname,sizeof(netcon_configname)-1);
+        r_quota = strstr(l_quota + 1, "\"");
+        if (r_quota == NULL)
+        {
+            goto error;
+        }
+        char *comma = strstr(l_quota + 1, ",");
+        if (NULL != comma)   //ÓжººÅ£¬Óû§ÃûÃÜÂ벻Ϊ¿Õ
+        {
+            if (comma > r_quota)
+            {
+                goto error;
+            }
+            memcpy(reqmsg->username, l_quota + 1, comma - l_quota - 1);
+            memcpy(reqmsg->password, comma + 1, r_quota - comma - 1);
+        }
+        memset(netcon_value_char, 0, sizeof(netcon_value_char));
+        memcpy(netcon_value_char, l_quota + 1, r_quota - l_quota - 1);
 
-	*res_msg = reqmsg;
-	*res_msglen = sizeof(struct netcon_reqmsg);
-	return AT_CONTINUE;
+        reqmsg->is_userpwd = 1;
+    }
+    else if (0 == at_strncmp(configname, "CFGT", strlen("CFGT")))
+    {
+        int len = strlen(r_quota + 2);
+        char* str = malloc(len + 1);
+        assert(str);
+        strcpy(str, r_quota + 2);
+        reqmsg->cfgt = atoi(str);
+        if (reqmsg->cfgt < 1 || reqmsg->cfgt > 65535)
+        {
+            free(str);
+            goto error;
+        }
+        netcon_value_int = atoi(str);
+        free(str);
+    }
+    else if (0 == at_strncmp(configname, "CFGP", strlen("CFGP")))
+    {
+        int len = strlen(r_quota + 2);
+        char* str = malloc(len + 1);
+        assert(str);
+        strcpy(str, r_quota + 2);
+        reqmsg->cfgp = atoi(str);
+        if (reqmsg->cfgp < 1 || reqmsg->cfgp > 1460)
+        {
+            free(str);
+            goto error;
+        }
+        netcon_value_int = atoi(str);
+        free(str);
+    }
+    else if (0 == at_strncmp(configname, "AUTH", strlen("AUTH")))
+    {
+        int len = strlen(r_quota + 2);
+        char* str = malloc(len + 1);
+        assert(str);
+        strcpy(str, r_quota + 2);
+        reqmsg->auth_type = atoi(str);
+        if (reqmsg->auth_type < 0 || reqmsg->auth_type > 2)
+        {
+            free(str);
+            goto error;
+        }
+        netcon_value_int = atoi(str);
+        free(str);
+    }
+    else
+    {
+        goto error;
+    }
+    netcon_extcid = reqmsg->extcid;
+    strncpy(netcon_configname, configname, sizeof(netcon_configname) - 1);
+
+    *res_msg = reqmsg;
+    *res_msglen = sizeof(struct netcon_reqmsg);
+    return AT_CONTINUE;
 error:
     free(reqmsg);
-	at_str = malloc(32);
-	assert(at_str);
-	memset(at_str, 0x00, 32);
-	sprintf(at_str, "\r\nERROR: 980\r\n");
-	*res_msg = at_str;
-	*res_msglen = strlen(at_str);
-	return AT_END;
+    at_str = malloc(32);
+    assert(at_str);
+    memset(at_str, 0x00, 32);
+    sprintf(at_str, "\r\nERROR: 980\r\n");
+    *res_msg = at_str;
+    *res_msglen = strlen(at_str);
+    return AT_END;
 }
 int ext_netcon_rsp(void *rsp_msg, void**ret, int *retlen)
 {
-	comm_rspmsg_proc(rsp_msg, ret, retlen);
-	return AT_END;
+    comm_rspmsg_proc(rsp_msg, ret, retlen);
+    return AT_END;
 }
 
 int ext_netact_req(int at_fd, char *at_paras, void ** res_msg, int *res_msglen)
 {
-	struct netact_reqmsg *reqmsg = malloc(sizeof(struct netact_reqmsg));
-	assert(reqmsg);
-	char *p[2] = {&reqmsg->extcid, &reqmsg->act_type};
+    struct netact_reqmsg *reqmsg = malloc(sizeof(struct netact_reqmsg));
+    assert(reqmsg);
+    char *p[2] = {&reqmsg->extcid, &reqmsg->act_type};
     char *at_str = NULL;
-	memset(reqmsg, 0x00, sizeof(struct comm_reqmsg));
-	if(2 != parse_param2("%d,%d", at_paras, p)){
+    memset(reqmsg, 0x00, sizeof(struct comm_reqmsg));
+    if (2 != parse_param2("%d,%d", at_paras, p))
+    {
         free(reqmsg);
-    	at_str = malloc(32);
-		assert(at_str);
-    	memset(at_str, 0x00, 32);
-    	sprintf(at_str, "\r\nERROR: 980\r\n");
-    	*res_msg = at_str;
-    	*res_msglen = strlen(at_str);
-    	return AT_END;
-    }   
+        at_str = malloc(32);
+        assert(at_str);
+        memset(at_str, 0x00, 32);
+        sprintf(at_str, "\r\nERROR: 980\r\n");
+        *res_msg = at_str;
+        *res_msglen = strlen(at_str);
+        return AT_END;
+    }
 
-	*res_msg = reqmsg;
-	*res_msglen = sizeof(struct netact_reqmsg);
-	return AT_CONTINUE;
+    *res_msg = reqmsg;
+    *res_msglen = sizeof(struct netact_reqmsg);
+    return AT_CONTINUE;
 }
 int ext_netact_rsp(void *rsp_msg, void**ret, int *retlen)
 {
-	comm_rspmsg_proc(rsp_msg, ret, retlen);
+    comm_rspmsg_proc(rsp_msg, ret, retlen);
 
-	return AT_END;
+    return AT_END;
 }
 
 /*Èí¹Ø»ú*/
 int ext_poweroff_req(int at_fd, char * at_paras, void **res_msg, int * res_msglen)
 {
-	return AT_CONTINUE;
+    return AT_CONTINUE;
 }
 
 
 
 int ext_i_act_func(int at_fd, char * at_paras, void * *res_msg, int * res_msglen)
 {
-	char *at_str = NULL;
+    char *at_str = NULL;
 
-	at_str = malloc(128);
-	assert(at_str);
-	memset(at_str, 0, 128);
-	sprintf((char*)at_str, "\r\nLQBS\r\nLQ300V3\r\nREVISION V1.0.0\r\nOK\r\n");
+    at_str = malloc(128);
+    assert(at_str);
+    memset(at_str, 0, 128);
+    sprintf((char*)at_str, "\r\nLQBS\r\nLQ300V3\r\nREVISION V1.0.0\r\nOK\r\n");
 
-	*res_msg = at_str;
-	*res_msglen = strlen(*res_msg);
-	return AT_END;
+    *res_msg = at_str;
+    *res_msglen = strlen(*res_msg);
+    return AT_END;
 }
 int ext_myband_set_func(char *at_paras, void ** res_msg)
 {
-	if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYBAND_SET_REQ, strlen(at_paras), (unsigned char *)at_paras, 0))
-		softap_assert("");
-	return AT_CONTINUE;
+    if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYBAND_SET_REQ, strlen(at_paras),
+                       (unsigned char *)at_paras, 0))
+    {
+        softap_assert("");
+    }
+    return AT_CONTINUE;
 }
 
 int ext_myband_query_func(char *at_paras, void ** res_msg)
 {
-	if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYBAND_QUERY_REQ, 0, NULL, 0))
-		softap_assert("");
-	return AT_CONTINUE;
+    if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYBAND_QUERY_REQ, 0, NULL, 0))
+    {
+        softap_assert("");
+    }
+    return AT_CONTINUE;
 }
 
 int ext_beeh_act_func(int at_fd, char * at_paras, void * *res_msg, int * res_msglen)
 {
-	*res_msg = at_ok_build();
-	*res_msglen = strlen(*res_msg);
-	return AT_END;
+    *res_msg = at_ok_build();
+    *res_msglen = strlen(*res_msg);
+    return AT_END;
 }
 
 int ext_poweroff_rsp(void *rsp_msg, void**ret, int *retlen)
 {
-	char *at_str = NULL;
+    char *at_str = NULL;
 
-	at_str = at_ok_build();
+    at_str = at_ok_build();
 
-	*ret = at_str;
-	*retlen = strlen(at_str);
+    *ret = at_str;
+    *retlen = strlen(at_str);
 
-	return AT_END;
+    return AT_END;
 }
 
 /*¶ÁÈí¼þÍⲿ°æ±¾ºÅ*/
 int ext_gmr_act_func(int at_fd, char * at_paras, void * *res_msg, int * res_msglen)
 {
-	char hwver[32] = {0};
-	char swver[32] = {0};
-	char *at_str = NULL;
+    char hwver[32] = {0};
+    char swver[32] = {0};
+    char *at_str = NULL;
 
-	//sc_cfg_get(NV_HW_VERSION, hwver, sizeof(hwver));
-	//sc_cfg_get(NV_WA_VERSION, swver, sizeof(swver));
-	//³§ÉÌ´úºÅ¡¢Ä£¿éÐͺš¢Ó²¼þ·¢²¼ÈÕÆÚ¡¢Èí¼þ·¢²¼ÈÕÆÚÈçºÎ»ñÈ¡
-	at_str = malloc(128);
-	assert(at_str);
-	memset(at_str, 0, 128);
-	sprintf((char*)at_str, "\r\nLQBS\r\nLQ300V3\r\nV1.0.0\r\n151017\r\nV1.0\r\n151017\r\nOK\r\n");
-	*res_msg = at_str;
-	*res_msglen = strlen(*res_msg);
-	return AT_END;
+    //sc_cfg_get(NV_HW_VERSION, hwver, sizeof(hwver));
+    //sc_cfg_get(NV_WA_VERSION, swver, sizeof(swver));
+    //³§ÉÌ´úºÅ¡¢Ä£¿éÐͺš¢Ó²¼þ·¢²¼ÈÕÆÚ¡¢Èí¼þ·¢²¼ÈÕÆÚÈçºÎ»ñÈ¡
+    at_str = malloc(128);
+    assert(at_str);
+    memset(at_str, 0, 128);
+    sprintf((char*)at_str, "\r\nLQBS\r\nLQ300V3\r\nV1.0.0\r\n151017\r\nV1.0\r\n151017\r\nOK\r\n");
+    *res_msg = at_str;
+    *res_msglen = strlen(*res_msg);
+    return AT_END;
 }
 /*»ñÈ¡SIM¿¨ÐòÁкÅ*/
 int ext_ccid_act_func(int at_fd, char * at_paras, void * *res_msg, int * res_msglen)
 {
-	char iccid[32] = {0};
-	char *at_str = NULL;
+    char iccid[32] = {0};
+    char *at_str = NULL;
 
-	at_str = malloc(64);
-	assert(at_str);
-	memset(at_str, 0, 64);
-	sc_cfg_get(NV_ZICCID, iccid, sizeof(iccid));
-	//at_print(1,"ext_ccid_act_func: iccid = %s\n",iccid);
-	sprintf((char*)at_str, "\r\n$MYCCID: \"%s\"\r\nOK\r\n", iccid);
-	*res_msg = at_str;
-	*res_msglen = strlen(*res_msg);
-	return AT_END;
+    at_str = malloc(64);
+    assert(at_str);
+    memset(at_str, 0, 64);
+    sc_cfg_get(NV_ZICCID, iccid, sizeof(iccid));
+    //at_print(1,"ext_ccid_act_func: iccid = %s\n",iccid);
+    sprintf((char*)at_str, "\r\n$MYCCID: \"%s\"\r\nOK\r\n", iccid);
+    *res_msg = at_str;
+    *res_msglen = strlen(*res_msg);
+    return AT_END;
 }
 int ext_netcon_query_func(int at_fd, char *at_paras, void ** res_msg, int *res_msglen)
 {
-	char *at_str = NULL;
-	int offset = 0;
+    char *at_str = NULL;
+    int offset = 0;
 
-	if (netcon_extcid == -1) {
-		at_str = malloc(32);
-		assert(at_str);
-		memset(at_str, 0x00, 32);
-		sprintf(at_str, "\r\nERROR\r\n");
-	} else {
-		at_str = malloc(32 + sizeof(netcon_extcid) + sizeof(netcon_configname) + sizeof(netcon_value_char));
-		assert(at_str);
-		memset(at_str, 0, 32 + sizeof(netcon_extcid) + sizeof(netcon_configname) + sizeof(netcon_value_char));
-		offset += sprintf(at_str + offset, "\r\n$MYNETCON: %d,\"%s\",", netcon_extcid, netcon_configname);
-		if (0 == at_strncmp(netcon_configname, "APN", strlen("APN")) || 0 == at_strncmp(netcon_configname, "USERPWD", strlen("USERPWD"))) {
-			offset += sprintf(at_str + offset, "\"%s\"\r\nOK\r\n", netcon_value_char);
-		} else {
-			offset += sprintf(at_str + offset, "%d\r\nOK\r\n", netcon_value_int);
-		}
-	}
+    if (netcon_extcid == -1)
+    {
+        at_str = malloc(32);
+        assert(at_str);
+        memset(at_str, 0x00, 32);
+        sprintf(at_str, "\r\nERROR\r\n");
+    }
+    else
+    {
+        at_str = malloc(32 + sizeof(netcon_extcid) + sizeof(netcon_configname) + sizeof(netcon_value_char));
+        assert(at_str);
+        memset(at_str, 0, 32 + sizeof(netcon_extcid) + sizeof(netcon_configname) + sizeof(netcon_value_char));
+        offset += sprintf(at_str + offset, "\r\n$MYNETCON: %d,\"%s\",", netcon_extcid, netcon_configname);
+        if (0 == at_strncmp(netcon_configname, "APN", strlen("APN"))
+                || 0 == at_strncmp(netcon_configname, "USERPWD", strlen("USERPWD")))
+        {
+            offset += sprintf(at_str + offset, "\"%s\"\r\nOK\r\n", netcon_value_char);
+        }
+        else
+        {
+            offset += sprintf(at_str + offset, "%d\r\nOK\r\n", netcon_value_int);
+        }
+    }
 
-	*res_msg = at_str;
-	*res_msglen = strlen(*res_msg);
-	return AT_END;
+    *res_msg = at_str;
+    *res_msglen = strlen(*res_msg);
+    return AT_END;
 
 }
 
 int ext_gmr_query_func(char *at_paras, void ** res_msg)
 {
-	if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_GMR_QUERY_REQ, 0, NULL, 0))
-		softap_assert("");
-	return AT_CONTINUE;
+    if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_GMR_QUERY_REQ, 0, NULL, 0))
+    {
+        softap_assert("");
+    }
+    return AT_CONTINUE;
 }
 int ext_gmr_func(int at_fd, char * at_paras, void * *res_msg, int * res_msglen)
 {
-	*res_msg = at_ok_build();
-	*res_msglen = strlen(*res_msg);
-	return AT_END;
+    *res_msg = at_ok_build();
+    *res_msglen = strlen(*res_msg);
+    return AT_END;
 }
 
 int ext_mysysinfo_query_func(char *at_paras, void ** res_msg)
 {
-	if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYSYSINFO_QUERY_REQ, 0, NULL, 0))
-		softap_assert("");
-	return AT_CONTINUE;
+    if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYSYSINFO_QUERY_REQ, 0, NULL, 0))
+    {
+        softap_assert("");
+    }
+    return AT_CONTINUE;
 }
 
 int ext_mynetinfo_set_func(char *at_paras, void ** res_msg)
 {
-	if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYNETINFO_SET_REQ, strlen(at_paras), (unsigned char *)at_paras, 0))
-		softap_assert("");
-	return AT_CONTINUE;
+    if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYNETINFO_SET_REQ, strlen(at_paras),
+                       (unsigned char *)at_paras, 0))
+    {
+        softap_assert("");
+    }
+    return AT_CONTINUE;
 }
 
 int ext_mynetinfo_query_func(char *at_paras, void ** res_msg)
 {
-	if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYNETINFO_QUERY_REQ, 0, NULL, 0))
-		softap_assert("");
-	return AT_CONTINUE;
+    if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYNETINFO_QUERY_REQ, 0, NULL, 0))
+    {
+        softap_assert("");
+    }
+    return AT_CONTINUE;
 }
 
 int ext_urcsysinfo_act_func(char *at_paras, void ** res_msg)
 {
-	int flag = 0;
-	void *p[1] = {&flag};
-	int ret = 0;
-	ret = parse_param("%d", at_paras, p);
-	if (ret != AT_PARSE_OK)
-		return AT_END;
-	if (1 == flag) {
-		urcsysinfo = 1;
-		*res_msg = at_ok_build();
-	} else {
-		*res_msg = at_err_build(0);
-	}
-	return AT_END;
+    int flag = 0;
+    void *p[1] = {&flag};
+    int ret = 0;
+    ret = parse_param("%d", at_paras, p);
+    if (ret != AT_PARSE_OK)
+    {
+        return AT_END;
+    }
+    if (1 == flag)
+    {
+        urcsysinfo = 1;
+        *res_msg = at_ok_build();
+    }
+    else
+    {
+        *res_msg = at_err_build(0);
+    }
+    return AT_END;
 }
 
 int mode_inform_act(char *at_paras, int is_query_report)
 {
-	int mode = 0;
-	void *p[1] = {&mode};
-	int ret = 0;
-	ret = parse_param("%d", at_paras, p);
-	if (ret != AT_PARSE_OK)
-		return AT_END;
-	if ((mode != urcinfo.mode) && (urcsysinfo == 1)) {
-		urcinfo.mode = mode;
-		if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYURCSYSINFO_INFORM_REQ, 0, NULL, 0))
-			softap_assert("");
-	}
-	return AT_END;
+    int mode = 0;
+    void *p[1] = {&mode};
+    int ret = 0;
+    ret = parse_param("%d", at_paras, p);
+    if (ret != AT_PARSE_OK)
+    {
+        return AT_END;
+    }
+    if ((mode != urcinfo.mode) && (urcsysinfo == 1))
+    {
+        urcinfo.mode = mode;
+        if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYURCSYSINFO_INFORM_REQ, 0, NULL, 0))
+        {
+            softap_assert("");
+        }
+    }
+    return AT_END;
 }
 
 int net_state_transfer(int state)
 {
-	if ((state == 1) || (state == 5))
-		return 1;
-	else return 0;
+    if ((state == 1) || (state == 5))
+    {
+        return 1;
+    }
+    else
+    {
+        return 0;
+    }
 }
 int creg_inform_act(char *at_paras, int is_query_report)
 {
-	int state = 0;
-	void *p[1] = {&state};
-	int ret = 0;
-	ret = parse_param("%d", at_paras, p);
-	if (ret != AT_PARSE_OK)
-		return AT_END;
-	state = net_state_transfer(state);
-	if ((state != urcinfo.creg) && (urcsysinfo == 1)) {
-		urcinfo.creg = state;
-		if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYURCSYSINFO_INFORM_REQ, 0, NULL, 0))
-			softap_assert("");
-	}
-	return AT_END;
+    int state = 0;
+    void *p[1] = {&state};
+    int ret = 0;
+    ret = parse_param("%d", at_paras, p);
+    if (ret != AT_PARSE_OK)
+    {
+        return AT_END;
+    }
+    state = net_state_transfer(state);
+    if ((state != urcinfo.creg) && (urcsysinfo == 1))
+    {
+        urcinfo.creg = state;
+        if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYURCSYSINFO_INFORM_REQ, 0, NULL, 0))
+        {
+            softap_assert("");
+        }
+    }
+    return AT_END;
 }
 int cgreg_inform_act(char *at_paras, int is_query_report)
 {
-	int state = 0;
-	void *p[1] = {&state};
-	int ret = 0;
-	ret = parse_param("%d", at_paras, p);
-	if (ret != AT_PARSE_OK)
-		return AT_END;
-	state = net_state_transfer(state);
-	if ((state != urcinfo.cgreg) && (urcsysinfo == 1)) {
-		urcinfo.cgreg = state;
-		if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYURCSYSINFO_INFORM_REQ, 0, NULL, 0))
-			softap_assert("");
-	}
-	return AT_END;
+    int state = 0;
+    void *p[1] = {&state};
+    int ret = 0;
+    ret = parse_param("%d", at_paras, p);
+    if (ret != AT_PARSE_OK)
+    {
+        return AT_END;
+    }
+    state = net_state_transfer(state);
+    if ((state != urcinfo.cgreg) && (urcsysinfo == 1))
+    {
+        urcinfo.cgreg = state;
+        if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYURCSYSINFO_INFORM_REQ, 0, NULL, 0))
+        {
+            softap_assert("");
+        }
+    }
+    return AT_END;
 }
 int cereg_inform_act(char *at_paras, int is_query_report)
 {
-	int state = 0;
-	void *p[1] = {&state};
-	int ret = 0;
-	ret = parse_param("%d", at_paras, p);
-	if (ret != AT_PARSE_OK)
-		return AT_END;
-	state = net_state_transfer(state);
-	if ((state != urcinfo.cereg) && (urcsysinfo == 1)) {
-		urcinfo.cereg = state;
-		if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYURCSYSINFO_INFORM_REQ, 0, NULL, 0))
-			softap_assert("");
-	}
-	return AT_END;
+    int state = 0;
+    void *p[1] = {&state};
+    int ret = 0;
+    ret = parse_param("%d", at_paras, p);
+    if (ret != AT_PARSE_OK)
+    {
+        return AT_END;
+    }
+    state = net_state_transfer(state);
+    if ((state != urcinfo.cereg) && (urcsysinfo == 1))
+    {
+        urcinfo.cereg = state;
+        if (unix_send_proc(get_default_sockfd(), MODULE_ID_SOCKET_PROXY, MSG_CMD_MYURCSYSINFO_INFORM_REQ, 0, NULL, 0))
+        {
+            softap_assert("");
+        }
+    }
+    return AT_END;
 }
 
 int ext_time_set_func(char *at_paras, void ** res_msg)
-{	
-	char settime[32] = {0};
-	void *p[] = {settime};
-	int ret = 0;
-	char *at_str = NULL;
-	at_str = malloc(16);
-	assert(at_str);
-	memset(at_str,0,16);
-	struct tm set_tm = {0};
-	struct timeval time_tv = {0};
-	struct timezone time_tz = {0, 0};
-	
-	ret = parse_param("%32s",at_paras, p);
-	if(ret != AT_PARSE_OK)
-	{
-		sprintf(at_str,"\r\nERROR: 980\r\n");
-		*res_msg = at_str;
-		return AT_END;
-	}
-	sscanf(settime,"%2d/%2d/%2d,%2d:%2d:%2d",&set_tm.tm_year,
-		&set_tm.tm_mon,&set_tm.tm_mday,&set_tm.tm_hour,&set_tm.tm_min,&set_tm.tm_sec);
-	at_print(1,"ext_time_set_func: %2d/%2d/%2d,%2d:%2d:%2d\n",set_tm.tm_year,
-		set_tm.tm_mon,set_tm.tm_mday,set_tm.tm_hour,set_tm.tm_min,set_tm.tm_sec);
+{
+    char settime[32] = {0};
+    void *p[] = {settime};
+    int ret = 0;
+    char *at_str = NULL;
+    at_str = malloc(16);
+    assert(at_str);
+    memset(at_str, 0, 16);
+    struct tm set_tm = {0};
+    struct timeval time_tv = {0};
+    struct timezone time_tz = {0, 0};
+
+    ret = parse_param("%32s", at_paras, p);
+    if (ret != AT_PARSE_OK)
+    {
+        sprintf(at_str, "\r\nERROR: 980\r\n");
+        *res_msg = at_str;
+        return AT_END;
+    }
+    sscanf(settime, "%2d/%2d/%2d,%2d:%2d:%2d", &set_tm.tm_year,
+           &set_tm.tm_mon, &set_tm.tm_mday, &set_tm.tm_hour, &set_tm.tm_min, &set_tm.tm_sec);
+    at_print(1, "ext_time_set_func: %2d/%2d/%2d,%2d:%2d:%2d\n", set_tm.tm_year,
+             set_tm.tm_mon, set_tm.tm_mday, set_tm.tm_hour, set_tm.tm_min, set_tm.tm_sec);
 
 #if 1   // kw 3
-    if(set_tm.tm_year < 0 || set_tm.tm_year > 5000)
+    if (set_tm.tm_year < 0 || set_tm.tm_year > 5000)
     {
         set_tm.tm_year = 1970;
     }
 
-    if(set_tm.tm_mon < 0 || set_tm.tm_mon > 13)
+    if (set_tm.tm_mon < 0 || set_tm.tm_mon > 13)
     {
         set_tm.tm_mon = 1;
     }
 #endif
-	set_tm.tm_year = set_tm.tm_year + 100;
-	set_tm.tm_mon = set_tm.tm_mon - 1;	
+    set_tm.tm_year = set_tm.tm_year + 100;
+    set_tm.tm_mon = set_tm.tm_mon - 1;
 
-	time_tv.tv_sec = mktime(&set_tm);
-    if(time_tv.tv_sec < 0)// cov M
+    time_tv.tv_sec = mktime(&set_tm);
+    if (time_tv.tv_sec < 0) // cov M
     {
         time_tv.tv_sec = 0;
     }
-    
-//	time_tv.tv_sec = time_tv.tv_sec;  // cov M
-	struct tm * new_time = gmtime(&time_tv.tv_sec);
-	if(new_time)
-		time_tz.tz_minuteswest = (mktime(new_time) - (time_tv.tv_sec)) / 60;
-	
-	if (0 != settimeofday(&time_tv,&time_tz))
-	{
-		at_print(AT_ERR,"zmmi_auto_act,set time of system wrong");
-		sprintf(at_str,"\r\nERROR: 981\r\n");
-		*res_msg = at_str;
-		return AT_END;
-	}
-	rtc_set_time(MODULE_ID_AT_CTL);
-	sprintf(at_str,"\r\nOK\r\n");
-	*res_msg = at_str;
-	return AT_END;	
+
+    //	time_tv.tv_sec = time_tv.tv_sec;  // cov M
+    struct tm * new_time = gmtime(&time_tv.tv_sec);
+    if (new_time)
+    {
+        time_tz.tz_minuteswest = (mktime(new_time) - (time_tv.tv_sec)) / 60;
+    }
+
+    if (0 != settimeofday(&time_tv, &time_tz))
+    {
+        at_print(AT_ERR, "zmmi_auto_act,set time of system wrong");
+        sprintf(at_str, "\r\nERROR: 981\r\n");
+        *res_msg = at_str;
+        return AT_END;
+    }
+    rtc_set_time(MODULE_ID_AT_CTL);
+    sprintf(at_str, "\r\nOK\r\n");
+    *res_msg = at_str;
+    return AT_END;
 }
 
 int ext_time_query_func(char *at_paras, void ** res_msg)
-{	
-	struct tm *p;
-	time_t timep;
-	char buf[32] = {0};
-	char *at_str = NULL;
-	at_str = malloc(64);
-	assert(at_str);
-	memset(at_str,0,64);
-	time(&timep);
-	p = localtime(&timep);
-	assert(p);
-	snprintf(buf,32,"%02d/%02d/%02d,%02d:%02d:%02d",(1900 + p->tm_year)%100,1 + p->tm_mon,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);
-	at_print(1,"ext_time_query_func: time: %s\n",buf);
-	sprintf(at_str,"\r\n+CCLK: \"%s\"\r\nOK\r\n",buf);
-	*res_msg = at_str;
-	return AT_END;	
+{
+    struct tm *p;
+    time_t timep;
+    char buf[32] = {0};
+    char *at_str = NULL;
+    at_str = malloc(64);
+    assert(at_str);
+    memset(at_str, 0, 64);
+    time(&timep);
+    p = localtime(&timep);
+    assert(p);
+    snprintf(buf, 32, "%02d/%02d/%02d,%02d:%02d:%02d", (1900 + p->tm_year) % 100, 1 + p->tm_mon, p->tm_mday, p->tm_hour,
+             p->tm_min, p->tm_sec);
+    at_print(1, "ext_time_query_func: time: %s\n", buf);
+    sprintf(at_str, "\r\n+CCLK: \"%s\"\r\nOK\r\n", buf);
+    *res_msg = at_str;
+    return AT_END;
 }
 
+#ifdef USE_CAP_SUPPORT
+int ext_nitz_query_func(char *at_paras, void ** res_msg)
+{
+    struct tm *p = 0;
+    time_t timep;
+    char buf[32] = {0};
+    char time_zone[16] = {0};
+    char sav_time[16] = {0};
+    char nitz_valid[16] = {0};
+    char *at_str = NULL;
+
+    sc_cfg_get("nitz_time_zone", time_zone, sizeof(time_zone) - 1);
+    sc_cfg_get("nitz_sav_time", sav_time, sizeof(sav_time) - 1);
+
+    at_str = malloc(64);
+    assert(at_str);
+    memset(at_str, 0, 64);
+
+    sc_cfg_get("nitz_is_valid", nitz_valid, sizeof(nitz_valid) - 1);
+    if (1 != atoi(nitz_valid))
+    {
+        sprintf(at_str, "\r\n+ZNITZ: 0,0,\"\"\r\nOK\r\n");
+        *res_msg = at_str;
+        return AT_END;
+    }
+
+    time(&timep);
+    p = gmtime(&timep);
+    assert(p);
+    snprintf(buf, 32, "%02d/%02d/%02d,%02d:%02d:%02d", (1900 + p->tm_year) % 100, 1 + p->tm_mon, p->tm_mday, p->tm_hour,
+             p->tm_min, p->tm_sec);
+
+    at_print(1, "ext_nitz_query_func: time: %s\n", buf);
+
+    sprintf(at_str, "\r\n+ZNITZ: %s,%s,\"%s\"\r\nOK\r\n", time_zone, sav_time, buf);
+
+    *res_msg = at_str;
+
+    return AT_END;
+}
+#endif
+
 int  ext_user_modem_regist(void)
 {
-//#ifdef GUODIAN
-	if (g_customer_type == CUSTOMER_GUODIAN) {
-		//PDP¼¤»î
-		register_serv_func2("MYNETCON=", MODULE_ID_SOCKET_PROXY, MSG_CMD_NETCON_REQ, MSG_CMD_NETCON_RSP, ext_netcon_req, ext_netcon_rsp);
-		register_serv_func2("MYNETACT=", MODULE_ID_SOCKET_PROXY, MSG_CMD_NETACT_REQ, MSG_CMD_NETACT_RSP, ext_netact_req, ext_netact_rsp);
-		register_serv_func2("MYPOWEROFF", MODULE_ID_MAIN_CTRL, MSG_CMD_POWEROFF_REQUEST, MSG_CMD_POWEROFF_RSP, ext_poweroff_req, ext_poweroff_rsp);
+    //#ifdef GUODIAN
+    if (g_customer_type == CUSTOMER_GUODIAN)
+    {
+        //PDP¼¤»î
+        register_serv_func2("MYNETCON=", MODULE_ID_SOCKET_PROXY, MSG_CMD_NETCON_REQ, MSG_CMD_NETCON_RSP, ext_netcon_req,
+                            ext_netcon_rsp);
+        register_serv_func2("MYNETACT=", MODULE_ID_SOCKET_PROXY, MSG_CMD_NETACT_REQ, MSG_CMD_NETACT_RSP, ext_netact_req,
+                            ext_netact_rsp);
+        register_serv_func2("MYPOWEROFF", MODULE_ID_MAIN_CTRL, MSG_CMD_POWEROFF_REQUEST, MSG_CMD_POWEROFF_RSP, ext_poweroff_req,
+                            ext_poweroff_rsp);
 
-		register_serv_func2("MYGMR", 0, 0, 0, ext_gmr_act_func, NULL);
-		register_serv_func2("MYCCID", 0, 0, 0, ext_ccid_act_func, NULL);
-		register_serv_func2("ATI", 0, 0, 0, ext_i_act_func, NULL);
+        register_serv_func2("MYGMR", 0, 0, 0, ext_gmr_act_func, NULL);
+        register_serv_func2("MYCCID", 0, 0, 0, ext_ccid_act_func, NULL);
+        register_serv_func2("ATI", 0, 0, 0, ext_i_act_func, NULL);
 
-		register_serv_func2("MYBCCH?", 0, 0, 0, ext_beeh_act_func, NULL);
-		register_serv_func2("MYBCCH=?", 0, 0, 0, ext_beeh_act_func, NULL);
-		register_serv_func2("MYBCCH=", 0, 0, 0, ext_beeh_act_func, NULL);
+        register_serv_func2("MYBCCH?", 0, 0, 0, ext_beeh_act_func, NULL);
+        register_serv_func2("MYBCCH=?", 0, 0, 0, ext_beeh_act_func, NULL);
+        register_serv_func2("MYBCCH=", 0, 0, 0, ext_beeh_act_func, NULL);
 
-		register_serv_func("MYBAND=", MODULE_ID_SOCKET_PROXY, ext_myband_set_func);
-		register_serv_func("MYBAND?", MODULE_ID_SOCKET_PROXY, ext_myband_query_func);
+        register_serv_func("MYBAND=", MODULE_ID_SOCKET_PROXY, ext_myband_set_func);
+        register_serv_func("MYBAND?", MODULE_ID_SOCKET_PROXY, ext_myband_query_func);
 
-		register_serv_func2("MYNETCON?", 0, 0, 0, ext_netcon_query_func, NULL);
+        register_serv_func2("MYNETCON?", 0, 0, 0, ext_netcon_query_func, NULL);
 
-		register_serv_func("GMR", MODULE_ID_SOCKET_PROXY, ext_gmr_query_func);
-		register_serv_func2("GMR=?", 0, 0, 0, ext_gmr_func, NULL);
-	} else if (g_customer_type == CUSTOMER_NANDIAN) {
-		register_serv_func2("MYPOWEROFF", MODULE_ID_MAIN_CTRL, MSG_CMD_POWEROFF_REQUEST, MSG_CMD_POWEROFF_RSP, ext_poweroff_req, ext_poweroff_rsp);
-		register_serv_func2("MYNETCON=", MODULE_ID_SOCKET_PROXY, MSG_CMD_NETCON_REQ, MSG_CMD_NETCON_RSP, ext_netcon_req, ext_netcon_rsp);
-		register_serv_func2("MYNETCON?", 0, 0, 0, ext_netcon_query_func, NULL);
-		register_serv_func2("MYNETACT=", MODULE_ID_SOCKET_PROXY, MSG_CMD_NETACT_REQ, MSG_CMD_NETACT_RSP, ext_netact_req, ext_netact_rsp);
+        register_serv_func("GMR", MODULE_ID_SOCKET_PROXY, ext_gmr_query_func);
+        register_serv_func2("GMR=?", 0, 0, 0, ext_gmr_func, NULL);
+    }
+    else if (g_customer_type == CUSTOMER_NANDIAN)
+    {
+        register_serv_func2("MYPOWEROFF", MODULE_ID_MAIN_CTRL, MSG_CMD_POWEROFF_REQUEST, MSG_CMD_POWEROFF_RSP, ext_poweroff_req,
+                            ext_poweroff_rsp);
+        register_serv_func2("MYNETCON=", MODULE_ID_SOCKET_PROXY, MSG_CMD_NETCON_REQ, MSG_CMD_NETCON_RSP, ext_netcon_req,
+                            ext_netcon_rsp);
+        register_serv_func2("MYNETCON?", 0, 0, 0, ext_netcon_query_func, NULL);
+        register_serv_func2("MYNETACT=", MODULE_ID_SOCKET_PROXY, MSG_CMD_NETACT_REQ, MSG_CMD_NETACT_RSP, ext_netact_req,
+                            ext_netact_rsp);
 
-		register_serv_func2("MYGMR", 0, 0, 0, ext_gmr_act_func, NULL);
-		register_serv_func2("MYCCID", 0, 0, 0, ext_ccid_act_func, NULL);
+        register_serv_func2("MYGMR", 0, 0, 0, ext_gmr_act_func, NULL);
+        register_serv_func2("MYCCID", 0, 0, 0, ext_ccid_act_func, NULL);
 
-		register_serv_func2("ATI", 0, 0, 0, ext_i_act_func, NULL);
-		register_serv_func("GMR", MODULE_ID_SOCKET_PROXY, ext_gmr_query_func);
-		register_serv_func2("GMR=?", 0, 0, 0, ext_gmr_func, NULL);
+        register_serv_func2("ATI", 0, 0, 0, ext_i_act_func, NULL);
+        register_serv_func("GMR", MODULE_ID_SOCKET_PROXY, ext_gmr_query_func);
+        register_serv_func2("GMR=?", 0, 0, 0, ext_gmr_func, NULL);
 
-		register_serv_func("MYURCSYSINFO=", 0, ext_urcsysinfo_act_func);
-		register_serv_func("MYSYSINFO", MODULE_ID_SOCKET_PROXY, ext_mysysinfo_query_func);
-		register_serv_func("MYNETINFO=", MODULE_ID_SOCKET_PROXY, ext_mynetinfo_set_func);
-		register_serv_func("MYNETINFO?", MODULE_ID_SOCKET_PROXY, ext_mynetinfo_query_func);
+        register_serv_func("MYURCSYSINFO=", 0, ext_urcsysinfo_act_func);
+        register_serv_func("MYSYSINFO", MODULE_ID_SOCKET_PROXY, ext_mysysinfo_query_func);
+        register_serv_func("MYNETINFO=", MODULE_ID_SOCKET_PROXY, ext_mynetinfo_set_func);
+        register_serv_func("MYNETINFO?", MODULE_ID_SOCKET_PROXY, ext_mynetinfo_query_func);
 
-		register_inform_func("CEREG", cereg_inform_act);
-		register_inform_func("CGREG", cgreg_inform_act);
-		register_inform_func("CREG", creg_inform_act);
-		register_inform_func("MODE", mode_inform_act);
-	}
-	register_serv_func("CCLK=",0,ext_time_set_func);
-	register_serv_func("CCLK?",0,ext_time_query_func);
-	return 0;
+        register_inform_func("CEREG", cereg_inform_act);
+        register_inform_func("CGREG", cgreg_inform_act);
+        register_inform_func("CREG", creg_inform_act);
+        register_inform_func("MODE", mode_inform_act);
+    }
+    register_serv_func("CCLK=", 0, ext_time_set_func);
+    register_serv_func("CCLK?", 0, ext_time_query_func);
+
+#ifdef USE_CAP_SUPPORT
+    register_serv_func("ZNITZ?", 0, ext_nitz_query_func);
+#endif
+    return 0;
 }
 
 #endif
diff --git a/ap/lib/libcpnv/nvro.c b/ap/lib/libcpnv/nvro.c
index 0e5880c..d65b151 100755
--- a/ap/lib/libcpnv/nvro.c
+++ b/ap/lib/libcpnv/nvro.c
@@ -161,7 +161,10 @@
         return -1;
     buf = malloc(4096);
     if (buf == NULL)
+    {
+        close(fd);
         return -1;
+    }
     MD5_Init(&ctx);
     do
     {
@@ -173,6 +176,7 @@
 
     MD5_Final(hash_value, &ctx);
     free(buf);
+    close(fd);
     return 0;
 }
 
@@ -233,13 +237,17 @@
         printf("[error]cpnv erase nvrofs2\n");
         return CPNV_ERROR;
     }
-    
-    nvrofs2_umount();
+
     ret = nvrofs2_mount(1);
     if (ret != 0)
     {
-        printf("[error]cpnv nvrofs2_mount\n");
-        return CPNV_ERROR;
+        nvrofs2_umount();
+        ret = nvrofs2_mount(1);
+        if (ret != 0)
+        {
+            printf("[error]cpnv nvrofs2_mount\n");
+            return CPNV_ERROR;
+        }
     }
     ret = copyfile("/mnt/nvrofs/nvroall.bin", "/mnt/nvrofs2/nvroall.bin");
     if (ret != 0)
@@ -333,6 +341,7 @@
 
 out_err:
     nvrofs2_umount();
+    flags_set_nvroflag(NVRO_BACKED_UP);
 
     return CPNV_ERROR;
 }
diff --git a/ap/lib/liblpa/libes10.a b/ap/lib/liblpa/libes10.a
index 08d9e2d..c2c6973 100755
--- a/ap/lib/liblpa/libes10.a
+++ b/ap/lib/liblpa/libes10.a
Binary files differ
diff --git a/ap/lib/libnvram/libnvram.a b/ap/lib/libnvram/libnvram.a
index c20b9c0..a6d2cf3 100755
--- a/ap/lib/libnvram/libnvram.a
+++ b/ap/lib/libnvram/libnvram.a
Binary files differ
diff --git a/ap/lib/libnvram/libnvram_sc.a b/ap/lib/libnvram/libnvram_sc.a
index 00dd28d..81ff9c4 100755
--- a/ap/lib/libnvram/libnvram_sc.a
+++ b/ap/lib/libnvram/libnvram_sc.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/amt/amt.a b/ap/lib/libps/220A1_all/amt/amt.a
index 65ea8df..c40c905 100755
--- a/ap/lib/libps/220A1_all/amt/amt.a
+++ b/ap/lib/libps/220A1_all/amt/amt.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/appstart/appstart.a b/ap/lib/libps/220A1_all/appstart/appstart.a
index d35d459..9f34d45 100755
--- a/ap/lib/libps/220A1_all/appstart/appstart.a
+++ b/ap/lib/libps/220A1_all/appstart/appstart.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/drv/amr.a b/ap/lib/libps/220A1_all/drv/amr.a
index be6e320..29d04f9 100755
--- a/ap/lib/libps/220A1_all/drv/amr.a
+++ b/ap/lib/libps/220A1_all/drv/amr.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/drv/audio_base.a b/ap/lib/libps/220A1_all/drv/audio_base.a
index f0e5cf5..8a9c45e 100755
--- a/ap/lib/libps/220A1_all/drv/audio_base.a
+++ b/ap/lib/libps/220A1_all/drv/audio_base.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/drv/chip.a b/ap/lib/libps/220A1_all/drv/chip.a
index 9287206..807209c 100755
--- a/ap/lib/libps/220A1_all/drv/chip.a
+++ b/ap/lib/libps/220A1_all/drv/chip.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/drv/drv_sdk.a b/ap/lib/libps/220A1_all/drv/drv_sdk.a
index 1b5f717..d89afd7 100755
--- a/ap/lib/libps/220A1_all/drv/drv_sdk.a
+++ b/ap/lib/libps/220A1_all/drv/drv_sdk.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/drv/public.a b/ap/lib/libps/220A1_all/drv/public.a
index 297e54b..8fe547b 100755
--- a/ap/lib/libps/220A1_all/drv/public.a
+++ b/ap/lib/libps/220A1_all/drv/public.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/drv/webrtc.a b/ap/lib/libps/220A1_all/drv/webrtc.a
index 8034509..7a72f12 100755
--- a/ap/lib/libps/220A1_all/drv/webrtc.a
+++ b/ap/lib/libps/220A1_all/drv/webrtc.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/gsml1/dwddrv.a b/ap/lib/libps/220A1_all/gsml1/dwddrv.a
index c6f86d7..ae1193a 100755
--- a/ap/lib/libps/220A1_all/gsml1/dwddrv.a
+++ b/ap/lib/libps/220A1_all/gsml1/dwddrv.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/gsml1/l1g.a b/ap/lib/libps/220A1_all/gsml1/l1g.a
index f7bb59b..dafc783 100755
--- a/ap/lib/libps/220A1_all/gsml1/l1g.a
+++ b/ap/lib/libps/220A1_all/gsml1/l1g.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/phy/phy.a b/ap/lib/libps/220A1_all/phy/phy.a
index ac56d9f..0104456 100755
--- a/ap/lib/libps/220A1_all/phy/phy.a
+++ b/ap/lib/libps/220A1_all/phy/phy.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/plat/armv7-a/GCC/plat_osa_linux.a b/ap/lib/libps/220A1_all/plat/armv7-a/GCC/plat_osa_linux.a
index c7c8e92..18357af 100755
--- a/ap/lib/libps/220A1_all/plat/armv7-a/GCC/plat_osa_linux.a
+++ b/ap/lib/libps/220A1_all/plat/armv7-a/GCC/plat_osa_linux.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/plat/armv7-a/GCC/plat_psm.a b/ap/lib/libps/220A1_all/plat/armv7-a/GCC/plat_psm.a
index 28c472c..99f509c 100755
--- a/ap/lib/libps/220A1_all/plat/armv7-a/GCC/plat_psm.a
+++ b/ap/lib/libps/220A1_all/plat/armv7-a/GCC/plat_psm.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/plat/armv7-a/GCC/plat_sup.a b/ap/lib/libps/220A1_all/plat/armv7-a/GCC/plat_sup.a
index 091090f..c33fb80 100755
--- a/ap/lib/libps/220A1_all/plat/armv7-a/GCC/plat_sup.a
+++ b/ap/lib/libps/220A1_all/plat/armv7-a/GCC/plat_sup.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/plat/plat_osa_linux.a b/ap/lib/libps/220A1_all/plat/plat_osa_linux.a
index c7c8e92..18357af 100755
--- a/ap/lib/libps/220A1_all/plat/plat_osa_linux.a
+++ b/ap/lib/libps/220A1_all/plat/plat_osa_linux.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/plat/plat_psm.a b/ap/lib/libps/220A1_all/plat/plat_psm.a
index 28c472c..99f509c 100755
--- a/ap/lib/libps/220A1_all/plat/plat_psm.a
+++ b/ap/lib/libps/220A1_all/plat/plat_psm.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/plat/plat_sup.a b/ap/lib/libps/220A1_all/plat/plat_sup.a
index 091090f..c33fb80 100755
--- a/ap/lib/libps/220A1_all/plat/plat_sup.a
+++ b/ap/lib/libps/220A1_all/plat/plat_sup.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ps/as_com.a b/ap/lib/libps/220A1_all/ps/as_com.a
index 960e5be..99e54d2 100755
--- a/ap/lib/libps/220A1_all/ps/as_com.a
+++ b/ap/lib/libps/220A1_all/ps/as_com.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ps/as_gsm.a b/ap/lib/libps/220A1_all/ps/as_gsm.a
index 878a43e..40103ff 100755
--- a/ap/lib/libps/220A1_all/ps/as_gsm.a
+++ b/ap/lib/libps/220A1_all/ps/as_gsm.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ps/ati.a b/ap/lib/libps/220A1_all/ps/ati.a
index 213c557..4516155 100755
--- a/ap/lib/libps/220A1_all/ps/ati.a
+++ b/ap/lib/libps/220A1_all/ps/ati.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ps/com.a b/ap/lib/libps/220A1_all/ps/com.a
index 433ba68..3622ec4 100755
--- a/ap/lib/libps/220A1_all/ps/com.a
+++ b/ap/lib/libps/220A1_all/ps/com.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ps/el2_up.a b/ap/lib/libps/220A1_all/ps/el2_up.a
index a916285..533c004 100755
--- a/ap/lib/libps/220A1_all/ps/el2_up.a
+++ b/ap/lib/libps/220A1_all/ps/el2_up.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ps/eudbg.a b/ap/lib/libps/220A1_all/ps/eudbg.a
index 8e0b34d..39e103d 100755
--- a/ap/lib/libps/220A1_all/ps/eudbg.a
+++ b/ap/lib/libps/220A1_all/ps/eudbg.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ps/eurrc.a b/ap/lib/libps/220A1_all/ps/eurrc.a
index baecb85..d9c7c7f 100755
--- a/ap/lib/libps/220A1_all/ps/eurrc.a
+++ b/ap/lib/libps/220A1_all/ps/eurrc.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ps/l1e.a b/ap/lib/libps/220A1_all/ps/l1e.a
index 3793c6c..5e38b0c 100755
--- a/ap/lib/libps/220A1_all/ps/l1e.a
+++ b/ap/lib/libps/220A1_all/ps/l1e.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ps/nas.a b/ap/lib/libps/220A1_all/ps/nas.a
index 5cbb2d3..2f94fc4 100755
--- a/ap/lib/libps/220A1_all/ps/nas.a
+++ b/ap/lib/libps/220A1_all/ps/nas.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ps/ul1t.a b/ap/lib/libps/220A1_all/ps/ul1t.a
index 5a42e34..7d12f17 100755
--- a/ap/lib/libps/220A1_all/ps/ul1t.a
+++ b/ap/lib/libps/220A1_all/ps/ul1t.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ps/ul2_up.a b/ap/lib/libps/220A1_all/ps/ul2_up.a
index 43a16d8..c426174 100755
--- a/ap/lib/libps/220A1_all/ps/ul2_up.a
+++ b/ap/lib/libps/220A1_all/ps/ul2_up.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ps/urrc.a b/ap/lib/libps/220A1_all/ps/urrc.a
index e3eabfd..061fedc 100755
--- a/ap/lib/libps/220A1_all/ps/urrc.a
+++ b/ap/lib/libps/220A1_all/ps/urrc.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ps/wl1w.a b/ap/lib/libps/220A1_all/ps/wl1w.a
index c9d19f1..8377247 100755
--- a/ap/lib/libps/220A1_all/ps/wl1w.a
+++ b/ap/lib/libps/220A1_all/ps/wl1w.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ps/wl2_up.a b/ap/lib/libps/220A1_all/ps/wl2_up.a
index 0c21303..f7f2838 100755
--- a/ap/lib/libps/220A1_all/ps/wl2_up.a
+++ b/ap/lib/libps/220A1_all/ps/wl2_up.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/psbase/base.a b/ap/lib/libps/220A1_all/psbase/base.a
index 924ca51..2760110 100755
--- a/ap/lib/libps/220A1_all/psbase/base.a
+++ b/ap/lib/libps/220A1_all/psbase/base.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ref/com.a b/ap/lib/libps/220A1_all/ref/com.a
index 923c783..a5761bd 100755
--- a/ap/lib/libps/220A1_all/ref/com.a
+++ b/ap/lib/libps/220A1_all/ref/com.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/ref/ref_drv.a b/ap/lib/libps/220A1_all/ref/ref_drv.a
index 488ca0e..29682e3 100755
--- a/ap/lib/libps/220A1_all/ref/ref_drv.a
+++ b/ap/lib/libps/220A1_all/ref/ref_drv.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/tools/tools.a b/ap/lib/libps/220A1_all/tools/tools.a
index d4723e4..880cc4d 100755
--- a/ap/lib/libps/220A1_all/tools/tools.a
+++ b/ap/lib/libps/220A1_all/tools/tools.a
Binary files differ
diff --git a/ap/lib/libps/220A1_all/usat/usat.a b/ap/lib/libps/220A1_all/usat/usat.a
index d0835e9..72ff8d2 100755
--- a/ap/lib/libps/220A1_all/usat/usat.a
+++ b/ap/lib/libps/220A1_all/usat/usat.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/amt/amt.a b/ap/lib/libps/220A1_vehicle_dc/amt/amt.a
index 356b54f..388081f 100755
--- a/ap/lib/libps/220A1_vehicle_dc/amt/amt.a
+++ b/ap/lib/libps/220A1_vehicle_dc/amt/amt.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/appstart/appstart.a b/ap/lib/libps/220A1_vehicle_dc/appstart/appstart.a
index 6bfadee..426d5d3 100755
--- a/ap/lib/libps/220A1_vehicle_dc/appstart/appstart.a
+++ b/ap/lib/libps/220A1_vehicle_dc/appstart/appstart.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/drv/amr.a b/ap/lib/libps/220A1_vehicle_dc/drv/amr.a
index e1f4f7d..8b9290a 100755
--- a/ap/lib/libps/220A1_vehicle_dc/drv/amr.a
+++ b/ap/lib/libps/220A1_vehicle_dc/drv/amr.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/drv/audio_base.a b/ap/lib/libps/220A1_vehicle_dc/drv/audio_base.a
index 5b7727c..30104c7 100755
--- a/ap/lib/libps/220A1_vehicle_dc/drv/audio_base.a
+++ b/ap/lib/libps/220A1_vehicle_dc/drv/audio_base.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/drv/chip.a b/ap/lib/libps/220A1_vehicle_dc/drv/chip.a
index 9bcfd0b..79e6301 100755
--- a/ap/lib/libps/220A1_vehicle_dc/drv/chip.a
+++ b/ap/lib/libps/220A1_vehicle_dc/drv/chip.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/drv/drv_sdk.a b/ap/lib/libps/220A1_vehicle_dc/drv/drv_sdk.a
index de99f86..67e061e 100755
--- a/ap/lib/libps/220A1_vehicle_dc/drv/drv_sdk.a
+++ b/ap/lib/libps/220A1_vehicle_dc/drv/drv_sdk.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/drv/public.a b/ap/lib/libps/220A1_vehicle_dc/drv/public.a
index 4ee66c7..72e0097 100755
--- a/ap/lib/libps/220A1_vehicle_dc/drv/public.a
+++ b/ap/lib/libps/220A1_vehicle_dc/drv/public.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/drv/webrtc.a b/ap/lib/libps/220A1_vehicle_dc/drv/webrtc.a
index 2a1ec6e..254459c 100755
--- a/ap/lib/libps/220A1_vehicle_dc/drv/webrtc.a
+++ b/ap/lib/libps/220A1_vehicle_dc/drv/webrtc.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/gsml1/dwddrv.a b/ap/lib/libps/220A1_vehicle_dc/gsml1/dwddrv.a
index cf507ae..86c9963 100755
--- a/ap/lib/libps/220A1_vehicle_dc/gsml1/dwddrv.a
+++ b/ap/lib/libps/220A1_vehicle_dc/gsml1/dwddrv.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/gsml1/l1g.a b/ap/lib/libps/220A1_vehicle_dc/gsml1/l1g.a
index f88e23d..af191a8 100755
--- a/ap/lib/libps/220A1_vehicle_dc/gsml1/l1g.a
+++ b/ap/lib/libps/220A1_vehicle_dc/gsml1/l1g.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/optee/optee_crypto.a b/ap/lib/libps/220A1_vehicle_dc/optee/optee_crypto.a
index 7de5cbb..1150e1e 100755
--- a/ap/lib/libps/220A1_vehicle_dc/optee/optee_crypto.a
+++ b/ap/lib/libps/220A1_vehicle_dc/optee/optee_crypto.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/optee/optee_mbedtls.a b/ap/lib/libps/220A1_vehicle_dc/optee/optee_mbedtls.a
index 37e0e46..e043cc2 100755
--- a/ap/lib/libps/220A1_vehicle_dc/optee/optee_mbedtls.a
+++ b/ap/lib/libps/220A1_vehicle_dc/optee/optee_mbedtls.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/optee/optee_ta.a b/ap/lib/libps/220A1_vehicle_dc/optee/optee_ta.a
index c5a2239..6aec1d5 100755
--- a/ap/lib/libps/220A1_vehicle_dc/optee/optee_ta.a
+++ b/ap/lib/libps/220A1_vehicle_dc/optee/optee_ta.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/optee/optee_tee.a b/ap/lib/libps/220A1_vehicle_dc/optee/optee_tee.a
index c97b3b1..dc0fcb5 100755
--- a/ap/lib/libps/220A1_vehicle_dc/optee/optee_tee.a
+++ b/ap/lib/libps/220A1_vehicle_dc/optee/optee_tee.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/optee/optee_tomcrypt.a b/ap/lib/libps/220A1_vehicle_dc/optee/optee_tomcrypt.a
index 74bc070..52cb264 100755
--- a/ap/lib/libps/220A1_vehicle_dc/optee/optee_tomcrypt.a
+++ b/ap/lib/libps/220A1_vehicle_dc/optee/optee_tomcrypt.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/optee/optee_utee.a b/ap/lib/libps/220A1_vehicle_dc/optee/optee_utee.a
index 24aa11d..f8d97b7 100755
--- a/ap/lib/libps/220A1_vehicle_dc/optee/optee_utee.a
+++ b/ap/lib/libps/220A1_vehicle_dc/optee/optee_utee.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/optee/optee_utils.a b/ap/lib/libps/220A1_vehicle_dc/optee/optee_utils.a
index 35bd5ad..efdecaf 100755
--- a/ap/lib/libps/220A1_vehicle_dc/optee/optee_utils.a
+++ b/ap/lib/libps/220A1_vehicle_dc/optee/optee_utils.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/phy/phy.a b/ap/lib/libps/220A1_vehicle_dc/phy/phy.a
index aa8ee37..47f1856 100755
--- a/ap/lib/libps/220A1_vehicle_dc/phy/phy.a
+++ b/ap/lib/libps/220A1_vehicle_dc/phy/phy.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_osa_linux.a b/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_osa_linux.a
index 73bb587..274a65c 100755
--- a/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_osa_linux.a
+++ b/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_osa_linux.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_psm.a b/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_psm.a
index 3e76dad..feb2a64 100755
--- a/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_psm.a
+++ b/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_psm.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_sup.a b/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_sup.a
index f3a631f..b75fe66 100755
--- a/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_sup.a
+++ b/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_sup.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/plat/plat_osa_linux.a b/ap/lib/libps/220A1_vehicle_dc/plat/plat_osa_linux.a
index 73bb587..274a65c 100755
--- a/ap/lib/libps/220A1_vehicle_dc/plat/plat_osa_linux.a
+++ b/ap/lib/libps/220A1_vehicle_dc/plat/plat_osa_linux.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/plat/plat_psm.a b/ap/lib/libps/220A1_vehicle_dc/plat/plat_psm.a
index 3e76dad..feb2a64 100755
--- a/ap/lib/libps/220A1_vehicle_dc/plat/plat_psm.a
+++ b/ap/lib/libps/220A1_vehicle_dc/plat/plat_psm.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/plat/plat_sup.a b/ap/lib/libps/220A1_vehicle_dc/plat/plat_sup.a
index f3a631f..b75fe66 100755
--- a/ap/lib/libps/220A1_vehicle_dc/plat/plat_sup.a
+++ b/ap/lib/libps/220A1_vehicle_dc/plat/plat_sup.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/as_com.a b/ap/lib/libps/220A1_vehicle_dc/ps/as_com.a
index b3a700c..d2eac00 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/as_com.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/as_com.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/as_gsm.a b/ap/lib/libps/220A1_vehicle_dc/ps/as_gsm.a
index 1c12699..f3a60a1 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/as_gsm.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/as_gsm.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/ati.a b/ap/lib/libps/220A1_vehicle_dc/ps/ati.a
index a8da68e..42ff8f4 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/ati.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/ati.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/com.a b/ap/lib/libps/220A1_vehicle_dc/ps/com.a
index 8fe2747..5b724d5 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/com.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/com.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/el2_up.a b/ap/lib/libps/220A1_vehicle_dc/ps/el2_up.a
index 03228d3..00349db 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/el2_up.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/el2_up.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/eudbg.a b/ap/lib/libps/220A1_vehicle_dc/ps/eudbg.a
index 217e24c..bddab37 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/eudbg.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/eudbg.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/eurrc.a b/ap/lib/libps/220A1_vehicle_dc/ps/eurrc.a
index d2e5e86..c0d9cbe 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/eurrc.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/eurrc.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/l1e.a b/ap/lib/libps/220A1_vehicle_dc/ps/l1e.a
index ee156be..2056f76 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/l1e.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/l1e.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/nas.a b/ap/lib/libps/220A1_vehicle_dc/ps/nas.a
index 845b97c..ff8b952 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/nas.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/nas.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/ul1t.a b/ap/lib/libps/220A1_vehicle_dc/ps/ul1t.a
index 86b3182..5f0a556 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/ul1t.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/ul1t.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/ul2_up.a b/ap/lib/libps/220A1_vehicle_dc/ps/ul2_up.a
index a7e53d2..065c870 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/ul2_up.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/ul2_up.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/urrc.a b/ap/lib/libps/220A1_vehicle_dc/ps/urrc.a
index 84a83f4..a37e57d 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/urrc.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/urrc.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/wl1w.a b/ap/lib/libps/220A1_vehicle_dc/ps/wl1w.a
index 0160f49..adf5be7 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/wl1w.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/wl1w.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/wl2_up.a b/ap/lib/libps/220A1_vehicle_dc/ps/wl2_up.a
index 6f93ee2..fc2105c 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/wl2_up.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/wl2_up.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/psbase/base.a b/ap/lib/libps/220A1_vehicle_dc/psbase/base.a
index 4055510..3e270fc 100755
--- a/ap/lib/libps/220A1_vehicle_dc/psbase/base.a
+++ b/ap/lib/libps/220A1_vehicle_dc/psbase/base.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ref/com.a b/ap/lib/libps/220A1_vehicle_dc/ref/com.a
index 3209335..0086a31 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ref/com.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ref/com.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ref/ref_drv.a b/ap/lib/libps/220A1_vehicle_dc/ref/ref_drv.a
index 3b55b05..b6f5be6 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ref/ref_drv.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ref/ref_drv.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/tools/tools.a b/ap/lib/libps/220A1_vehicle_dc/tools/tools.a
index 2d1bf89..97c079f 100755
--- a/ap/lib/libps/220A1_vehicle_dc/tools/tools.a
+++ b/ap/lib/libps/220A1_vehicle_dc/tools/tools.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/usat/usat.a b/ap/lib/libps/220A1_vehicle_dc/usat/usat.a
index b7e083e..cc364d5 100755
--- a/ap/lib/libps/220A1_vehicle_dc/usat/usat.a
+++ b/ap/lib/libps/220A1_vehicle_dc/usat/usat.a
Binary files differ
diff --git a/ap/lib/libsoft_timer/libsoft_timer.a b/ap/lib/libsoft_timer/libsoft_timer.a
index d1d5604..b14bf5e 100755
--- a/ap/lib/libsoft_timer/libsoft_timer.a
+++ b/ap/lib/libsoft_timer/libsoft_timer.a
Binary files differ
diff --git a/ap/lib/libsoft_timer/libsoft_timer_sc.a b/ap/lib/libsoft_timer/libsoft_timer_sc.a
index 6836797..d078ac1 100755
--- a/ap/lib/libsoft_timer/libsoft_timer_sc.a
+++ b/ap/lib/libsoft_timer/libsoft_timer_sc.a
Binary files differ
diff --git a/ap/lib/libupi_ab/libupi_ab.a b/ap/lib/libupi_ab/libupi_ab.a
index bbe62f7..3422866 100755
--- a/ap/lib/libupi_ab/libupi_ab.a
+++ b/ap/lib/libupi_ab/libupi_ab.a
Binary files differ
diff --git a/ap/lib/libzcore/min/libbitmap_font.a b/ap/lib/libzcore/min/libbitmap_font.a
index 88b2fd0..7f6bf96 100755
--- a/ap/lib/libzcore/min/libbitmap_font.a
+++ b/ap/lib/libzcore/min/libbitmap_font.a
Binary files differ
diff --git a/ap/lib/libzcore/min/libttf_font.a b/ap/lib/libzcore/min/libttf_font.a
index d74ebd6..0378d33 100755
--- a/ap/lib/libzcore/min/libttf_font.a
+++ b/ap/lib/libzcore/min/libttf_font.a
Binary files differ
diff --git a/ap/lib/libzcore/min/libzcore.a b/ap/lib/libzcore/min/libzcore.a
index 7d9f8ec..7749113 100755
--- a/ap/lib/libzcore/min/libzcore.a
+++ b/ap/lib/libzcore/min/libzcore.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/fwp/app_fw.a b/ap/lib/libzcore/std/lib/lib/fwp/app_fw.a
index 282d046..b946bea 100755
--- a/ap/lib/libzcore/std/lib/lib/fwp/app_fw.a
+++ b/ap/lib/libzcore/std/lib/lib/fwp/app_fw.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/fwp/bl_psa.a b/ap/lib/libzcore/std/lib/lib/fwp/bl_psa.a
index 48bae68..9f690be 100755
--- a/ap/lib/libzcore/std/lib/lib/fwp/bl_psa.a
+++ b/ap/lib/libzcore/std/lib/lib/fwp/bl_psa.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/fwp/bl_svr.a b/ap/lib/libzcore/std/lib/lib/fwp/bl_svr.a
index a585b7f..158e5ed 100755
--- a/ap/lib/libzcore/std/lib/lib/fwp/bl_svr.a
+++ b/ap/lib/libzcore/std/lib/lib/fwp/bl_svr.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/fwp/font/libbitmap_font.a b/ap/lib/libzcore/std/lib/lib/fwp/font/libbitmap_font.a
index dc5a6d2..aa31446 100755
--- a/ap/lib/libzcore/std/lib/lib/fwp/font/libbitmap_font.a
+++ b/ap/lib/libzcore/std/lib/lib/fwp/font/libbitmap_font.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/fwp/font/libttf_font.a b/ap/lib/libzcore/std/lib/lib/fwp/font/libttf_font.a
index b7bbf84..61794dd 100755
--- a/ap/lib/libzcore/std/lib/lib/fwp/font/libttf_font.a
+++ b/ap/lib/libzcore/std/lib/lib/fwp/font/libttf_font.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/fwp/framework.a b/ap/lib/libzcore/std/lib/lib/fwp/framework.a
index 83f986e..10f5b77 100755
--- a/ap/lib/libzcore/std/lib/lib/fwp/framework.a
+++ b/ap/lib/libzcore/std/lib/lib/fwp/framework.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/fwp/fwkernel.a b/ap/lib/libzcore/std/lib/lib/fwp/fwkernel.a
index 68167da..4f8aaf7 100755
--- a/ap/lib/libzcore/std/lib/lib/fwp/fwkernel.a
+++ b/ap/lib/libzcore/std/lib/lib/fwp/fwkernel.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/fwp/gui.a b/ap/lib/libzcore/std/lib/lib/fwp/gui.a
index a4a9113..5a74d95 100755
--- a/ap/lib/libzcore/std/lib/lib/fwp/gui.a
+++ b/ap/lib/libzcore/std/lib/lib/fwp/gui.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/fwp/msm.a b/ap/lib/libzcore/std/lib/lib/fwp/msm.a
index a99d966..34779bb 100755
--- a/ap/lib/libzcore/std/lib/lib/fwp/msm.a
+++ b/ap/lib/libzcore/std/lib/lib/fwp/msm.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/fwp/ui_fw.a b/ap/lib/libzcore/std/lib/lib/fwp/ui_fw.a
index 29e92c1..81c72b4 100755
--- a/ap/lib/libzcore/std/lib/lib/fwp/ui_fw.a
+++ b/ap/lib/libzcore/std/lib/lib/fwp/ui_fw.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/libplatadapt_com.a b/ap/lib/libzcore/std/lib/lib/libplatadapt_com.a
index b060eea..965473b 100755
--- a/ap/lib/libzcore/std/lib/lib/libplatadapt_com.a
+++ b/ap/lib/libzcore/std/lib/lib/libplatadapt_com.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/libplatadapt_fwp.a b/ap/lib/libzcore/std/lib/lib/libplatadapt_fwp.a
index 3d931b8..303e655 100755
--- a/ap/lib/libzcore/std/lib/lib/libplatadapt_fwp.a
+++ b/ap/lib/libzcore/std/lib/lib/libplatadapt_fwp.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/libplatadapt_phone.a b/ap/lib/libzcore/std/lib/lib/libplatadapt_phone.a
index c39dfba..f171fbb 100755
--- a/ap/lib/libzcore/std/lib/lib/libplatadapt_phone.a
+++ b/ap/lib/libzcore/std/lib/lib/libplatadapt_phone.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/libplatadapt_poc.a b/ap/lib/libzcore/std/lib/lib/libplatadapt_poc.a
index 174a3ca..578d840 100755
--- a/ap/lib/libzcore/std/lib/lib/libplatadapt_poc.a
+++ b/ap/lib/libzcore/std/lib/lib/libplatadapt_poc.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/libplatadapt_watch.a b/ap/lib/libzcore/std/lib/lib/libplatadapt_watch.a
index d4a8b6e..7d7d6ab 100755
--- a/ap/lib/libzcore/std/lib/lib/libplatadapt_watch.a
+++ b/ap/lib/libzcore/std/lib/lib/libplatadapt_watch.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/libzcore_fwp.a b/ap/lib/libzcore/std/lib/lib/libzcore_fwp.a
index 802e655..eddf47f 100755
--- a/ap/lib/libzcore/std/lib/lib/libzcore_fwp.a
+++ b/ap/lib/libzcore/std/lib/lib/libzcore_fwp.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/libzcore_phone.a b/ap/lib/libzcore/std/lib/lib/libzcore_phone.a
index e9e6b7e..9732336 100755
--- a/ap/lib/libzcore/std/lib/lib/libzcore_phone.a
+++ b/ap/lib/libzcore/std/lib/lib/libzcore_phone.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/libzcore_poc.a b/ap/lib/libzcore/std/lib/lib/libzcore_poc.a
index 8b53ddf..2c6457c 100755
--- a/ap/lib/libzcore/std/lib/lib/libzcore_poc.a
+++ b/ap/lib/libzcore/std/lib/lib/libzcore_poc.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/libzcore_watch.a b/ap/lib/libzcore/std/lib/lib/libzcore_watch.a
index 73488ba..b49ca21 100755
--- a/ap/lib/libzcore/std/lib/lib/libzcore_watch.a
+++ b/ap/lib/libzcore/std/lib/lib/libzcore_watch.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/phone/app_fw.a b/ap/lib/libzcore/std/lib/lib/phone/app_fw.a
index b8ea9c5..7b43935 100755
--- a/ap/lib/libzcore/std/lib/lib/phone/app_fw.a
+++ b/ap/lib/libzcore/std/lib/lib/phone/app_fw.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/phone/bl_psa.a b/ap/lib/libzcore/std/lib/lib/phone/bl_psa.a
index 5dad6a8..2fde4da 100755
--- a/ap/lib/libzcore/std/lib/lib/phone/bl_psa.a
+++ b/ap/lib/libzcore/std/lib/lib/phone/bl_psa.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/phone/bl_svr.a b/ap/lib/libzcore/std/lib/lib/phone/bl_svr.a
index 0f9eb02..7d44148 100755
--- a/ap/lib/libzcore/std/lib/lib/phone/bl_svr.a
+++ b/ap/lib/libzcore/std/lib/lib/phone/bl_svr.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/phone/font/libbitmap_font.a b/ap/lib/libzcore/std/lib/lib/phone/font/libbitmap_font.a
index a4e04d9..8a603c3 100755
--- a/ap/lib/libzcore/std/lib/lib/phone/font/libbitmap_font.a
+++ b/ap/lib/libzcore/std/lib/lib/phone/font/libbitmap_font.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/phone/font/libttf_font.a b/ap/lib/libzcore/std/lib/lib/phone/font/libttf_font.a
index 88badc3..3584887 100755
--- a/ap/lib/libzcore/std/lib/lib/phone/font/libttf_font.a
+++ b/ap/lib/libzcore/std/lib/lib/phone/font/libttf_font.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/phone/framework.a b/ap/lib/libzcore/std/lib/lib/phone/framework.a
index f7f5e35..39e3b5f 100755
--- a/ap/lib/libzcore/std/lib/lib/phone/framework.a
+++ b/ap/lib/libzcore/std/lib/lib/phone/framework.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/phone/fwkernel.a b/ap/lib/libzcore/std/lib/lib/phone/fwkernel.a
index 2cedb8a..ddf4926 100755
--- a/ap/lib/libzcore/std/lib/lib/phone/fwkernel.a
+++ b/ap/lib/libzcore/std/lib/lib/phone/fwkernel.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/phone/gui.a b/ap/lib/libzcore/std/lib/lib/phone/gui.a
index 2e7d209..9beb798 100755
--- a/ap/lib/libzcore/std/lib/lib/phone/gui.a
+++ b/ap/lib/libzcore/std/lib/lib/phone/gui.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/phone/msm.a b/ap/lib/libzcore/std/lib/lib/phone/msm.a
index 1a14c5e..d41491b 100755
--- a/ap/lib/libzcore/std/lib/lib/phone/msm.a
+++ b/ap/lib/libzcore/std/lib/lib/phone/msm.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/phone/ui_fw.a b/ap/lib/libzcore/std/lib/lib/phone/ui_fw.a
index 2c0ec30..a06be8b 100755
--- a/ap/lib/libzcore/std/lib/lib/phone/ui_fw.a
+++ b/ap/lib/libzcore/std/lib/lib/phone/ui_fw.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/poc/app_fw.a b/ap/lib/libzcore/std/lib/lib/poc/app_fw.a
index e8fc069..bc094bc 100755
--- a/ap/lib/libzcore/std/lib/lib/poc/app_fw.a
+++ b/ap/lib/libzcore/std/lib/lib/poc/app_fw.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/poc/bl_psa.a b/ap/lib/libzcore/std/lib/lib/poc/bl_psa.a
index deee181..e86a275 100755
--- a/ap/lib/libzcore/std/lib/lib/poc/bl_psa.a
+++ b/ap/lib/libzcore/std/lib/lib/poc/bl_psa.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/poc/bl_svr.a b/ap/lib/libzcore/std/lib/lib/poc/bl_svr.a
index 48898d9..ba68e10 100755
--- a/ap/lib/libzcore/std/lib/lib/poc/bl_svr.a
+++ b/ap/lib/libzcore/std/lib/lib/poc/bl_svr.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/poc/font/libbitmap_font.a b/ap/lib/libzcore/std/lib/lib/poc/font/libbitmap_font.a
index 2beb3ef..c5fa9f8 100755
--- a/ap/lib/libzcore/std/lib/lib/poc/font/libbitmap_font.a
+++ b/ap/lib/libzcore/std/lib/lib/poc/font/libbitmap_font.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/poc/font/libttf_font.a b/ap/lib/libzcore/std/lib/lib/poc/font/libttf_font.a
index d244f5a..23b31a8 100755
--- a/ap/lib/libzcore/std/lib/lib/poc/font/libttf_font.a
+++ b/ap/lib/libzcore/std/lib/lib/poc/font/libttf_font.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/poc/framework.a b/ap/lib/libzcore/std/lib/lib/poc/framework.a
index ea6c4f9..b67bb6b 100755
--- a/ap/lib/libzcore/std/lib/lib/poc/framework.a
+++ b/ap/lib/libzcore/std/lib/lib/poc/framework.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/poc/fwkernel.a b/ap/lib/libzcore/std/lib/lib/poc/fwkernel.a
index 64dcfc8..8329172 100755
--- a/ap/lib/libzcore/std/lib/lib/poc/fwkernel.a
+++ b/ap/lib/libzcore/std/lib/lib/poc/fwkernel.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/poc/gui.a b/ap/lib/libzcore/std/lib/lib/poc/gui.a
index a67c529..41f9b43 100755
--- a/ap/lib/libzcore/std/lib/lib/poc/gui.a
+++ b/ap/lib/libzcore/std/lib/lib/poc/gui.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/poc/msm.a b/ap/lib/libzcore/std/lib/lib/poc/msm.a
index ac866f7..1e62afc 100755
--- a/ap/lib/libzcore/std/lib/lib/poc/msm.a
+++ b/ap/lib/libzcore/std/lib/lib/poc/msm.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/poc/ui_fw.a b/ap/lib/libzcore/std/lib/lib/poc/ui_fw.a
index 23bb1a3..fa13f54 100755
--- a/ap/lib/libzcore/std/lib/lib/poc/ui_fw.a
+++ b/ap/lib/libzcore/std/lib/lib/poc/ui_fw.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/watch/app_fw.a b/ap/lib/libzcore/std/lib/lib/watch/app_fw.a
index 96e0e3c..964b150 100755
--- a/ap/lib/libzcore/std/lib/lib/watch/app_fw.a
+++ b/ap/lib/libzcore/std/lib/lib/watch/app_fw.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/watch/bl_psa.a b/ap/lib/libzcore/std/lib/lib/watch/bl_psa.a
index bbf5612..218339f 100755
--- a/ap/lib/libzcore/std/lib/lib/watch/bl_psa.a
+++ b/ap/lib/libzcore/std/lib/lib/watch/bl_psa.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/watch/bl_svr.a b/ap/lib/libzcore/std/lib/lib/watch/bl_svr.a
index c0fea40..6f991f1 100755
--- a/ap/lib/libzcore/std/lib/lib/watch/bl_svr.a
+++ b/ap/lib/libzcore/std/lib/lib/watch/bl_svr.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/watch/font/libbitmap_font.a b/ap/lib/libzcore/std/lib/lib/watch/font/libbitmap_font.a
index fa94ac9..5249e6b 100755
--- a/ap/lib/libzcore/std/lib/lib/watch/font/libbitmap_font.a
+++ b/ap/lib/libzcore/std/lib/lib/watch/font/libbitmap_font.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/watch/font/libttf_font.a b/ap/lib/libzcore/std/lib/lib/watch/font/libttf_font.a
index ffc0ae4..5a5e179 100755
--- a/ap/lib/libzcore/std/lib/lib/watch/font/libttf_font.a
+++ b/ap/lib/libzcore/std/lib/lib/watch/font/libttf_font.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/watch/framework.a b/ap/lib/libzcore/std/lib/lib/watch/framework.a
index b5951a6..444a90d 100755
--- a/ap/lib/libzcore/std/lib/lib/watch/framework.a
+++ b/ap/lib/libzcore/std/lib/lib/watch/framework.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/watch/fwkernel.a b/ap/lib/libzcore/std/lib/lib/watch/fwkernel.a
index 2f07441..8c0e6fd 100755
--- a/ap/lib/libzcore/std/lib/lib/watch/fwkernel.a
+++ b/ap/lib/libzcore/std/lib/lib/watch/fwkernel.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/watch/gui.a b/ap/lib/libzcore/std/lib/lib/watch/gui.a
index e684fa6..f51f088 100755
--- a/ap/lib/libzcore/std/lib/lib/watch/gui.a
+++ b/ap/lib/libzcore/std/lib/lib/watch/gui.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/watch/msm.a b/ap/lib/libzcore/std/lib/lib/watch/msm.a
index 389f37d..7d30d19 100755
--- a/ap/lib/libzcore/std/lib/lib/watch/msm.a
+++ b/ap/lib/libzcore/std/lib/lib/watch/msm.a
Binary files differ
diff --git a/ap/lib/libzcore/std/lib/lib/watch/ui_fw.a b/ap/lib/libzcore/std/lib/lib/watch/ui_fw.a
index ce9f2d5..6b82283 100755
--- a/ap/lib/libzcore/std/lib/lib/watch/ui_fw.a
+++ b/ap/lib/libzcore/std/lib/lib/watch/ui_fw.a
Binary files differ
diff --git a/ap/lib/libzte_vsim/libzte_vsim.a b/ap/lib/libzte_vsim/libzte_vsim.a
index 4838644..8322384 100755
--- a/ap/lib/libzte_vsim/libzte_vsim.a
+++ b/ap/lib/libzte_vsim/libzte_vsim.a
Binary files differ