[Feature][R305][task-view-1233][webui] add r305 v2 app
Change-Id: I8c2d738b1cb7f8384bc4f0731986f4f0308d6c67
diff --git a/lynq/R305/ap/app/Script/Makefile b/lynq/R305/ap/app/Script/Makefile
index 2065e63..7bde2a3 100755
--- a/lynq/R305/ap/app/Script/Makefile
+++ b/lynq/R305/ap/app/Script/Makefile
@@ -40,7 +40,8 @@
endif
wifi:
@echo "copying wifi script"
-
+
+ $(CP) -rf ./wifi_script/realtek/zte_qrcode_create.sh $(ROMFS_DIR)/sbin/
ifeq ($(CONFIG_WIFI_MODULE), realtek)
@echo "copying wifi realtek script"
mkdir -p $(ROMFS_DIR)/etc_ro/
diff --git a/lynq/R305/ap/app/cgi/Makefile b/lynq/R305/ap/app/cgi/Makefile
new file mode 100755
index 0000000..935f4b4
--- /dev/null
+++ b/lynq/R305/ap/app/cgi/Makefile
@@ -0,0 +1,55 @@
+#*******************************************************************************
+# include ZTE application makefile
+#*******************************************************************************
+include $(zte_app_mak)
+include $(COMMON_MK)
+
+CPU_PUB_ROOT=$(TOPDIR_AP)/../pub
+##############USER COMIZE BEGIN################
+EXEC = upload.cgi
+OBJS = cgi.o
+
+#*******************************************************************************
+# include path
+#*******************************************************************************
+CFLAGS += -I./
+CFLAGS += -I../include
+CFLAGS += -I../zte_comm/nvserver
+CFLAGS += -I$(LIB_DIR)/libnvram
+CFLAGS += -I$(APP_DIR)/include
+CFLAGS += -g -Werror=implicit-function-declaration
+
+CFLAGS += -I$(zte_app_path)/include
+CFLAGS += -I$(zte_lib_path)/libnvram
+CFLAGS += -I$(LINUX_DIR)
+CFLAGS += -I$(CPU_PUB_ROOT)/project/zx297520v3/include/nv
+CFLAGS += -O -Dlinux=1 -DHIGH_SPEED=1
+
+CFLAGS += -I$(zte_lib_path)/libsoftap
+CFLAGS += -I$(zte_lib_path)/libsoft_timer
+
+#*******************************************************************************
+# library
+#*******************************************************************************
+LDLIBS += -lnvram -L$(zte_lib_path)/libnvram -lpthread
+ifeq ($(LINUX_TYPE),uClinux)
+LDFLAGS += -Wl,--allow-multiple-definition,-elf2flt=-s131072
+endif
+
+LDLIBS += -latutils -L$(zte_lib_path)/libatutils
+LDLIBS += -lsoftap -L$(zte_lib_path)/libsoftap
+LDLIBS += -lsoft_timer -L$(zte_lib_path)/libsoft_timer
+
+##############USER COMIZE END##################
+
+all: $(EXEC)
+
+$(EXEC): $(OBJS)
+ $(CC) $(LDFLAGS) -o $@ $(OBJS) -Wl,--start-group $(LDLIBS) -Wl,--end-group
+ @cp $@ $@.elf
+
+romfs:
+ $(ROMFSINST) /sbin/$(EXEC)
+
+clean:
+ -rm -f $(EXEC) *.elf *.gdb *.o
\ No newline at end of file
diff --git a/lynq/R305/ap/app/cgi/cgi.c b/lynq/R305/ap/app/cgi/cgi.c
new file mode 100755
index 0000000..b026367
--- /dev/null
+++ b/lynq/R305/ap/app/cgi/cgi.c
@@ -0,0 +1,350 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#define BUFFER_SIZE (1024 * 20) // Define the buffer size for each read
+#define FIND_STR_LEN 128 // Define the length of the string to find
+#define FOTA_UPDATE_STATUS_FILE "/cache/zte_fota/update_status"
+
+// Custom memmem function
+static void* custom_memmem(const void* haystack, size_t haystack_len, const void* needle, size_t needle_len)
+{
+ if (needle_len == 0 || haystack_len < needle_len)
+ {
+ return NULL;
+ }
+
+ size_t i = 0;
+ const unsigned char* h = (const unsigned char*)haystack;
+ const unsigned char* n = (const unsigned char*)needle;
+
+ for (i = 0; i <= haystack_len - needle_len; ++i)
+ {
+ if (memcmp(h + i, n, needle_len) == 0)
+ {
+ return (void*)(h + i);
+ }
+ }
+
+ return NULL;
+}
+
+// Remove the last boundary marker from the file
+static int remove_last_boundary(const char *filename, const char *boundary_marker, int boundary_marker_len)
+{
+ int fd = open(filename, O_RDWR);
+ if (fd == -1)
+ {
+ perror("Unable to open file for reading and writing");
+ return 1;
+ }
+
+ // Get the file size
+ off_t file_size = lseek(fd, 0, SEEK_END);
+ if (file_size == -1)
+ {
+ perror("Unable to get file size");
+ close(fd);
+ return 1;
+ }
+
+ // Search for the boundary_marker from the end of the file
+ off_t search_start = file_size - FIND_STR_LEN;
+ if (search_start < 0)
+ {
+ search_start = 0;
+ }
+
+ lseek(fd, search_start, SEEK_SET);
+
+ char buffer[FIND_STR_LEN + 1]; // +1 for storing '\0'
+ int bytes_read = read(fd, buffer, FIND_STR_LEN);
+ if (bytes_read <= 0)
+ {
+ perror("Unable to read file");
+ close(fd);
+ return 1;
+ }
+ buffer[bytes_read] = '\0'; // Ensure the string is null-terminated
+
+ // Find the boundary_marker
+ char *boundary = custom_memmem(buffer, bytes_read, boundary_marker, boundary_marker_len);
+ if (boundary)
+ {
+ // Found boundary_marker, calculate the truncate position
+ off_t truncate_pos = search_start + (boundary - buffer);
+ if (ftruncate(fd, truncate_pos) == -1)
+ {
+ perror("Unable to truncate file");
+ close(fd);
+ return 1;
+ }
+ }
+
+ close(fd);
+ return 0;
+}
+
+// Function to handle file upload
+static int handle_file_upload(const char *source_filename, const char *target_filename, int content_length)
+{
+ char buffer[BUFFER_SIZE];
+ int bytes_read;
+ int target_fd = -1;
+ int source_fd = -1; // Source file descriptor
+ char *content_start_ptr = NULL;
+ int content_start = 0;
+ const char *boundary_marker = "\r\n------WebKitFormBoundary"; // Boundary marker
+ int boundary_marker_len = strlen(boundary_marker);
+
+ // Open the target file
+ target_fd = open(target_filename, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+ if (target_fd == -1)
+ {
+ perror("Unable to open target file");
+ return 1;
+ }
+
+ // Open the source file
+ source_fd = open(source_filename, O_RDONLY);
+ if (source_fd == -1)
+ {
+ perror("Unable to open source file");
+ close(target_fd);
+ return 1;
+ }
+
+ // Read the request header to find the start position of file content
+ bytes_read = read(source_fd, buffer, BUFFER_SIZE);
+ if (bytes_read <= 0)
+ {
+ printf("Content-type: text/html\r\n\r\n");
+ printf("<h1>Error: Failed to read data</h1>");
+ printf("<p>Error number: %d - %s</p>", errno, strerror(errno));
+ close(target_fd);
+ close(source_fd);
+ return 1;
+ }
+
+ // Find the start position of the file content (usually after \r\n\r\n)
+ content_start_ptr = strstr(buffer, "\r\n\r\n");
+ if (!content_start_ptr)
+ {
+ printf("Content-type: text/html\r\n\r\n");
+ printf("<h1>Error: Unable to find the start position of file content</h1>");
+ close(target_fd);
+ close(source_fd);
+ return 1;
+ }
+
+ // Calculate the actual start position of the file content
+ content_start = content_start_ptr - buffer + 4;
+
+ // Write the first part of the file content
+ if (content_start < bytes_read)
+ {
+ if (write(target_fd, buffer + content_start, bytes_read - content_start) == -1)
+ {
+ perror("Unable to write to target file");
+ close(target_fd);
+ close(source_fd);
+ return 1;
+ }
+ }
+
+ // Update the remaining content length
+ content_length -= (bytes_read - content_start);
+
+ // Continue reading and writing the file in segments
+ while (content_length > 0)
+ {
+ bytes_read = read(source_fd, buffer, BUFFER_SIZE);
+ if (bytes_read <= 0)
+ {
+ // If reading is complete, normally break out of the loop
+ break;
+ }
+
+ // Write the file content
+ if (write(target_fd, buffer, bytes_read) == -1)
+ {
+ perror("Unable to write to target file");
+ close(target_fd);
+ close(source_fd);
+ return 1;
+ }
+
+ // Update the remaining content length
+ content_length -= bytes_read;
+ }
+
+ // Close file descriptors
+ close(target_fd);
+ close(source_fd);
+
+ // Remove the last boundary marker from the file
+ return remove_last_boundary(target_filename, boundary_marker, boundary_marker_len);
+}
+
+static int fota_is_file_exist(const char* path)
+{
+ if ( (path == NULL) || (*path == '\0') )
+ return 0;
+ if (access(path, R_OK) != 0)
+ return 0;
+
+ return 1;
+}
+
+static int fota_read_file(const char*path, char*buf, size_t sz)
+{
+ int fd = -1;
+ size_t cnt;
+
+ fd = open(path, O_RDONLY, 0);
+ if(fd < 0)
+ {
+ printf("fota_read_file failed to open %s: %s\n", path, strerror(errno));
+ cnt = -1;
+ return cnt;
+ }
+ cnt = read(fd, buf, sz - 1);
+ if(cnt <= 0)
+ {
+ printf("failed to read %s: %s\n", path, strerror(errno));
+ close(fd);
+ cnt = -1;
+ return cnt;
+ }
+ buf[cnt] = '\0';
+ if(buf[cnt - 1] == '\n')
+ {
+ cnt--;
+ buf[cnt] = '\0';
+ }
+ close(fd);
+
+ return cnt;
+}
+
+static int fota_read_file_int(const char* path, int *val)
+{
+ char buf[32];
+ char *end;
+ int ret;
+ int tmp;
+
+ ret = fota_read_file(path, buf, sizeof(buf));
+ if(ret < 0)
+ return -1;
+
+ errno = 0;
+ tmp = strtol(buf, &end, 0);
+ if (errno == ERANGE)
+ {
+ printf("strtol errno %d: %s\n", errno, strerror(errno));
+ }
+
+ if ((end == buf) || ((end < buf + sizeof(buf)) && (*end != '\0')))
+ {
+ return -1;
+ }
+
+ *val = tmp;
+
+ return 0;
+}
+
+static int fota_get_update_status(int *fota_status)
+{
+ int status = 0;
+ int ret = 0;
+ if(!fota_is_file_exist(FOTA_UPDATE_STATUS_FILE))
+ {
+ *fota_status = -1;
+ return -1;
+ }
+ ret = fota_read_file_int(FOTA_UPDATE_STATUS_FILE, &status);
+ if(ret < 0)
+ {
+ *fota_status = -1;
+ return -1;
+ }
+ *fota_status = status;
+ return 0;
+}
+
+static void print_json_response(int success, const char* message)
+{
+ printf("Content-type: application/json\r\n\r\n");
+ printf("{\"success\": %d, \"message\": \"%s\"}\n", success, message);
+}
+
+static void cgi_fota_update_progress()
+{
+ int upgradeStatus, result;
+
+ system("fota_upi -u verify > /dev/null 2>&1");
+ result = fota_get_update_status(&upgradeStatus);
+ if(result < 0)
+ {
+ print_json_response(0, "Fail to read update file");
+ }
+ else if(upgradeStatus != 0)
+ {
+ print_json_response(0, "Verify update file failed");
+ }
+ else
+ {
+ print_json_response(1, "File verification successful, start updating...");
+ sleep(1);
+ system("fota_upi -u recovery > /dev/null 2>&1 &");
+ }
+}
+
+int main()
+{
+ const char *source_filename = "/tmp/firmware_tmp_file"; // Source file path
+ const char *target_filename = "/cache/zte_fota/delta.package"; // Target file path
+ const char *content_length_str = NULL;
+ int content_length = 0;
+
+ system("rm -rf /cache/zte_fota");
+ system("mkdir -p /cache/zte_fota");
+
+ // Get environment variables
+ content_length_str = getenv("CONTENT_LENGTH");
+ if (!content_length_str)
+ {
+ system("rm -rf /tmp/firmware_tmp_file");
+ print_json_response(0, "Missing CONTENT_LENGTH environment variable");
+ return 1;
+ }
+
+ content_length = atoi(content_length_str);
+ if (content_length <= 0)
+ {
+ system("rm -rf /tmp/firmware_tmp_file");
+ print_json_response(0, "Invalid CONTENT_LENGTH");
+ return 1;
+ }
+
+ // Call the file upload handling function
+ if (handle_file_upload(source_filename, target_filename, content_length) != 0)
+ {
+ system("rm -rf /tmp/firmware_tmp_file");
+ print_json_response(0, "File upload failed");
+ return 1;
+ }
+
+ // Output success information
+ //print_json_response(1, "File upload successful");
+ system("rm -rf /tmp/firmware_tmp_file");
+
+ cgi_fota_update_progress();
+
+ return 0;
+}
diff --git a/lynq/R305/ap/app/goahead/interface5.0/wifi/zte_web_lan.c b/lynq/R305/ap/app/goahead/interface5.0/wifi/zte_web_lan.c
index 6d93328..769d598 100755
--- a/lynq/R305/ap/app/goahead/interface5.0/wifi/zte_web_lan.c
+++ b/lynq/R305/ap/app/goahead/interface5.0/wifi/zte_web_lan.c
@@ -293,8 +293,10 @@
wifi_on = websGetVar(wp, T("wifiEnabled"), NULL);
if (wifi_on != NULL) {
if (STR_EQUAL(wifi_on, "0")) {
+ NV_WRITE("wifi_switch_status", "web_close", nv_ret);
slog(MISC_PRINT, SLOG_ERR, T("UFIx User disable WIFI swtich!\n"));
} else if (STR_EQUAL(wifi_on, "1")) {
+ NV_WRITE("wifi_switch_status", "web_open", nv_ret);
slog(MISC_PRINT, SLOG_ERR, T("UFIx User enable WIFI swtich!\n"));
}
NV_READ("wifiEnabled", old_wifi_on, nv_ret);
diff --git a/lynq/R305/ap/app/goahead/interface5.0/zte_web_interface.h b/lynq/R305/ap/app/goahead/interface5.0/zte_web_interface.h
index c8d9c11..3212b47 100755
--- a/lynq/R305/ap/app/goahead/interface5.0/zte_web_interface.h
+++ b/lynq/R305/ap/app/goahead/interface5.0/zte_web_interface.h
@@ -383,6 +383,7 @@
#define GOFORM_SET_NETWORK_ADB "NETWORK_ADB"
#define GOFORM_COMMAND "COMMAND"
+#define GOFORM_NETWORK_INFO "NETWORK_INFO"
/****************************All the web pages' URL************************************/
#define ZTE_WEB_PAGE_LOGIN_NAME "index.html"
@@ -1086,6 +1087,7 @@
extern void zte_goform_set_network_adb(webs_t wp);
extern void zte_goform_set_command(webs_t wp);
+extern void zte_goform_get_network_info(webs_t wp);
/**
* @brief Data to be decoded.
diff --git a/lynq/R305/ap/app/goahead/interface5.0/zte_web_mgmt.c b/lynq/R305/ap/app/goahead/interface5.0/zte_web_mgmt.c
index bbb685a..538cf26 100755
--- a/lynq/R305/ap/app/goahead/interface5.0/zte_web_mgmt.c
+++ b/lynq/R305/ap/app/goahead/interface5.0/zte_web_mgmt.c
@@ -569,6 +569,7 @@
}
cfg_set("mgmt_quicken_power_on", mgmt_quicken_power_on);
+ cfg_save();
zte_write_result_to_web(wp, SUCCESS);
}
@@ -2833,7 +2834,7 @@
*dst = '\0';
}
-static void executeCommand(const char *command, char *result)
+static void executeCommand(const char *command, char *result, int size)
{
if (command == NULL || strlen(command) == 0)
{
@@ -2847,7 +2848,7 @@
perror("popen failed");
return;
}
- int nread = fread(result, 1, 256, pipe);
+ int nread = fread(result, 1, size, pipe);
if (nread > 0)
{
result[nread - 1] = '\0';
@@ -2874,6 +2875,141 @@
}
}
+static void parse_at_response(const char *response, char **params, int *param_count, char *at, int count)
+{
+ const char *start = strstr(response, at);
+ if (start == NULL)
+ {
+ printf("Response does not contain the expected prefix.\n");
+ return;
+ }
+
+ start += strlen(at);
+ char *token = strtok((char *)start, ",");
+ *param_count = 0;
+
+ while (token != NULL && *param_count < count)
+ {
+ params[(*param_count)++] = token;
+ token = strtok(NULL, ",");
+ }
+}
+
+#define MIN_RSRQ_VALUE -19.5 // 1¤71¤7§³dB0ö5
+#define STEP_SIZE 0.5 // 071¤71¤71¤71¤71¤71¤7041¤71¤71¤7
+#define MAX_RSRQ_INDEX 34 // 1¤71¤71¤71¤71¤71¤71¤71¤71¤71¤71¤7
+
+static float get_rsrq_db_value(int rsrq_index)
+{
+ if (rsrq_index < 0 || rsrq_index > MAX_RSRQ_INDEX)
+ {
+ return -1000.0;
+ }
+
+ float lower_bound = MIN_RSRQ_VALUE + rsrq_index * STEP_SIZE;
+
+ return lower_bound;
+}
+
+void zte_goform_get_network_info(webs_t wp)
+{
+ char response[1024];
+ char tmp[16] = {0};
+ char plmn[16] = {0};
+ char *params[15];
+ int param_count = 0;
+ int i = 0;
+ char rsrp[16] = {0};
+ char cell_id[16] = {0};
+
+ executeCommand("at at+ZSINR 2>&1", response, sizeof(response));
+ const char *start = strstr(response, "+ZSINR: ");
+ if (start != NULL)
+ {
+ start += strlen("+ZSINR: ");
+ char *sinr = strtok((char *)start, ",");
+ if (atoi(sinr) == -20)
+ {
+ cfg_set("lte_sinr", "--");
+ web_feedback_header(wp);
+ (void)websWrite(wp, T("{\"%s\":\"%s\","), "lte_sinr", "--");
+ }
+ else
+ {
+ cfg_set("lte_sinr", sinr);
+ web_feedback_header(wp);
+ (void)websWrite(wp, T("{\"%s\":\"%s dB\","), "lte_sinr", sinr);
+ }
+ }
+ else
+ {
+ cfg_set("lte_sinr", "--");
+ web_feedback_header(wp);
+ (void)websWrite(wp, T("{\"%s\":\"%s\","), "lte_sinr", "--");
+ }
+
+ executeCommand("at at+ZEMSCIQ=1 2>&1", response, sizeof(response));
+ if (strstr(response, "+CME ERROR:") != NULL)
+ {
+ printf("----No network\n");
+ cfg_set("lte_plmn", "--");
+ cfg_set("lte_pci", "--");
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_rsrp", "--");
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_rsrq", "--");
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_plmn", "--");
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_cellid", "--");
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_pci", "--");
+ (void)websWrite(wp, T("\"%s\":\"%s\"}"), "lte_band", "--");
+ }
+ else
+ {
+ parse_at_response(response, params, ¶m_count, "+ZEMSCIQ: ", 12);
+ for (i = 0; i < param_count; i++)
+ {
+ printf("Parameter[%d]: %s\n", i, params[i]);
+ }
+ printf("======set lte_plmn=%s lte_pci=%s lte_band=%s lte_rsrq=%s\n", params[5], params[6], params[8], params[10]);
+ float db_value = get_rsrq_db_value(atoi(params[10]));
+ if (db_value == -1000.0)
+ {
+ cfg_set("lte_rsrq", " ");
+ }
+ else
+ {
+ sprintf(tmp, "%d", (int)db_value);
+ cfg_set("lte_rsrq", tmp);
+ }
+
+ snprintf(plmn, strlen(params[5]) - 1, "%s", params[5] + 1);
+ cfg_set("lte_plmn", plmn);
+ cfg_set("lte_pci", params[6]);
+ cfg_get_item("cell_id", cell_id, sizeof(cell_id));
+ cfg_get_item("lte_rsrp", rsrp, sizeof(rsrp));
+ if (strlen(rsrp) == 0)
+ {
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_rsrp", "--");
+ }
+ else
+ {
+ (void)websWrite(wp, T("\"%s\":\"%s dBm\","), "lte_rsrp", rsrp);
+ }
+ if (strlen(tmp) == 0)
+ {
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_rsrq", "--");
+ }
+ else
+ {
+ (void)websWrite(wp, T("\"%s\":\"%s dB\","), "lte_rsrq", tmp);
+ }
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_plmn", plmn);
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_cellid", cell_id);
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_band", params[8]);
+ (void)websWrite(wp, T("\"%s\":\"%s\"}"), "lte_pci", params[6]);
+ }
+
+ return;
+}
+
void zte_goform_set_command(webs_t wp)
{
MSG_BUF stMsg = {0};
@@ -2917,7 +3053,7 @@
replace_slash_with_backslash(value);
printf("replace value:%s\n", value);
}
- executeCommand(value, result);
+ executeCommand(value, result, sizeof(result));
printf("Command Output:\n%s\n", result);
zte_write_result_to_web(wp, result);
return;
diff --git a/lynq/R305/ap/app/goahead/interface5.0/zte_web_util.c b/lynq/R305/ap/app/goahead/interface5.0/zte_web_util.c
index cee52d0..ade98ec 100755
--- a/lynq/R305/ap/app/goahead/interface5.0/zte_web_util.c
+++ b/lynq/R305/ap/app/goahead/interface5.0/zte_web_util.c
@@ -127,6 +127,7 @@
{CMD_HTTPSHARE_GETCARD_VAULE, zte_httpShare_getcard_value},
{CMD_HTTPSHARE_GETCARD_NMEA, zte_httpShare_getcard_name},
{CMD_HTTPSHARE_AUTH_GET, zte_httpShare_auth_get},
+ {GOFORM_NETWORK_INFO, zte_goform_get_network_info},
};
diff --git a/lynq/R305/ap/app/goahead/server/cgi.c b/lynq/R305/ap/app/goahead/server/cgi.c
index c9286c6..8bf5bb3 100755
--- a/lynq/R305/ap/app/goahead/server/cgi.c
+++ b/lynq/R305/ap/app/goahead/server/cgi.c
@@ -59,10 +59,11 @@
}
// fmtAlloc(&cgiPath, FNAMESIZE, T("%s/%s/%s"), websGetDefaultDir(),
// CGI_BIN, cgiName);
- fmtAlloc(&cgiPath, FNAMESIZE, T("%s/%s"),"/etc_ro/cgi-bin", cgiName);
+ fmtAlloc(&cgiPath, FNAMESIZE, T("%s/%s"),"/sbin", cgiName);
{
gstat_t sbuf;
if (gstat(cgiPath, &sbuf) != 0 || (sbuf.st_mode & S_IFREG) == 0) {
+ system("rm -rf /tmp/firmware_tmp_file");
websError(wp, 200, T("CGI process file does not exist"));
bfree(B_L, cgiPath);
return 1;
@@ -162,6 +163,7 @@
if ((pHandle = websLaunchCgiProc(cgiPath, argp, envp, stdIn, stdOut))
== -1) {
+ system("rm -rf /tmp/firmware_tmp_file");
websError(wp, 200, T("failed to spawn CGI task"));
for (ep = envp; *ep != NULL; ep++) {
bfreeSafe(B_L, *ep);
diff --git a/lynq/R305/ap/app/goahead/server/goahead.c b/lynq/R305/ap/app/goahead/server/goahead.c
index 680db6a..3fe84c3 100755
--- a/lynq/R305/ap/app/goahead/server/goahead.c
+++ b/lynq/R305/ap/app/goahead/server/goahead.c
@@ -110,7 +110,7 @@
zte_httpshare_init();//httpshare
websUrlHandlerDefine(T("/"), NULL, 0, websHomePageHandler, 0);
- system("rm -rf /firmware_tmp_file");
+ system("rm -rf /tmp/firmware_tmp_file");
return 0;
}
diff --git a/lynq/R305/ap/app/goahead/server/webs.c b/lynq/R305/ap/app/goahead/server/webs.c
index b0238e1..93d50e0 100755
--- a/lynq/R305/ap/app/goahead/server/webs.c
+++ b/lynq/R305/ap/app/goahead/server/webs.c
@@ -731,7 +731,7 @@
{
if(gstrstr(url, CGI_FIRMWARE_UPLOAD) != NULL){
wp->flags |= WEBS_CGI_FIRMWARE_UPLOAD;
- system("rm -rf /firmware_tmp_file");
+ system("rm -rf /tmp/firmware_tmp_file");
zte_mgmt_login_timemark_set();
printf("[goahead]set WEBS_CGI_FIRMWARE_UPLOAD \n");
}
diff --git a/lynq/R305/ap/app/goahead/server/webs.h b/lynq/R305/ap/app/goahead/server/webs.h
index 9dcb6af..ed80948 100755
--- a/lynq/R305/ap/app/goahead/server/webs.h
+++ b/lynq/R305/ap/app/goahead/server/webs.h
@@ -72,8 +72,8 @@
#define CGI_FIRMWARE_WRITE T("upload.write")
#define CGI_HTTPSHARE_UPLOAD T("httpshare.up")
-//#define FIRMWARE_TMP_FILE T("/var/firmware_tmp_file")
-#define FIRMWARE_TMP_FILE T("/firmware_tmp_file")
+#define FIRMWARE_TMP_FILE T("/tmp/firmware_tmp_file")
+//#define FIRMWARE_TMP_FILE T("/firmware_tmp_file")
//added by liuyingnan for PC Client begin, 20120829
#define WEBS_REST_CLIENT_REQUEST 0x200000
diff --git a/lynq/R305/ap/app/zte_comm/at_ctl/inc/ps_normal.h b/lynq/R305/ap/app/zte_comm/at_ctl/inc/ps_normal.h
index c3b81f4..78df499 100755
--- a/lynq/R305/ap/app/zte_comm/at_ctl/inc/ps_normal.h
+++ b/lynq/R305/ap/app/zte_comm/at_ctl/inc/ps_normal.h
@@ -454,6 +454,7 @@
{ZAT_SYSINFORES_SYSMODE_TDD_LTE, "4G" }
};
+#if 0
static const T_zAt_SysInfoSetNetType G_ZAT_SYSINFO_SET_SUBNETTYPE[] =
{
{1, "GSM" },
@@ -468,6 +469,22 @@
{10, "FDD_LTE" },
{11, "HSPA+" }, //utran
};
+#endif
+
+static const T_zAt_SysInfoSetNetType G_ZAT_SYSINFO_SET_SUBNETTYPE[] =
+{
+ {1, "2G" },
+ {2, "2G" },
+ {3, "2G" },
+ {4, "3G" }, //WCDMA
+ {5, "3G" }, //utran
+ {6, "3G" }, //utran
+ {7, "3G" }, //utran
+ {8, "3G" },
+ {9, "4G" },
+ {10, "4G" },
+ {11, "3G" }, //utran
+};
static const T_zAt_QualcommListNode G_ZAT_QUALCOMMLISTNODE[]=
{
diff --git a/lynq/R305/ap/app/zte_comm/wlan/src/wlan_config_ssid.c b/lynq/R305/ap/app/zte_comm/wlan/src/wlan_config_ssid.c
index 4d61610..ca89d23 100755
--- a/lynq/R305/ap/app/zte_comm/wlan/src/wlan_config_ssid.c
+++ b/lynq/R305/ap/app/zte_comm/wlan/src/wlan_config_ssid.c
@@ -259,6 +259,32 @@
#endif
return;
}
+static void generate_random_string(char *str, int seed)
+{
+ int i = 0;
+ int random_index = 0;
+ const char charset[] = "abcdefghjkmnpqrstuwxyzACDEFGHJKLMNPQRSTUWXYZ2345679!@#%";
+ const int charsetSize = sizeof(charset) - 1;
+
+ if (str == NULL)
+ {
+ wf_log("Provided string does not have enough space to store the result.\n");
+ return;
+ }
+
+ srand(seed);
+
+ for (i = 0; i < 8; i++)
+ {
+ random_index = rand() % charsetSize;
+ str[i] = charset[random_index];
+ }
+
+ str[8] = '\0';
+
+ return;
+}
+
static int make_wifikey (CHAR * key, CHAR * m_key)
{
@@ -476,6 +502,10 @@
INT i = 0;
INT valid_mac = 0;
INT len = 0, len1 = 0;
+ char generate_seed[32] = {0};
+ char m_generate_seed[32] = {0};
+ int seed = 0;
+ int m_seed = 0;
ret = cfg_get_item ("wifi_mac_num", wifi_mac_num_str, sizeof (wifi_mac_num_str));
if (ret == 0) {
@@ -531,8 +561,16 @@
// setWifiWpsDefPin();
- generate_ascii_password (read_mac, outpassword, sizeof (outpassword));
- generate_ascii_password (m_read_mac, m_outpassword, sizeof (m_outpassword));
+ // generate_ascii_password (read_mac, outpassword, sizeof (outpassword));
+ // generate_ascii_password (m_read_mac, m_outpassword, sizeof (m_outpassword));
+ strncpy(generate_seed, &read_mac[6], 6);
+ sscanf(generate_seed, "%X", &seed);
+ strncpy(m_generate_seed, &m_read_mac[6], 6);
+ sscanf(m_generate_seed, "%X", &m_seed);
+ wf_log("generate_seed = %s, m_generate_seed = %s", generate_seed, m_generate_seed);
+ wf_log("seed = %d, m_seed = %d", seed, m_seed);
+ generate_random_string(outpassword, seed);
+ generate_random_string(m_outpassword, m_seed);
make_wifikey (outpassword, m_outpassword);
make_user_mac (read_mac);
diff --git a/lynq/R305/ap/app/zte_comm/wlan/src/wlan_main.c b/lynq/R305/ap/app/zte_comm/wlan/src/wlan_main.c
index cb43bef..41aba2c 100755
--- a/lynq/R305/ap/app/zte_comm/wlan/src/wlan_main.c
+++ b/lynq/R305/ap/app/zte_comm/wlan/src/wlan_main.c
@@ -246,6 +246,7 @@
static void sleep_wifi()
{
cfg_set ("wifiSleep", "1");
+ cfg_set("wifiEnabled", "0");
cancel_all_timer();
ap_server->basic_deal (ap_server, WIFI_CFG_SLEEP); //sleep no real action meaning,just readable
diff --git a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_battery.c b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_battery.c
index 330b954..e7f40ad 100644
--- a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_battery.c
+++ b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_battery.c
@@ -28,15 +28,15 @@
È«¾Ö±äÁ¿¶¨Òå
***********************************************************************************/
-static UINT32 s_mmi_poweroff_voltage_num = 0;//¶Áµ½µÍµç¹Ø»úµçѹµÄ´ÎÊý£¬Á¬ÐøÈý´Î×Ô¶¯¹Ø»ú
-static SINT32 g_mmi_voltageEx = 0;//ÿ20s²éѯµçѹʱ£¬±£´æÉÏÒ»´ÎµÄµçѹ
-static E_zMmi_Charge_State s_mmi_charge_state = STATE_CHARGE_MAX; //ÿ´ÎÊÕµ½Çý¶¯Éϱ¨Ê±£¬±£´æµ±Ç°µÄ³äµç״̬
-static E_zMmi_Charge_State s_mmi_charge_stateEx = STATE_CHARGE_MAX;//ÿ´ÎÊÕµ½Çý¶¯Éϱ¨Ê±£¬±£´æÉÏÒ»´ÎµÄ³äµç״̬
-static E_zMmi_Voltage_level s_mmi_voltage_level = VOLT_MAX;//²éѯµçѹʱ£¬¸ù¾Ýµçѹֵ±£´æµ±Ç°µçÁ¿·¶Î§
+static volatile UINT32 s_mmi_poweroff_voltage_num = 0;//¶Áµ½µÍµç¹Ø»úµçѹµÄ´ÎÊý£¬Á¬ÐøÈý´Î×Ô¶¯¹Ø»ú
+static volatile SINT32 g_mmi_voltageEx = 0;//ÿ20s²éѯµçѹʱ£¬±£´æÉÏÒ»´ÎµÄµçѹ
+static volatile E_zMmi_Charge_State s_mmi_charge_state = STATE_CHARGE_MAX; //ÿ´ÎÊÕµ½Çý¶¯Éϱ¨Ê±£¬±£´æµ±Ç°µÄ³äµç״̬
+static volatile E_zMmi_Charge_State s_mmi_charge_stateEx = STATE_CHARGE_MAX;//ÿ´ÎÊÕµ½Çý¶¯Éϱ¨Ê±£¬±£´æÉÏÒ»´ÎµÄ³äµç״̬
+static volatile E_zMmi_Voltage_level s_mmi_voltage_level = VOLT_MAX;//²éѯµçѹʱ£¬¸ù¾Ýµçѹֵ±£´æµ±Ç°µçÁ¿·¶Î§
-static BOOL g_mmi_chg_switch_off = FALSE;//¼Ç¼³äµç¹Ø±Õ¿ª¹Ø£¬Ä¬ÈÏÔÊÐí³äµç
-static BOOL s_mmi_usb_insert_status = FALSE;//0:USB²åÈë״̬ 1:USB δ²åÈë״̬
-static SINT32 s_mmi_battery_pers = 0;//µçÁ¿°Ù·Ö±ÈÇø¼ä
+static volatile BOOL g_mmi_chg_switch_off = FALSE;//¼Ç¼³äµç¹Ø±Õ¿ª¹Ø£¬Ä¬ÈÏÔÊÐí³äµç
+static volatile BOOL s_mmi_usb_insert_status = FALSE;//0:USB²åÈë״̬ 1:USB δ²åÈë״̬
+static volatile SINT32 s_mmi_battery_pers = 0;//µçÁ¿°Ù·Ö±ÈÇø¼ä
static MMI_TEMP_DETECT last_temp = MMI_TEMP_DETECT_MAX;//µç³ØÉÏÒ»´ÎζÈ״̬
static SINT32 s_mmi_temp_count = 0;//ζÈÒ쳣ʱ¼ÆÊýÆ÷£¬Á¬Ðø3´Îºó½øÐÐÏàÓ¦´¦Àí
@@ -132,10 +132,35 @@
***********************************************************************************/
static void mmi_lowbattery_shutdown(UINT32 voltagepower)
{
- if (voltagepower < POWEROFFLEVEL) {
+ FILE *fp;
+ char buff[16];
+ int ret;
+ slog(MMI_PRINT, SLOG_DEBUG, "mmi_lowbattery_shutdown %d %d\n", s_mmi_poweroff_voltage_num, voltagepower);
+ if (voltagepower < POWEROFFLEVEL && s_mmi_charge_state != STATE_CHARGING) {
s_mmi_poweroff_voltage_num ++ ;
- if (s_mmi_poweroff_voltage_num == 3) {
+ if (s_mmi_poweroff_voltage_num >= 3) {
s_mmi_poweroff_voltage_num = 0;
+ fp = fopen("/sys/class/power_supply/boost/boost_enabled", "r");
+ buff[0] = '\0';
+ if (fp != NULL && (ret=fread(buff, 1, 16, fp)) > 0 && buff[0] == '1')
+ {
+ fclose(fp);
+ buff[ret]='\0';
+ slog(MMI_PRINT, SLOG_NORMAL, "enable flag %s\n", buff);
+ system(MMI_TURN_OFF_DISCHG);
+ if (0 == ipc_send_message(MODULE_ID_WEB_CGI, MODULE_ID_WIFI, MSG_CMD_WIFI_ADVANCED, 2, "0", 0))
+ {
+ slog(MMI_PRINT, SLOG_NORMAL, "suspend,lowerbattery!!!\n");
+ get_modem_info("AT+CFUN=0\r", NULL, NULL);
+ system("echo mmi_main_lock > /sys/power/wake_unlock");
+ system("echo ufiwakelock > /sys/power/wake_unlock");
+ system("echo mem > /sys/power/autosleep");
+ return;
+ }
+ return;
+ }
+ if (fp != NULL)
+ fclose(fp);
mmi_set_abnormal_poweroff_flag();
slog(MMI_PRINT, SLOG_NORMAL, "ZTE_MMI poweroff,lowerbattery!!!\n");
@@ -154,7 +179,9 @@
{
int cur_power = 0;
int bat_level = 0;
- if (g_mmi_voltageEx != 0) {
+ if (g_mmi_voltageEx != 0 && s_mmi_charge_state == STATE_CHARGING) {
+ cur_power = voltagepower > g_mmi_voltageEx ? voltagepower : g_mmi_voltageEx;
+ } else if (g_mmi_voltageEx != 0) {
cur_power = voltagepower < g_mmi_voltageEx ? voltagepower : g_mmi_voltageEx;
} else {
cur_power = voltagepower;
@@ -236,8 +263,13 @@
if (chg_sta == STATE_CHARGING) {
s_mmi_charge_state = STATE_CHARGING;
mmi_set_webUI_batterycharge(WEBUICHARGING, FALSE);
- g_mmi_voltageEx = 0;
+ //g_mmi_voltageEx = 0;
mmi_set_mode_fast_poweron(TRUE);
+
+ power = mmi_voltage_state_read();
+ if (power > 0 && power < INT_MAX) {//kw 3
+ mmi_battery_capacity_compare(power);
+ }
} else if (chg_sta == STATE_FULL) {
s_mmi_charge_state = STATE_FULL;
g_mmi_voltageEx = 0;
@@ -349,6 +381,32 @@
}
return NULL;
}
+static void update_charge_state_only(void)
+{
+ E_zMmi_Charge_State chg_sta = STATE_CHARGE_MAX;
+ chg_sta = mmi_get_charge_status();
+ slog(MMI_PRINT, SLOG_DEBUG, "ZTE_MMI update_charge_state_only chg_sta = %d!!\n", chg_sta);
+ s_mmi_charge_stateEx = STATE_CHARGE_MAX;
+ s_mmi_poweroff_voltage_num = 0;
+ if (chg_sta == STATE_CHARGING) {
+ s_mmi_charge_state = STATE_CHARGING;
+ mmi_set_webUI_batterycharge(WEBUICHARGING, FALSE);
+ } else if (chg_sta == STATE_FULL) {
+ s_mmi_charge_state = STATE_FULL;
+ g_mmi_voltageEx = 0;
+ mmi_set_webUI_batterycharge(WEBUIUNCHARGING, TRUE);
+ } else if (chg_sta == STATE_DISCHARGE) {
+ s_mmi_charge_state = STATE_DISCHARGE;
+ mmi_set_webUI_batterycharge(WEBUIUNCHARGING, FALSE);
+ } else if (chg_sta == STATE_CHARGERROR) {
+ s_mmi_charge_state = STATE_DISCHARGE;
+ mmi_set_webUI_batterycharge(WEBUIUNCHARGING, FALSE);
+ } else {
+ slog(MMI_PRINT, SLOG_ERR, "ZTE_MMI mmi_set_battery_info invalid charge state!! power=%d\n");
+ }
+
+ mmi_set_battery_update();
+}
/**********************************************************************************
*º¯Êý˵Ã÷£º´Ónetlink¼àÌýµ½µÄÏûÏ¢×Ö·û´®´¦Àí³äµçÏûÏ¢
@@ -399,6 +457,36 @@
}
}
}
+ else if ((subsys != NULL) && (action != NULL)) {
+ if ((!strcmp(subsys, "dwc_usb")) && (!(strcmp(action, "remove")))) {
+ //mmi_reset_idle_timer();
+ //mmi_set_battery_info();
+ system(MMI_TURN_OFF_CHG);
+ system(MMI_TURN_OFF_DISCHG);
+ update_charge_state_only();
+ slog(MMI_PRINT, SLOG_DEBUG, "ZTE_MMI process_netlink_event remove %d\n",s_mmi_voltage_level);
+ //if (s_mmi_voltage_level > VOLT_20PERCENTLEVEL)
+ //system(USB_SET_ROLE_DEF_SRC);
+ //else
+ //system(USB_SET_ROLE_DEF_SNK);
+ }
+ else if ((!strcmp(subsys, "dwc_usb")) && (!(strcmp(action, "add")))) {
+ //mmi_reset_idle_timer();
+ //mmi_set_battery_info();
+ update_charge_state_only();
+ slog(MMI_PRINT, SLOG_DEBUG, "ZTE_MMI process_netlink_event add %d\n",s_mmi_voltage_level);
+ /*
+ if (system(USB_TYPE_AC_PC_CHECK) == 1) {
+ if (s_mmi_voltage_level <= VOLT_50PERCENTLEVEL)
+ system(MMI_TURN_OFF_DISCHG);
+ if (s_mmi_voltage_level <= VOLT_20PERCENTLEVEL)
+ system(USB_SET_ROLE_DEF_SNK);
+ else if (s_mmi_voltage_level > VOLT_50PERCENTLEVEL)
+ system(USB_SET_ROLE_DEF_SRC);
+ }*/
+
+ }
+ }
}
int battery_app_msg_parse(const char *msg, int msglen, struct hotplug_event *event)
@@ -440,6 +528,35 @@
}
}
}
+ else if ((subsys != NULL) && (action != NULL)) {
+ if ((!strcmp(subsys, "dwc_usb")) && (!(strcmp(action, "remove")))) {
+ //mmi_reset_idle_timer();
+ //mmi_set_battery_info();
+ system(MMI_TURN_OFF_CHG);
+ system(MMI_TURN_OFF_DISCHG);
+ update_charge_state_only();
+ slog(MMI_PRINT, SLOG_DEBUG, "ZTE_MMI process_netlink_event2 remove %d\n",s_mmi_voltage_level);
+
+ //if (s_mmi_voltage_level > VOLT_20PERCENTLEVEL)
+ system(USB_SET_ROLE_DEF_SRC);
+ //else
+ //system(USB_SET_ROLE_DEF_SNK);
+ }
+ else if ((!strcmp(subsys, "dwc_usb")) && (!(strcmp(action, "add")))) {
+ //mmi_reset_idle_timer();
+ //mmi_set_battery_info();
+ update_charge_state_only();
+ slog(MMI_PRINT, SLOG_DEBUG, "ZTE_MMI process_netlink_event2 add %d\n",s_mmi_voltage_level);
+ /*
+ if (s_mmi_voltage_level <= VOLT_50PERCENTLEVEL)
+ system(MMI_TURN_OFF_DISCHG);
+ if (s_mmi_voltage_level < VOLT_20PERCENTLEVEL)
+ system(USB_SET_ROLE_DEF_SNK);
+ else if (s_mmi_voltage_level > VOLT_50PERCENTLEVEL)
+ system(USB_SET_ROLE_DEF_SRC);*/
+
+ }
+ }
return -1;
}
@@ -462,7 +579,7 @@
mmi_set_battery_update();
}
} else {
- if (mmi_get_charge_state() == STATE_DISCHARGE) {
+ if (mmi_get_charge_state() == STATE_DISCHARGE || mmi_get_charge_state() == STATE_CHARGING) {
voltagepower = mmi_voltage_state_read();
if (voltagepower > 0 && voltagepower < INT_MAX) {//kw 3
mmi_battery_capacity_compare(voltagepower);
diff --git a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_battery_adapter.c b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_battery_adapter.c
index 88f71ee..d13c65b 100755
--- a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_battery_adapter.c
+++ b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_battery_adapter.c
@@ -52,10 +52,25 @@
SINT32 mmi_voltage_state_read(VOID)
{
char buf_volt[CHARGE_VOLTAGE_LENGTH] = {0};
+ char buf_online[8] = {0};
FILE* fd_voltage = NULL;
+ FILE* fd_bat = NULL;
int len = 0;
int voltagepower = 0;
+ fd_bat = fopen(CHARGE_BAT_STATUS_PATH, "r");
+ if (fd_bat == NULL) {
+ slog(MMI_PRINT, SLOG_ERR, "ZTE_MMI open bat status file fail!\n");
+ cfg_set(WEBUIBATTERYLEVEL, WEBUINOBATTERY);
+ return -1;
+ }
+ len = fread(buf_online, 1, 1, fd_bat);
+ if (len < 0 || atoi(buf_online) != 1 ) {
+ cfg_set(WEBUIBATTERYLEVEL, WEBUINOBATTERY);
+ fclose(fd_bat);
+ return -1;
+ }
+ fclose(fd_bat);
fd_voltage = fopen(CHARGE_VOLTAGE_PATH, "r");
if (fd_voltage == NULL) {
slog(MMI_PRINT, SLOG_ERR, "ZTE_MMI open voltage file fail!\n");
diff --git a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_cfg.c b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_cfg.c
index c2bd235..e220464 100755
--- a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_cfg.c
+++ b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_cfg.c
@@ -38,7 +38,7 @@
};
T_zMmiBatteryLedConfig g_mmi_batled_config_tab[] = {
- {{STATE_CHARGING, 0, 0, 0}, {LED_BATTERY, LED_STATE_ON, LED_STATE_BAT_BLINK, {0}, LED_COLOR_RED, TRAFFIC_LED_MAX}},
+ {{STATE_CHARGING, 0, 0, 0}, {LED_BATTERY, LED_STATE_BLINK, LED_STATE_BAT_BLINK, {0}, LED_COLOR_RED, TRAFFIC_LED_MAX}},
{{STATE_FULL, 0, 0, 0}, {LED_BATTERY, LED_STATE_ON, LED_STATE_BAT_BLINK, {0}, LED_COLOR_GREEN, TRAFFIC_LED_MAX}},
{{STATE_DISCHARGE, VOLT_5PERCENTLEVEL, 0, 0}, {LED_BATTERY, LED_STATE_ON, LED_STATE_BAT_BLINK, {0}, LED_COLOR_RED, TRAFFIC_LED_MAX}},
{{STATE_DISCHARGE, VOLT_10PERCENTLEVEL, 0, 0}, {LED_BATTERY, LED_STATE_ON, LED_STATE_BAT_BLINK, {0}, LED_COLOR_RED, TRAFFIC_LED_MAX}},
diff --git a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_cfg.h b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_cfg.h
index 1bb23bb..1a28572 100644
--- a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_cfg.h
+++ b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_cfg.h
@@ -140,6 +140,11 @@
#define LED_BATTERY_GREEN_BLINKTIMEON "/sys/class/leds/battery_g_led/delay_on"
#define LED_BATTERY_GREEN_BLINKTIMEOFF "/sys/class/leds/battery_g_led/delay_off"
+#define LED_BATTERY_BLUE_BRIGHTNESS "/sys/class/leds/battery_b_led/brightness"
+#define LED_BATTERY_BLUE_BLINKSWITCH "/sys/class/leds/battery_b_led/trigger"
+#define LED_BATTERY_BLUE_BLINKTIMEON "/sys/class/leds/battery_b_led/delay_on"
+#define LED_BATTERY_BLUE_BLINKTIMEOFF "/sys/class/leds/battery_b_led/delay_off"
+
#define LED_BATTERY_RED_BRIGHTNESS "/sys/class/leds/battery_r_led/brightness"
#define LED_BATTERY_RED_BLINKSWITCH "/sys/class/leds/battery_r_led/trigger"
#define LED_BATTERY_RED_BLINKTIMEON "/sys/class/leds/battery_r_led/delay_on"
diff --git a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_common.h b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_common.h
index 27d7e75..f432e84 100644
--- a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_common.h
+++ b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_common.h
@@ -125,6 +125,7 @@
#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 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"
@@ -139,6 +140,12 @@
#define MMI_DISCHG_LOW_CURRENT "echo 5 > /sys/class/power_supply/boost/current_now"
#define MMI_DISCHG_HIGH_CURRENT "echo 15 > /sys/class/power_supply/boost/current_now"
+#define USB_SET_ROLE_DEF_SRC "echo 4 > /sys/class/tcpc/type_c_port0/role_def"
+#define USB_SET_ROLE_DEF_SNK "echo 5 > /sys/class/tcpc/type_c_port0/role_def"
+
+#define USB_TYPE_AC_PC_CHECK "cat /sys/class/power_supply/charger/pc1_ac2 | grep PC"
+#define USB_PE_READY_CHECK "cat /sys/class/tcpc/type_c_port0/pe_ready | grep yes"
+
#define CHARGE_STATUS_CHARGING "Charging"
#define CHARGE_STATUS_FULL "Full"
#define CHARGE_STATUS_NOTCHARGING "Not charging"
@@ -840,6 +847,8 @@
KEY_STATUS_UP, /*°´¼üËÉ¿ª*/
KEY_STATUS_DOWN, /*°´¼ü°´ÏÂ*/
KEY_STATUS_LONGPRESS, /*°´¼ü³¤°´*/
+ KEY_STATUS_POWER_DOUBLE,
+ KEY_STATUS_WPS_DOUBLE,
} KEY_STATUS;
typedef enum {
@@ -1095,6 +1104,8 @@
VOID mmi_reset_idle_timer(VOID);
+VOID mmi_close_lcd_led_timer(VOID);
+
/**
* <mmi_reset_idle_timer>
*¿ìËÙ¿ª¹Ø»úʱʡµçÏà¹Ø¶¨Ê±Æ÷ÖØÖÃ
diff --git a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_ctrl.c b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_ctrl.c
index b210be3..a45c04b 100755
--- a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_ctrl.c
+++ b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_ctrl.c
@@ -269,6 +269,21 @@
mmi_idle_timer_create();
}
+static VOID mmi_close_lcd_led_timer_create(VOID)
+{
+ int ret = -1;
+ ret = CreateSoftTimer(SET_MMI_IDLE_TIMER, TIMER_FLAG_ONCE, 1, &mmi_idle_timer_cb, NULL);
+ if (ret != 0) {
+ slog(MMI_PRINT, SLOG_ERR, "ZTE_MMI mmi_idle_timer_create FAILED !!");
+ }
+}
+
+VOID mmi_close_lcd_led_timer(VOID)
+{
+ mmi_idle_timer_stop();
+ mmi_close_lcd_led_timer_create();
+}
+
/**********************************************************************************
º¯Êý×÷ÓÃ:¿ìËٹػúʱÈôÓа´¼ü²Ù×÷£¬MMIÊ¡µçʱµÄÏà¹Ø¶¨Ê±Æ÷reset£¬°´¼üʱµ÷ÓÃ
***********************************************************************************/
diff --git a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_keystrokes.c b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_keystrokes.c
index 1bb015c..47db4dd 100644
--- a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_keystrokes.c
+++ b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_keystrokes.c
@@ -49,6 +49,14 @@
return second;
}
+static long long s_mmi_power_key_last_press_time_ms = 0;
+static long long s_mmi_wps_key_last_press_time_ms = 0;
+static long long get_current_time_ms()
+{
+ struct timespec ts;
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+ return (long long)ts.tv_sec * 1000 + (long long)ts.tv_nsec / 1000000;
+}
/************************************************************************************
º¯Êý×÷ÓÃ:¶ÁÈ¡°´¼üÐÅÏ¢
@@ -78,6 +86,28 @@
g_mmi_wifi_longpress_time = 1;
}
}
+ if (kp_event.code == KEY_POWER_CODE)
+ {
+ long long current_time_ms = get_current_time_ms();
+ slog(MMI_PRINT, SLOG_DEBUG, "ZTE_MMI power key !\n");
+ if (s_mmi_power_key_last_press_time_ms != 0 && (current_time_ms - s_mmi_power_key_last_press_time_ms) <= 1000)
+ {
+ kp_info->status = KEY_STATUS_POWER_DOUBLE;
+ slog(MMI_PRINT, SLOG_DEBUG, "ZTE_MMI mmi_get_keystrokes_data double power key !\n");
+ }
+ s_mmi_power_key_last_press_time_ms = current_time_ms;
+ }
+ else if (kp_event.code == KEY_WPS_CODE)
+ {
+ long long current_time_ms = get_current_time_ms();
+ slog(MMI_PRINT, SLOG_DEBUG, "ZTE_MMI wps key !\n");
+ if (s_mmi_wps_key_last_press_time_ms != 0 && (current_time_ms - s_mmi_wps_key_last_press_time_ms) <= 1000)
+ {
+ kp_info->status = KEY_STATUS_WPS_DOUBLE;
+ slog(MMI_PRINT, SLOG_DEBUG, "ZTE_MMI mmi_get_keystrokes_data double wps key !\n");
+ }
+ s_mmi_wps_key_last_press_time_ms = current_time_ms;
+ }
} else if (kp_event.value == 0) {
kp_info->status = KEY_STATUS_UP;
s_mmi_keypress_begin = 0;
@@ -230,6 +260,21 @@
}
}
+static VOID mmi_handle_power_key_double_click()
+{
+ slog(MMI_PRINT, SLOG_DEBUG, "mmi_handle_keystrokes_thread , power double key!!\n ");
+
+ return;
+}
+
+static VOID mmi_handle_wps_key_double_click()
+{
+ slog(MMI_PRINT, SLOG_DEBUG, "mmi_handle_keystrokes_thread , WPS double key!!\n ");
+
+ return;
+}
+
+
/***********************************************************************************
º¯Êý×÷ÓÃ:up°´¼üÏûÏ¢´¦Àí
***********************************************************************************/
@@ -331,6 +376,10 @@
{
buttonStr = "+BUTTON: RESET\r\n";
}
+ else if (keyData->type == KEY_TYPE_POWER)
+ {
+ buttonStr = "+BUTTON: POWER\r\n";
+ }
else
return;
@@ -375,6 +424,14 @@
mmi_handle_keystroke_longpress(keyData.type);
break;
}
+ case KEY_STATUS_POWER_DOUBLE: {
+ mmi_handle_power_key_double_click();
+ break;
+ }
+ case KEY_STATUS_WPS_DOUBLE: {
+ mmi_handle_wps_key_double_click();
+ break;
+ }
default: {
break;
}
diff --git a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_led.c b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_led.c
index 7b7e99b..7b0792d 100644
--- a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_led.c
+++ b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_led.c
@@ -361,19 +361,40 @@
T_zMmi_Led_Info* pLedInfo = (T_zMmi_Led_Info*)outLedInfo;
T_zMMIBatteryInfo *pBatteryInfo = (T_zMMIBatteryInfo *)taskInfo;
UINT32 i = 0;
+ int charging_idx = -1;
slog(MMI_PRINT, SLOG_DEBUG, "ZTE_MMI mmi_getLedBatteryInfo chg_sta=%d\n", pBatteryInfo->chg_state);
for (i = 0; i < (UINT32)mmi_get_config_tab_size(LED_BATTERY) / sizeof(T_zMmiBatteryLedConfig); ++ i) {
- if (pBatteryInfo->chg_state == g_mmi_batled_config_tab[i].bat_info.chg_state) {
- if (pBatteryInfo->chg_state == STATE_DISCHARGE) {
- if (pBatteryInfo->bat_level == g_mmi_batled_config_tab[i].bat_info.bat_level) {
+ if (STATE_DISCHARGE == g_mmi_batled_config_tab[i].bat_info.chg_state) {
+ if (pBatteryInfo->bat_level == g_mmi_batled_config_tab[i].bat_info.bat_level) {
+ if (pBatteryInfo->chg_state == STATE_DISCHARGE) {
mmi_setLedShowInfo(pLedInfo, g_mmi_batled_config_tab[i].led_info);
return MMI_SUCCESS;
}
- } else {
- mmi_setLedShowInfo(pLedInfo, g_mmi_batled_config_tab[i].led_info);
- return MMI_SUCCESS;
- }
+ else
+ {
+ if (charging_idx != -1 && STATE_CHARGING == pBatteryInfo->chg_state)
+ {
+ g_mmi_batled_config_tab[charging_idx].led_info.led_color = g_mmi_batled_config_tab[i].led_info.led_color;
+ mmi_setLedShowInfo(pLedInfo, g_mmi_batled_config_tab[charging_idx].led_info);
+ return MMI_SUCCESS;
+ }
+ break;
+ }
+ }
}
+ else if (STATE_CHARGING == g_mmi_batled_config_tab[i].bat_info.chg_state)
+ {
+ charging_idx = i;
+ }
+ else if (pBatteryInfo->chg_state == g_mmi_batled_config_tab[i].bat_info.chg_state ) {
+ mmi_setLedShowInfo(pLedInfo, g_mmi_batled_config_tab[i].led_info);
+ return MMI_SUCCESS;
+ }
+ }
+ if ( charging_idx != -1 && STATE_CHARGING == pBatteryInfo->chg_state )
+ {
+ mmi_setLedShowInfo(pLedInfo, g_mmi_batled_config_tab[charging_idx].led_info);
+ return MMI_SUCCESS;
}
return MMI_ERROR;
}
diff --git a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_led_adapter.c b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_led_adapter.c
index 3411f31..412df2a 100644
--- a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_led_adapter.c
+++ b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_led_adapter.c
@@ -188,6 +188,8 @@
slog(MMI_PRINT, SLOG_DEBUG, "ZTE_MMI mmi_BatLedOffOpt !\n");
mmi_led_opt_blinkoff(LED_BATTERY_GREEN_BLINKSWITCH);
mmi_led_opt_off(LED_BATTERY_GREEN_BRIGHTNESS);
+ mmi_led_opt_blinkoff(LED_BATTERY_BLUE_BLINKSWITCH);
+ mmi_led_opt_off(LED_BATTERY_BLUE_BRIGHTNESS);
mmi_led_opt_blinkoff(LED_BATTERY_RED_BLINKSWITCH);
mmi_led_opt_off(LED_BATTERY_RED_BRIGHTNESS);
mmi_setBatLedState(LED_ALL_OFF);
@@ -215,6 +217,24 @@
mmi_led_opt_on(LED_BATTERY_GREEN_BRIGHTNESS);
}
+
+static VOID mmi_BatLedBlueOn()
+{
+ mmi_led_opt_on(LED_BATTERY_BLUE_BRIGHTNESS);
+}
+
+static VOID mmi_BatLedBlueBlink(T_zMmi_Led_Blink_Time time)
+{
+ T_zMmi_LedBlink_Info info = {0};
+ info.fileblinkSwitch = LED_BATTERY_BLUE_BLINKSWITCH;
+ info.fileblinktimeoff = LED_BATTERY_BLUE_BLINKTIMEOFF;
+ info.fileblinktimeon = LED_BATTERY_BLUE_BLINKTIMEON;
+ info.timeon = (char *)time.uBlinkOnTime;
+ info.timoff = (char *)time.uBlinkOffTime;
+ mmi_led_opt_on(LED_BATTERY_BLUE_BRIGHTNESS);
+ mmi_led_opt_blinkon(&info);
+}
+
static VOID mmi_BatLedGreenBlink(T_zMmi_Led_Blink_Time time)
{
T_zMmi_LedBlink_Info info = {0};
@@ -272,16 +292,12 @@
mmi_BatLedGreenOn();
}
mmi_setBatLedState(LED_GREEN_ON);
- } else if (color == LED_COLOR_YELLOW) {
- if (bat_sta == LED_YELLOW_ON) {
+ } else if (color == LED_COLOR_BLUE) {
+ if (bat_sta == LED_BLUE_ON) {
return;
- } else if (bat_sta == LED_GREEN_ON) {
- mmi_BatLedRedOn();
- } else if (bat_sta == LED_RED_ON) {
- mmi_BatLedGreenOn();
} else {
mmi_BatLedOffOpt();
- mmi_BatLedYellowOn();
+ mmi_BatLedBlueOn();
}
mmi_setBatLedState(LED_YELLOW_ON);
} else {
@@ -309,14 +325,14 @@
mmi_BatLedGreenBlink(time);
}
mmi_setBatLedState(LED_GREEN_BLINK);
- } else if (color == LED_COLOR_YELLOW) {
- if (bat_sta == LED_YELLOW_BLINK) {
+ } else if (color == LED_COLOR_BLUE) {
+ if (bat_sta == LED_BLUE_BLINK) {
return;
} else {
mmi_BatLedOffOpt();
- mmi_BatLedYellowBlink(time);
+ mmi_BatLedBlueBlink(time);
}
- mmi_setBatLedState(LED_YELLOW_BLINK);
+ mmi_setBatLedState(LED_BLUE_BLINK);
} else {
slog(MMI_PRINT, SLOG_ERR, "ZTE_MMI mmi_BatLedFastBlinkOpt invalid led color!\n");
}
diff --git a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_wifi.c b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_wifi.c
index 7f26c30..73a0bee 100755
--- a/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_wifi.c
+++ b/lynq/R305/ap/app/zte_comm/zte_mmi/mmi_wifi.c
@@ -274,8 +274,13 @@
slog(MMI_PRINT, SLOG_NORMAL, "ZTE_MMI handle_wifi_opt mode close wifi\n");
ipc_send_message(MODULE_ID_MMI, MODULE_ID_WIFI, (USHORT)MSG_CMD_WIFI_CLOSE, NULL, NULL, 0); //ÏòWIFI·¢Ë͹رÕÏûÏ¢
} else if (strcmp(wifi_mode, WIFI_CLOSED) == 0) {
- slog(MMI_PRINT, SLOG_NORMAL, "ZTE_MMI handle_wifi_opt mode open wifi\n");
- ipc_send_message(MODULE_ID_MMI, MODULE_ID_WIFI, (USHORT)MSG_CMD_WIFI_OPEN, NULL, NULL, 0); //ÏòWIFI·¢ËÍ»½ÐÑÏûÏ¢
+ char wifi_switch[16] = {0};
+ cfg_get_item("wifi_switch_status", wifi_switch, 16);
+ if (strcmp("web_close", wifi_switch)) // web close, no need to wake
+ {
+ slog(MMI_PRINT, SLOG_NORMAL, "ZTE_MMI handle_wifi_opt mode open wifi\n");
+ ipc_send_message(MODULE_ID_MMI, MODULE_ID_WIFI, (USHORT)MSG_CMD_WIFI_OPEN, NULL, NULL, 0); //ÏòWIFI·¢ËÍ»½ÐÑÏûÏ¢
+ }
}
}
}
diff --git a/lynq/R305/ap/app/zte_webui/css/com.css b/lynq/R305/ap/app/zte_webui/css/com.css
index 9ac8585..44c91a4 100755
--- a/lynq/R305/ap/app/zte_webui/css/com.css
+++ b/lynq/R305/ap/app/zte_webui/css/com.css
@@ -1869,7 +1869,7 @@
.traffic_control_container{
float:left;
width: 280px;
- height: 280px;
+ height: 305px;
margin-left:45px;
border-radius:10px;
color:#fff;
@@ -1885,7 +1885,7 @@
.device_info_container{
float:left;
width: 580px;
- height: 280px;
+ height: 305px;
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 */
diff --git a/lynq/R305/ap/app/zte_webui/i18n/Messages_en.properties b/lynq/R305/ap/app/zte_webui/i18n/Messages_en.properties
index b8cfab8..d3f463f 100755
--- a/lynq/R305/ap/app/zte_webui/i18n/Messages_en.properties
+++ b/lynq/R305/ap/app/zte_webui/i18n/Messages_en.properties
@@ -446,6 +446,14 @@
dial_roaming_remind = Check here, you can connect to internet in the roaming status.
dial_roaming_connect = Your device is roaming. Connecting to network may occur additional charges. Continue?
+#net_status
+net_info = Network Status
+pci = PCI
+rsrp = RSRP
+rsrq = RSRQ
+plmn = PLMN
+band = BAND
+
#phonebook
search = Search
save_location = Save Location
@@ -846,6 +854,7 @@
hardware_version = Hardware Version
imei = IMEI
imsi = IMSI
+iccid = ICCID
wan_ip_address = WAN IP Address
ipv6_wan_ip_address = WAN IPv6 Address
network_name_ssid1 = Network Name (Main SSID)
@@ -1096,6 +1105,7 @@
ota_check_fail = Check new version failed!
fota_package_already_download = Upgrade package has been downloaded,after waiting for equipment to restart to complete.
software_upload = Software Upload
+local_upload = Local Upgrade
upload_update_success = The upgrade file upload successful and will be about to restart,do not power off.
upload_update_failed0 = parse file failed.
upload_update_failed1 = verify file failed.
@@ -1423,6 +1433,10 @@
upgrade_pack_fix_success = Upgrade success!
upgrade_pack_fix_failed = Upgrade failed!
have_new_version = New version is found,the device will update.
+upload_file = File upload in progress!
+update_status_error = Fail to read the update status file, unable to update!
+verify_error = Verification upgrade file failed, unable to update!
+start_update = The upgrade file has been successfully verified and is currently being upgraded. Please do not power off, restore factory settings, or shut down the device!
######key same value different###########
dmz_note_info = If a terminal device can''t run network applications via this device, please enter IP address of the terminal device in the entry box when DMZ is enabled.
@@ -1450,7 +1464,7 @@
local_note = You can choose the upgrade file on the local computer, upgrade the device software to the selected version, complete the system repair and optimization.
#new word
-modify_password = Modify Login Password
+modify_password = Login Setting
#parental control
parental_control = Parental Control
@@ -1625,6 +1639,7 @@
band_40 = Band 40
band_info = Band Settings
cell_id = Current registration Cell
+cellid = CELLID
lock_apply = Lock
unlock_apply= Unlock
sinr = SINR
diff --git a/lynq/R305/ap/app/zte_webui/i18n/Messages_zh-cn.properties b/lynq/R305/ap/app/zte_webui/i18n/Messages_zh-cn.properties
index de65817..a6d4abe 100755
--- a/lynq/R305/ap/app/zte_webui/i18n/Messages_zh-cn.properties
+++ b/lynq/R305/ap/app/zte_webui/i18n/Messages_zh-cn.properties
@@ -448,6 +448,14 @@
dial_roaming_remind = 勾选此项,您可以在漫游状态下连接到网络,且可能会产生额外费用。
dial_roaming_connect = 设备处于漫游状态,连接网络会使您的资费增加。确定继续?
+#net_status
+net_info = 网络状态
+pci = PCI
+rsrp = RSRP
+rsrq = RSRQ
+plmn = PLMN
+band = BAND
+
#phonebook
search = 搜索
save_location = 存储位置
@@ -848,6 +856,7 @@
hardware_version = 硬件版本
imei = IMEI
imsi = IMSI
+iccid = ICCID
wan_ip_address = WAN IP 地址
ipv6_wan_ip_address = WAN IPv6 地址
network_name_ssid1 = 网络名称 (主SSID)
@@ -1098,6 +1107,7 @@
ota_check_fail = 检测新版本失败!
fota_package_already_download = 升级包已下载,待设备重启后完成升级
software_upload = 软件升级
+local_upload = 本地升级
upload_update_success = 升级文件上传成功,即将重启,请勿断电。
upload_update_failed0 = 文件解析失败。
upload_update_failed1 = 文件校验失败。
@@ -1429,6 +1439,11 @@
upgrade_pack_fix_success = 升级成功!
upgrade_pack_fix_failed = 升级失败!
have_new_version = 发现新版本,设备将升级。
+upload_file = 文件上传中!
+update_status_error = 获取更新状态文件失败,无法升级!
+verify_error = 校验文件失败,无法升级!
+start_update = 校验升级文件成功,正在升级中,请不要断电、恢复出厂设置或关机!
+
######key same value different###########
dmz_note_info = 如果终端设备无法通过该设备运行网络应用程序,请启用 DMZ,在输入框输入该终端设备的 IP 地址。
dlna_note_info = DLNA: 数字生活网络联盟。
@@ -1455,7 +1470,7 @@
local_note = 您可以选择本地电脑中的升级文件,将设备软件升级到选中的版本,完成系统修复和优化。
#new word
-modify_password = 修改登录密码
+modify_password = 登录设置
#家长控制
parental_control = 家长控制
@@ -1630,6 +1645,7 @@
band_40 = 频段 40
band_info = 频段设置
cell_id = 当前注册的小区
+cellid = CELLID
lock_apply = 加锁
unlock_apply= 解锁
band_cell_settings = 频段小区设置
diff --git a/lynq/R305/ap/app/zte_webui/index.html b/lynq/R305/ap/app/zte_webui/index.html
index 214d453..f64166a 100755
--- a/lynq/R305/ap/app/zte_webui/index.html
+++ b/lynq/R305/ap/app/zte_webui/index.html
@@ -25,7 +25,7 @@
<div class="container" id="topContainer">
<div id="langLogoBar" class="row">
<div class="col-xs-4">
- <a href="index.html">
+ <a href="index.html" style="display: none;">
<script type="text/javascript">
document.write("<img src='pic/res_logo_web.png?random=" + Math.random() + "' />");
</script>
diff --git a/lynq/R305/ap/app/zte_webui/js/com.js b/lynq/R305/ap/app/zte_webui/js/com.js
index 203ce25..6a48672 100755
--- a/lynq/R305/ap/app/zte_webui/js/com.js
+++ b/lynq/R305/ap/app/zte_webui/js/com.js
@@ -497,6 +497,25 @@
}
}
}
+ function getNetworkStatus() {
+ return stuffMake(arguments, {}, prepare, deal, null, false);
+ function prepare(values, isPost) {
+ var valueReq = {};
+ valueReq.cmd = "NETWORK_INFO";
+ return valueReq;
+ }
+ function deal(result) {
+ return {
+ sinr: result.lte_sinr,
+ rsrp: result.lte_rsrp,
+ rsrq: result.lte_rsrq,
+ plmn: result.lte_plmn,
+ pci: result.lte_pci,
+ cellid: result.lte_cellid,
+ band: result.lte_band
+ };
+ }
+ }
function deleteApn() {
return stuffMake(arguments, {}, prepare, deal, null, true);
function prepare(values, isPost) {
@@ -2888,7 +2907,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,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,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",
multi_data: 1
};
return valueReq;
@@ -2915,6 +2934,8 @@
imei: paramD.imei,
signal: convertSignal(paramD),
imsi: paramD.imsi || paramD.sim_imsi,
+ iccid: paramD.ziccid,
+ cellid: paramD.cell_id,
sw_version: paramD.cr_version,
hw_version: paramD.hw_version,
max_access_num: paramD.MAX_Access_num,
@@ -5441,6 +5462,7 @@
getLanInfo: getLanInfo,
setLanInfo: setLanInfo,
getApnSettings: getApnSettings,
+ getNetworkStatus: getNetworkStatus,
deleteApn: deleteApn,
setDefaultApn: setDefaultApn,
addOrEditApn: addOrEditApn,
@@ -7764,6 +7786,7 @@
target.hasRj45 = set.RJ45_SUPPORT;
target.notDataCard = set.PRODUCT_TYPE != 'DATACARD';
target.hasParentalControl = set.HAS_PARENTAL_CONTROL;
+ target.hasUssd = set.HAS_USSD;
var wifiInfo = fnc.getWifiBasic();
if (set.WIFI_SUPPORT_QR_SWITCH) {
target.showQRCode = set.WIFI_SUPPORT_QR_CODE && wifiInfo.show_qrcode_flag;
@@ -7813,6 +7836,8 @@
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");
@@ -7849,6 +7874,8 @@
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;
@@ -7863,6 +7890,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),
hasWifi: set.HAS_WIFI,
isCPE: set.PRODUCT_TYPE == 'CPE',
diff --git a/lynq/R305/ap/app/zte_webui/js/ext/menu.js b/lynq/R305/ap/app/zte_webui/js/ext/menu.js
index 6277652..dc3a4e4 100755
--- a/lynq/R305/ap/app/zte_webui/js/ext/menu.js
+++ b/lynq/R305/ap/app/zte_webui/js/ext/menu.js
@@ -145,8 +145,14 @@
parent: '#network_set',
requireLogin: needLogin,
checkSIMStatus: true
- },
- {
+ }, {
+ hash: '#net_status',
+ path: 'network_info',
+ level: '3',
+ parent: '#network_set',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
hash: '#wlan_station',
path: 'wifi_ap_station',
level: '2',
@@ -218,8 +224,7 @@
}, {
hash: '#usat',
path: 'ussd',
- level: '2',
- parent: '#normal_set',
+ level: '1',
requireLogin: needLogin,
checkSIMStatus: false
}, {
diff --git a/lynq/R305/ap/app/zte_webui/js/ext/menu_pppoe.js b/lynq/R305/ap/app/zte_webui/js/ext/menu_pppoe.js
index a1bf328..52fddf8 100755
--- a/lynq/R305/ap/app/zte_webui/js/ext/menu_pppoe.js
+++ b/lynq/R305/ap/app/zte_webui/js/ext/menu_pppoe.js
@@ -145,8 +145,14 @@
parent: '#network_set',
requireLogin: needLogin,
checkSIMStatus: true
- },
- {
+ }, {
+ hash: '#net_status',
+ path: 'network_info',
+ level: '3',
+ parent: '#network_set',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
hash: '#wlan_station',
path: 'wifi_ap_station',
level: '2',
@@ -218,8 +224,7 @@
}, {
hash: '#usat',
path: 'ussd',
- level: '2',
- parent: '#normal_set',
+ level: '1',
requireLogin: needLogin,
checkSIMStatus: false
}, {
diff --git a/lynq/R305/ap/app/zte_webui/js/ext/set_aic8800.js b/lynq/R305/ap/app/zte_webui/js/ext/set_aic8800.js
index 8ae55e7..8aec80b 100755
--- a/lynq/R305/ap/app/zte_webui/js/ext/set_aic8800.js
+++ b/lynq/R305/ap/app/zte_webui/js/ext/set_aic8800.js
@@ -17,10 +17,10 @@
name : '802.11 b/g/n/ax',
value : '6'
} ],
- WIFI_SUPPORT_QR_CODE: false,
- HAS_PHONEBOOK: true,
+ WIFI_SUPPORT_QR_CODE: true,
+ HAS_PHONEBOOK: false,
HAS_BATTERY: true, //ÊÇ·ñÓÐµç³Ø
- FAST_BOOT_SUPPORT: true, //ÊÇ·ñÖ§³Ö¿ìËÙ¿ª»ú
+ FAST_BOOT_SUPPORT: false, //ÊÇ·ñÖ§³Ö¿ìËÙ¿ª»ú
TURN_OFF_SUPPORT: true, //ÊÇ·ñÖ§³Ö¹Ø»ú
WIFI_SLEEP_SUPPORT: true, // ÊÇ·ñÖ§³ÖwifiÐÝÃß
HAS_USSD: false, // ÊÇ·ñÖ§³ÖUSSD
diff --git a/lynq/R305/ap/app/zte_webui/js/main.js b/lynq/R305/ap/app/zte_webui/js/main.js
index a771f7d..09fc299 100755
--- a/lynq/R305/ap/app/zte_webui/js/main.js
+++ b/lynq/R305/ap/app/zte_webui/js/main.js
@@ -56,6 +56,7 @@
network_apn_set: 'net',
network_dial_set: 'net',
network_dial_set_cpe: 'net',
+ network_info: 'net',
locknet: 'net',
network_net_select: 'net',
ddns: 'net',
diff --git a/lynq/R305/ap/app/zte_webui/js/net.js b/lynq/R305/ap/app/zte_webui/js/net.js
index ffaa342..ce0f5c3 100755
--- a/lynq/R305/ap/app/zte_webui/js/net.js
+++ b/lynq/R305/ap/app/zte_webui/js/net.js
@@ -2390,6 +2390,7 @@
target.hasSms = config.HAS_SMS;
target.hasPhonebook = config.HAS_PHONEBOOK;
target.isSupportSD = config.SD_CARD_SUPPORT;
+ target.hasUssd = config.HAS_USSD;
if (config.WIFI_SUPPORT_QR_SWITCH == false) {
target.showQRCode = config.WIFI_SUPPORT_QR_CODE;
} else {
@@ -4232,4 +4233,31 @@
return {
init: initialize
};
-});
\ No newline at end of file
+});
+define("network_info","underscore jquery knockout set service".split(" "),
+ function (_, $, ko, config, service) {
+
+ function NetInfoVM() {
+ var target = this;
+ var network_status = service.getNetworkStatus();
+
+ target.pci = ko.observable(network_status.pci);
+ target.sinr = ko.observable(network_status.sinr);
+ target.rsrp = ko.observable(network_status.rsrp);
+ target.rsrq = ko.observable(network_status.rsrq);
+ target.plmn = ko.observable(network_status.plmn);
+ target.cellid = ko.observable(network_status.cellid);
+ target.band = ko.observable(network_status.band);
+ }
+
+ function initialize() {
+ var container = $('#container');
+ ko.cleanNode(container[0]);
+ var imVm = new NetInfoVM();
+ ko.applyBindings(imVm, container[0]);
+ }
+
+ return {
+ init: initialize
+ };
+});
diff --git a/lynq/R305/ap/app/zte_webui/js/sim_device.js b/lynq/R305/ap/app/zte_webui/js/sim_device.js
index 5be4f99..ec56d28 100755
--- a/lynq/R305/ap/app/zte_webui/js/sim_device.js
+++ b/lynq/R305/ap/app/zte_webui/js/sim_device.js
@@ -38,6 +38,7 @@
target.hasSms = config.HAS_SMS;
target.hasPhonebook = config.HAS_PHONEBOOK;
target.isSupportSD = config.SD_CARD_SUPPORT;
+ target.hasUssd = config.HAS_USSD;
if (config.WIFI_SUPPORT_QR_SWITCH) {
var wifiInfo = service.getWifiBasic();
target.showQRCode = config.WIFI_SUPPORT_QR_CODE && wifiInfo.show_qrcode_flag;
diff --git a/lynq/R305/ap/app/zte_webui/subpg/adm_lan.html b/lynq/R305/ap/app/zte_webui/subpg/adm_lan.html
index 814900c..5b6b28b 100755
--- a/lynq/R305/ap/app/zte_webui/subpg/adm_lan.html
+++ b/lynq/R305/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>
</ul>
diff --git a/lynq/R305/ap/app/zte_webui/subpg/adm_others.html b/lynq/R305/ap/app/zte_webui/subpg/adm_others.html
index a380032..39309b3 100755
--- a/lynq/R305/ap/app/zte_webui/subpg/adm_others.html
+++ b/lynq/R305/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>
</ul>
diff --git a/lynq/R305/ap/app/zte_webui/subpg/firewall.html b/lynq/R305/ap/app/zte_webui/subpg/firewall.html
index 51a418d..bf00b0c 100755
--- a/lynq/R305/ap/app/zte_webui/subpg/firewall.html
+++ b/lynq/R305/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>
</ul>
diff --git a/lynq/R305/ap/app/zte_webui/subpg/main.html b/lynq/R305/ap/app/zte_webui/subpg/main.html
index c5f8c00..116e9dd 100755
--- a/lynq/R305/ap/app/zte_webui/subpg/main.html
+++ b/lynq/R305/ap/app/zte_webui/subpg/main.html
@@ -4,6 +4,7 @@
<ul>
<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="#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? '#wlan_sleep' : '#demilitarized_zone'}" data-trans="advanced_settings" class="cFFCE2B"></a></li>
@@ -110,6 +111,14 @@
<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>
@@ -152,6 +161,14 @@
<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>
@@ -174,7 +191,7 @@
<label class="col-xs-6"><%= m_max_access_num %></label>
</div>
<% } %>
-<div class="row">
+<div class="row" style="display:none">
<label data-trans="wifi_range" class="col-xs-6"></label>
<label data-trans="<%= wifi_long_mode %>" class="col-xs-6"></label>
</div>
diff --git a/lynq/R305/ap/app/zte_webui/subpg/network_apn_set.html b/lynq/R305/ap/app/zte_webui/subpg/network_apn_set.html
index c308b85..5cd5591 100755
--- a/lynq/R305/ap/app/zte_webui/subpg/network_apn_set.html
+++ b/lynq/R305/ap/app/zte_webui/subpg/network_apn_set.html
@@ -18,6 +18,7 @@
<li><a data-trans="dial_mode" href="#conn_set"></a></li>
<li><a data-trans="net_select" href="#network_choose"></a></li>
<li class="active"><a data-trans="apn_setting" href="#cgdcont_set"></a></li>
+ <li><a data-trans="net_info" href="#net_status"></a></li>
</ul>
</div>
</div>
diff --git a/lynq/R305/ap/app/zte_webui/subpg/network_dial_set.html b/lynq/R305/ap/app/zte_webui/subpg/network_dial_set.html
index e59b1ca..7872355 100755
--- a/lynq/R305/ap/app/zte_webui/subpg/network_dial_set.html
+++ b/lynq/R305/ap/app/zte_webui/subpg/network_dial_set.html
@@ -18,6 +18,7 @@
<li class="active"><a data-trans="dial_mode" href="#conn_set"></a></li>
<li><a data-trans="net_select" href="#network_choose"></a></li>
<li><a data-trans="apn_setting" href="#cgdcont_set"></a></li>
+ <li><a data-trans="net_info" href="#net_status"></a></li>
</ul>
</div>
</div>
diff --git a/lynq/R305/ap/app/zte_webui/subpg/network_info.html b/lynq/R305/ap/app/zte_webui/subpg/network_info.html
new file mode 100755
index 0000000..84dabe4
--- /dev/null
+++ b/lynq/R305/ap/app/zte_webui/subpg/network_info.html
@@ -0,0 +1,64 @@
+<div id="innerContainer">
+ <div class="row header-row">
+ <div class="col-xs-1">
+ <a href="#main">
+ <img alt="" src="pic/direct-back.png">
+ </a>
+ </div>
+ <div class="col-xs-11">
+ <div class="form-title">
+ <h1 data-trans='net_setting'></h1>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-xs-2">
+ <div class="nav_right">
+ <ul>
+ <li><a data-trans="dial_mode" href="#conn_set"></a></li>
+ <li><a data-trans="net_select" href="#network_choose"></a></li>
+ <li><a data-trans="apn_setting" href="#cgdcont_set"></a></li>
+ <li class="active"><a data-trans="net_info" href="#net_status"></a></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="col-xs-10">
+ <form role="form">
+ <div class="form-body">
+ <h3 data-trans="net_info" class="form-title"></h3>
+ <div class="content">
+ <div class="row form-group">
+ <label data-trans="pci" class="col-xs-5"></label>
+ <label data-bind="text: pci" class="col-xs-7"></label>
+ </div>
+ <div class="row form-group">
+ <label data-trans="sinr" class="col-xs-5"></label>
+ <label data-bind="text: sinr" class="col-xs-7"></label>
+ </div>
+ <div class="row form-group">
+ <label data-trans="rsrp" class="col-xs-5"></label>
+ <label data-bind="text: rsrp" class="col-xs-7"></label>
+ </div>
+ <div class="row form-group">
+ <label data-trans="rsrq" class="col-xs-5"></label>
+ <label data-bind="text: rsrq" class="col-xs-7"></label>
+ </div>
+ <div class="row form-group">
+ <label data-trans="plmn" class="col-xs-5"></label>
+ <label data-bind="text: plmn" class="col-xs-7"></label>
+ </div>
+ <div class="row form-group">
+ <label data-trans="cellid" class="col-xs-5"></label>
+ <label data-bind="text: cellid" class="col-xs-7"></label>
+ </div>
+ <div class="row form-group">
+ <label data-trans="band" class="col-xs-5"></label>
+ <label data-bind="text: band" class="col-xs-7"></label>
+ </div>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/lynq/R305/ap/app/zte_webui/subpg/network_net_select.html b/lynq/R305/ap/app/zte_webui/subpg/network_net_select.html
index c7bb48c..444d972 100755
--- a/lynq/R305/ap/app/zte_webui/subpg/network_net_select.html
+++ b/lynq/R305/ap/app/zte_webui/subpg/network_net_select.html
@@ -18,6 +18,7 @@
<li><a data-trans="dial_mode" href="#conn_set"></a></li>
<li class="active"><a data-trans="net_select" href="#network_choose"></a></li>
<li><a data-trans="apn_setting" href="#cgdcont_set"></a></li>
+ <li><a data-trans="net_info" href="#net_status"></a></li>
</ul>
</div>
</div>
diff --git a/lynq/R305/ap/app/zte_webui/subpg/ota_update.html b/lynq/R305/ap/app/zte_webui/subpg/ota_update.html
index f7a84de..c75d9d0 100755
--- a/lynq/R305/ap/app/zte_webui/subpg/ota_update.html
+++ b/lynq/R305/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>
</ul>
@@ -30,13 +30,13 @@
<div class="col-xs-10">
<form id="frmOTAUpdate" role="form" data-bind="visible: updateType() == 'mifi_fota'">
- <h3 data-trans="ota_update_manual" class="form-title"></h3>
+ <!-- <h3 data-trans="ota_update_manual" class="form-title"></h3 -->
<div class="form-body margin-top-20">
- <div class="content">
+ <!--div class="content">
<div class="row">
<div class="col-xs-6">
- <!--span data-trans="ota_last_update_check"></span>
- <span data-bind="text: lastCheckTime"></span-->
+ <span data-trans="ota_last_update_check"></span>
+ <span data-bind="text: lastCheckTime"></span>
</div>
<div class="col-xs-6 align-right">
<input id="btnCheckNewVersion" data-bind="click:checkNewVersion" data-trans="ota_check_new_version" type="button" class="btn btn-primary margin-right-20"/>
@@ -48,7 +48,7 @@
<li data-trans="ota_check_new_version_desc"></li>
</ul>
</div>
- </div>
+ </div-->
<!--div class="form-title" data-trans='ota_update_manual'></div>
<div class="content">
@@ -60,6 +60,7 @@
</div>
<div class="form-title" data-trans='ota_update_setting'></div-->
<div class="content">
+ <!--
<h3 data-trans="ota_update_setting" class="form-title"></h3>
<div class="row">
<label data-trans="ota_auto_update_switch" class="col-xs-4 side-right"></label>
@@ -99,15 +100,26 @@
<div class="form-buttons">
<input id="btnApply" data-trans="apply" type="submit" formmethod="post" class="btn btn-primary"/>
+ </div-->
+
+ <div class="row form-group">
+ <label data-trans="ota_manual_upgrade_url" class="col-xs-4 side-right"></label>
+ <div class="col-xs-3">
+ <input id="upgrade_url" type="text" size="128" data-bind="value:updateURL" class="required form-control">
+ </div>
</div>
- <div class="form-note">
+ <div class="form-buttons">
+ <input id="btnOtaUpgApply" data-bind="click:ota_upgrade_apply" data-trans="download" type="submit" formmethod="post" class="btn btn-primary"/>
+ </div>
+
+ <!--div class="form-note">
<div class="notes-title"> </div>
<ul class="notes-content">
<li data-trans="fota_note1"></li>
</ul>
- </div>
+ </div-->
</div>
-
+
</div>
</form>
<!--form id="frmNativeUpdate" data-bind="visible: updateType() == 'mifi_local'" method="post" name="UploadFile" id="UploadFile" action="../../cgi-bin/upload.cgi" enctype="multipart/form-data" target="ifr">
@@ -122,6 +134,24 @@
<iframe name="ifr" id="ifr" style="display:none;"></iframe>
</div>
</form-->
+
+
+<br><br>
+<form id="uploadForm" action="../../cgi-bin/upload/upload.cgi" method="post" enctype="multipart/form-data">
+ <h3 class="form-title" data-trans="local_upload"></h3>
+ <div class="row form-group col-xs-4 side-right">
+ <label for="fileInput" data-trans="software_upload" style="display: none;"></label>
+ <input class="required form-control btn btn-primary" type="file" id="fileInput" name="file" style="display: none;">
+ <label for="fileInput" class="required btn btn-primary" data-trans="browse_btn" style="width: 70px;"></label>
+ <span id="fileNameDisplay" style="margin-left: 10px; font-weight: normal;"></span>
+ </div>
+ <br><br>
+ <div style="text-align: right; padding-right: 20px;">
+ <button class="btn btn-primary" type="submit" data-trans="ota_title" id="submitButton" disabled></button>
+ </div>
+</form>
+
+
<div id="uploadSection" data-bind="visible: updateType() == 'mifi_local'">
<h3 class="form-title" data-trans="software_upload"></h3>
<iframe id="fileUploadIframe" name="fileUploadIframe" frameborder="0" height="0" scrolling="no" style="height:0px;width:0px;" width="0"></iframe>
@@ -146,3 +176,58 @@
</div>
</div>
</div>
+
+<script>
+ const fileInput = document.getElementById('fileInput');
+ const fileNameDisplay = document.getElementById('fileNameDisplay');
+ const submitButton = document.getElementById('submitButton');
+ const uploadForm = document.getElementById('uploadForm');
+
+ fileInput.addEventListener('change', function () {
+ const fileName = fileInput.files[0] ? fileInput.files[0].name : '';
+ fileNameDisplay.textContent = fileName;
+
+ if (fileName) {
+ submitButton.disabled = false;
+ } else {
+ submitButton.disabled = true;
+ }
+ });
+
+ uploadForm.addEventListener('submit', function (event) {
+ event.preventDefault();
+ showLoading("upload_file");
+
+ const formData = new FormData(uploadForm);
+ console.log("Form data submitted:", formData);
+
+ fetch(uploadForm.action, {
+ method: 'POST',
+ body: formData
+ })
+ .then(response => {
+ if (!response.ok) {
+ throw new Error(`HTTP error! Status: ${response.status}`);
+ }
+ return response.text();
+ })
+ .then(text => {
+ console.log("Server response:", text);
+ try {
+ const data = JSON.parse(text);
+ if (data.success) {
+ showAlert("start_update");
+ } else {
+ errorOverlay("verify_error");
+ }
+ } catch (error) {
+ console.error("Upload error:", error);
+ errorOverlay("File upload successful: Server returned non-JSON response.");
+ }
+ })
+ .catch(error => {
+ console.error("Upload error:", error);
+ errorOverlay("File upload failed!");
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/lynq/R305/ap/app/zte_webui/subpg/ussd.html b/lynq/R305/ap/app/zte_webui/subpg/ussd.html
new file mode 100755
index 0000000..7310027
--- /dev/null
+++ b/lynq/R305/ap/app/zte_webui/subpg/ussd.html
@@ -0,0 +1,85 @@
+<div id="innerContainer">
+ <div class="row header-row">
+ <div class="col-xs-1">
+ <a href="#main">
+ <img alt="" src="pic/direct-back.png">
+ </a>
+ </div>
+ <div class="col-xs-11">
+ <div class="form-title">
+ <h1 data-trans='USSD'></h1>
+ </div>
+ </div>
+ </div>
+<div class="row">
+ <!-- <div class="col-xs-2">
+ <div class="nav_right">
+ <ul>
+ <li><a data-trans="sleep_mode" href="#wlan_sleep"></a></li>
+ <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 class="active"><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>
+ </ul>
+ </div>
+ </div> -->
+
+ <div class="innerContainer">
+
+ <form id="frmUSSD">
+ <div class="col-xs-1 margin-top-15">
+ </div>
+ <div class="col-xs-11">
+ <h3 data-trans="USSD" class="form-title"></h3>
+ <div id="USSD_send_div" data-bind="visible: USSDLocation()==0" class="margin-top-20">
+ <div class="content">
+ <div class="row form-group">
+ <label data-trans="ussd_send_to" class="col-xs-4 side-right"></label>
+ <div class="col-xs-3">
+ <input id="USSD_send" type="text" size="20" data-bind="value:USSDSend,valueUpdate:'afterkeydown'" class="required form-control">
+ </div>
+ </div>
+ <div class="form-buttons">
+ <input id="sendToNet" type="button" data-trans='ussd_send' data-bind="disable:USSDSend().length<=0,css:{disabled:USSDSend().length<=0},click:sendToNet" class="btn btn-primary marginright10" />
+ <!--input type="reset" data-trans='ussd_cancel' data-bind="disable:USSDSend().length<=0,css:{disabled:USSDSend().length<=0},click:resetUSSD" id="cancelToNet" class="btn btn-primary"/-->
+ </div>
+ </div>
+ </div>
+ <div id="USSD_reply_div" data-bind="visible: USSDLocation()==1" class="margin-top-20">
+ <!--<div class="form-title" data-trans='ussd_contents'></div>!-->
+ <div class="content">
+ <div class="row form-group">
+ <label data-trans="ussd_contents" class="col-xs-4 side-right"></label>
+ <div class="col-xs-3">
+ <textarea id="USSD_Content" rows="8" cols="50" readonly="readonly" name="USSD_Content"></textarea>
+ </div>
+ </div>
+ <div class="form-buttons">
+ <input type="button" data-trans='ussd_cancel' data-bind="click:noReplyCancel" class="btn btn-primary marginright10"/>
+ </div>
+ <div id="ussd_action" data-bind="visible: ussd_action()!=0">
+ <div class="row form-group">
+ <label class="col-xs-4 side-right" data-trans="ussd_reply_to"></label>
+ <div class="col-xs-3">
+ <input id="USSD_reply" type="text" name="USSD_reply" size="20" data-bind="value:USSDReply" class="required form-control">
+ </div>
+ </div>
+ <div class="form-buttons">
+ <input type="button" data-trans='ussd_reply' data-bind="click:replyToNet" class="btn btn-primary marginright10"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="form-note">
+ <div class="notes-title"> </div>
+ <ul class="notes-content">
+ <li data-trans="ussd_note1"></li>
+ </ul>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+</div>
diff --git a/lynq/R305/ap/app/zte_webui/subpg/wifi_sleep_mode.html b/lynq/R305/ap/app/zte_webui/subpg/wifi_sleep_mode.html
index 5c2e39b..90d9b50 100755
--- a/lynq/R305/ap/app/zte_webui/subpg/wifi_sleep_mode.html
+++ b/lynq/R305/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>
</ul>
@@ -30,7 +30,7 @@
<div class="form-body margin-top-20">
<!--hide wifi range settings until sw implements it-->
- <form id='wifiRangeForm'>
+ <form id='wifiRangeForm' style = "display:none;">
<h3 data-trans="wifi_range_settings" class="form-title"></h3>
<div class="content">
<div class="row">
diff --git a/lynq/R305/ap/project/zx297520v3/prj_cpe_min/build/config.mk b/lynq/R305/ap/project/zx297520v3/prj_cpe_min/build/config.mk
index ea49eed..778fefa 100755
--- a/lynq/R305/ap/project/zx297520v3/prj_cpe_min/build/config.mk
+++ b/lynq/R305/ap/project/zx297520v3/prj_cpe_min/build/config.mk
@@ -67,8 +67,8 @@
CUSTOM_MACRO += -DHAVE_MODEM_IN_CORE
#CUSTOM_MACRO += -D_USE_BL
-CUSTOM_MACRO += -D_USE_VOLTE
-CUSTOM_MACRO += -D_USE_CODEC_TI3100
+#CUSTOM_MACRO += -D_USE_VOLTE
+#CUSTOM_MACRO += -D_USE_CODEC_TI3100
# fotaÉý¼¶°üÏÂÔØÍêÊÇ·ñÐèÒªÓû§È·ÈϺóÔÙÉý¼¶¿ª¹Ø
export ENABLE_FOTA_UPG_USR_CONFIRM=yes
diff --git a/lynq/R305/ap/project/zx297520v3/prj_cpe_min/config/normal/config_app.mk b/lynq/R305/ap/project/zx297520v3/prj_cpe_min/config/normal/config_app.mk
index 62e258d..0ba669a 100755
--- a/lynq/R305/ap/project/zx297520v3/prj_cpe_min/config/normal/config_app.mk
+++ b/lynq/R305/ap/project/zx297520v3/prj_cpe_min/config/normal/config_app.mk
@@ -9,7 +9,7 @@
dnsmasq \
Script \
zte_amt \
- zte_webui clatd cwmp at_tool
+ zte_webui clatd at_tool cgi
#yes only when klocwork static analysis
ifneq ($(KW_SKIP),yes)
diff --git a/lynq/R305/ap/project/zx297520v3/prj_cpe_min/config/normal/config_lib.mk b/lynq/R305/ap/project/zx297520v3/prj_cpe_min/config/normal/config_lib.mk
index f9deda4..2e67852 100755
--- a/lynq/R305/ap/project/zx297520v3/prj_cpe_min/config/normal/config_lib.mk
+++ b/lynq/R305/ap/project/zx297520v3/prj_cpe_min/config/normal/config_lib.mk
@@ -1,5 +1,5 @@
-zte_lib := libvoice libtinyalsa libsoftap \
+zte_lib := libsoftap \
libatutils libatext libcpnv libamt libkey
ifeq ($(USE_FOTA),yes)
diff --git a/lynq/R305/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/sbin/iperf3 b/lynq/R305/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/sbin/iperf3
deleted file mode 100755
index 9ae80ac..0000000
--- a/lynq/R305/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/sbin/iperf3
+++ /dev/null
Binary files differ