[Feature][S300AI][task-view-1715][app] add s300 app

Change-Id: Ifdc29666a80c46ec30ab5cadfcbdf4644ffa9ed7
diff --git a/lynq/S300AI/ap/app/Script/scripts/lan.sh b/lynq/S300AI/ap/app/Script/scripts/lan.sh
index 407c47b..b4915a7 100755
--- a/lynq/S300AI/ap/app/Script/scripts/lan.sh
+++ b/lynq/S300AI/ap/app/Script/scripts/lan.sh
@@ -48,6 +48,14 @@
     IFS="+"
     for device in $br_node
     do
+        # youchen@2024-09-07 temp fix choke when boot without eth phy, begin
+        if [ "$device" == "eth0" ]; then
+	    eth_state=`cat /sys/gmac/gmacconfig/eth_phy_state`
+	    if [ "$eth_state" != "1" ]; then
+                continue
+	    fi
+	fi
+        # youchen@2024-09-07 temp fix choke when boot without eth phy, end
         ifconfig $device up
         
         brctl addif $br_name $device 2>>$test_log
diff --git a/lynq/S300AI/ap/app/goahead/interface5.0/zte_web_mgmt.c b/lynq/S300AI/ap/app/goahead/interface5.0/zte_web_mgmt.c
index 3194dc4..cbb5143 100755
--- a/lynq/S300AI/ap/app/goahead/interface5.0/zte_web_mgmt.c
+++ b/lynq/S300AI/ap/app/goahead/interface5.0/zte_web_mgmt.c
@@ -165,31 +165,6 @@
 		return;
 	}
 
-	if (user != NULL) {
-		slog(MISC_PRINT, SLOG_DEBUG," zte_mgmt_login  user = %s\n", user);
-		pUser = (char *)zte_base64_decode((const unsigned char *)user, strlen(user), (unsigned int*)&user_name_len);
-		if (NULL == pUser) {
-			zte_write_result_to_web(wp, LOGIN_FAIL);
-			return;
-		}
-
-		//strncpy(user_name, pUser, user_name_len);
-		if(user_name_len < sizeof(user_name))
-			snprintf(user_name,user_name_len+1,"%s",pUser);
-		else
-			snprintf(user_name,sizeof(user_name),"%s",pUser);
-		free(pUser);
-
-		slog(MISC_PRINT, SLOG_DEBUG," zte_mgmt_login  user_name = %s\n", user_name);
-		cfg_get_item("admin_user", buf, sizeof(buf));
-		if (0 != strcmp(user_name, buf)) {
-			slog(MISC_PRINT, SLOG_ERR," zte_mgmt_login user_name fail \n");
-			zte_write_result_to_web(wp, LOGIN_USER_NAME_NOT_EXSIT);
-			return;
-		}
-		slog(MISC_PRINT, SLOG_DEBUG," zte_mgmt_login uername correct \n");
-	}
-	slog(MISC_PRINT, SLOG_DEBUG,"[login] login1 -> zte_password_encode:%s.\n", psw); /*lint !e26*/
 #ifdef WEBS_SECURITY
 	zte_password = js_aes_decode(psw, strlen(psw), (unsigned int*)&zte_password_len);
 #else
@@ -218,6 +193,33 @@
 		return;
 	}
 
+	if (user != NULL) {
+		slog(MISC_PRINT, SLOG_DEBUG," zte_mgmt_login  user = %s\n", user);
+		pUser = (char *)zte_base64_decode((const unsigned char *)user, strlen(user), (unsigned int*)&user_name_len);
+		if (NULL == pUser) {
+			zte_write_result_to_web(wp, LOGIN_FAIL);
+			return;
+		}
+
+		//strncpy(user_name, pUser, user_name_len);
+		if(user_name_len < sizeof(user_name))
+			snprintf(user_name,user_name_len+1,"%s",pUser);
+		else
+			snprintf(user_name,sizeof(user_name),"%s",pUser);
+		free(pUser);
+
+		slog(MISC_PRINT, SLOG_DEBUG," zte_mgmt_login  user_name = %s\n", user_name);
+		cfg_get_item("admin_user", buf, sizeof(buf));
+		if (0 != strcmp(user_name, buf)) {
+			slog(MISC_PRINT, SLOG_ERR," zte_mgmt_login user_name fail \n");
+			zte_reduct_login_times();
+			zte_write_result_to_web(wp, LOGIN_USER_NAME_NOT_EXSIT);
+			return;
+		}
+		slog(MISC_PRINT, SLOG_DEBUG," zte_mgmt_login uername correct \n");
+	}
+	slog(MISC_PRINT, SLOG_DEBUG,"[login] login1 -> zte_password_encode:%s.\n", psw); /*lint !e26*/
+
 	//get request ip addr
 	ip_address = websGetRequestIpaddr(wp);
 #if 0 // kw 3	
