[Feature][S300AI][task-view-1715][app] add s300 app
Change-Id: Ifdc29666a80c46ec30ab5cadfcbdf4644ffa9ed7
diff --git a/lynq/S300AI/allbins/zx297520v3/prj_cpe/nv_230a/Ref_nvrw_0x26C00.bin b/lynq/S300AI/allbins/zx297520v3/prj_cpe/nv_230a/Ref_nvrw_0x26C00.bin
index 011fb78..48e432b 100644
--- a/lynq/S300AI/allbins/zx297520v3/prj_cpe/nv_230a/Ref_nvrw_0x26C00.bin
+++ b/lynq/S300AI/allbins/zx297520v3/prj_cpe/nv_230a/Ref_nvrw_0x26C00.bin
Binary files differ
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(®ex, "\\(ss ([0-9]+) ([0-9]+)\\)", REG_EXTENDED) != 0)
+ {
+ perror("ÕýÔò±í´ïʽ±àÒëʧ°Ü");
+ pclose(file);
+ return 0;
+ }
+
+ while (fgets(line, sizeof(line), file) && count < max_count)
+ {
+ if (regexec(®ex, 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(®ex);
+ 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(¤t_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"> </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"> </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"> </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