diff --git a/lynq/S300AI/ap/app/goahead/interface5.0/zte_web_util.c b/lynq/S300AI/ap/app/goahead/interface5.0/zte_web_util.c
index 390e1be..2b086b2 100755
--- a/lynq/S300AI/ap/app/goahead/interface5.0/zte_web_util.c
+++ b/lynq/S300AI/ap/app/goahead/interface5.0/zte_web_util.c
@@ -734,6 +734,15 @@
 		}
 	} else {
 		if (0 == strcmp(multi_data, "")) {
+			for (goform_index = 0; goform_index < max_goform_index; goform_index++) {
+				if (0 == strcmp(web_goform_get_cmd_table[goform_index].goform_id, cmd)) {
+					if(0 == strcmp(GOFORM_NETWORK_INFO, cmd)){
+						(*(web_goform_get_cmd_table[goform_index].proc_func))(wp);
+						websDone(wp, 200);
+						return;
+					}
+				}
+			}
 			zte_web_get_para_nologin(wp, (char_t *)cmd);
 		} else {
 			zte_get_request_process_nologin(wp, (char_t *)cmd);
diff --git a/lynq/S300AI/ap/app/include/softap_log.h b/lynq/S300AI/ap/app/include/softap_log.h
index 88ac791..90b3a84 100755
--- a/lynq/S300AI/ap/app/include/softap_log.h
+++ b/lynq/S300AI/ap/app/include/softap_log.h
@@ -40,7 +40,7 @@
 #define SMS_PRINT       "[sms]"
 #define MISC_MBIM      "[mbim]"
 #define DRVCOMMNG_PRINT       "[drvcommng]"
-
+#define SOCKET_PRINT    "[socket]"
 extern int asprintf(char **strp, const char *fmt, ...);
 
 /**
diff --git a/lynq/S300AI/ap/app/zte_comm/tcp_socket_server/Makefile b/lynq/S300AI/ap/app/zte_comm/tcp_socket_server/Makefile
new file mode 100755
index 0000000..c926ed6
--- /dev/null
+++ b/lynq/S300AI/ap/app/zte_comm/tcp_socket_server/Makefile
@@ -0,0 +1,41 @@
+#*******************************************************************************
+# include ZTE application makefile
+#*******************************************************************************
+include $(COMMON_MK)
+
+##############USER COMIZE BEGIN################
+EXEC = tcp_socket_server
+OBJS = tcp_socket_server.o
+
+CFLAGS += -I$(zte_app_path)/include
+CFLAGS += -I$(zte_lib_path)/libnvram
+CFLAGS += -I$(zte_lib_path)/libsqlite
+CFLAGS += -I$(zte_lib_path)/libsoftap
+CFLAGS += -g
+CFLAGS += -g -Werror=implicit-function-declaration
+
+ifeq ($(CUSTOM_MODEL), MF29S2)
+CFLAGS	+= -DCUSTOM_VERSION_MF29S2_ZTE
+endif 
+
+LDLIBS = -lpthread -lm
+LDLIBS += -lnvram -L$(zte_lib_path)/libnvram
+LDLIBS += -lsoftap -L$(zte_lib_path)/libsoftap
+LDLIBS  += -lsoft_timer -L$(zte_lib_path)/libsoft_timer
+
+##############USER COMIZE END##################
+
+#*******************************************************************************
+# targets
+#*******************************************************************************
+all: $(EXEC)
+
+$(EXEC): $(OBJS)
+	$(CC) $(LDFLAGS) -o $@ $^ -Wl,--start-group $(LDLIBS) -Wl,--end-group
+	@cp $@ $@.elf
+
+romfs:
+	$(ROMFSINST) $(EXEC) /bin/$(EXEC)
+
+clean:
+	-rm -f $(EXEC) *.elf *.gdb *.o
diff --git a/lynq/S300AI/ap/app/zte_comm/tcp_socket_server/tcp_socket_server.c b/lynq/S300AI/ap/app/zte_comm/tcp_socket_server/tcp_socket_server.c
new file mode 100755
index 0000000..07a0160
--- /dev/null
+++ b/lynq/S300AI/ap/app/zte_comm/tcp_socket_server/tcp_socket_server.c
@@ -0,0 +1,908 @@
+#include "tcp_socket_server.h"

+

+int g_conn_fd = 0;

+int g_socket_flag = 0;

+

+typedef struct {

+    int num1;

+    int num2;

+} ss_data;

+

+int get_production_tool_connection_status()

+{

+	return g_socket_flag;

+}

+

+void send_button_inform_action(char* info)

+{

+	send(g_conn_fd, info, strlen(info), 0);

+}

+

+static void extract_parameter_after_equals(const char* str, char* result)

+{

+    const char* equals = strchr(str, '=');

+

+    if (equals != NULL)

+	{

+        strcpy(result, equals + 1);

+    }

+	else 

+	{

+        result[0] = '\0';

+    }

+}

+

+static int lynq_ping(const char *address)

+{

+    char command[32] = "";

+    int exit_status = 0;

+

+    // ????ping????

+    snprintf(command, sizeof(command), "ping -c 1 -w 1 %s", address);

+

+    // ???system????ping??????ping??down??usb????????ping usb??????

+    system("ifconfig usblan0 down");

+    exit_status = system(command);

+    system("ifconfig usblan0 up");

+

+    // system?????????????

+    if (exit_status == 0)

+    {

+        return 0; // ???

+    }

+    else if (WIFEXITED(exit_status))

+    {

+        return WEXITSTATUS(exit_status); // ??0????????

+    }

+    else

+    {

+        return -1; // ????

+    }

+}

+

+static void set_led_states(char *led_list[], int start_index, int count, int state)

+{

+	int i = 0;

+	char cmd[128];

+

+	for (i = start_index; i < start_index + count; i++)

+	{

+		memset(cmd, 0, sizeof(cmd));

+		sprintf(cmd,"echo %d > /sys/class/leds/%s/brightness", state , led_list[i]);

+		system(cmd);

+	}

+}

+

+static char BCD2Ascii(char iBCD)

+{

+    char iAscii;

+

+    if (bInside(iBCD, 0x00, 0x09))

+    {

+        iAscii = (unsigned char)(iBCD + '0');

+    }

+    else if (bInside(iBCD, 0x0a, 0x0f))

+    {

+        iAscii = (unsigned char)((iBCD - 0x0a) + 'A');

+    }

+    else

+    {

+        return -1;

+    }

+    return iAscii;

+}

+

+static char Ascii2BCD(char iAscii)

+{

+    char iBCD;

+

+    if ( bInside(iAscii, '0', '9'))

+    {

+        iBCD = iAscii - '0';

+

+    }

+    else if (bInside(iAscii, 'a', 'f'))

+    {

+        iBCD = iAscii - 'a' + 0x0a;

+

+    }

+    else if (bInside(iAscii, 'A', 'F'))

+    {

+        iBCD = iAscii - 'A' + 0x0a;

+    }

+    else

+    {

+        return -1;

+    }

+

+    return iBCD;

+

+}

+

+static int is_mac_valid(char* macStr)

+{

+    int Macindex = 0;

+	for (; (macStr[Macindex] != '\0') && (Macindex < OS_FLASH_AMT_COMM_RO_WIFIMAC_SIZE); Macindex++)

+    {

+        char chmac = macStr[Macindex];

+        if (!(bInside(chmac, '0', '9') || bInside(chmac, 'a', 'f') || bInside(chmac, 'A', 'F')))

+        {

+            return FALSE;

+        }

+	}

+    return TRUE;

+}

+

+static char *execise_battery_cmd(char *cmd, char *flag)

+{

+	char out_put[32];

+	char *at_str = malloc(128);

+	if (at_str == NULL)

+	{  

+        return NULL;

+	}

+	FILE *fp;

+	fp = popen(cmd, "r");

+	if (fp == NULL)

+	{

+		free(at_str);

+		return NULL;

+	}

+	if (fgets(out_put, sizeof(out_put), fp) != NULL)

+	{

+		sprintf(at_str, "%s: %s", flag, out_put);

+	}

+	pclose(fp);

+	return at_str;

+}

+

+static char* read_file_to_string_by_line(const char* filename) {

+    FILE *file = fopen(filename, "r");

+    if (file == NULL) 

+	{

+        return NULL;

+    }

+

+    // ÏÈ»ñÈ¡Îļþ´óС

+    fseek(file, 0, SEEK_END);

+    size_t file_size = ftell(file);

+    rewind(file);

+

+    // ·ÖÅä³õʼÄÚ´æ

+    char *buffer = (char*)malloc(file_size + 1);

+    if (buffer == NULL) 

+	{

+        fclose(file);

+        return NULL;

+    }

+

+    char line[256] = {0};

+    char fileds[5][256] = {0}; // ÁÙʱ´æ´¢Ã¿Ò»ÐеÄ×Ö¶Î

+    size_t buffer_size = 0;

+	char *token = NULL;

+	int i = 0;

+

+    // ¶ÁÈ¡µÚÒ»Ðе«²»Ê¹ÓÃ

+    if (fgets(line, sizeof(line), file) != NULL) 

+	{

+

+    }

+

+    while (fgets(line, sizeof(line), file) != NULL) 

+	{

+		if(buffer_size >= file_size)

+		{

+			break;

+		}

+

+        token = strtok(line, " \t");

+        i = 0;

+        while(token != NULL && i < 5) 

+		{

+            strcpy(fileds[i], token);

+            token = strtok(NULL, " \t");

+            i++;

+        }

+        if (i >= 5) 

+		{

+            buffer_size += snprintf(buffer + buffer_size, file_size - buffer_size, "WLAN_STA:%s,%s,%s,%s\n", fileds[0], fileds[1], fileds[2], fileds[4]);

+        }

+    }

+

+    // È·±£×Ö·û´®ÒÔnullÖÕÖ¹

+    buffer[buffer_size] = '\0';

+

+    fclose(file);

+    return buffer;

+}

+

+static void tcp_socket_server_get_sn_process(int conn_fd, char* parameter)

+{

+	char nv_buf[BUF_SIZE] = {0};

+	cfg_get_item("serialnumber", nv_buf, sizeof(nv_buf));

+    send(conn_fd, nv_buf, strlen(nv_buf), 0);

+}

+

+static void tcp_socket_server_get_imei_process(int conn_fd, char* parameter)

+{

+	char nv_buf[BUF_SIZE] = {0};

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

+	send(conn_fd, nv_buf, strlen(nv_buf), 0);

+}

+

+static void tcp_socket_server_get_inner_version_process(int conn_fd, char* parameter)

+{

+	char nv_buf[BUF_SIZE] = {0};

+	cfg_get_item("cr_inner_version", nv_buf, sizeof(nv_buf));

+	send(conn_fd, nv_buf, strlen(nv_buf), 0);

+}

+

+static void tcp_socket_server_get_version_process(int conn_fd, char* parameter)

+{

+	char nv_buf[BUF_SIZE] = {0};

+	cfg_get_item("cr_version", nv_buf, sizeof(nv_buf));

+	send(conn_fd, nv_buf, strlen(nv_buf), 0);

+}

+

+static void tcp_socket_server_test_ping_process(int conn_fd, char *parameter)

+{

+	int ret = 0;

+

+	ret = lynq_ping(parameter);

+

+	if(0 == ret)

+	{

+		send(conn_fd, "OK", 2, 0);

+	}

+	else

+	{

+		send(conn_fd, "FAIL", 4, 0);

+	}

+}

+

+static void tcp_socket_server_get_ssid_process(int conn_fd, char* parameter)

+{

+	char nv_buf[BUF_SIZE] = {0};

+	cfg_get_item("SSID1", nv_buf, sizeof(nv_buf));

+	send(conn_fd, nv_buf, strlen(nv_buf), 0);

+}

+

+static void tcp_socket_server_get_wifi_psd_process(int conn_fd, char* parameter)

+{

+	char nv_buf[BUF_SIZE] = {0};

+	cfg_get_item("WPAPSK1", nv_buf, sizeof(nv_buf));

+	send(conn_fd, nv_buf, strlen(nv_buf), 0);

+}

+

+static void tcp_socket_server_get_sim_process(int conn_fd, char* parameter)

+{

+	char nv_buf[BUF_SIZE] = {0};

+	cfg_get_item("modem_main_state", nv_buf, sizeof(nv_buf));

+

+	if(strstr(nv_buf, "modem_init_complete"))

+	{

+		send(conn_fd, "1", 1, 0);

+	}

+	else

+	{

+		send(conn_fd, "0", 1, 0);

+	}

+}

+

+static void tcp_socket_server_get_wifi_mac_process(int conn_fd, char* parameter)

+{

+	char nv_buf[BUF_SIZE] = {0};

+	cfg_get_item("at_wifi_mac", nv_buf, sizeof(nv_buf));

+	send(conn_fd, nv_buf, strlen(nv_buf), 0);

+}

+

+static void tcp_socket_server_set_mac1_process(int conn_fd, char *parameter)

+{

+	int ret = -1;

+	char mac_cmd[128]={0};

+

+	snprintf(mac_cmd, sizeof(mac_cmd), "AT+MAC=%s\r", parameter);

+	ret = get_modem_info(mac_cmd, NULL, NULL);

+

+	if(0 == ret)

+	{

+		send(conn_fd, "OK", 2, 0);

+	}

+	else

+	{

+		send(conn_fd, "FAIL", 4, 0);

+	}

+}

+

+static void tcp_socket_server_set_mac2_process(int conn_fd, char *parameter)

+{

+	int ret = -1;

+	char mac_cmd[128]={0};

+

+	snprintf(mac_cmd, sizeof(mac_cmd), "AT+MAC2=%s\r", parameter);

+	ret = get_modem_info(mac_cmd, NULL, NULL);

+

+	if(0 == ret)

+	{

+		send(conn_fd, "OK", 2, 0);

+	}

+	else

+	{

+		send(conn_fd, "FAIL", 4, 0);

+	}

+}

+

+static void tcp_socket_server_test_led_process(int conn_fd, char* parameter)

+{

+	char *led_list[8] = {

+					"battery_g_led",

+					"modem_g_led",

+					"eth_led",

+					"wifi_led",

+					"4g_led",

+					"battery_r_led",

+					"modem_r_led",

+					"modem_b_led",};

+

+	set_led_states(led_list, 0, 8, 0); // turn off all leds

+	set_led_states(led_list, 0, 5, 1); // turn on all green leds

+	usleep(500000);

+	set_led_states(led_list, 0, 5, 0); // turn off all green leds

+	set_led_states(led_list, 5, 2, 1); // turn on all red leds

+	usleep(500000);

+	set_led_states(led_list, 5, 2, 0); // turn off all red leds

+	set_led_states(led_list, 7, 1, 1); // turn on all blue leds

+	usleep(500000);

+	set_led_states(led_list, 7, 1, 0); // turn off all blue leds

+

+	send(conn_fd, "OK", 2, 0);

+}

+

+static void tcp_socket_server_get_gmac_process(int conn_fd, char* parameter)

+{

+	unsigned long retCode = CPNV_ERROR;

+	char str[13];

+    long abMacindex = 0;

+    static char macstr[2 * OS_FLASH_AMT_COMM_RO_GMAC_SIZE - 1] = {0};

+	char TmpMacAddr[OS_FLASH_AMT_COMM_RO_GMAC_SIZE] = {0};	

+

+	retCode = cpnv_NvItemRead(OS_FLASH_AMT_COMM_RO_GMAC_ADDRESS, (UINT8 *)TmpMacAddr, OS_FLASH_AMT_COMM_RO_GMAC_SIZE);

+	if (CPNV_ERROR == retCode )

+	{

+		send(conn_fd, "ERROR", 5, 0);

+		return;

+	}

+

+	memset(str, 0, 13);

+

+	for (abMacindex = 0; abMacindex< 12; abMacindex += 2)

+	{

+		str[abMacindex] = ((TmpMacAddr[abMacindex/2]) >> 4) & 0x0F;

+		str[abMacindex+1] = TmpMacAddr[abMacindex/2] & 0x0F;

+

+		macstr[abMacindex] = BCD2Ascii(str[abMacindex]);

+		macstr[abMacindex+1] = BCD2Ascii(str[abMacindex+1]);

+	}

+

+	send(conn_fd, macstr, strlen(macstr), 0);

+}

+

+static void tcp_socket_server_set_gmac_process(int conn_fd, char* parameter)

+{

+	unsigned long Macindex = 0;

+    unsigned char abMac[OS_FLASH_AMT_COMM_RO_GMAC_SIZE] = {0};

+    unsigned char Index1 = 0;

+    unsigned char Index2 = 0;

+

+	if(!is_mac_valid(parameter))

+	{

+		send(conn_fd, "ERROR", 5, 0);

+		return;

+	}

+

+	for (Macindex = 0; parameter[Macindex] != '\0' && (Macindex < OS_FLASH_AMT_COMM_RO_GMAC_SIZE); Macindex += 2)

+	{

+		Index1 = (unsigned char)Ascii2BCD((char)parameter[Macindex]);

+		Index2 = (unsigned char)Ascii2BCD((char)parameter[Macindex + 1]);

+		abMac[Macindex/2]=(Index1<<4)|Index2;

+	}

+

+	if (CPNV_ERROR == amt_nvro_write(OS_FLASH_AMT_COMM_RO_GMAC_ADDRESS, OS_FLASH_AMT_COMM_RO_GMAC_SIZE, abMac))

+	{

+		send(conn_fd, "FAIL", 4, 0);

+		return;

+	}

+

+	send(conn_fd, "OK", 2, 0);

+}

+

+static void tcp_socket_server_get_battery_value_process(int conn_fd, char* parameter)

+{

+	char* res_msg = NULL;

+

+	system("echo 0 > /sys/class/power_supply/charger/charge_enabled");

+	res_msg = execise_battery_cmd(BATTERY_VALUE, "battery_value");

+

+	if (res_msg == NULL)

+	{

+		send(conn_fd, "FAIL", 4, 0);

+		return;

+	}

+

+	send(conn_fd, res_msg, strlen(res_msg), 0);

+	system("echo 1 > /sys/class/power_supply/charger/charge_enabled");

+}

+

+static void tcp_socket_server_get_battery_state_process(int conn_fd, char* parameter)

+{

+	char* res_msg = NULL;

+

+	res_msg = execise_battery_cmd(BATTERY_STATE, "battery_state");

+

+	if (res_msg == NULL)

+	{

+		send(conn_fd, "FAIL", 4, 0);

+		return;

+	}

+

+	send(conn_fd, res_msg, strlen(res_msg), 0);

+}

+

+static void tcp_socket_server_get_wlan_sta_process(int conn_fd, char* parameter)

+{

+	int count = 0;

+	char scan_finish[4] = {0};

+	char *ap_list = NULL;

+	char *at_str = NULL;

+

+	cfg_set("wifi_sta_connection", "1");

+	cfg_set("scan_finish", "0");

+	cfg_set("EX_APLIST", "");

+	ipc_send_message(MODULE_ID_AT_CTL, MODULE_ID_WIFI, MSG_CMD_WIFI_STATION_OPEN, 0, NULL, 0);

+	ipc_send_message(MODULE_ID_AT_CTL, MODULE_ID_WIFI, MSG_CMD_WIFI_STATION_SCAN, 0, NULL, 0);

+

+	while(1)

+	{

+		count++;

+		sleep(1);

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

+

+		if(6 == count)

+		{

+			at_str = malloc(128);

+			sprintf(at_str, "WLAN_STA: Do no have any station");

+			send(conn_fd, at_str, strlen(at_str), 0);

+			break;

+		}

+

+		if(1 == atoi(scan_finish))

+		{

+			ap_list = read_file_to_string_by_line("/tmp/scan_results");

+			if(NULL == ap_list)

+			{

+				at_str = malloc(128);

+				sprintf(at_str, "WLAN_STA: Do no have any station");

+				send(conn_fd, at_str, strlen(at_str), 0);

+				break;

+			}

+			at_str = malloc(strlen(ap_list) + 32);

+			sprintf(at_str, "%s", ap_list);

+			send(conn_fd, at_str, strlen(at_str), 0);

+			break;

+		}

+	}

+

+	cfg_set("wifi_sta_connection", "0");

+	cfg_save();

+	ipc_send_message(MODULE_ID_AT_CTL, MODULE_ID_WIFI, MSG_CMD_WIFI_STATION_CLOSE, 0, NULL, 0);

+	free(ap_list);

+	free(at_str);

+}

+

+static void tcp_socket_server_get_lan_ip_process(int conn_fd, char* parameter)

+{

+	char *at_str = malloc(64);

+	char lan_ipaddr[32] = {0};

+

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

+	sprintf(at_str, "LAN_IP:%s", lan_ipaddr);

+	send(conn_fd, at_str, strlen(at_str), 0);

+

+	free(at_str);

+}

+

+static void tcp_socket_server_get_rssi_process(int conn_fd, char* parameter)

+{

+	char nv_buf[64] = {0};

+	char send_buf[BUF_SIZE] = {0};

+

+	cfg_get_item("rssi", nv_buf, sizeof(nv_buf));

+	sprintf(send_buf, "%s,0", nv_buf);

+

+    send(conn_fd, send_buf, strlen(send_buf), 0);

+}

+

+static void tcp_socket_server_test_reset_process(int conn_fd, char* parameter)

+{

+	return;

+}

+

+static void tcp_socket_server_set_reset_process(int conn_fd, char* parameter)

+{

+	send(conn_fd, "OK", 2, 0);

+	ipc_send_message(MODULE_ID_WEB_CGI, MODULE_ID_MAIN_CTRL, MSG_CMD_RESET_REQUEST, 0, NULL, 0);

+

+	return;

+}

+

+static void tcp_socket_server_get_zrssi_process(int conn_fd, char* parameter)

+{

+	int ret = 0;

+	int n1 = 0;

+	int n2 = 0;

+	int n3 = 0;

+	int n4 = 0;

+	char *p2[] = {&n1, &n2, &n3, &n4};

+	char send_buf[BUF_SIZE] = {0};

+

+	ret = get_modem_info("AT+ZRSSI\r", "%d, %d, %d, %d", (void**)p2);

+

+	if(0 == ret)

+	{

+		sprintf(send_buf, "%d, %d", n1, n3);

+		send(conn_fd, send_buf, strlen(send_buf), 0);

+	}

+	else

+	{

+		send(conn_fd, "FAIL", 4, 0);

+	}

+}

+

+int extract_ss_data(const char *filename, ss_data data[], int max_count)

+{

+    FILE *file = popen(filename, "r");

+    if (file == NULL)

+	{

+        perror("ÎÞ·¨´ò¿ªÎļþ");

+        return 0;

+    }

+

+    char line[256];

+    regex_t regex;

+    regmatch_t matches[3];

+    int count = 0;

+

+    // ±àÒëÕýÔò±í´ïʽ

+    if (regcomp(&regex, "\\(ss ([0-9]+) ([0-9]+)\\)", REG_EXTENDED) != 0)

+	{

+        perror("ÕýÔò±í´ïʽ±àÒëʧ°Ü");

+        pclose(file);

+        return 0;

+    }

+

+    while (fgets(line, sizeof(line), file) && count < max_count)

+	{

+        if (regexec(&regex, line, 3, matches, 0) == 0)

+		{

+            char ss1[10], ss2[10];

+            strncpy(ss1, &line[matches[1].rm_so], matches[1].rm_eo - matches[1].rm_so);

+            ss1[matches[1].rm_eo - matches[1].rm_so] = '\0';

+            strncpy(ss2, &line[matches[2].rm_so], matches[2].rm_eo - matches[2].rm_so);

+            ss2[matches[2].rm_eo - matches[2].rm_so] = '\0';

+

+            data[count].num1 = atoi(ss1);

+            data[count].num2 = atoi(ss2);

+            count++;

+        }

+    }

+

+    pclose(file);

+    regfree(&regex);

+    return 1;

+}

+

+void calculate_average(ss_data data[], int count, int *avg_num1, int *avg_num2)

+{

+    int sum_num1 = 0, sum_num2 = 0, i = 0;

+

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

+	{

+        sum_num1 += data[i].num1;

+        sum_num2 += data[i].num2;

+    }

+

+    *avg_num1 = sum_num1 / count;

+    *avg_num2 = sum_num2 / count;

+}

+

+static void tcp_socket_server_get_wlan_ss_process(int conn_fd, char* parameter)

+{

+	int avg_num1, avg_num2;

+	char send_buf[BUF_SIZE] = {0};

+	ss_data s_data[COUNT_TIME] = {0};

+	char nv_buf[64] = {0};

+

+	cfg_get_item("sta_count", nv_buf, sizeof(nv_buf));

+	if(atoi(nv_buf) == 0)

+	{

+		send(conn_fd, "FAIL", 4, 0);

+		return;

+	}

+

+	system("iwpriv wlan0 set_mib rssi_dump=1");

+

+    if (extract_ss_data("cat /proc/kmsg", s_data, COUNT_TIME))

+	{

+        calculate_average(s_data, COUNT_TIME, &avg_num1, &avg_num2);

+		sprintf(send_buf, "%d,%d", avg_num1, avg_num2);

+		send(conn_fd, send_buf, strlen(send_buf), 0);

+	}

+	else

+	{

+		send(conn_fd, "FAIL", 4, 0);

+	}

+}

+

+CommandMapping command_map[] =

+{

+    {"get_SN", tcp_socket_server_get_sn_process},

+    {"get_imei", tcp_socket_server_get_imei_process},

+    {"get_innerVersion", tcp_socket_server_get_inner_version_process},

+    {"get_version", tcp_socket_server_get_version_process},

+    {"test_ping", tcp_socket_server_test_ping_process},

+    {"get_ssid", tcp_socket_server_get_ssid_process},

+    {"get_wifi_psd", tcp_socket_server_get_wifi_psd_process},

+    {"get_sim", tcp_socket_server_get_sim_process},

+    {"get_wifi_mac", tcp_socket_server_get_wifi_mac_process},

+    {"set_mac1", tcp_socket_server_set_mac1_process},

+    {"set_mac2", tcp_socket_server_set_mac2_process},

+    {"test_led", tcp_socket_server_test_led_process},

+    {"get_gmac", tcp_socket_server_get_gmac_process},

+    {"set_gmac", tcp_socket_server_set_gmac_process},

+    {"get_battery_value", tcp_socket_server_get_battery_value_process},

+    {"get_battery_state", tcp_socket_server_get_battery_state_process},

+    {"get_wlan_sta", tcp_socket_server_get_wlan_sta_process},

+    {"get_lan_ip", tcp_socket_server_get_lan_ip_process},

+	{"get_rssi", tcp_socket_server_get_rssi_process},

+	{"test_reset", tcp_socket_server_test_reset_process},

+	{"set_reset", tcp_socket_server_set_reset_process},

+	{"get_zrssi", tcp_socket_server_get_zrssi_process},

+	{"get_wlan_ss", tcp_socket_server_get_wlan_ss_process},

+    {NULL, NULL}

+};

+

+static void tcp_socket_server_send_data(int conn_fd, char * buff)

+{

+	int i =0;

+	char parameter[32] = {0};

+	g_conn_fd = conn_fd;

+

+	if(strchr(buff, '='))

+    {

+		extract_parameter_after_equals(buff, parameter);

+	}

+

+    for (i = 0; command_map[i].command != NULL; ++i)

+	{

+        if(strstr(buff, command_map[i].command) && command_map[i].handler != NULL)

+		{

+			command_map[i].handler(conn_fd, parameter);

+

+			return;

+        }

+	}

+}

+

+int tcp_socket_server_main(int argc, char * argv[])

+{

+    int sock_fd, conn_fd;

+	struct sockaddr_in server_addr;

+	char buff[BUF_SIZE] = {0};

+	int ret;

+

+	// ´´½¨socketÃèÊö·û

+	if ((sock_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

+    {

+		fprintf(stderr,"Socket error:%s\n\a", strerror(errno));

+		return -1;

+	}

+

+	// Ìî³äsockaddr_in½á¹¹

+	bzero(&server_addr, sizeof(struct sockaddr_in));

+	server_addr.sin_family = AF_INET;

+	server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

+	server_addr.sin_port = htons(PORT_NUMBER);

+

+	// °ó¶¨sock_fdÃèÊö·û

+	if (bind(sock_fd, (struct sockaddr *)(&server_addr), sizeof(struct sockaddr)) == -1)

+    {

+		fprintf(stderr,"Bind error:%s\n\a", strerror(errno));

+		close(sock_fd);

+		return -1;

+	}

+

+	// ¼àÌýsock_fdÃèÊö·û

+	if(listen(sock_fd, 5) == -1)

+    {

+		fprintf(stderr,"Listen error:%s\n\a", strerror(errno));

+		close(sock_fd);

+		return -1;

+	}

+

+	while(1)

+    {

+		// ½ÓÊÜÇëÇó

+		if ((conn_fd = accept(sock_fd, (struct sockaddr *)NULL, NULL)) == -1)

+        {

+			printf("accept socket error: %s\n\a", strerror(errno));

+			continue;

+		}

+

+		g_socket_flag = 1;

+

+		while(1)

+        {

+			// ½ÓÊÜÊý¾Ý

+			ret = recv(conn_fd, buff, BUF_SIZE - 1, 0);

+			if (ret < 0)

+            {

+				if (errno == EAGAIN || errno == EWOULDBLOCK)

+				{

+					continue;

+				} 

+				else

+				{

+					perror("recv");

+					g_socket_flag = 0;

+					close(conn_fd);

+					break;

+				}

+			}

+			else if(0 == ret)

+			{

+				g_socket_flag = 0;

+				close(conn_fd);

+				break;

+			}

+            else

+            {

+				// Ìí¼Ó½áÊø·û

+				buff[ret] = '\0';

+				printf("recv msg from client: %s\n", buff);

+				// ·¢ËÍÊý¾Ý

+                tcp_socket_server_send_data(conn_fd, buff);

+			}

+		}

+		g_socket_flag = 0;

+		close(conn_fd);

+		usleep(100);

+	}

+

+	g_socket_flag = 0;

+	close(sock_fd);

+	return 0;

+}

+

+static void printMemoryDataHex(const void *data, size_t length)

+{

+    const unsigned char *p = (const unsigned char *)data;

+	size_t i = 0;

+	char str[256] = {0};

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

+	{

+		slog(SOCKET_PRINT, SLOG_ERR, "0x%02x ", p[i]);

+        if ((i + 1) % 10 == 0)

+		{

+            slog(SOCKET_PRINT, SLOG_ERR, "\n");

+        }

+    }

+    if (length % 10 != 0)

+	{

+        slog(SOCKET_PRINT, SLOG_ERR, "\n");

+    }

+}

+

+int tcp_socket_reset_server_main(int argc, char * argv[])

+{

+	slog(SOCKET_PRINT, SLOG_NORMAL, "tcp_socket_reset_server_main begin\n");

+    int sock_fd = 0, conn_fd = 0;

+	struct sockaddr_in server_addr;

+	char buff[BUF_SIZE] = {0};

+	int ret;

+	int restore_flag = 1;

+	unsigned char restore_data[] = {

+        0x7e, 0x2b, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x7b, 0x22, 0x4f,

+		0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,

+		0x71, 0x22, 0x3a, 0x7b, 0x22, 0x54, 0x79, 0x70, 0x65, 0x22,

+		0x3a, 0x22, 0x4c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x66, 0x61,

+        0x75, 0x6c, 0x74, 0x22, 0x7d, 0x5d, 0x7d, 0x5d, 0x3a};

+

+	// ´´½¨socketÃèÊö·û

+	if ((sock_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

+    {

+    	slog(SOCKET_PRINT, SLOG_ERR, "tcp_socket_reset_server_main create socket error, [%s]\n", strerror(errno));

+		return -1;

+	}

+

+	// Ìî³äsockaddr_in½á¹¹

+	bzero(&server_addr, sizeof(struct sockaddr_in));

+	server_addr.sin_family = AF_INET;

+	server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

+	server_addr.sin_port = htons(RESET_PORT);

+

+	// °ó¶¨sock_fdÃèÊö·û

+	if (bind(sock_fd, (struct sockaddr *)(&server_addr), sizeof(struct sockaddr)) == -1)

+    {

+    	slog(SOCKET_PRINT, SLOG_ERR, "tcp_socket_reset_server_main Bind error, [%s]\n", strerror(errno));

+		close(sock_fd);

+		return -1;

+	}

+

+	// ¼àÌýsock_fdÃèÊö·û

+	if(listen(sock_fd, 5) == -1)

+    {

+    	slog(SOCKET_PRINT, SLOG_ERR, "tcp_socket_reset_server_main Listen error, [%s]\n", strerror(errno));

+		close(sock_fd);

+		return -1;

+	}

+

+	while(1)

+    {

+		// ½ÓÊÜÇëÇó

+		conn_fd = accept(sock_fd, (struct sockaddr *)NULL, NULL);

+		slog(SOCKET_PRINT, SLOG_ERR, "tcp_socket_reset_server_main accept return:[%d]\n", conn_fd);

+		if (conn_fd == -1)

+        {

+        	slog(SOCKET_PRINT, SLOG_ERR, "tcp_socket_reset_server_main accept error, [%s]\n", strerror(errno));

+			continue;

+		}

+

+		while(1)

+        {

+			// ½ÓÊÜÊý¾Ý

+			ret = recv(conn_fd, buff, BUF_SIZE - 1, 0);

+			slog(SOCKET_PRINT, SLOG_ERR, "tcp_socket_reset_server_main recv return:[%d]\n", ret);

+			if (ret < 0)

+            {

+				if (errno == EAGAIN || errno == EWOULDBLOCK)

+				{

+					continue;

+				} 

+				else

+				{

+					perror("recv");

+					close(conn_fd);

+					break;

+				}

+			}

+			else if(0 == ret)

+			{

+				close(conn_fd);

+				break;

+			}

+            else

+            {

+				// Ìí¼Ó½áÊø·û

+				buff[ret] = '\0';

+				slog(SOCKET_PRINT, SLOG_ERR, "tcp_socket_reset_server_main recv msg:\n");

+				printMemoryDataHex(buff, ret);

+				if (restore_flag && memcmp(restore_data, buff, sizeof(restore_data)) == 0)

+				{

+					restore_flag = 0;

+					ipc_send_message(MODULE_ID_WEB_CGI, MODULE_ID_MAIN_CTRL, MSG_CMD_RESET_REQUEST, 0, NULL, 0);

+				}

+				else

+				{

+					close(conn_fd);

+					break;

+				}

+			}

+		}

+		close(conn_fd);

+		usleep(100);

+	}

+

+	close(sock_fd);

+	return 0;

+}

+

diff --git a/lynq/S300AI/ap/app/zte_comm/tcp_socket_server/tcp_socket_server.h b/lynq/S300AI/ap/app/zte_comm/tcp_socket_server/tcp_socket_server.h
new file mode 100755
index 0000000..e36baa6
--- /dev/null
+++ b/lynq/S300AI/ap/app/zte_comm/tcp_socket_server/tcp_socket_server.h
@@ -0,0 +1,39 @@
+#ifndef __TCP_SOCKET_SERVER__

+#define __TCP_SOCKET_SERVER__

+

+#include <stdio.h>

+#include <stdlib.h>

+#include <string.h>

+#include <unistd.h>

+#include <sys/types.h>

+#include <sys/socket.h>

+#include <netinet/in.h>

+#include <arpa/inet.h>

+#include <errno.h>

+#include <sys/wait.h>

+#include <signal.h>

+#include <regex.h>

+#include "softap_api.h"

+#include "cfg_api.h"

+#include "message.h"

+#include "libcpnv.h"

+#include "RONvParam_AMT.h"

+#include "amtnv.h"

+

+#define BUF_SIZE 256

+#define PORT_NUMBER 15566

+#define RESET_PORT 5566

+#define bInside(data, up, down) (((data) <= (up) && (data) >= (down)) || \

+                                                  ((data) >= (up) && (data) <= (down)))

+#define BATTERY_VALUE "cat /sys/class/power_supply/battery/voltage_now"

+#define BATTERY_STATE "cat /sys/class/power_supply/charger/status"

+#define COUNT_TIME 3

+

+typedef void (*CommandHandler)(int conn_fd, char *parameter);

+

+typedef struct CommandMapping {

+    const char *command;

+    CommandHandler handler;

+} CommandMapping;

+

+#endif

diff --git a/lynq/S300AI/ap/app/zte_comm/wlan/src/wlan_main.c b/lynq/S300AI/ap/app/zte_comm/wlan/src/wlan_main.c
index 14ad77b..15c2cff 100755
--- a/lynq/S300AI/ap/app/zte_comm/wlan/src/wlan_main.c
+++ b/lynq/S300AI/ap/app/zte_comm/wlan/src/wlan_main.c
@@ -1382,7 +1382,7 @@
 	cfg_set ("wpa_supplicant", "stop");

 	cfg_set ("wifi_cur_state", WIFI_CLOSED);

 #if (PRODUCT_TYPE == PRODUCT_MIFI_CPE)

-	cfg_set ("wifiEnabled", "1");

+	//cfg_set ("wifiEnabled", "1");

 #elif (PRODUCT_TYPE == PRODUCT_PHONE)

 	cfg_set ("wifiEnabled", "0");//yaoyuan special need:everytime system wakes up, wifi is off

 #else

diff --git a/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_battery.c b/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_battery.c
index d563480..f4884db 100644
--- a/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_battery.c
+++ b/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_battery.c
@@ -211,6 +211,45 @@
 #endif
 }
 
+static int g_recover_charge_count = 0;
+static int mmi_get_file_value(char *file)
+{
+	int ret = -99;
+	FILE* fd = NULL;
+	char buf[16] = {0};
+	fd = fopen(file, "r");
+	if (fd != NULL)
+	{
+		fgets(buf, sizeof(buf), fd);
+		ret = atoi(buf);
+		fclose(fd);
+	}
+
+	return ret;
+}
+
+static void mmi_recover_charge(void)
+{
+	char buf[32] = {0};
+	char time_string[64] = {0};
+	time_t current_time;
+	
+	system("echo 0 > /sys/class/power_supply/charger/charge_enabled");
+	system("echo 1 > /sys/class/power_supply/charger/charge_enabled");
+	g_recover_charge_count++;
+
+	slog(MMI_PRINT, SLOG_ERR, "ZTE_MMI mmi_recover_charge g_recover_charge_count:%d\n", g_recover_charge_count);
+	if (g_recover_charge_count < 5)
+	{
+		snprintf(buf, 32, "%s%d", "tmp_recover_charge_", g_recover_charge_count);
+		current_time = time(NULL);
+		snprintf(time_string, 64, "%s", ctime(&current_time));
+		cfg_set(buf, time_string);
+	}
+
+	return;
+}
+
 /**********************************************************************************
 *º¯Êý˵Ã÷£º»ñÈ¡³äµç״̬
  ***********************************************************************************/
@@ -257,6 +296,7 @@
 		}
 		
 		mmi_set_mode_fast_poweron(FALSE);
+		g_recover_charge_count = 0;
 	} else if (chg_sta == STATE_CHARGERROR) {
 		s_mmi_charge_state = STATE_DISCHARGE;
 		mmi_set_webUI_batterycharge(WEBUIUNCHARGING, FALSE);
@@ -267,6 +307,26 @@
 		}
 		
 		mmi_set_mode_fast_poweron(FALSE);
+
+		if (mmi_get_file_value(CHARGE_BAT_STATUS_PATH) == 1)
+		{
+			int adc_value = mmi_get_file_value(CHIP_TEMPERATURE_ADC_PATH);
+			slog(MMI_PRINT, SLOG_ERR, "ZTE_MMI mmi_set_battery_info charge error, ADC:%d\n", adc_value);
+			if (adc_value >= 385 && adc_value <= 1157) // 4 - 60
+			{
+				if (g_recover_charge_count < 1)
+				{
+					mmi_recover_charge();
+				}
+			}
+			else if (adc_value > 1157) // < 4
+			{
+				if (g_recover_charge_count < 2)
+				{
+					mmi_recover_charge();
+				}
+			}
+		}
 	} else {
 		power = mmi_voltage_state_read();
 		slog(MMI_PRINT, SLOG_ERR, "ZTE_MMI mmi_set_battery_info invalid charge state!! power=%d\n");
@@ -456,7 +516,7 @@
 		set_wake_lock(MMI_GET_POWER_LOCK_ID);
 		
 		if (g_discharge_protect) {
-			voltagepower = mmi_voltage_state_read();
+			voltagepower = mmi_voltage_state_read_ex();
 			if (voltagepower > 0 && voltagepower < INT_MAX) {//kw 3
 				mmi_battery_capacity_compare(voltagepower);
 				mmi_set_battery_update();
@@ -471,7 +531,7 @@
 			} else {
 				/*³äµçµÈÆäËûÇé¿öϵĵ͵籣»¤*/
 				if (g_temp_protect) {
-					voltagepower = mmi_voltage_state_read();
+					voltagepower = mmi_voltage_state_read_ex();
 					if (voltagepower > 0 && voltagepower < INT_MAX) {//kw 3
 						mmi_lowbattery_shutdown(voltagepower);
 					}
diff --git a/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_battery_adapter.c b/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_battery_adapter.c
index 7d909d3..c2aac0c 100644
--- a/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_battery_adapter.c
+++ b/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_battery_adapter.c
@@ -47,6 +47,7 @@
 	{CHARGE_STATUS_NOTCHARGING,	STATE_CHARGERROR}
 };
 
+E_zMmi_Charge_State mmi_get_charge_status(VOID);
 
 /**********************************************************************************
 *º¯Êý˵Ã÷£º ¶ÁÈ¡µçѹֵ
@@ -84,6 +85,23 @@
 	}
 }
 
+/**********************************************************************************
+*º¯Êý˵Ã÷£º ¶ÁÈ¡µçѹֵ֮ǰÏÈÅжϳäµç״̬£¬Èç¹ûÊÇCHARGING£¬ÔòÏȹرճäµç£¬¶ÁÈ¡µçѹֵ֮ºóÔÙ¿ªÆô³äµç¡£
+***********************************************************************************/
+SINT32 mmi_voltage_state_read_ex(VOID)
+{
+	E_zMmi_Charge_State chg_sta = mmi_get_charge_status();
+	if (STATE_CHARGING == chg_sta)
+	{
+		system(MMI_TURN_OFF_CHG);
+	}
+	SINT32 ret = mmi_voltage_state_read();
+	if (STATE_CHARGING == chg_sta)
+	{
+		system(MMI_TURN_ON_CHG);
+	}
+	return ret;
+}
 
 /*****************************************************************************************
 *º¯Êý˵Ã÷£º ¸ù¾Ýµç³Ø°Ù·Ö±ÈÉèÖÃµç³Ø×´Ì¬ 10%/25%/normal
diff --git a/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_cfg.h b/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_cfg.h
index 6dd5f82..5161249 100755
--- a/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_cfg.h
+++ b/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_cfg.h
@@ -221,12 +221,12 @@
 //µçѹÁÙ½çÖµ
 
 //zdm ¶ÔÓÚÏÂÃæ¼¸¸öºêÖµ£¬Ôݲ»½øÐÐÆ½Ì¨»¯£¬ºóÆÚÒ»µ©ÓÐÐèÇó½øÐÐÐ޸ģ¬ÔòÖ±½ÓÌá³Énv½øÐпØÖÆ
-#define POWEROFFLEVEL           		3300        //µÍÓڴ˵çѹֵ×Ô¶¯¹Ø»ú
+#define POWEROFFLEVEL           		3350        //µÍÓڴ˵çѹֵ×Ô¶¯¹Ø»ú
 #define POWERONLEVEL           			3400       //µÍÓڴ˵çѹֵ²»ÄÜ¿ª»ú
 #define DISCHARGELEVEL					3600		//µÍÓڴ˵çѹֵ·ÅµçµçÁ÷ÉèΪ0.5A
 #define CHARGINGLEVEL					3800		//¸ßÓڴ˵çѹֵ·ÅµçµçÁ÷ÉèΪ1.5A
 
-#define CHECK_POWER_TIME_INTERVAL      	20000
+#define CHECK_POWER_TIME_INTERVAL      	60000
 #define GET_TEMP_INTERVAL_TIME		    20000//ms
 
 //WIFIÐÅÏ¢¶¨Òå
diff --git a/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_common.h b/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_common.h
index f421067..9116da1 100755
--- a/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_common.h
+++ b/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_common.h
@@ -131,6 +131,8 @@
 #define CHARGE_VOLTAGE_PATH				"/sys/class/power_supply/battery/voltage_now"
 #define CHARGE_BAT_TEMP_PATH 			"/sys/class/power_supply/battery/temp"
 #define CHARGE_BAT_HEALTH_PATH 			"/sys/class/power_supply/battery/health"
+#define CHARGE_BAT_STATUS_PATH 			"/sys/class/power_supply/battery/online"
+#define CHIP_TEMPERATURE_ADC_PATH 		"/sys/kernel/debug/pmu_zx29/adc1"
 
 #define MMI_SET_FAKEPOWEROFF_CHARGER    "echo 1 > /sys/class/power_supply/charger/quick_power_on"
 #define MMI_CAN_FAKEPOWEROFF_CHARGER    "echo 0 > /sys/class/power_supply/charger/quick_power_on"
@@ -1199,7 +1201,7 @@
  * ¶ÁÈ¡µçѹ
  **/
 SINT32 mmi_voltage_state_read(VOID);
-
+SINT32 mmi_voltage_state_read_ex(VOID);
 SINT32 zMMI_Handle_Msg_Network_Mode(VOID *data);
 SINT32 zMMI_Handle_Msg_Connect_Status(VOID *data);
 SINT32 zMMI_Handle_Msg_MultiConnect_Status(VOID *data, int src_id);
diff --git a/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_keystrokes.c b/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_keystrokes.c
index 8682964..39224b6 100755
--- a/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_keystrokes.c
+++ b/lynq/S300AI/ap/app/zte_comm/zte_mmi/mmi_keystrokes.c
@@ -22,6 +22,8 @@
 #include "mmi_lcd.h"
 
 extern int g_customer_type;
+extern void send_button_inform_action(char* info);
+extern int get_production_tool_connection_status();
 extern int g_mmi_at_led_flag;
 
 /************************************************************************************
@@ -301,6 +303,7 @@
 {
 	BOOL longPress = mmi_get_longpress_flag();
 	BOOL key_wakeup = mmi_get_wakeup_flag();
+	int connect_status = get_production_tool_connection_status();
 	slog(MMI_PRINT, SLOG_DEBUG, "ZTE_MMI  mmi_handle_keystroke_longpress  longPress=%d key_wakeup=%d\n", longPress, key_wakeup);
 	if ((FALSE == longPress) && (FALSE == key_wakeup)) {
 		slog(MMI_PRINT, SLOG_DEBUG, "ZTE_MMI KEYLONGPRESS!KEYLONGPRESS!\n");
@@ -326,7 +329,7 @@
 		} else if (key_type == KEY_TYPE_RESET) {
 			slog(MMI_PRINT, SLOG_DEBUG, "ZTE_MMI handleKey ######KEY_RESET LONGPRESS######\n\n");
 			if (mmi_get_lcd_mode() == MMI_FAKE_POWEROFF_CHARGE_MODE || mmi_get_lcd_mode() == MMI_FAKE_POWEROFF_MODE
-			    || mmi_get_led_mode() == MMI_FAKE_POWEROFF_CHARGE_MODE || mmi_get_led_mode() == MMI_FAKE_POWEROFF_MODE) {
+			    || mmi_get_led_mode() == MMI_FAKE_POWEROFF_CHARGE_MODE || mmi_get_led_mode() == MMI_FAKE_POWEROFF_MODE || connect_status) {
 				return;//break;
 			}
 			mmi_set_factory_reset();
@@ -351,6 +354,7 @@
 void mmi_handle_keystroke(MMI_KP_INFO* keyData,BOOL* key_pressed)
 {
 	const char *buttonStr = NULL;  
+	int connect_status = get_production_tool_connection_status();
 
     if (keyData->type == KEY_TYPE_WPS)
 	{
@@ -360,10 +364,6 @@
 	{
 		buttonStr = "+BUTTON: RESET\r\n";
 	}
-	else if (keyData->type == KEY_TYPE_POWER)
-	{
-		buttonStr = "+BUTTON: POWER\r\n";
-	}
 	else
 		return;
 
@@ -375,6 +375,10 @@
 	else if (keyData->status == KEY_STATUS_UP && key_pressed)
 	{
 		send_rsp_str_to_farps(MODULE_ID_MMI, buttonStr, strlen(buttonStr));
+		if(keyData->type == KEY_TYPE_RESET && connect_status)
+		{
+			send_button_inform_action("BUTTON: RESET");
+		}
 		key_pressed = FALSE;
 	}
 	else
diff --git a/lynq/S300AI/ap/app/zte_cpe/Makefile b/lynq/S300AI/ap/app/zte_cpe/Makefile
index 4dfd38f..42ecbc1 100755
--- a/lynq/S300AI/ap/app/zte_cpe/Makefile
+++ b/lynq/S300AI/ap/app/zte_cpe/Makefile
@@ -19,6 +19,7 @@
        ../zte_comm/fluxstat/fluxstat.o \

        ../zte_comm/sntp/sntp.o \

        ../zte_comm/schedule_restart/schedule_restart.o \

+	   ../zte_comm/tcp_socket_server/tcp_socket_server.o \

        ../zte_comm/sd_hotplug/sd_hotplug.o ../zte_comm/sd_hotplug/sd_httpshare.o \

        $(patsubst %.c,%.o,$(wildcard ../zte_comm/sms/src/*.c )) \

        $(patsubst %.c,%.o,$(wildcard ../zte_comm/fota_dm/src/*.c )) \

@@ -222,7 +223,7 @@
 CFLAGS += -I../zte_comm/phonebook/inc

 

 CFLAGS	 += -I../zte_comm/wlan/inc

-

+CFLAGS += -I$(zte_lib_path)/libamt

 

 CFLAGS	+= -I../zte_comm/fota_dm/inc

 #CFLAGS 	+= -I../zte_comm/fota_dm/gs_lib

@@ -254,7 +255,16 @@
 ifneq ($(CONFIG_MMI_LCD),no)

 LDLIBS += -lzcore

 LDLIBS += -lrt

+ifeq ($(USE_TTF_FONT), yes)

+LDLIBS += -lft2

+LDLIBS += -lttf_font

+else

+LDLIBS += -lbitmap_font

+endif

 LDLIBS += -L$(zte_lib_path)/libzcore/min

+ifeq ($(USE_TTF_FONT), yes)

+LDLIBS += -L$(zte_lib_path)/libzcore/min/prebuilts/freetype

+endif

 endif

 

 LDLIBS +=  -lztedmapp  -L$(zte_lib_path)/libzte_dmapp

diff --git a/lynq/S300AI/ap/app/zte_cpe/zte_cpe.c b/lynq/S300AI/ap/app/zte_cpe/zte_cpe.c
index b4fb0da..abcae1b 100755
--- a/lynq/S300AI/ap/app/zte_cpe/zte_cpe.c
+++ b/lynq/S300AI/ap/app/zte_cpe/zte_cpe.c
@@ -108,13 +108,13 @@
 	//}
 	return;
 }
-/*
+
 void zte_locknet_entry(char *arg)
 {
 	zte_locknet_main(0,NULL);
 	//return; //klocwork
 }
-*/
+
 void zte_watchdog_entry(char *arg)
 {
 	zte_watchdog_main(0,NULL);
@@ -139,6 +139,18 @@
 	return;
 }
 
+void tcp_socket_server_entry(char *arg)
+{
+	tcp_socket_server_main(0,NULL);
+	return;
+}
+
+void tcp_socket_reset_server_entry(char *arg)
+{
+	tcp_socket_reset_server_main(0,NULL);
+	return;
+}
+
 /*
 void sd_hotplug_entry(char *arg)
 {
@@ -150,13 +162,13 @@
 {
 	sms_main(0,NULL);
 }
-/*
+
 void phonebook_entry(char *arg)
 {
 	phonebook_main(0,NULL);
 	return;
 }
-*/
+
 void wlan_entry(char *arg)
 {
 	wlan_main(0,NULL);
@@ -257,8 +269,8 @@
 			
 			if(atoi(LanEnable) == 1) { //mifiÐÎ̬
 					/* zte_locknet */
-				//pthread_t zte_locknet_thread_tid;
-				//pthread_create(&zte_locknet_thread_tid, NULL, (void *)zte_locknet_entry, NULL);
+				pthread_t zte_locknet_thread_tid;
+				pthread_create(&zte_locknet_thread_tid, NULL, (void *)zte_locknet_entry, NULL);
 				/* fluxstat */
 
 				pthread_t fluxstat_thread_tid;
@@ -267,8 +279,13 @@
 				pthread_t sntp_thread_tid;
 				pthread_create(&sntp_thread_tid, NULL, (void *)sntp_entry, NULL);
 				/* schedule_restart */
-				pthread_t schedule_restart_thread_tid;
-				pthread_create(&schedule_restart_thread_tid, NULL, (void *)schedule_restart_entry, NULL);
+				//pthread_t schedule_restart_thread_tid;
+				//pthread_create(&schedule_restart_thread_tid, NULL, (void *)schedule_restart_entry, NULL);
+				/* tcp socket server */
+				pthread_t tcp_socket_server_thread_tid;
+				pthread_create(&tcp_socket_server_thread_tid, NULL, (void *)tcp_socket_server_entry, NULL);
+				pthread_t tcp_socket_reset_server_thread_tid;
+				pthread_create(&tcp_socket_reset_server_thread_tid, NULL, (void *)tcp_socket_reset_server_entry, NULL);
 				/* sd_hotplug */
 				//pthread_t sd_hotplug_thread_tid;
 				//pthread_create(&sd_hotplug_thread_tid, NULL, (void *)sd_hotplug_entry, NULL);
diff --git a/lynq/S300AI/ap/app/zte_cpe/zte_cpe.h b/lynq/S300AI/ap/app/zte_cpe/zte_cpe.h
index 7ef7ff6..bd53fdb 100755
--- a/lynq/S300AI/ap/app/zte_cpe/zte_cpe.h
+++ b/lynq/S300AI/ap/app/zte_cpe/zte_cpe.h
@@ -48,6 +48,8 @@
 int fluxstat_main(int argc, char * argv[]);
 int sntp_main(int argc, char * argv[]);
 int schedule_restart_main(int argc, char * argv[]);
+int tcp_socket_server_main(int argc, char * argv[]);
+int tcp_socket_reset_server_main(int argc, char * argv[]);
 int sd_hotplug_init(viod);
 int sd_hotplug_main(int argc, char* argv[]);
 int sms_main(int argc, char* argv[]);
diff --git a/lynq/S300AI/ap/app/zte_webui/css/com.css b/lynq/S300AI/ap/app/zte_webui/css/com.css
deleted file mode 100755
index 9761893..0000000
--- a/lynq/S300AI/ap/app/zte_webui/css/com.css
+++ /dev/null
@@ -1,2602 +0,0 @@
-/* Reset the container */
-.container {
-  width: 970px !important;
-  max-width: none !important;
-}
-
-.container .navbar-header,
-.container .navbar-collapse {
-  margin-right: 0;
-  margin-left: 0;
-}
-
-/* Always float the navbar header */
-.navbar-header {
-  float: left;
-}
-
-/* Undo the collapsing navbar */
-.navbar-collapse {
-  display: block !important;
-  height: auto !important;
-  padding-bottom: 0;
-  overflow: visible !important;
-}
-
-.navbar-toggle {
-  display: none;
-}
-.navbar-collapse {
-  border-top: 0;
-}
-
-.navbar-brand {
-  margin-left: -15px;
-}
-
-/* Always apply the floated nav */
-.navbar-nav {
-  float: left;
-  margin: 0;
-}
-.navbar-nav > li {
-  float: left;
-}
-.navbar-nav > li > a {
-  padding: 15px;
-}
-
-/* Redeclare since we override the float above */
-.navbar-nav.navbar-right {
-  float: right;
-}
-
-/* Undo custom dropdowns */
-.navbar .navbar-nav .open .dropdown-menu {
-  position: absolute;
-  float: left;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, .15);
-  border-width: 0 1px 1px;
-  border-radius: 0 0 4px 4px;
-  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-}
-.navbar-default .navbar-nav .open .dropdown-menu > li > a {
-  color: #333;
-}
-.navbar .navbar-nav .open .dropdown-menu > li > a:hover,
-.navbar .navbar-nav .open .dropdown-menu > li > a:focus,
-.navbar .navbar-nav .open .dropdown-menu > .active > a,
-.navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
-.navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
-  color: #fff !important;
-  background-color: #008AD7 !important;
-}
-.navbar .navbar-nav .open .dropdown-menu > .disabled > a,
-.navbar .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-.navbar .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-  color: #999 !important;
-  background-color: transparent !important;
-}
-
-body {
-    min-width: 970px;
-    padding-bottom: 30px;
-}
-
-.lead {
-  font-size: 16px;
-}
-
-.page-header {
-  margin-bottom: 30px;
-}
-.page-header .lead {
-  margin-bottom: 10px;
-}
-h1, .h1 {
-    font-size: 20px;
-}
-h2, .h2 {
-    font-size: 18px;
-}
-h3, .h3 {
-    font-size: 18px;
-}
-label{
-    font-weight: normal;
-}
-h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6{
-    font-weight: bold;
-}
-
-.label-primary {
-    background-color: #018AD8;
-}
-
-.arrow-down {
-    bottom:0;
-    border-width: 8px 4px 0;
-	width: 0;
-    height: 0;
-    border-color: #018AD8 transparent transparent;
-    border-style: solid;
-}
-
-.absolute-center {
-    position: absolute;
-    left: 49%;
-}
-
-.info-title.label {
-    padding: 0.3em 0.7em 0.3em;
-}
-
-.margin-top-10 {margin-top: 10px;}
-.margin-top-15 {margin-top: 15px;}
-.margin-top-20 {margin-top: 20px;}
-.margin-top-50 {margin-top: 50px;}
-.margin-top-80 {margin-top: 80px;}
-.margin-top-160 {margin-top: 160px;}
-
-.margin-bottom-10{margin-bottom: 10px;}
-.margin-bottom-20{margin-bottom: 20px;}
-.margin-bottom-50{margin-bottom: 50px;}
-
-.margin-left-10{margin-left: 10px;}
-.margin-left-15{margin-left: 15px;}
-.margin-left-3em{margin-left: 3em;}
-
-.margin-right-20{margin-right: 20px;}
-
-.padding-top-10{padding-top: 10px;}
-
-.padding-right-10{padding-right: 10px;}
-.padding-right-15{padding-right: 15px;}
-.padding-right-90 {
-    padding-right: 90px;
-}
-
-.line-height-20{line-height: 20px;}
-.line-height-30{line-height: 30px;}
-.line-height-40{line-height: 40px;}
-.line-height-60{line-height: 60px;}
-
-.width-60{width: 60px;}
-
-.font-weight-bold{
-    font-weight: bold;
-}
-
-.smsUnreadCount {
-    width: 30px;
-    height: 20px;
-    line-height: 20px;
-    padding: 2px;
-    top: -13px;
-    left: 20px;
-    position: absolute;
-    text-align: center;
-    z-index: 10;
-    background: url("../pic/png_new_sms_bg.png") no-repeat scroll 0 -5px transparent;
-    color: white;
-}
-
-.tooltip {
-    width: auto;
-    min-width: 5px;
-    position: absolute;
-    padding: 6px;
-    display: none;
-    color: #fff;
-    background-color: #4B4B4B;
-    border-radius: 4px;
-    -moz-border-radius: 4px;
-    -webkit-border-radius: 4px;
-    box-shadow: 0 3px 5px #999;
-    -moz-box-shadow: 0 3px 5px #999;
-    -webkit-box-shadow: 0 3px 5px #999;
-    margin-top: 5px;
-    *+margin-top:0px;
-}
-
-#statusBar span{
-    margin-right: 10px;
-}
-
-#statusBar span.smsUnreadCount{
-    margin-left: 0;
-}
-
-#statusBar .statusItem{
-    color: #696E72;
-    font-weight: bold;
-    line-height: 35px;
-    vertical-align: middle;
-}
-
-#statusBar #wifi_status{
-    width: 36px;
-    display: inline-block;
-}
-
-#statusBar #wifi_status i{
-    width: 36px;
-    height: 24px;
-    line-height: 24px;
-    display: inline-block;
-}
-
-#statusBar .icon_connection{
-    width: 50px;
-    display: inline-block;
-}
-
-#statusBar .wifi_connected{
-    width: 42px;
-    height: 30px;
-    background:url("../pic/pic_wifi_connect.png") no-repeat scroll center 2px transparent;
-}
-
-#statusBar .rj45_connected{
-    width: 42px;
-    height: 30px;
-    background:url("../pic/pic_rj45_connect.png") no-repeat scroll center 2px transparent;
-}
-
-#statusBar .connecting{
-    width: 36px;
-    height: 30px;
-    background:url("../pic/pic_connecting.gif") no-repeat scroll center 3px transparent;
-}
-
-#statusBar .disconnect{
-    width: 42px;
-    height: 30px;
-    background:url("../pic/pic_disconnect.png") no-repeat scroll center 3px transparent;
-}
-
-#statusBar .connectionNone{
-    height: 30px;
-    background:url("../pic/pic_connection.png") no-repeat scroll center 3px transparent;
-}
-
-#statusBar .connectionUp{
-    height: 30px;
-    background:url("../pic/pic_connection.png") no-repeat scroll center -27px transparent;
-}
-
-#statusBar .connectionDown{
-    height: 30px;
-    background:url("../pic/pic_connection.png") no-repeat scroll center -57px transparent;
-}
-
-#statusBar .connectionBoth{
-    height: 30px;
-    background:url("../pic/pic_connection.png") no-repeat scroll center -87px transparent;
-}
-
-#statusBar .signal{
-    width: 40px;
-    height: 30px;
-    display: inline-block;
-}
-
-#statusBar .signal_none{
-    width: 30px;
-    height: 30px;
-    background:url("../pic/res_signal.png") no-repeat scroll 6px -268px transparent;
-}
-
-#statusBar .signal0{
-    height: 30px;
-    background:url("../pic/res_signal.png") no-repeat scroll center -3px transparent;
-}
-
-#statusBar .signal1{
-    height: 30px;
-    background:url("../pic/res_signal.png") no-repeat scroll center -45px transparent;
-}
-
-#statusBar .signal2{
-    height: 30px;
-    background:url("../pic/res_signal.png") no-repeat scroll center -92px transparent;
-}
-
-#statusBar .signal3{
-    height: 30px;
-    background:url("../pic/res_signal.png") no-repeat scroll center -140px transparent;
-}
-
-#statusBar .signal4{
-    height: 30px;
-    background:url("../pic/res_signal.png") no-repeat scroll center -185px transparent;
-}
-
-#statusBar .signal5{
-    height: 30px;
-    background:url("../pic/res_signal.png") no-repeat scroll center -227px transparent;
-}
-
-#statusBar .wifi_status0{
-    background: url("../pic/wlan.png") no-repeat scroll 0 4px transparent;
-}
-
-#statusBar .wifi_status1{
-    background: url("../pic/wlan.png") no-repeat scroll 0 -20px transparent;
-}
-
-#statusBar .wifi_status2{
-    background: url("../pic/wlan.png") no-repeat scroll 0 -45px transparent;
-}
-
-#statusBar .wifi_status3{
-    background: url("../pic/wlan.png") no-repeat scroll 0 -70px transparent;
-}
-
-#statusBar .wifi_status4{
-    background: url("../pic/wlan.png") no-repeat scroll 0 -95px transparent;
-}
-
-#statusBar .wifi_status5{
-    background: url("../pic/wlan.png") no-repeat scroll 0 -120px transparent;
-}
-
-#statusBar .wifi_status6{
-    background: url("../pic/wlan.png") no-repeat scroll 0 -145px transparent;
-}
-
-#statusBar .wifi_status7{
-    background: url("../pic/wlan.png") no-repeat scroll 0 -170px transparent;
-}
-
-#statusBar .wifi_status8{
-    background: url("../pic/wlan.png") no-repeat scroll 0 -195px transparent;
-}
-
-#statusBar .wifi_status9{
-    background: url("../pic/wlan.png") no-repeat scroll 0 -220px transparent;
-}
-
-#statusBar .wifi_status10{
-    background: url("../pic/wlan.png") no-repeat scroll -40px 4px transparent;
-}
-
-#statusBar .wifi_status11{
-    background: url("../pic/wlan.png") no-repeat scroll -40px -20px transparent;
-}
-
-#statusBar .wifi_status12{
-    background: url("../pic/wlan.png") no-repeat scroll -40px -45px transparent;
-}
-
-#statusBar .wifi_status13{
-    background: url("../pic/wlan.png") no-repeat scroll -40px -70px transparent;
-}
-
-#statusBar .wifi_status14{
-    background: url("../pic/wlan.png") no-repeat scroll -40px -95px transparent;
-}
-
-#statusBar .wifi_status15{
-    background: url("../pic/wlan.png") no-repeat scroll -40px -120px transparent;
-}
-
-#statusBar .wifi_status16{
-    background: url("../pic/wlan.png") no-repeat scroll -40px -145px transparent;
-}
-
-#statusBar .wifi_status17{
-    background: url("../pic/wlan.png") no-repeat scroll -40px -170px transparent;
-}
-
-#statusBar .wifi_status18{
-    background: url("../pic/wlan.png") no-repeat scroll -40px -195px transparent;
-}
-
-#statusBar .wifi_status19{
-    background: url("../pic/wlan.png") no-repeat scroll -40px -220px transparent;
-}
-
-#statusBar .wifi_status20{
-    background: url("../pic/wlan.png") no-repeat scroll -78px 5px transparent;
-}
-
-#statusBar .wifi_status21{
-    background: url("../pic/wlan.png") no-repeat scroll -78px -20px transparent;
-}
-
-#statusBar .wifi_status22{
-    background: url("../pic/wlan.png") no-repeat scroll -78px -45px transparent;
-}
-
-#statusBar .wifi_status23{
-    background: url("../pic/wlan.png") no-repeat scroll -78px -70px transparent;
-}
-
-#statusBar .wifi_status24{
-    background: url("../pic/wlan.png") no-repeat scroll -78px -95px transparent;
-}
-
-#statusBar .wifi_status25{
-    background: url("../pic/wlan.png") no-repeat scroll -78px -120px transparent;
-}
-
-#statusBar .wifi_status26{
-    background: url("../pic/wlan.png") no-repeat scroll -78px -145px transparent;
-}
-
-#statusBar .wifi_status27{
-    background: url("../pic/wlan.png") no-repeat scroll -78px -170px transparent;
-}
-
-#statusBar .wifi_status28{
-    background: url("../pic/wlan.png") no-repeat scroll -78px -195px transparent;
-}
-
-#statusBar .wifi_status29{
-    background: url("../pic/wlan.png") no-repeat scroll -78px -220px transparent;
-}
-
-#statusBar .wifi_status30{
-    background: url("../pic/wlan.png") no-repeat scroll -116px 5px transparent;
-}
-
-#statusBar .wifi_status31{
-    background: url("../pic/wlan.png") no-repeat scroll -116px -20px transparent;
-}
-
-#statusBar .wifi_status32{
-    background: url("../pic/wlan.png") no-repeat scroll -116px -45px transparent;
-}
-
-#statusBar .wifi_status_off{
-    background:url('../pic/wlan_off.png') no-repeat;
-}
-
-/* Overlay */
-#loading {
-    display: none;
-}
-
-#result-overlay {
-    display: none;
-}
-
-#result_wording h2{
-    font-size: 20px;
-    margin-top: 5px;
-    margin-bottom: 8px;
-}
-
-#result-overlay #result-image {
-    height: 75px;
-    margin: 0 auto;
-    width: 75px;
-}
-
-#result-overlay .overlay-success {
-    background: url("../pic/res_succ.png") no-repeat scroll 0 0 transparent;
-}
-
-#result-overlay .overlay-error {
-    background: url("../pic/res_failure.png") no-repeat scroll 0 0 transparent;
-}
-
-#loading_container{padding-bottom: 15px;}
-
-#loading_container a {
-    outline: none;
-}
-
-#progress {
-    display: none;
-}
-
-
-.ko-grid-search{
-    box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
-    margin-top: 3px;
-    margin-right: 15px;
-    width: 155px;
-    height: 30px;
-    line-height: 30px;
-    padding-right: 5px;
-    display: inline-block;
-    border: 1px solid #a1a1a1 ;
-    border-radius: 5px;
-    -moz-border-radius: 5px;
-    -webkit-border-radius: 5px;
-    -khtml-border-radius: 5px;
-    -ms-border-radius: 5px;
-    -o-border-radius: 5px;
-}
-
-.ko-grid-search input{
-    border: 0;
-    -webkit-box-shadow: none;
-    box-shadow: none;
-    border: none;
-    height: 20px;
-    line-height: 20px;
-    padding: 5px 0;
-    background: none;
-    outline: none;
-    display: inline;
-}
-
-.ko-grid-search input.focusIn[type="text"]{
-    width: 100px;
-    padding: 2px 0;
-    margin: 0;
-    color: #767676;
-    background: none;
-    border: none;
-    box-shadow: none;
-}
-
-#frmPhoneBook #ko_grid_search_txt{
-    width: 100px;
-    padding: 2px 0;
-    color: #767676;
-    font-style:italic;
-}
-
-#smsListForm #searchInput{
-    width: 100px;
-    padding: 2px 0;
-    color: #767676;
-    font-style:italic;
-}
-
-#ko_grid_search_txt::-ms-clear {
-    display: none;
-}
-
-.ko-grid-search input.focusIn[type="text"], input.focusIn[type="password"] ,textarea:focus{
-    border-color:none;
-    outline: 0;
-    /* IE6-9 */
-    -webkit-box-shadow:none;
-    -moz-box-shadow: none;
-    box-shadow: none;
-}
-
-.checkbox {
-    width: 16px;
-    height: 16px;
-    margin-top: 0;
-    margin-bottom: 0;
-    cursor: pointer;
-    vertical-align: middle;
-    display: inline-block;
-    background:url("../pic/tickbox.png") no-repeat;
-}
-
-.checkbox:hover {
-    display: inline-block;
-}
-
-.checkbox input {
-    display: none;
-}
-
-.checkbox_selected {
-    background:url("../pic/tickbox_in.png") no-repeat;
-}
-
-p.checkbox.disable{
-    background:url("../pic/tickbox_disable.png") no-repeat;
-}
-
-p.checkbox.checked_disable{
-    background:url("../pic/tickbox_in_disable.png") no-repeat;
-}
-
-.header-bottom {
-    padding-bottom: 10px;
-    border-bottom: 1px solid #d3d3d3;
-}
-
-.popover_title{
-    font-size: 14px;
-    font-weight: normal;
-    line-height: 18px;
-    margin: 0;
-    padding: 8px 14px;
-    border-bottom: 1px solid #ebebeb;
-    border-radius: 5px 5px 0 0;
-    background-color: #f7f7f7;
-}
-
-.popover_content{
-    margin-top: 1em;
-    padding: 0 8px 8px 8px;
-}
-
-.popover_row label.error{
-    width: 100%;
-    text-align: left;
-}
-
-.form-title{
-    margin-bottom: 20px;
-    border-bottom: 1px solid #eee;
-}
-
-#footer{
-    /*margin-top: 40px;
-    background: #eeeeee;*/
-    height: 60px;
-    line-height: 60px;
-    text-align: center;
-}
-
-#smsChatRoom {
-    width: 100%;
-    font-size: 12px;
-    padding-left: 0;
-    float: left;
-    display: none;
-}
-
-#smsChatRoom #chosenUserSelect{
-    width: 690px;
-}
-
-#chosenUser {
-    padding: 10px;
-    background-color: #D4DAE2;
-    box-shadow: 0 -3px 8px #ddd;
-}
-
-#chosenUser1{
-    margin-top: 0;
-}
-
-#chatlist {
-    padding-left: 10px;
-    padding-top: 10px;
-    background-color: white;
-    position: relative;
-    min-height: 240px;
-    box-shadow: 0 -3px 8px #D4DAE2;
-    *display: inline;
-}
-
-#chatlist a{
-    text-decoration: underline;
-    color: blue;
-}
-
-#chatpanel {
-    height: 250px;
-    border: 1px solid #e1e1e1;
-    overflow-x: hidden;
-    overflow-y: hidden;
-    background-color: white;
-}
-
-#chatpanel .clear-container {
-    width: 100%;
-    height: 250px;
-    border: 1px solid #e1e1e1;
-    border-top: none;
-    border-left: none;
-    position: relative;
-    overflow-x: hidden;
-    overflow-y: auto;
-}
-
-#inputpanel {
-    height: 142px;
-    padding: 10px 0;
-    position: relative;
-}
-
-.chatform {
-    margin: 0;
-    height: 120px;
-}
-
-textarea {
-	resize: none;
-}
-
-.chatform .chattextinput textarea {
-    height: 110px;
-    line-height:normal;
-    font-size: 14px;
-    color: #696e72;
-    overflow: auto;
-}
-
-#sendSmsErrorLi{
-    color: #CC0000;
-}
-
-.chatfun {
-    padding-top: 8px;
-}
-
-.chatfun ul.ext {
-    float: left;
-}
-
-.chatfun ul.ext li {
-    float: left;
-    padding-left: 10px;
-    margin-right: 20px;
-}
-
-.chatfun ul.btn {
-    float: right;
-}
-
-.chatfun ul.btn li {
-    float: left;
-    margin-right: 10px;
-}
-
-.chatfun ul.btn li button {
-    padding: 1px 0;
-}
-
-.grid-talk .main-wrap {
-    margin-right: 36px;
-    _margin-right: 18px;
-}
-
-.grid-talkf .main-wrap {
-    margin-left: 36px;
-    _margin-left: 18px;
-}
-
-.col-main {
-    float: left;
-    width: 100%;
-    min-height: 1px;
-}
-
-
-.progress-content{
-    text-align: center
-}
-
-.progress-bar-container{
-    width:400px; height:32px;
-    margin:0 auto;
-    padding:1px;
-    border:1px #CCC solid;
-    text-align: left;
-    position:relative;
-}
-
-.progress-bar{
-    width:200px;
-    height:28px;
-    background:#429aff;
-}
-
-.progress-bar-value{
-    top:7px;
-    width:400px;
-    position:absolute;
-    text-align:center;
-    overflow:hidden;
-    font-weight:bold;
-}
-
-.progress-prompt{
-    font-size:small;
-    font-weight:bold;
-    padding-bottom: 15px;
-}
-
-#simplemodal-overlay {
-    cursor: wait;
-    background-color: #000;
-}
-
-#confirm,#popupSettingWindow{
-    display: none;
-}
-
-/* Overlay */
-#confirm-overlay {
-    cursor: wait;
-    background-color: #000;
-}
-
-/* Container */
-#confirm-container {
-    width: 420px;
-    border: 2px solid #dddddd;
-    border-radius: 6px;
-    -webkit-border-radius: 6px;
-    -moz-border-radius: 6px;
-    text-align: left;
-    background: none repeat scroll 0 0 #fff;
-}
-
-#confirm-container .header {
-    width: 100%;
-    height: 30px;
-    line-height: 30px;
-    color: #000;
-    font-weight: bold;
-    background-color: #eaeaea;
-    border-bottom: 1px solid #cbcbcb;
-}
-
-#confirm-container .header span {
-    padding-left: 8px;
-}
-
-#confirm-container .buttons {
-    padding: 10px 8px;
-    text-align: right;
-}
-
-#confirm-container .message {
-    color: #000;
-    font-size: 14px;
-}
-
-#confirm .message > i {
-    font-size: 0.9em;
-}
-
-#confirm-message-container{
-    margin: 10px 5px;
-}
-
-#confirm .icon {
-    width: 50px;
-    margin: 0 0 0 10px;
-    vertical-align: top;
-    display: inline-block;
-}
-
-#confirm .confirm-message {
-    width: 310px;
-    margin: 10px 10px 10px 0;
-    vertical-align: top;
-    display: inline-block;
-}
-
-.simplemodal-wrap .form-title{
-    font-size: 16px;
-    font-weight: bold;
-}
-
-.cursorhand{
-    cursor: pointer;
-}
-
-.device-block{
-    width: 100px;
-    margin: 0 24px 5px 0;
-    text-align: center;
-    text-decoration: none;
-    display: inline-block;
-}
-
-.device-block-desc{
-    padding-top: 100px;
-    width: 100px;
-    display: inline-block;
-    overflow: hidden;
-    vertical-align: middle;
-    text-align: center;
-    white-space: nowrap;
-    text-overflow: ellipsis;
-    background: url("../pic/mobile.png") no-repeat scroll 0 0 transparent;
-}
-
-.expend-desc{
-    padding-left: 2em;
-}
-
-.arrow-right{
-    padding-right: 30px;
-    background: url("../pic/direct-right.png") no-repeat scroll right center transparent;
-}
-
-#pc_main_form .content {
-    padding-left: 2em;
-}
-
-table.colorHoverTable thead tr {
-    height: 27px;
-}
-
-.header-center th{
-    text-align: center;
-}
-
-#pc_time_limited_form table thead tr{
-    background: none;
-}
-
-#pc_time_limited_form table thead td{
-    min-width: 4%;
-}
-
-#pc_time_limited_form table tbody td{
-    border: 1px solid #ccc;
-    height: 40px;
-    vertical-align: middle;
-	/*line-height: 40px;*/
-    padding: 0;
-    border-collapse: collapse;
-}
-
-#pc_time_limited_form table tbody td.active{
-    background-color: red;
-}
-
-#pc_time_limited_form table tbody td:first-child{
-    width: 50px;
-    border-width: 0 1px 0 0;
-}
-
-#pc_time_limited_form .pc_time_block{
-    width: 20px;
-    height: 20px;
-    display: inline-block;
-    border: 1px solid #ccc;
-}
-
-#pc_time_limited_form .time_td_hover{
-    background: #eee;
-}
-
-#pc_time_limited_form .forbid_time{
-    background-color: red;
-}
-
-#pc_children_group_form table td{
-    line-height: 32px;
-}
-
-.layout:after,.main-wrap:after,.col-sub:after,.col-extra:after {
-    content: '\20';
-    display: block;
-    height: 0;
-    clear: both;
-}
-
-.talk-item {
-    margin: 10px 0 5px 0;
-}
-
-.talk-item .info-user {
-    width: 30px;
-    padding: 2px;
-    border: 1px solid #335A8B;
-    -webkit-border-radius: 5px;
-    -moz-border-radius: 5px;
-    border-radius: 5px;
-    background-color: #fff;
-}
-
-.talk-item .info-user img {
-    width: 30px;
-    display: block;
-}
-
-.talk-item .time {
-    height: 20px;
-    line-height: 20px;
-    clear: both;
-}
-
-.talk-item .msg {
-    padding: 10px;
-    max-width: 560px;
-    line-height: 180%;
-    position: relative;
-    -webkit-border-radius: 5px;
-    -moz-border-radius: 5px;
-    border-radius: 5px;
-    word-break: break-all;
-    word-wrap: break-word;
-    color: #000;
-}
-
-.talk-item .msg s.arrow {
-    width: 7px;
-    height: 13px;
-    bottom: 10px;
-    display: block;
-    position: absolute;
-    background: url(../pic/a-direct.png) no-repeat;
-}
-
-.talk-b .msg_fail s.arrow{
-    bottom: 10px;
-    display: block;
-    width: 7px;
-    height: 13px;
-    left: 100%;
-    position: absolute;
-    background: url(../pic/c-direct.png) no-repeat;
-}
-
-.talk-item .msg_fail {
-    padding: 10px;
-    line-height: 180%;
-    max-width: 560px;
-    position: relative;
-    -webkit-border-radius: 5px;
-    -moz-border-radius: 5px;
-    border-radius: 5px;
-    word-break: break-all;
-    word-wrap: break-word;
-    color: #000;
-}
-
-.talk-b .msg_fail{
-    float: right;
-    min-width: 70px;
-    padding: 10px 10px 15px 10px;
-    background: #ffdbdb;
-    border: 1px solid #f46c6c;
-    min-width: 350px;
-}
-
-.msg_fail pre{
-    border: medium none;
-    line-height: 17px;
-    margin: 0;
-    overflow-x: auto;
-    padding: 0;
-    white-space: pre-wrap;
-    word-wrap: break-word;
-    color: #696e72;
-    background: none repeat scroll 0 0 transparent;
-}
-
-#smsChatRoom .error {
-    color: #CC0000;
-}
-
-.info-talk{
-    color: #87acd6;
-}
-
-.talk-a .info-talk {
-    float: left;
-    padding: 0 20% 10px 10px;
-    min-width: 420px;
-    _float: none;
-    _padding-left: 26px;
-}
-
-.talk-a .msg {
-    min-width: 350px;
-    min-height: 20px;
-    border: 1px solid #ccc;
-    background: #eef2f4;
-}
-
-.talk-a .msg s.arrow {
-    left: -7px;
-    _left: -17px;
-}
-
-.talk-b {
-    margin-right: 10px;
-    _margin-right: 20px;
-}
-
-.talk-b .info-talk {
-    float: right;
-    min-width: 420px;
-    padding: 0 10px 10px 20%;
-}
-
-.talk-b .msg {
-    float: right;
-    min-width: 350px;
-    min-height: 20px;
-    border: 1px solid #ADCAE3;
-    padding: 10px 10px 10px 10px;
-    background: #bce3f4;
-}
-
-.talk-c {
-    margin-right: 20px;
-    _margin-right: 30px;
-}
-
-.talk-b .info-talk {
-    float: right;
-    min-width: 420px;
-    padding: 0 10px 10px 20%;
-}
-
-.talk-c .msg {
-    float: right;
-    min-width: 70px;
-    padding: 10px 10px 15px 10px;
-    border: 1px solid #ADCAE3;
-    background: #bce3f4;
-}
-
-.talk-b .msg s.arrow {
-    left: 100%;
-    background: url("../pic/b-direct.png") no-repeat;
-}
-
-#smslist-main .smslist-btns.smsListFloatButs{
-    position: fixed;
-    top: 0;
-    width: 770px;
-    height: 50px;
-    padding: 6px 0 0 0;
-    border: 1px solid #018AD8;
-    display: block;
-    z-index: 9999;
-    background: #F5F9FE;
-    background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#F5F9FE), to(#018AD8) );
-    background: -ms-linear-gradient(top, #F5F9FE, #018AD8);
-    background: -moz-linear-gradient(top, #F5F9FE, #018AD8);
-    background: -o-linear-gradient(top, #F5F9FE, #018AD8);
-    filter: progid:dximagetransform.microsoft.gradient(enabled='true', startColorstr='#FFF5F9FE', endColorstr='#FF018AD8', GradientType=0);
-}
-
-#popupSettingWindow .tag-popup-close{
-    height: 0;
-    position: relative;
-    z-index: 2000;
-}
-
-#popupSettingWindow .tag-popup-close a {
-    float: right;
-    display: block;
-    top: 15px;
-    right: 15px;
-    width: 12px;
-    height: 13px;
-    font-size: 1px;
-    background: url("../pic/select-sprite.png") no-repeat scroll right -11px transparent;
-    position: absolute;
-}
-
-#innerTagPopup{
-    z-index: 250;
-    width: 185px;
-    line-height: 130%;
-    border: 1px solid #D4DAE2;
-    border-radius: 5px;
-    position: absolute;
-    background-color: #D4DAE2;
-    box-shadow: 0 -3px 8px #DDDDDD;
-}
-
-#innerTagPopup label.error{
-    color: #CC0000;
-    display: block;
-}
-
-#innerTagPopup .popup-wrapper {
-    background: #fff;
-    border: 2px solid #76b2de;
-    padding: 5px;
-}
-
-#innerTagPopup .tag-popup-close a {
-    float: right;
-    display: block;
-    width: 12px;
-    height: 13px;
-    font-size: 1px;
-    background: url("../pic/select-sprite.png") no-repeat scroll right -11px transparent;
-}
-
-
-#home_control{
-    color: #fff;
-    margin: 4px 0 0;
-}
-
-#home_control #change{
-    color: #ffffff;
-    font-weight: bold;
-    padding: 3px 15px;
-    background-color: transparent;
-}
-
-#home_image{
-    height: 400px;
-    color: #fff;
-}
-
-.label-font-normal label{
-    font-weight: normal;
-}
-
-#showDetailInfo ~ .popover{
-    min-width: 400px;
-}
-
-#showDetailInfo ~ .popover label{
-    font-size: 12px;
-    line-height: 1.5em;
-    word-wrap: break-word;
-}
-
-#h_qrcode {
-    width: 115px;
-    height: 115px;
-    background-color: #ffffff;
-    border: 1px solid #ffffff;
-}
-
-#h_wire_device {
-    top: 38px;
-    left: 130px;
-	display:inline;
-	margin-right:25px;
-    font-size: 30px;
-	display:inline-block;
-}
-
-#h_wireless_device {
-    font-size: 30px;
-    top: 105px;
-    left: 60px;
-	display:inline-block;
-}
-
-#h_network_type{
-    height: 30px;
-    top: 183px;
-    left: 415px;
-    line-height: 30px;
-    text-align: center;
-    font-size: 18px;
-}
-
-.data-card #h_network_type{
-    top: 156px;
-    left: 218px;
-}
-
-#h_network_type.no-btn {
-}
-
-#h_connect_btn{
-    width: 72px;
-    height: 35px;
-    display:inline-block;
-}
-
-.data-card #h_connect_btn{
-    top: 153px;
-    left: 323px;
-}
-
-.h_connect_on{
-    background: url('../pic/dial-on.png') no-repeat scroll 0 0 transparent;
-}
-
-.h_connect_off{
-    background: url('../pic/dial-off.png') no-repeat scroll 0 0 transparent;
-}
-
-#h_internet_setting_div{
-    top: 222px;
-    left: 418px;
-    width: 170px;
-    height: 35px;
-	margin-top:20px;
-    line-height: 35px;
-    text-align: center;
-}
-
-.data-card #h_internet_setting_div{
-    top: 205px;
-    left: 221px;
-}
-
-#h_internet_setting_btn{
-    width: 170px;
-    height: 35px;
-    line-height: 35px;
-    padding-right: 25px;
-    color: #fff;
-    display: block;
-    font-weight: bold;
-}
-
-#h_wifi_setting_div{
-    top: 318px;
-    left: 418px;
-    width: 170px;
-    height: 35px;
-    line-height: 35px;
-    text-align: center;
-}
-
-#h_wifi_setting_btn{
-    width: 170px;
-    height: 35px;
-    line-height: 35px;
-    padding-right: 25px;
-    color: #fff;
-    display: block;
-    font-weight: bold;
-}
-
-#h_connect_status{
-    top: 272px;
-    left: 670px;
-    width: 25px;
-    height: 25px;
-    position: absolute;
-}
-
-.h_status_connected{
-    background: url('../pic/local-connected.png') no-repeat scroll 0 0 transparent;
-}
-
-.h_status_disconnected{
-    background: url('../pic/local-disconnected.png') no-repeat scroll 0 0 transparent;
-}
-
-.h_status_connecting{
-    background: url('../pic/local-connecting.png') no-repeat scroll 0 0 transparent;
-}
-
-.h_status_disconnecting{
-    background: url('../pic/local-disconnecting.png') no-repeat scroll 0 0 transparent;
-}
-
-.color_block{
-    width: 20px;
-    height: 20px;
-    line-height: 20px;
-    border: 1px solid #ccc;
-    vertical-align: middle;
-    display: inline-block;
-}
-
-.color_block_desc{
-    line-height: 20px;
-    vertical-align: middle;
-    margin-left: 8px;
-    display: inline-block;
-}
-
-.colorRed{
-    color: #CC0000;
-}
-
-.msg pre{
-    line-height: 17px;
-    border: none;
-    margin: 0;
-    padding: 0;
-    overflow-x: hidden;
-    white-space: pre-wrap;
-    word-wrap: break-word;
-    color: #696e72;
-    background: none;
-}
-
-.smslist-item-icon {
-    width: 80px;
-    height: 80px;
-    margin-left: 10px;
-    margin-top: -6px;
-}
-
-.smslist-item-name {
-    max-width: 550px;
-    color: #000;
-    display: inline-block;
-    overflow: hidden;
-}
-
-.smslist-item-name2 {
-    color: #000;
-}
-
-.smslist-item-name-draftShowName{
-    display:inline;
-}
-
-.smslist-item-total-count-style{
-    float:left;
-    width:50px;
-    display:inline-block;
-    color:#696e72;
-}
-
-.smslist-item-repeat {
-    font-weight: bold;
-    line-height: 18px;
-    text-indent: 3px;
-    color: #7D8DA3;
-}
-
-.smslist-item-repeat:hover {
-    color: #207DDD;
-}
-
-.smslist-item{
-    border-bottom: 1px solid #e1e1e1;
-    margin-bottom: 10px;
-}
-
-.repeat-icon {
-    width: 18px;
-    height: 18px;
-    display: block;
-    background: url("../pic/png_forward.png") no-repeat;
-}
-
-.repeat-icon:hover {
-    width: 18px;
-    height: 18px;
-    display: block;
-    background: url("../pic/png_forward_hover.png") no-repeat;
-}
-
-.sms-forward-icon {
-    width: 18px;
-    height: 18px;
-    display: block;
-    background: url("../pic/png_forward.png") no-repeat scroll;
-}
-
-.sms-forward-icon:hover {
-    width: 18px;
-    height: 18px;
-    display: block;
-    background: url("../pic/png_forward_hover.png") no-repeat scroll;
-}
-
-.smslist-item-delete {
-    width: 18px;
-    height: 18px;
-    display: block;
-}
-
-.smslist-item-delete:hover {
-    width: 18px;
-    height: 18px;
-    display: block;
-}
-
-.sms-add-contact-icon {
-    width: 13px;
-    height: 13px;
-    display: inline-block;
-    background: url("../pic/png_add_contact.png") no-repeat scroll 0 0 transparent;
-}
-
-.sms-add-contact-icon:hover {
-    width: 13px;
-    height: 13px;
-    display: inline-block;
-    background: url("../pic/png_add_contact_hover.png") no-repeat scroll 0 0 transparent;
-}
-
-.smslist-item-delete:hover .trash-icon {
-    width: 18px;
-    height: 18px;
-    display: block;
-    background: url("../pic/png_delete_hover.png") no-repeat;
-}
-
-.trash-icon {
-    width: 18px;
-    height: 18px;
-    display: block;
-    background: url("../pic/png_delete.png") no-repeat;
-}
-
-.smslist-item-resend {
-    font-weight: bold;
-    line-height: 22px;
-    text-indent: 3px;
-    color: #7D8DA3;
-}
-
-.sms-resend-icon {
-    width: 18px;
-    height: 18px;
-    display: block;
-    background: transparent url("../pic/png_resend1.png") no-repeat;
-}
-
-.smslist-item-resend:hover {
-    color: #207DDD;
-}
-
-.smslist-item-resend:hover .sms-resend-icon{
-    background: transparent url("../pic/png_resend_hover.png") no-repeat;
-}
-
-.clock-icon {
-    width: 18px;
-    height: 30px;
-    line-height: 30px;
-    display: block;
-    background: url("../pic/png_time.png") no-repeat;
-}
-
-.clock-icon:hover {
-    width: 18px;
-    height: 30px;
-    line-height: 30px;
-    display: block;
-    background: url("../pic/png_time.png") no-repeat;
-}
-
-.smslist-item-new-count {
-    width: 29px;
-    height: 35px;
-    line-height: 35px;
-    margin-right: 5px;
-    text-align: center;
-    font-weight: bold;
-    color: #ffffff;
-    background: url("../pic/png_new_sms_bg.png") no-repeat scroll 0 0 transparent;
-}
-
-#mainContainer .width100p {
-    width: 100%;
-}
-
-.height15 {
-    height: 15px;
-    line-height: 15px;
-}
-
-
-label.error{
-    color: #a94442;
-}
-
-#frmPassword label.error {
-    white-space: nowrap;
-}
-
-.form-information{
-    margin-top: 10px;
-}
-
-.form-information p{
-    padding: 15px;
-}
-
-body[lang=en] .label-absolute{
-    height: 40px;
-}
-
-body[lang=en] .label-absolute > label{
-    top: 0;
-    left: 40px;
-    position: absolute;
-}
-
-.ko-grid-pageLinks {
-
-    padding-left: 0;
-    margin: 20px 0;
-    border-radius: 4px;
-    width: 100%;
-    display: inline-block;
-}
-
-.ko-grid-pageLinks > a,
-.ko-grid-pageLinks > span {
-    display: inline;
-    position: relative;
-    float: left;
-    padding: 6px 12px;
-    line-height: 1.42857143;
-    text-decoration: none;
-    color: #008AD7;
-    background-color: #ffffff;
-    border: 1px solid #dddddd;
-    margin-left: -1px;
-}
-
-.ko-grid-pageLinks > a:first-child,
-.ko-grid-pageLinks > span:first-child {
-    margin-left: 0;
-    border-radius: 4px 0 0 4px;
-}
-
-.ko-grid-pageLinks > a:last-child,
-.ko-grid-pageLinks > span:last-child {
-    margin-left: 0;
-    border-radius: 0 4px 4px 0;
-}
-
-.ko-grid-pageLinks > a.ko-grid-pager-selected,
-.ko-grid-pageLinks > span.ko-grid-pager-selected,
-.ko-grid-pageLinks > a.ko-grid-pager-selected:hover,
-.ko-grid-pageLinks > span.ko-grid-pager-selected:hover {
-    z-index: 2;
-    cursor: default;
-    color: #ffffff;
-    background-color: #008AD7;
-    border-color: #008AD7;
-}
-
-.ko-grid-pageLinks > a:hover,
-.ko-grid-pageLinks > span:hover {
-    z-index: 2;
-    background-color: #EEEEEE;
-    border-color: #DDDDDD;
-}
-
-.ko-grid-pageLinks > span.ko-grid-pager-disabled,
-.ko-grid-pageLinks > span.ko-grid-pager-disabled:hover,
-.ko-grid-pageLinks > span.ko-grid-pager-disabled:focus,
-.ko-grid-pageLinks > a.ko-grid-pager-disabled,
-.ko-grid-pageLinks > a.ko-grid-pager-disabled:hover,
-.ko-grid-pageLinks > a.ko-grid-pager-disabled:focus {
-    color: #777777;
-    background-color: #ffffff;
-    border-color: #dddddd;
-    cursor: not-allowed;
-}
-
-.nav-tabs > li > a, .nav-tabs.nav-justified > li > a{
-    -webkit-border-radius: 0;
-    -moz-border-radius: 0;
-    border-radius: 0;
-}
-.nav-tabs > li > a, .nav-tabs > li > a:hover, .nav-tabs > li > a:focus{
-    color: #333333;
-    text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-    background-color: #f5f5f5;
-    *background-color: #e6e6e6;
-    background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
-    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
-    background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
-    background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
-    background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
-    background-repeat: repeat-x;
-    border: 1px solid #cccccc;
-    *border: 0;
-    border-color: #e6e6e6 #e6e6e6 #bfbfbf;
-    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-    border-bottom-color: #b3b3b3;
-    filter: progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
-    *zoom: 1;
-    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-    -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.nav-tabs > li:first-child > a, .nav-tabs > li:first-child > a:hover, .nav-tabs > li:first-child > a:focus{
-    -webkit-border-radius: 4px 0 0 4px;
-    -moz-border-radius: 4px 0 0 4px;
-    border-radius: 4px 0 0 4px;
-}
-
-.nav-tabs > li:last-child > a, .nav-tabs > li:last-child > a:hover, .nav-tabs > li:last-child > a:focus{
-    -webkit-border-radius: 0 4px 4px 0;
-    -moz-border-radius: 0 4px 4px 0;
-    border-radius: 0 4px 4px 0;
-}
-
-.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus,
-.nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a:hover, .nav-tabs.nav-justified > .active > a:focus{
-    color: #ffffff;
-    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-    background-color: #006dcc;
-    *background-color: #0044cc;
-    border-color: #0044cc #0044cc #002a80;
-    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-    background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-    background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-    background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-    background-image: linear-gradient(to bottom, #0088cc, #0044cc);
-    background-repeat: repeat-x;
-    filter: progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
-}
-
-#result-overlay .simplemodal-data, #result-overlay .simplemodal-wrap, #result-overlay .alert{
-    border-radius: 8px;
-    -moz-border-radius: 8px;
-    -webkit-border-radius: 8px;
-    box-shadow: 0 3px 5px #999;
-    -moz-box-shadow: 0 3px 5px #999;
-    -webkit-box-shadow: 0 3px 5px #999;
-}
-
-.form-note .notes-title {
-    height: 30px;
-    cursor: pointer;
-    padding-bottom: 5px;
-    background: url("../pic/res_help.png") no-repeat scroll left center transparent;
-}
-
-.form-note .notes-content {
-    display: none;
-}
-
-.form-note .notes-dot {
-    border-bottom: 1px solid #ffffff;
-}
-
-.form-body .form-note {
-    border-radius: 4px;
-    font-size: 12px;
-    margin-bottom: 10px;
-    margin-top: 20px;
-    padding: 10px;
-    background-color: #ededed;
-}
-
-.form-body .form-note li {
-    line-height: 30px;
-    list-style: none outside none;
-    padding-left: 15px;
-    background: url("../pic/res_point.png") no-repeat scroll 0 12px transparent;
-}
-
-.form-body .form-note li.no-style {
-    background: none;
-}
-
-.border-color-transition {;
-    -moz-transition: border-color .5s ease-in;
-    -webkit-transition: border-color .5s ease-in;
-    -o-transition: border-color .5s ease-in;
-    -ms-transition: border-color .5s ease-in;
-    transition: border-color .5s ease-in;
-}
-
-.attention-focus{
-    border-color: red;
-}
-
-.popover-title{
-    background-color: #eaeaea;
-    border-bottom: 1px solid #cbcbcb;
-}
-
-.fixTableScroll {
-    width:100%;
-    overflow-x:auto;
-    overflow-y:hidden;
-    height:100%;
-    overflow-scrolling: touch;
-}
-
-.fixTableScroll:hover {
-    height:100%;
-}
-
-#h_internet_setting_btn:hover {
-    background-image: url("../pic/internet_setting_hover.png");
-}
-
-#h_wifi_setting_btn:hover {
-    background-image: url("../pic/wlan_setting_hover.jpg");
-}
-
-.connected_devices_container {    
-    float:left;
-    width: 280px;
-	height: 400px;
-	margin-left:20px;
-    text-align: center;
-    border-radius:10px;
-    cursor: pointer;
-	filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #70EBE6, endColorstr = #059EC4); 
-	background: -webkit-linear-gradient(left top, #70EBE6 , #059EC4); /* Safari 5.1 - 6.0 */
-    background: -o-linear-gradient(bottom right, #70EBE6 , #059EC4); /* Opera 11.1 - 12.0 */
-    background: -moz-linear-gradient(bottom right, #70EBE6 , #059EC4); /* Firefox 3.6 - 15 */
-    background: linear-gradient(to bottom right, #70EBE6 , #059EC4); /* 标准的语法(必须放在最后)*/
-}
-
-.connected_devices_container .item_icon{
-	height: 45%;
-    background: url(../pic/new/device.png) center center no-repeat;
-}
-
-.home_h3{
-    font-size: 25px;
-    -webkit-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
-    -moz-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
-    -ms-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
-    text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);	
-	text-align: center;
-}
-
-.network_control_container {
-    float:left;
-    width: 280px;
-    height: 400px;
-	margin-left:20px;
-	border-radius:10px;
-	filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #36A4FF, endColorstr = #0877D4); 
-	background: -webkit-linear-gradient(left top, #36A4FF , #0877D4); /* Safari 5.1 - 6.0 */
-    background: -o-linear-gradient(bottom right, #36A4FF , #0877D4); /* Opera 11.1 - 12.0 */
-    background: -moz-linear-gradient(bottom right, #36A4FF , #0877D4); /* Firefox 3.6 - 15 */
-    background: linear-gradient(to bottom right, #36A4FF , #0877D4); /* 标准的语法(必须放在最后)*/
-}
-
-.network_control_container .item_icon{
-	height: 45%;
-    background: url(../pic/new/router.png) center center no-repeat;
-}
-
-.internet_status_container{	
-	float:left;
-    width: 280px;
-    height: 400px;
-	margin-left:60px;
-	border-radius:10px;
-	filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #D014FE, endColorstr = #7109D5); 
-	background: -webkit-linear-gradient(left top, #D014FE , #7109D5); /* Safari 5.1 - 6.0 */
-    background: -o-linear-gradient(bottom right, #D014FE , #7109D5); /* Opera 11.1 - 12.0 */
-    background: -moz-linear-gradient(bottom right, #D014FE , #7109D5); /* Firefox 3.6 - 15 */
-    background: linear-gradient(to bottom right, #D014FE , #7109D5); /* 标准的语法(必须放在最后)*/	
-	text-align: center;
-}
-
-.internet_status_container .item_icon_connect{
-	height: 45%;
-    background: url(../pic/new/surfing1.png) center center no-repeat;
-}
-
-.internet_status_container .item_icon_disconnect{
-	height: 45%;
-    background: url(../pic/new/surfing2.png) center center no-repeat;
-}
-
-.internet_status_container .data-card{
-    top: 180px;
-    left: 636px;
-}
-
-.traffic_control_container{
-    float:left;
-    width: 280px;
-    height: 330px;
-	margin-left:45px;
-	border-radius:10px;
-	color:#fff;
-	filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #FCCA53, endColorstr = #F45406); 
-	background: -webkit-gradient(linear, 0 0, 0 100%, from(#FCCA53), to(#F45406));
-	background: -webkit-linear-gradient(left top, #FCCA53 , #F45406); /* Safari 5.1 - 6.0 */
-    background: -o-linear-gradient(bottom right, #FCCA53 , #F45406); /* Opera 11.1 - 12.0 */
-    background: -moz-linear-gradient(bottom right, #FCCA53 , #F45406); /* Firefox 3.6 - 15 */
-	background: -ms-linear-gradient(left, #FCCA53, #F45406);   
-    background: linear-gradient(to bottom right, #FCCA53 , #F45406); /* 标准的语法(必须放在最后)*/
-
-}
-.device_info_container{
-    float:left;
-    width: 580px;
-    height: 330px;
-	border-radius:10px;
-	filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #B454F6, endColorstr = #0096D7); 
-	background: -webkit-linear-gradient(left top, #B454F6 , #0096D7); /* Safari 5.1 - 6.0 */
-    background: -o-linear-gradient(bottom right, #B454F6 , #0096D7); /* Opera 11.1 - 12.0 */
-    background: -moz-linear-gradient(bottom right, #B454F6 , #0096D7); /* Firefox 3.6 - 15 */
-    background: linear-gradient(to bottom right, #B454F6 , #0096D7); /* 标准的语法(必须放在最后)*/
-}
-
-.device_info_container_hastraffic{
-    margin-left:20px;
-}
-
-.device_info_container_notraffic{
-    margin-left:210px;
-}
-
-.device_info_container a{
-    padding-right: 2em;
-	margin-right:1em;
-    color: #FFF;
-    background: url(../pic/new/direct.png) right center no-repeat;
-}
-
-
-#smslist-table td{
-    vertical-align: middle;
-    line-height: 1.2;
-}
-
-#simMsgList_container td{
-    vertical-align: middle;
-    line-height: 1.2;
-}
-
-.smslist-item-msg pre{
-    overflow: hidden;
-    text-overflow: ellipsis;
-    border: none;
-    padding: 0;
-    margin:0;
-    font-size: 14px;
-    line-height: 1.2;
-    white-space: nowrap;
-    background-color: transparent;
-    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-
-.smslist-btns {
-}
-
-#smsScrollLoading {
-    margin: 25px auto;
-    font-size: 22px;
-    font-weight: bold;
-    text-align: center;
-    color: #7D8DA3;
-}
-
-#smsScrollLoadingBtn {
-    margin: 25px auto;
-    font-size: 22px;
-    font-weight: bold;
-    text-align: center;
-    color: #7D8DA3;
-    cursor: pointer;
-}
-
-#smslist_container{
-    position: relative;
-}
-
-#smslist_container table,#smslist_container table td,#smslist_container table th {
-    padding: 0;
-    margin: 0;
-    border: none;
-}
-
-.smslist-item-checkbox{float: left; width: 20px;}
-.chosen-container-multi .chosen-choices li.search-field input[type="text"]{
-    height: auto;
-}
-
-.sms-table-content{
-    width: 450px;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-}
-
-.showFullHeight{
-    white-space: normal;
-}
-
-#buttom-bubble{
-    width: 230px;
-    height: auto;
-    right: 0;
-    bottom: 0;
-    margin-right: 10px;
-    position: fixed;
-    z-index: 100;
-}
-
-#buttom-bubble .bubbleItem{
-    margin-top: 8px;
-    border-radius: 10px 10px 0 0;
-    position: relative;
-}
-
-#buttom-bubble h3{
-    padding: 8px 30px 8px 8px;
-    background-color: #eaeaea;
-    border: 2px solid #eaeaea;
-    border-bottom: 0;
-    border-radius: 8px 8px 0 0;
-    margin-bottom: 0;
-    font-size: 14px;
-}
-
-#buttom-bubble .bubbleItem.report h3{
-    color: #E47602;
-}
-
-#buttom-bubble h3 a.bubbleCloseBtn{
-    position: absolute;
-    top: 10px;
-    right: 10px;
-    border: 1px solid #E2E2E2;
-    -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.4);
-    -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.4);
-    box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.4);
-}
-
-#buttom-bubble h3 a.bubbleCloseBtn:hover{
-    border: 1px solid #2063AB;
-}
-
-#buttom-bubble .bubbleCloseBtn{
-    width: 16px;
-    height: 14px;
-    display: block;
-    background: url("../pic/res_delete.png");
-}
-
-#buttom-bubble .bubbleContainer{
-    border: 2px solid #E2E2E2;
-    padding: 2px 8px 8px 8px;
-    line-height: 150%;
-    overflow: hidden;
-    border-top: 0;
-    font-size: 12px;
-    background: #F2F2F2;
-    background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(white), to(#eaeaea) );
-    background: -ms-linear-gradient(top, white, #eaeaea);
-    background: -moz-linear-gradient(top, white, #eaeaea);
-    background: -o-linear-gradient(top, white,#eaeaea);
-    filter: progid:dximagetransform.microsoft.gradient(enabled='true', startColorstr='#FFFFFFFF', endColorstr='#ffeaeaea', GradientType=0);
-}
-
-#buttom-bubble .bubbleContent{
-    max-height: 55px;
-    overflow: hidden;
-    line-height: 18px;
-    word-break: break-all;
-    word-wrap: break-word;
-}
-
-#buttom-bubble .bubbleDatetime{
-    padding-right: 10px;
-    text-align: right;
-    font-size: 10px;
-}
-
-#topContainer{
-    padding-top: 10px;
-    padding-bottom: 10px;
-    background-color: #EAEAEA;
-}
-
-.login-page-bg{
-    background: url("../pic/res_login-bg.png") repeat-x scroll 0 0 transparent;
-}
-
-#login-form-container{
-    border: 1px solid gray;
-    border-radius: 8px;
-    -moz-border-radius: 8px;
-    -webkit-border-radius: 8px;
-    background-color: white;
-    box-shadow: 0 3px 5px #053984;
-    -moz-box-shadow: 0 3px 5px #053984;
-    -webkit-box-shadow: 0 3px 5px #053984;
-}
-
-#htmlContainer{
-    padding: 0;
-}
-
-#htmlContainer .form-title{
-    padding: 10px 15px 10px 15px;
-    margin-bottom: 0;
-    border-bottom: 1px solid #cbcbcb;
-    background-color: #eaeaea;
-}
-
-#htmlContainer .content{
-    padding: 15px;
-}
-
-#simplemodal-data .alert{
-    border: 1px solid gray;
-    border-radius: 8px;
-    box-shadow: 0 6px 10px #053984;
-    width: 400px;
-    height: 150px;
-    background-color: white;
-}
-
-.btn-primary{
-    background-color: #008AD7;
-}
-
-#pblist tr td {
-    cursor: pointer;
-}
-
-#pblist tr td:first-child {
-    cursor: default;
-}
-
-.form-buttons {
-    margin-right: 20px;
-    margin-bottom: 5px;
-    text-align: right;
-}
-
-.align-right {
-    text-align: right;
-}
-
-.margin-right-10 {
-    margin-right: 10px;
-}
-
-.beautiful_bg #indexContainer{
-}
-
-.header-row {
-    background-color: #018ad8;
-    border-left-width: 0;
-    border-radius: 10px 10px 0 0;
-    margin: -1px 0 30px -11px;
-    width: 940px;
-    color: white;
-	filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #B454F6, endColorstr = #0096D7); 
-	background: -webkit-gradient(linear, 0 0, 0 100%, from(#B454F6), to(#0096D7));
-	background: -webkit-linear-gradient(left top, #B454F6 , #0096D7); /* Safari 5.1 - 6.0 */
-    background: -o-linear-gradient(bottom right, #B454F6 , #0096D7); /* Opera 11.1 - 12.0 */
-    background: -moz-linear-gradient(bottom right, #B454F6 , #0096D7); /* Firefox 3.6 - 15 */	
-	background: -ms-linear-gradient(left, #B454F6, #0096D7);
-    background: linear-gradient(to bottom right, #B454F6  , #0096D7); /* 标准的语法(必须放在最后)*/
-}
-
-.header-row .form-title {
-    border: none;
-    margin-bottom: 0;
-	text-align:center;
-}
-
-#innerContainer {
-    width: 100%;
-    margin: 35px auto;
-    padding: 0 10px 20px 10px;
-    border: 1px solid #fff;
-	border-bottom:0px;
-    border-radius: 10px;
-	background: -webkit-linear-gradient(top, #F1F9FC , #fff); /* Safari 5.1 - 6.0 */
-    background: -o-linear-gradient(bottom, #F1F9FC , #fff); /* Opera 11.1 - 12.0 */
-    background: -moz-linear-gradient(bottom, #F1F9FC , #fff); /* Firefox 3.6 - 15 */
-    background: linear-gradient(to bottom, #F1F9FC , #fff); /* 标准的语法(必须放在最后)*/
-	}
-
-.form-title-multi h1 {
-    margin-top: 10px;
-    margin-bottom: 5px;
-}
-
-.form-title-multi p {
-    margin-bottom: 0;
-}
-.mobile_version_link{
-    color: #A0AFCB;
-}
-
-#opmode_form .content {
-    background-color: #FFFFFF;
-}
-
-#sms_unread_count a:hover {
-    text-decoration: none;
-}
-
-.customfile-input {
-    outline: none;
-    position: absolute;
-    height: 100px;
-    cursor: pointer;
-    background: transparent;
-    border: 0;
-    z-index: 999;
-    opacity: 0;
-    -moz-opacity: 0;
-    filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0 );
-}
-
-.customfile {
-    width: 400px;
-    padding: 2px;
-    border: 1px solid #444;
-    line-height: 30px;
-    background: #FAFAFA;
-    background: -ms-linear-gradient(#FAFAFA, #CACACA);
-    background: -moz-linear-gradient(#FAFAFA, #CACACA);
-    background : -webkit-linear-gradient( #FAFAFA, #EAEAEA);
-    cursor: pointer;
-    overflow: hidden;
-    -moz-border-radius: 7px;
-    -webkit-border-radius: 7px;
-    border-radius: 7px;
-    position: relative;
-    float: left;
-}
-
-.customfile-disabled {
-    opacity: .5;
-    filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0 );
-    cursor: default;
-}
-
-.customfile-feedback {
-    display: block;
-    margin: 1px 1px 1px 5px;
-    font-size: 1.2em;
-    color: #767676;
-    font-style: italic;
-}
-
-.customfile-feedback-populated {
-    color: #111;
-    padding-left: 20px;
-    line-height: 24px;
-    margin-top: 6px;
-    width:290px;
-    font-style: normal;
-    font-weight: bold;
-    background: url(../pic/pic-file.png) left 0px no-repeat;
-    white-space:nowrap;
-    display: block;
-    overflow: hidden;
-    text-overflow: ellipsis;
-}
-
-.customfile-button {
-    border: 1px solid #999;
-    background-color: #008AD7;
-    color: #fff;
-    float: right;
-    padding: 0px 10px;
-    text-align: center;
-    text-decoration: none;
-    font-size: 1em;
-    -moz-border-radius: 5px;
-    -webkit-border-radius: 5px;
-    border-radius: 5px;
-}
-
-.customfile-hover .customfile-button,.customfile-focus .customfile-button {
-    background-color: #3071A9;
-    border-color: #285E8E;
-    padding: 0px 10px;
-    color: #fff;
-}
-
-.customfile-focus .customfile-button {
-    outline: 1px dotted #ccc;
-}
-
-/*file type icons*/
-.customfile-ext-jpg, .customfile-ext-gif, .customfile-ext-png, .customfile-ext-jpeg, .customfile-ext-bmp { background-image: url(../pic/pic-picture.png);}
-.customfile-ext-mp4, .customfile-ext-mov, .customfile-ext-swf, .customfile-ext-m4v { background-image: url(../pic/pic-film.png);}
-.customfile-ext-mp3, .customfile-ext-wav { background-image: url(../pic/pic-mp3.png);}
-.customfile-ext-zip, .customfile-ext-tar, .customfile-ext-sit { background-image: url(../pic/pic-rar.png);}
-
-input[type='file']:focus{
-    outline: none;
-}
-
-#smslist-checkAll, #simMsgList-checkAll {
-    margin-left: -4px;
-}
-
-.not-allowed {
-    color: #D1D1D1 !important;
-    cursor: not-allowed;
-}
-
-.not-allowed:hover {
-    outline: 0;
-    text-decoration: none;
-}
-
-.not-allowed:focus {
-    outline: 0;
-    text-decoration: none;
-}
-
-.margin-top-5 {
-    margin-top: 5px;
-}
-
-.colorLightBlue{
-    color: #09F;
-}
-
-.sd_invalid_notes ul li{
-    height: 2em;
-    line-height: 2em;
-}
-
-.sd_invalid_notes .notes-content{
-    display: block;
-}
-
-#fileControlSection li {
-    list-style: outside none none;
-    display: inline;
-}
-
-
-.my_router_list,.net_surfing_list{
-    margin-top: 20px;
-}
-
-.my_router_list ul,.net_surfing_list ul,.statistics_list ul,.nav_right ul{
-    -webkit-padding-start: 0px;
-	margin:0px;
-	padding:0px;
-}
-
-.my_router_list li,.net_surfing_list li,.statistics_list li{
-    padding: 0 1em;
-	list-style:none;
-}
-
-.my_router_list li,.my_router_list li a,.net_surfing_list li{
-    text-align: left;
-    line-height: 2em;
-    font-size: 18px;
-
-}
-
-.my_router_list li a{
-    display: block;
-    color: #FFF;
-    background: url(../pic/new/direct.png) right center no-repeat;
-    -webkit-transition: all ease-in .3s;
-    -moz-transition: all ease-in .3s;
-    -ms-transition: all ease-in .3s;
-    transition: all ease-in .3s;
-}
-
-.my_router_list li a:hover{
-    color: #FAFAFA;
-    -webkit-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
-    -moz-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
-    -ms-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
-    text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
-}
-
-.net_surfing_list li{
-    text-align: center;
-}
-
-.net_surfing_list i{
-    display: inline-block;
-    width: 17px;
-    height: 24px;
-    margin-right: 15px;
-    vertical-align: middle;
-}
-
-.net_surfing_list i.up{
-    background: url(../pic/new/direct_top.png);
-}
-
-.net_surfing_list i.down{
-    background: url(../pic/new/direct_down.png);
-}
-
-.statistics_list ul li{
-    padding: 0 20px;
-    text-align: left;
-    margin-top: 15px;
-	font-size:18px;
-}
-
-.statistics_list ul li a{
-    color: #FFF;
-    display: block;
-    background: url(../pic/new/direct.png) right center no-repeat;
-    -webkit-transition: all ease-in .3s;
-    -moz-transition: all ease-in .3s;
-    -ms-transition: all ease-in .3s;
-    transition: all ease-in .3s;
-}
-
-.statistics_list ul li a:hover{
-    -webkit-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
-    -moz-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
-    -ms-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
-    text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
-}
-
-.type_items{
-	width:880px;
-    height: 100px;
-    text-align: center;
-	margin:0 0 0 45px;
-    -webkit-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
-    -moz-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
-    -ms-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
-    box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
-    -webkit-border-radius: 8px;
-    -moz-border-radius: 8px;
-    -ms-border-radius: 8px;
-    border-radius: 10px;	
-	filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #B454F6, endColorstr = #0096D7); 
-	background: -webkit-linear-gradient(left top, #B454F6 , #0096D7); /* Safari 5.1 - 6.0 */
-    background: -o-linear-gradient(bottom right, #B454F6 , #0096D7); /* Opera 11.1 - 12.0 */
-    background: -moz-linear-gradient(bottom right, #B454F6 , #0096D7); /* Firefox 3.6 - 15 */
-    background: linear-gradient(to bottom right, #B454F6 , #0096D7); /* 标准的语法(必须放在最后)*/
-}
-
-.type_items ul{
-    width: auto;
-	-webkit-padding-start: 0px;
-	margin:0px;
-	padding:0px;
-}
-
-.type_items ul li{
-    display: inline-block;
-	float:left;
-	list-style:none;
-}
-
-.type_items a{
-    display: table-cell;
-    width: 125px;
-    height: 100px;
-    color: #FFF;
-    vertical-align: middle;
-    -webkit-transition: all ease-in .3s;
-    -moz-transition: all ease-in .3s;
-    -ms-transition: all ease-in .3s;
-    transition: all ease-in .3s;
-    border-left: 1px solid;
-}
-
-.type_items a,.nav_right a:hover{
-    -webkit-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
-    -moz-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
-    -ms-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
-    box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
-}
-
-.nav_right{
-    margin: 0 auto 0px -10px;
-    text-align: center;	
-
-}
-
-.nav_right ul{
-    width: auto;
-    margin: 0 auto;
-}
-
-.nav_right ul li{
-    margin: 15px 20px 0 0;
-	width:100%;
-	list-style:none;
-}
-
-.nav_right .active a{
-    display: table-cell;
-    width: 138px;
-    height: 50px;
-    color: #fff;
-	font-weight:bold;
-    vertical-align: middle;
-    -webkit-transition: all ease-in .3s;
-    -moz-transition: all ease-in .3s;
-    -ms-transition: all ease-in .3s;
-    transition: all ease-in .3s;
-	-webkit-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
-    -moz-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
-    -ms-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
-    box-shadow: 0px 8px 10px rgba(172, 172, 172, 0.5);
-    background-color:rgb(66, 153, 237);	
-}
-
-.nav_right a{
-    width: 138px;
-    height: 50px;
-    display: table-cell;
-    color: #000;
-    vertical-align: middle;
-    -webkit-transition: all ease-in .3s;
-    -moz-transition: all ease-in .3s;
-    -ms-transition: all ease-in .3s;
-    transition: all ease-in .3s;
-	-webkit-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
-    -moz-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
-    -ms-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
-    box-shadow: 0px 8px 10px rgba(172, 172, 172, 0.5);
-    background-color:rgb(182, 214, 232);	
-}
-
-.sd-total {
-    text-align: right;
-    padding-right: 20px;
-}
-
-.icon-folder{
-    background: url("../pic/pic-folder.png") no-repeat;
-}
-
-.icon-pdf{
-    background: url("../pic/pic-pdf.png") no-repeat;
-}
-
-.icon-rar{
-    background: url("../pic/pic-rar.png") no-repeat;
-}
-
-.icon-mp3{
-    background: url("../pic/pic-mp3.png") no-repeat;
-}
-
-.icon-file{
-    background: url("../pic/pic-file.png") no-repeat;
-}
-
-.icon-film{
-    background: url("../pic/pic-film.png") no-repeat;
-}
-
-.icon-picture{
-    background: url("../pic/pic-picture.png") no-repeat;
-}
-
-.icon-doc{
-    background: url("../pic/pic-doc.png") no-repeat;
-}
-
-.icon-ppt{
-    background: url("../pic/pic-ppt.png") no-repeat;
-}
-
-.icon-xls{
-    background: url("../pic/pic-xls.png") no-repeat;
-}
-
-.icon-xml{
-    background: url("../pic/pic-xml.png") no-repeat;
-}
-
-.icon-download{
-    background: url("../pic/pic-download.png") no-repeat;
-}
-
-.mini-icon{
-    width: 20px;
-    height: 20px;
-    font-size: 16px;
-    display: block;
-}
-
-.cursor-pointer {
-    cursor: pointer;
-}
-
-#fileListSection th {
-    text-align: center;
-}
-
-.margin-left-5 {
-    margin-left: 5px;
-}
-
-.margin-top-2 {
-    margin-top: 2px;
-}
-
-.push-right {
-    text-align: right;
-}
-
-.data-card-language {
-    top: -25px;
-    right: 10px;
-    position: absolute;
-    display: block;
-}
diff --git a/lynq/S300AI/ap/app/zte_webui/i18n/Messages_en.properties b/lynq/S300AI/ap/app/zte_webui/i18n/Messages_en.properties
index 4903111..fff5246 100755
--- a/lynq/S300AI/ap/app/zte_webui/i18n/Messages_en.properties
+++ b/lynq/S300AI/ap/app/zte_webui/i18n/Messages_en.properties
@@ -544,6 +544,7 @@
 sms_save_tip = Saving...

 

 #login

+username = Username

 password = Password

 puk = PUK

 login = Login

@@ -551,8 +552,8 @@
 new_pin = New PIN

 confirm_pin = Confirm New PIN

 puk_locked = Your SIM card is locked permanently. Please contact your operator.

-password_error = Password is incorrect!

-password_error_left = Password is incorrect!<br/>You have {0} attempt(s) left.

+password_error = Username or password is incorrect!

+password_error_left = Username or password is incorrect!<br/>You have {0} attempt(s) left.

 password_error_account_lock = Your account is locked. <br/>Remaining time:

 password_error_five_times = You''ve input 5 times incorrectly. Retry in 5 minutes.

 password_error_account_lock_time = Your account is locked. <br/>Please try later.

@@ -631,7 +632,7 @@
 #wps

 wps_note_all = WPS (Wi-Fi Protected Setup) is a standard that allows users to set up a wireless network in an easy and secure way without specific configuration, such as: SSID, security mode and password.

 wps_note_pin = PIN: You need to enter the PIN that is generated by the access client.

-wps_note_pbc = PBC: You can select the PBC (Push Button Configuration) on the web page or hold the WPS button for 3-4 seconds on the device to enable WPS function.

+wps_note_pbc = PBC: You can select the PBC (Push Button Configuration) on the web page to enable WPS function.

 wps_note_wait = The device will wait for receiving the access request of wireless access client within 2 minutes.

 wps_pin = PIN

 wps_pbc = PBC

@@ -1654,7 +1655,7 @@
 band_39 = Band 39

 band_40 = Band 40

 band_info = Band Settings

-cell_id = Current registration Cell

+cell_id = Current Registration Cell

 cellid = CELLID

 lock_apply = Lock

 unlock_apply= Unlock

diff --git a/lynq/S300AI/ap/app/zte_webui/i18n/Messages_zh-cn.properties b/lynq/S300AI/ap/app/zte_webui/i18n/Messages_zh-cn.properties
index 7648441..c78da40 100755
--- a/lynq/S300AI/ap/app/zte_webui/i18n/Messages_zh-cn.properties
+++ b/lynq/S300AI/ap/app/zte_webui/i18n/Messages_zh-cn.properties
@@ -546,6 +546,7 @@
 sms_save_tip = 保存草稿中...

 

 #login

+username = 用户名

 password = 密码

 puk = PUK

 login = 登录

@@ -553,8 +554,8 @@
 new_pin = 新 PIN

 confirm_pin = 确认新 PIN

 puk_locked = 您的 SIM卡已彻底锁定。请联系您的运营商。

-password_error = 密码不正确!

-password_error_left = 密码不正确!<br/>您的剩余尝试次数:{0}。

+password_error = 用户名或密码不正确!

+password_error_left = 用户名或密码不正确!<br/>您的剩余尝试次数:{0}。

 password_error_account_lock = 你的账户被锁定。<br/>剩余时间:

 password_error_five_times = 您已经输错5次。请5分钟后再试。

 password_error_account_lock_time = 您的账户已被锁定。<br/>请稍后再试。

@@ -633,7 +634,7 @@
 #wps

 wps_note_all = WPS(Wi-Fi Protected Setup)代表Wi-Fi保护设置,是一个简单且安全地建立无线网络的标准,您可以通过这一过程轻松地将无线客户端连接到设备,而无需进行任何具体的配置,例如SSID、安全模式和密码。

 wps_note_pin = PIN:您需要输入客户端的PIN码。

-wps_note_pbc = PBC:您可以在该网页选择PBC(Push Button Configuration)或者长按(3-4秒)设备上的WPS按键启用WPS功能。

+wps_note_pbc = PBC:您可以在该网页选择PBC(Push Button Configuration)启用WPS功能。

 wps_note_wait = 该设备在 2 分钟内会等候接收无线接入客户端的访问请求。

 wps_pin = PIN

 wps_pbc = PBC

diff --git a/lynq/S300AI/ap/app/zte_webui/index.html b/lynq/S300AI/ap/app/zte_webui/index.html
index 952707d..e8a7349 100755
--- a/lynq/S300AI/ap/app/zte_webui/index.html
+++ b/lynq/S300AI/ap/app/zte_webui/index.html
@@ -73,7 +73,7 @@
                 <a data-trans="modify_password" href="#pwd_mode" data-bind="visible:showLogout()" class="margin-right-10"></a>

                 <a id="logoutlink" data-trans="logout" href="javascript:void(0)" data-bind="click:logout,visible:showLogout() " style="display: none;" class="margin-right-10"></a>

             </span>

-            <select id="language" data-bind="options: languages, value: currentLan, optionsText: 'text', optionsValue: 'value', event:{ change: langChangeHandler}" class="marginright10" style="display: none";></select>

+            <select id="language" data-bind="options: languages, value: currentLan, optionsText: 'text', optionsValue: 'value', event:{ change: langChangeHandler}" class="marginright10"></select>

         </div>

     </div>

 </div>

diff --git a/lynq/S300AI/ap/app/zte_webui/js/com.js b/lynq/S300AI/ap/app/zte_webui/js/com.js
index 79c290a..5bba194 100755
--- a/lynq/S300AI/ap/app/zte_webui/js/com.js
+++ b/lynq/S300AI/ap/app/zte_webui/js/com.js
@@ -91,7 +91,8 @@
         function prepare(values, isPost) {

             var obj = {

                 goformId: "LOGIN",

-                password: config.PASSWORD_ENCODE ? Base64.encode(values.password) : values.password

+                password: config.PASSWORD_ENCODE ? Base64.encode(values.password) : values.password,

+                username: config.PASSWORD_ENCODE ? Base64.encode(values.username) : values.username

             };

             return obj;

         }

@@ -2904,7 +2905,7 @@
         function prepare(values, isPost) {

 	    var wpask = config.PASSWORD_ENCODE ? "WPAPSK1_encode,m_WPAPSK1_encode," : "rnum_js,WPAPSK1_enaes,m_WPAPSK1_enaes,";

             var valueReq = {

-                cmd: "wifi_coverage,m_ssid_enable,imei,ziccid,cell_id,network_type,sub_network_type,rssi,rscp,lte_rsrp,imsi,sim_imsi,cr_version,hw_version,MAX_Access_num," + wpask + "SSID1,AuthMode,m_SSID,m_AuthMode,m_HideSSID,m_MAX_Access_num,lan_ipaddr," + "mac_address,msisdn,LocalDomain,wan_ipaddr,static_wan_ipaddr,ipv6_wan_ipaddr,ipv6_pdp_type,pdp_type,ppp_status,sta_ip_status,rj45_state,ethwan_mode",

+                cmd: "wifi_coverage,m_ssid_enable,imei,network_type,sub_network_type,rssi,rscp,lte_rsrp,imsi,sim_imsi,cr_version,hw_version,MAX_Access_num," + wpask + "SSID1,AuthMode,m_SSID,m_AuthMode,m_HideSSID,m_MAX_Access_num,lan_ipaddr," + "mac_address,msisdn,LocalDomain,wan_ipaddr,static_wan_ipaddr,ipv6_wan_ipaddr,ipv6_pdp_type,pdp_type,ppp_status,sta_ip_status,rj45_state,ethwan_mode,cell_id",

                 multi_data: 1

             };

             return valueReq;

@@ -2930,9 +2931,8 @@
                     lanDomain: paramD.LocalDomain,

                     imei: paramD.imei,

                     signal: convertSignal(paramD),

-                    imsi: paramD.imsi || paramD.sim_imsi,

-                    iccid: paramD.ziccid,

                     cellid: paramD.cell_id,

+                    imsi: paramD.imsi || paramD.sim_imsi,

                     sw_version: paramD.cr_version,

                     hw_version: paramD.hw_version,

                     max_access_num: paramD.MAX_Access_num,

@@ -6597,7 +6597,7 @@
                 });

             } else {

                 $('input', '#frmLan').each(function () {

-                    $(this).attr("disabled", true);

+                    $(this).attr("disabled", false);

                 });

 

                 clearValidateMsg();

@@ -6877,7 +6877,7 @@
         var fwVm = new LanViewModel();

         ko.applyBindings(fwVm, container[0]);

 

-        addInterval(fwVm.refreshStatus, 1000);

+        //addInterval(fwVm.refreshStatus, 1000);

 

         $('#frmLan').validate({

             submitHandler:function () {

@@ -8792,7 +8792,6 @@
         target.hasRj45 = set.RJ45_SUPPORT;

         target.notDataCard = set.PRODUCT_TYPE != 'DATACARD';

         target.hasParentalControl = set.HAS_PARENTAL_CONTROL;

-        target.hasUssd = set.HAS_USSD;

         target.hasVoice = set.HAS_VOICE;

         var wifiInfo = fnc.getWifiBasic();

         if (set.WIFI_SUPPORT_QR_SWITCH) {

@@ -8843,8 +8842,6 @@
         target.simSerialNumber = libko.observable('');

         target.imei = libko.observable('');

         target.imsi = libko.observable('');

-        target.iccid = libko.observable('');

-        target.cellid = libko.observable('');

         target.ssid = libko.observable('');

         target.hasWifi = set.HAS_WIFI;

         target.showMultiSsid = libko.observable(set.HAS_MULTI_SSID && wifiInfo.multi_ssid_enable == "1");

@@ -8881,8 +8878,6 @@
             target.simSerialNumber(verifyDeviceInfo(data.simSerialNumber));

             target.imei(verifyDeviceInfo(data.imei));

             target.imsi(verifyDeviceInfo(data.imsi));

-            target.iccid(verifyDeviceInfo(data.iccid));

-            target.cellid(verifyDeviceInfo(data.cellid));

             target.ssid(verifyDeviceInfo(data.ssid));

             target.showMultiSsid(set.HAS_MULTI_SSID && data.multi_ssid_enable == "1");

             return data;

@@ -8897,9 +8892,8 @@
                 simSerialNumber: verifyDeviceInfo(data.simSerialNumber),

                 imei: verifyDeviceInfo(data.imei),

                 imsi: verifyDeviceInfo(data.imsi),

-                iccid : verifyDeviceInfo(data.iccid),

-                cellid: verifyDeviceInfo(data.cellid),

                 signal: signalFormat(data.signal),

+                cellid: verifyDeviceInfo(data.cellid),

                 hasWifi: set.HAS_WIFI,

                 isCPE: set.PRODUCT_TYPE == 'CPE',

                 hasRj45: set.RJ45_SUPPORT,

@@ -9103,6 +9097,7 @@
             target.loginSecuritySupport = ko.observable(config.LOGIN_SECURITY_SUPPORT);

             target.newPIN               = ko.observable();			

             target.password             = ko.observable();

+            target.username             = ko.observable();

             target.PIN                  = ko.observable();

             target.pinNumber            = ko.observable(data.pinnumber);			

             target.PUK                  = ko.observable();

@@ -9162,6 +9157,7 @@
                 var ciphertext = "";

                 if (config.PASSWORD_ENCODE) {

 		    ciphertext = target.password();

+            var username = target.username();

 		} else {

                     var kparam = service.getDeviceInfoLow();

                     var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);

@@ -9173,7 +9169,8 @@
                         }).toString();

 		}

                 service.login({

-                    password:ciphertext

+                    password:ciphertext,

+                    username: username

                 }, function (info) {

                     setTimeout(function () {

                         timer = loginStatusCheckingTimer();

@@ -9190,6 +9187,7 @@
                         logout.init();

                     } else {

                         target.password("");

+                        target.username("");

                         if(config.LOGIN_SECURITY_SUPPORT){

                             target.checkLoginData(function(){

                                 if (target.loginCount() == config.MAX_LOGIN_COUNT) {

@@ -9274,9 +9272,12 @@
             function setFocus(){

                 setTimeout(function () {

                     var txtAdmin = $('#txtAdmin:visible');

+                    var txtUser = $('#txtUser:visible');

                     var txtPIN = $('#txtPIN:visible');

                     var txtPUK = $('#txtPUK:visible');

-                    if (txtAdmin.length > 0) {

+                    if(txtUser.length > 0) {

+                        txtUser.focus();

+                    } else if (txtAdmin.length > 0) {

                         txtAdmin.focus();

                     } else if (txtPIN.length > 0) {

                         txtPIN.focus();

diff --git a/lynq/S300AI/ap/app/zte_webui/js/ext/menu.js b/lynq/S300AI/ap/app/zte_webui/js/ext/menu.js
index f57ab02..9a909b9 100755
--- a/lynq/S300AI/ap/app/zte_webui/js/ext/menu.js
+++ b/lynq/S300AI/ap/app/zte_webui/js/ext/menu.js
@@ -307,7 +307,8 @@
         }, {

             hash: '#usat',

             path: 'ussd',

-            level: '1',

+            level: '2',

+            parent: '#normal_set',

             requireLogin: needLogin,

             checkSIMStatus: false

         }, {

diff --git a/lynq/S300AI/ap/app/zte_webui/js/ext/menu_pppoe.js b/lynq/S300AI/ap/app/zte_webui/js/ext/menu_pppoe.js
index 4ee45e4..c38efc3 100755
--- a/lynq/S300AI/ap/app/zte_webui/js/ext/menu_pppoe.js
+++ b/lynq/S300AI/ap/app/zte_webui/js/ext/menu_pppoe.js
@@ -307,7 +307,8 @@
         }, {

             hash: '#usat',

             path: 'ussd',

-            level: '1',

+            level: '2',

+            parent: '#normal_set',

             requireLogin: needLogin,

             checkSIMStatus: false

         }, {

diff --git a/lynq/S300AI/ap/app/zte_webui/js/ext/set_aic8800d40i.js b/lynq/S300AI/ap/app/zte_webui/js/ext/set_aic8800d40i.js
index 8dcea96..8a83356 100755
--- a/lynq/S300AI/ap/app/zte_webui/js/ext/set_aic8800d40i.js
+++ b/lynq/S300AI/ap/app/zte_webui/js/ext/set_aic8800d40i.js
@@ -24,8 +24,8 @@
 	HAS_UPNP: false, //ÊÇ·ñÖ§³ÖUPNP

         DDNS_SUPPORT: false, //DDNS

         NETWORK_UNLOCK_SUPPORT: true,

-        RJ45_SUPPORT: true,

-        HAS_VOICE: true,

+        RJ45_SUPPORT: false,

+        HAS_VOICE: false,

         NETWORK_MODES : [ {

             name : '802.11 b/g/n/ax',

             value : '6'

@@ -35,6 +35,7 @@
             value: '6'

         } ],

         HAS_PHONEBOOK: false,

+        HAS_USSD: false,

         //station¼ÓÃÜģʽ

         AUTH_MODES_ALL: [{

                 name: 'NO ENCRYPTION',

diff --git a/lynq/S300AI/ap/app/zte_webui/js/net.js b/lynq/S300AI/ap/app/zte_webui/js/net.js
index 95efd6a..cd9f144 100755
--- a/lynq/S300AI/ap/app/zte_webui/js/net.js
+++ b/lynq/S300AI/ap/app/zte_webui/js/net.js
@@ -2390,7 +2390,6 @@
         target.hasSms = config.HAS_SMS;

         target.hasPhonebook = config.HAS_PHONEBOOK;

         target.isSupportSD = config.SD_CARD_SUPPORT;

-        target.hasUssd = config.HAS_USSD;

         target.hasVoice = config.HAS_VOICE;

         if (config.WIFI_SUPPORT_QR_SWITCH == false) {

             target.showQRCode = config.WIFI_SUPPORT_QR_CODE;

diff --git a/lynq/S300AI/ap/app/zte_webui/js/sim_device.js b/lynq/S300AI/ap/app/zte_webui/js/sim_device.js
index e680e53..1f427b0 100755
--- a/lynq/S300AI/ap/app/zte_webui/js/sim_device.js
+++ b/lynq/S300AI/ap/app/zte_webui/js/sim_device.js
@@ -38,7 +38,6 @@
         target.hasSms = config.HAS_SMS;

         target.hasPhonebook = config.HAS_PHONEBOOK;

         target.isSupportSD = config.SD_CARD_SUPPORT;

-        target.hasUssd = config.HAS_USSD;

         target.hasVoice = config.HAS_VOICE;

         if (config.WIFI_SUPPORT_QR_SWITCH) {

             var wifiInfo = service.getWifiBasic();

diff --git a/lynq/S300AI/ap/app/zte_webui/pic/power_charging.gif b/lynq/S300AI/ap/app/zte_webui/pic/power_charging.gif
new file mode 100755
index 0000000..4e8a59e
--- /dev/null
+++ b/lynq/S300AI/ap/app/zte_webui/pic/power_charging.gif
Binary files differ
diff --git a/lynq/S300AI/ap/app/zte_webui/pic/power_full.png b/lynq/S300AI/ap/app/zte_webui/pic/power_full.png
new file mode 100755
index 0000000..2deaaa6
--- /dev/null
+++ b/lynq/S300AI/ap/app/zte_webui/pic/power_full.png
Binary files differ
diff --git a/lynq/S300AI/ap/app/zte_webui/pic/power_one.png b/lynq/S300AI/ap/app/zte_webui/pic/power_one.png
new file mode 100755
index 0000000..dc1b523
--- /dev/null
+++ b/lynq/S300AI/ap/app/zte_webui/pic/power_one.png
Binary files differ
diff --git a/lynq/S300AI/ap/app/zte_webui/pic/power_three.png b/lynq/S300AI/ap/app/zte_webui/pic/power_three.png
new file mode 100755
index 0000000..6bf7aef
--- /dev/null
+++ b/lynq/S300AI/ap/app/zte_webui/pic/power_three.png
Binary files differ
diff --git a/lynq/S300AI/ap/app/zte_webui/pic/power_two.png b/lynq/S300AI/ap/app/zte_webui/pic/power_two.png
new file mode 100755
index 0000000..a2b53da
--- /dev/null
+++ b/lynq/S300AI/ap/app/zte_webui/pic/power_two.png
Binary files differ
diff --git a/lynq/S300AI/ap/app/zte_webui/pic/res_logo_web.png b/lynq/S300AI/ap/app/zte_webui/pic/res_logo_web.png
index 6110269..3c78d0a 100755
--- a/lynq/S300AI/ap/app/zte_webui/pic/res_logo_web.png
+++ b/lynq/S300AI/ap/app/zte_webui/pic/res_logo_web.png
Binary files differ
diff --git a/lynq/S300AI/ap/app/zte_webui/subpg/adm_lan.html b/lynq/S300AI/ap/app/zte_webui/subpg/adm_lan.html
index a423634..43fdc65 100755
--- a/lynq/S300AI/ap/app/zte_webui/subpg/adm_lan.html
+++ b/lynq/S300AI/ap/app/zte_webui/subpg/adm_lan.html
@@ -19,7 +19,7 @@
 			<li class="active"><a href="#route_set" data-trans="router_setting"></a></li>

 			<li><a href="#filter_main" data-trans="firewall"></a></li>

 			<li data-bind="visible:hasUpdateCheck"><a href="#fota" data-trans="update_settings"></a></li>

-			<!-- <li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li> -->

+			<li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li>

 			<li data-bind="visible:hasDdns"><a href="#dynamic_dns" data-trans="DDNS"></a></li>

 			<li><a href="#more" data-trans="others"></a></li>

             <li><a data-trans="tr069" href="#tr069"></a></li>

@@ -93,7 +93,6 @@
         <div class="form-note">

             <div class="notes-title">&nbsp;</div>

             <ul class="notes-content">

-                <li data-trans="diconneted_operate_note"></li>

                 <li data-trans="lan_note_ip_address"></li>

                 <li data-trans="lan_note_subnet_mask"></li>

                 <li data-trans="lan_note_dhcp_server_enable"></li>

diff --git a/lynq/S300AI/ap/app/zte_webui/subpg/adm_others.html b/lynq/S300AI/ap/app/zte_webui/subpg/adm_others.html
index 7b02830..112b09f 100755
--- a/lynq/S300AI/ap/app/zte_webui/subpg/adm_others.html
+++ b/lynq/S300AI/ap/app/zte_webui/subpg/adm_others.html
@@ -19,7 +19,7 @@
 				<li><a href="#route_set" data-trans="router_setting"></a></li>

 				<li><a href="#filter_main" data-trans="firewall"></a></li>

 				<li data-bind="visible:hasUpdateCheck"><a href="#fota" data-trans="update_settings"></a></li>

-				<!-- <li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li> -->

+				<li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li>

 				<li data-bind="visible:hasDdns"><a href="#dynamic_dns" data-trans="DDNS"></a></li>      

 				<li class="active"><a href="#more" data-trans="others"></a></li>

 				<li><a data-trans="tr069" href="#tr069"></a></li>

@@ -43,7 +43,7 @@
         </form>

 

 		<!-- add by qumengjia for schedule restart start -->

-		<form id="frmScheduleRestart">

+		<form id="frmScheduleRestart" style="display: none;">

 			<div class="form-body">

 				<h3 data-trans="restart_schedule" class="form-title"></h3>

 				<div class="row form-group">

diff --git a/lynq/S300AI/ap/app/zte_webui/subpg/entry.html b/lynq/S300AI/ap/app/zte_webui/subpg/entry.html
index b293ae8..53df5c4 100755
--- a/lynq/S300AI/ap/app/zte_webui/subpg/entry.html
+++ b/lynq/S300AI/ap/app/zte_webui/subpg/entry.html
@@ -16,6 +16,11 @@
 			</div>

             <div class="row form-group">

                 <div class="col-xs-8">

+                    <input id="txtUser" autocomplete="off" data-placeholder="username" data-bind="value:username, valueUpdate: 'keypress'"  maxlength="32" name="txtUser" style="border:2px solid rgb(221, 221, 221);" class="required form-control"/>

+                </div>

+            </div>

+            <div class="row form-group">

+                <div class="col-xs-8">

                     <input id="txtAdmin" autocomplete="off" data-placeholder="password" data-bind="value:password, valueUpdate: 'keypress'"  maxlength="32" name="txtAdmin" style="border:2px solid rgb(221, 221, 221);" type="password" class="required form-control"/>

                 </div>

                 <div class="col-xs-4">

diff --git a/lynq/S300AI/ap/app/zte_webui/subpg/firewall.html b/lynq/S300AI/ap/app/zte_webui/subpg/firewall.html
index a106101..06a702d 100755
--- a/lynq/S300AI/ap/app/zte_webui/subpg/firewall.html
+++ b/lynq/S300AI/ap/app/zte_webui/subpg/firewall.html
@@ -19,7 +19,7 @@
 					<li><a data-trans="router_setting" href="#route_set"></a></li>

 					<li class="active"><a data-trans="firewall" href="#filter_main"></a></li>

 					<li data-bind="visible:hasUpdateCheck"><a data-trans="update_settings" href="#fota"></a></li>

-					<!-- <li data-bind="visible:hasUssd"><a data-trans="USSD" href="#usat"></a></li> -->

+					<li data-bind="visible:hasUssd"><a data-trans="USSD" href="#usat"></a></li>

 					<li data-bind="visible:hasDdns"><a data-trans="DDNS" href="#dynamic_dns"></a></li>

 					<li><a data-trans="others" href="#more"></a></li>

                     <li><a data-trans="tr069" href="#tr069"></a></li>

diff --git a/lynq/S300AI/ap/app/zte_webui/subpg/main.html b/lynq/S300AI/ap/app/zte_webui/subpg/main.html
index af269ac..9398325 100755
--- a/lynq/S300AI/ap/app/zte_webui/subpg/main.html
+++ b/lynq/S300AI/ap/app/zte_webui/subpg/main.html
@@ -5,7 +5,6 @@
 		<li><a href="#child_ctl" data-bind="visible: hasParentalControl" data-trans="parental_control" class="c0EC6DC"></a></li>

 		<li><a href="#msg_main"  data-bind="visible: hasSms" data-trans="sms" class="cF53A58"></a></li>

 		<li><a href="#dail_time" data-bind="visible:hasVoice" data-trans="voice"></a></li>

-		<li><a href="#usat" data-bind="visible:hasUssd" data-trans="USSD"></a></li>

 		<li><a href="#pb_main" data-bind="visible: hasPhonebook" data-trans="phonebook" class="c00AEFF"></a></li>

 		<li><a href="#sdcard" data-bind="visible: isSupportSD" data-trans="sd" class="c2175FF"></a></li>

 		<li><a data-bind="attr: {href: notDataCard? '#route_set' : '#demilitarized_zone'}" data-trans="advanced_settings" class="cFFCE2B"></a></li>

@@ -112,14 +111,6 @@
 				<label data-trans="imsi" class="col-xs-5"></label>

 				<label data-bind="text: imsi" class="col-xs-7"></label>

 			</div>

-			<div class="row">

-				<label data-trans="iccid" class="col-xs-5"></label>

-				<label data-bind="text: iccid" class="col-xs-7"></label>

-			</div>

-			<div class="row">

-				<label data-trans="cellid" class="col-xs-5"></label>

-				<label data-bind="text: cellid" class="col-xs-7"></label>

-			</div>

 			<!--div class="row" data-bind="visible: notDataCard">

 				<label class="col-xs-5" data-trans="wifi_range"></label>

 				<label class="col-xs-7" data-bind="attr: {'data-trans': wifiLongMode}"></label>

@@ -162,14 +153,6 @@
     <label class="col-xs-6"><%= imsi %></label>

 </div>

 <div class="row">

-    <label data-trans="iccid" class="col-xs-6"></label>

-    <label class="col-xs-6"><%= iccid %></label>

-</div>

-<div class="row">

-    <label data-trans="cellid" class="col-xs-6"></label>

-    <label class="col-xs-6"><%= cellid %></label>

-</div>

-<div class="row">

     <label data-trans="signal_strength_label" class="col-xs-6"></label>

     <label class="col-xs-6" id="popoverSignalTxt"><%= signal %></label>

 </div>

@@ -198,6 +181,10 @@
 </div>

 <% } %>

 <div class="row">

+    <label data-trans="cell_id" class="col-xs-6"></label>

+    <label class="col-xs-6"><%= cellid %></label>

+</div>

+<div class="row">

     <label data-trans="lan_domain" class="col-xs-6"></label>

     <label class="col-xs-6"><%= lanDomain %></label>

 </div>

diff --git a/lynq/S300AI/ap/app/zte_webui/subpg/network_dial_set.html b/lynq/S300AI/ap/app/zte_webui/subpg/network_dial_set.html
index a13017d..1d0bfb0 100755
--- a/lynq/S300AI/ap/app/zte_webui/subpg/network_dial_set.html
+++ b/lynq/S300AI/ap/app/zte_webui/subpg/network_dial_set.html
@@ -56,7 +56,7 @@
     </div>

     <div class="form-note">

         <div class="notes-title">&nbsp;</div>

-        <ul class="notes-content">

+        <ul class="notes-content" style="display:block">

 			<li data-trans="diconneted_operate_note"></li>

             <li data-trans="dial_setting_note_automatic"></li>

             <li data-trans="dial_setting_note_manual"></li>

diff --git a/lynq/S300AI/ap/app/zte_webui/subpg/network_net_select.html b/lynq/S300AI/ap/app/zte_webui/subpg/network_net_select.html
index b5552c1..509da6e 100755
--- a/lynq/S300AI/ap/app/zte_webui/subpg/network_net_select.html
+++ b/lynq/S300AI/ap/app/zte_webui/subpg/network_net_select.html
@@ -94,7 +94,7 @@
      </div>

     <div class="form-note">

         <div class="notes-title">&nbsp;</div>

-        <ul class="notes-content">

+        <ul class="notes-content" style="display:block">

 			<li data-trans="diconneted_operate_note"></li>

             <li data-trans="net_select_note_automatic"></li>

             <li data-trans="net_select_note_manual"></li>

diff --git a/lynq/S300AI/ap/app/zte_webui/subpg/ota_update.html b/lynq/S300AI/ap/app/zte_webui/subpg/ota_update.html
index 1b016a2..ad961d1 100755
--- a/lynq/S300AI/ap/app/zte_webui/subpg/ota_update.html
+++ b/lynq/S300AI/ap/app/zte_webui/subpg/ota_update.html
@@ -21,7 +21,7 @@
 					<li data-bind="visible: !isDataCard"><a href="#route_set" data-trans="router_setting"></a></li>

 					<li data-bind="visible: !isDataCard"><a href="#filter_main" data-trans="firewall"></a></li>

 					<li data-bind="visible:hasUpdateCheck" class="active"><a href="#fota" data-trans="update_settings"></a></li>

-					<!-- <li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li> -->

+					<li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li>

 					<li data-bind="visible:hasDdns"><a href="#dynamic_dns" data-trans="DDNS"></a></li>

 					<li data-bind="visible: !isDataCard"><a href="#more" data-trans="others"></a></li>

                     <li><a data-trans="tr069" href="#tr069"></a></li>

diff --git a/lynq/S300AI/ap/app/zte_webui/subpg/ussd.html b/lynq/S300AI/ap/app/zte_webui/subpg/ussd.html
index 8998e4f..b58f7d3 100755
--- a/lynq/S300AI/ap/app/zte_webui/subpg/ussd.html
+++ b/lynq/S300AI/ap/app/zte_webui/subpg/ussd.html
@@ -7,12 +7,12 @@
         </div>

         <div class="col-xs-11">

             <div class="form-title">

-                <h1 data-trans='USSD'></h1>

+                <h1 data-trans='advanced_settings'></h1>

             </div>

         </div>

     </div>

 <div class="row">

-    <!-- <div class="col-xs-2">

+    <div class="col-xs-2">

 		<div class="nav_right">

 			<ul>

 			    <li><a data-trans="sleep_mode" href="#wlan_sleep"></a></li>

@@ -25,16 +25,14 @@
                 <li><a data-trans="tr069" href="#tr069"></a></li>

 			</ul>

 		</div>

-	</div> -->

+	</div>

 

-	<div class="innerContainer">

+	<div class="col-xs-10">

 

     <form id="frmUSSD">

-        <div class="col-xs-1 margin-top-15">

-	</div>

-	<div class="col-xs-11">

+	<div class="form-body">

 	    <h3 data-trans="USSD" class="form-title"></h3>

-        <div id="USSD_send_div"  data-bind="visible: USSDLocation()==0" class="margin-top-20">

+        <div id="USSD_send_div"  data-bind="visible: USSDLocation()==0" class="form-body margin-top-20">

             <div class="content">

                 <div class="row form-group">

                     <label data-trans="ussd_send_to" class="col-xs-4 side-right"></label>

@@ -48,7 +46,7 @@
                 </div>

             </div>

         </div>

-        <div id="USSD_reply_div"  data-bind="visible: USSDLocation()==1" class="margin-top-20">

+        <div id="USSD_reply_div"  data-bind="visible: USSDLocation()==1" class="form-body margin-top-20">

             <!--<div class="form-title" data-trans='ussd_contents'></div>!-->

             <div class="content">

                 <div class="row form-group">

diff --git a/lynq/S300AI/ap/app/zte_webui/subpg/wifi_sleep_mode.html b/lynq/S300AI/ap/app/zte_webui/subpg/wifi_sleep_mode.html
index 5b8c8d9..4706288 100755
--- a/lynq/S300AI/ap/app/zte_webui/subpg/wifi_sleep_mode.html
+++ b/lynq/S300AI/ap/app/zte_webui/subpg/wifi_sleep_mode.html
@@ -19,7 +19,7 @@
             <li><a data-trans="router_setting" href="#route_set"></a></li>

             <li><a data-trans="firewall" href="#filter_main"></a></li>

             <li data-bind="visible:hasUpdateCheck"><a data-trans="update_settings" href="#fota"></a></li>

-            <!-- <li data-bind="visible:hasUssd"><a data-trans="USSD" href="#usat"></a></li> -->

+            <li data-bind="visible:hasUssd"><a data-trans="USSD" href="#usat"></a></li>

 			<li data-bind="visible:hasDdns"><a data-trans="DDNS" href="#dynamic_dns"></a></li>

             <li><a data-trans="others" href="#more"></a></li>

             <li><a data-trans="tr069" href="#tr069"></a></li>

diff --git a/lynq/S300AI/ap/lib/libatext/ext_amt_func.c b/lynq/S300AI/ap/lib/libatext/ext_amt_func.c
index 3791fd7..3052b66 100755
--- a/lynq/S300AI/ap/lib/libatext/ext_amt_func.c
+++ b/lynq/S300AI/ap/lib/libatext/ext_amt_func.c
@@ -2058,6 +2058,56 @@
 	close(efuse_fd);

     return AT_END;

 }

+

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

+{

+    char strValue[16];

+    char strLog[256] = {0};

+    int i;

+	int ret = 0;

+	T_ZDrvEfuse_Secure efuseInfo = {{0}};

+	int efuse_fd = -1;

+	

+    efuse_fd = open("/dev/efuse", O_RDWR);

+	if (efuse_fd < 0) 

+	{

+		at_print(AT_ERR,"open %s fail.\n","/dev/efuse");

+		*res_msg = at_err_build(ATERR_PROC_FAILED);

+		*res_msglen = strlen(*res_msg);

+		return AT_END;

+	}

+

+	at_print(AT_ERR,"open %s success.\n","/dev/efuse");

+

+	 // ´Óefuse¶ÁÈ¡

+    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;

+    }

+	else

+	{

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

+		strLog[0] = '\0';

+		sprintf(strValue, "%02X,", efuseInfo.secureFlag&0xFF);

+		strcat(strLog, strValue);

+    	for (i = 0; i < sizeof(efuseInfo.pubKeyHash)/sizeof(UINT32); i++)

+    	{

+    	    sprintf(strValue, "%08lX", efuseInfo.pubKeyHash[i]);

+        	strcat(strLog, strValue);

+    	}

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

+		close(efuse_fd);

+		*res_msg = at_query_result_build("read security information", strLog);

+        *res_msglen = strlen(*res_msg);

+		return AT_END;

+		

+	}

+}

+

 /*

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

 {

@@ -2130,5 +2180,6 @@
     register_serv_func2("zmode=",0,0,0,zmodeSet_act_func,NULL); 

 	//mdlÓû§Ä£Ê½ÇÐÑз¢Ä£Ê½¼øÈ¨AT+ZAUTH=KEY

 	//register_serv_func2("ZAUTH=",0,0,0,auth_device_key,NULL);

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

     return 0;

 }

diff --git a/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc/TZ b/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc/TZ
deleted file mode 100755
index 39282a3..0000000
--- a/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc/TZ
+++ /dev/null
@@ -1 +0,0 @@
-<-03>3
diff --git a/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc/rc b/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc/rc
index 64248b0..c24d4b8 100755
--- a/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc/rc
+++ b/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc/rc
@@ -286,3 +286,4 @@
 if [[ $cwmpflag == "1" ]]; then
 cwmpd &
 fi
+/sbin/wefota &
diff --git a/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/default/default_parameter_sys b/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/default/default_parameter_sys
index b20fb36..4bf6a56 100755
--- a/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/default/default_parameter_sys
+++ b/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/default/default_parameter_sys
@@ -119,7 +119,7 @@
 MAX_Station_num_bak=0
 MAX_Access_num_bbak=0
 MAX_Chip_Capability=8
-wifi_key_gen_type=MAC
+wifi_key_gen_type=DEFAULT
 wifi_key_len=8
 wifi_key_only_digit=y
 wifi_lte_intr=1
diff --git a/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/default/default_parameter_user b/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/default/default_parameter_user
index 12b8a5e..cdde7ea 100755
--- a/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/default/default_parameter_user
+++ b/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/default/default_parameter_user
@@ -16,7 +16,7 @@
 auto_apn_index=0
 cid_reserved=0
 clear_pb_when_restore=no
-clear_sms_when_restore=yes
+clear_sms_when_restore=no
 default_apn=3gnet
 ipv6_APN_config1=
 ipv6_APN_config2=
@@ -98,11 +98,11 @@
 dns_extern=
 ipv6_dns_extern=
 eth_act_type=
-eth_type=auto
+eth_type=lan
 ethlan=
 ethwan=
 ethwan_dialmode=auto
-ethwan_mode=dhcp
+ethwan_mode=auto
 ethwan_priority=3
 fast_usb=usblan0
 fastnat_level=2
@@ -281,7 +281,7 @@
 mmi_new_sms_blink_flag=0
 mmi_show_pagetab=page1+page2+page3
 mmi_showmode=led
-mmi_task_tab=net_task+wifi_task+key_task+battery_task
+mmi_task_tab=net_task+wifi_task+key_task+rj45_task+battery_task
 mmi_temp_voltage_line=948+1199+1694+1736
 mmi_use_protect=
 mmi_use_wifi_usernum=1
@@ -307,7 +307,7 @@
 sntp_server2=europe.pool.ntp.org
 sntp_sync_select_interval_time=30
 sntp_time_set_mode=auto
-sntp_timezone=<-03>3
+sntp_timezone=CST-8
 sntp_timezone_index=0
 assert_errno=
 comm_logsize=16384
@@ -337,7 +337,7 @@
 wifi_acs_num=8
 closeEnable=0
 closeTime=
-CountryCode=BR
+CountryCode=CN
 DefaultKeyID=0
 DtimPeriod=1
 EncrypType=AES
@@ -347,7 +347,7 @@
 EX_DefaultKeyID=
 EX_EncrypType=
 EX_mac=
-EX_SSID1=R306BR_
+EX_SSID1=CPE-
 EX_WEPKEY=
 EX_wifi_profile=
 EX_WPAPSK1=
@@ -377,7 +377,7 @@
 m_MAX_Access_num=0
 m_NoForwarding=
 m_show_qrcode_flag=0
-m_SSID=R306BR_
+m_SSID=CPE-
 m_ssid_enable=0
 m_wapiType=
 m_wifi_mac=901D45692A5C
@@ -394,7 +394,7 @@
 show_qrcode_flag=0
 Sleep_interval=-1
 ssid_write_flag=0
-SSID1=R306BR_
+SSID1=CPE-
 tsw_sleep_time_hour=
 tsw_sleep_time_min=
 tsw_wake_time_hour=
@@ -519,7 +519,7 @@
 wefota_server1_port=45000
 wefota_last_work_time=0
 wefota_last_work_interval=0
-wefota_product_id=10306
+wefota_product_id=10300
 wefota_enable=1
 #for wefota end
 use_network_adb=usb