From e0fa4579430fcb7ad649eac928f9e08addc0d448 Mon Sep 17 00:00:00 2001 From: fujr Date: Wed, 8 Jan 2025 02:24:28 +0800 Subject: [PATCH] add cap to disable advance function in config file --- luci/luci-app-qmodem/Makefile | 2 +- .../luasrc/view/qmodem/modem_debug.htm | 62 ++++++++++++++----- .../root/usr/share/qmodem/generic.sh | 19 ++++++ .../root/usr/share/qmodem/modem_ctrl.sh | 15 ++++- .../root/usr/share/qmodem/modem_support.json | 11 ++++ .../root/usr/share/qmodem/modem_util.sh | 1 + .../usr/share/qmodem/{ => vendor}/fibocom.sh | 0 .../usr/share/qmodem/{ => vendor}/quectel.sh | 0 8 files changed, 91 insertions(+), 19 deletions(-) rename luci/luci-app-qmodem/root/usr/share/qmodem/{ => vendor}/fibocom.sh (100%) rename luci/luci-app-qmodem/root/usr/share/qmodem/{ => vendor}/quectel.sh (100%) diff --git a/luci/luci-app-qmodem/Makefile b/luci/luci-app-qmodem/Makefile index 769e81f..a107fdd 100644 --- a/luci/luci-app-qmodem/Makefile +++ b/luci/luci-app-qmodem/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-qmodem LUCI_TITLE:=LuCI support for QWRT Modem LUCI_PKGARCH:=all -PKG_VERSION:=2.5.1 +PKG_VERSION:=2.6.0 PKG_LICENSE:=GPLv3 PKG_LINCESE_FILES:=LICENSE PKG_MAINTAINER:=Tom diff --git a/luci/luci-app-qmodem/luasrc/view/qmodem/modem_debug.htm b/luci/luci-app-qmodem/luasrc/view/qmodem/modem_debug.htm index 6e5bbb8..87020db 100644 --- a/luci/luci-app-qmodem/luasrc/view/qmodem/modem_debug.htm +++ b/luci/luci-app-qmodem/luasrc/view/qmodem/modem_debug.htm @@ -341,8 +341,8 @@ createCheckbox(band_class,band_name,band_id){ let checkbox = document.createElement('input'); + checkbox.classList = ["cbi-input-checkbox"]; checkbox.type = "checkbox"; - checkbox.className = "cbi-input-checkbox"; checkbox.value = band_id; checkbox.setAttribute("display-band",band_name); checkbox.addEventListener("change",() => { @@ -453,8 +453,11 @@ let display_value = this.checkboxes[band_class][checkbox].getAttribute("display-band"); let span = document.createElement('span'); span.innerHTML = display_value; - td.appendChild(this.checkboxes[band_class][checkbox]); - td.appendChild(span); + let band_container=document.createElement('span'); + band_container.classList.add("band-container"); + band_container.appendChild(this.checkboxes[band_class][checkbox]); + band_container.appendChild(span); + td.appendChild(band_container); } } @@ -1245,30 +1248,50 @@ this.cbi_map = document.querySelector('.cbi-map'); this.class_map = {}; this.datatabs = []; - this.create_tabmenu(); + this.disabled_features = []; + this.hotplug_elements = []; + //this.create_tabmenu(); } update_cfg_id(cfg_id){ - for (let key in this.class_map) { - this.class_map[key].cfg_id = cfg_id; - this.class_map[key].get_config(); - } - //check if all datatab not selected - for (let tab of this.datatabs) { - if (tab.className == "cbi-tab") { - this.switch_tab(tab); - return; + XHR.get('<%=luci.dispatcher.build_url("admin", "modem", "qmodem", "modem_ctrl")%>', { "cfg": cfg_id , "action" : "get_disabled_features"}, (x, data) => { + //clear class_map + + this.disabled_features = data.disabled_features ? data.disabled_features : []; + //delete tabmenu + for (let element of this.hotplug_elements){ + element.parentNode.removeChild(element); } - } - this.switch_tab(this.datatabs[0]); + + this.class_map = {}; + this.datatabs = []; + this.hotplug_elements = []; + this.create_tabmenu(); + for (let key in this.class_map) { + this.class_map[key].cfg_id = cfg_id; + this.class_map[key].get_config(); + } + //check if all datatab not selected + for (let tab of this.datatabs) { + if (tab.className == "cbi-tab") { + this.switch_tab(tab); + return; + } + } + this.switch_tab(this.datatabs[0]); + }); } create_tabmenu(){ //add support function to tabmenu var tabmenu = document.createElement('ul'); + this.hotplug_elements.push(tabmenu); tabmenu.className = "cbi-tabmenu"; for (let key in this.functions) { + if (this.disabled_features.includes(key)) { + continue; + } var li = document.createElement('li'); li.className = "cbi-tab-disabled"; li.innerHTML = this.functions[key].name; @@ -1280,7 +1303,6 @@ this.datatabs.push(li); } this.cbi_map.appendChild(tabmenu); - this.tabmenu = tabmenu; } switch_tab(target){ @@ -1295,6 +1317,7 @@ if (this.class_map[datatab] == undefined) { this.class_map[datatab] = new this.functions[datatab].class(this.cfg_id); + this.hotplug_elements.push(this.class_map[datatab].fieldset); } for (let key in this.class_map) { this.class_map[key].hide(); @@ -1315,6 +1338,13 @@ .cbi-tabmenu li { padding: 0.5rem; } + + .band-container { + display: flex; + margin-top: 1rem; + align-items: center; + width: 15%; + }
diff --git a/luci/luci-app-qmodem/root/usr/share/qmodem/generic.sh b/luci/luci-app-qmodem/root/usr/share/qmodem/generic.sh index d8dcd4c..25bab7a 100755 --- a/luci/luci-app-qmodem/root/usr/share/qmodem/generic.sh +++ b/luci/luci-app-qmodem/root/usr/share/qmodem/generic.sh @@ -371,3 +371,22 @@ rate_convert() fi echo "$rate `echo $rate_units | cut -d ' ' -f $(($i+1))`" } + +get_modem_disabled_features() +{ + . /lib/functions.sh + config_load qmodem + config_list_foreach $config_section disabled_features _add_disabled_features +} + +get_global_disabled_features() +{ + . /lib/functions.sh + config_load qmodem + config_list_foreach main disabled_features _add_disabled_features +} + +_add_disabled_features() +{ + json_add_string "" "$1" +} diff --git a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_ctrl.sh b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_ctrl.sh index faed2e4..488200b 100755 --- a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_ctrl.sh +++ b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_ctrl.sh @@ -15,10 +15,13 @@ modem_slot=$(basename $modem_path) case $vendor in "quectel") - . /usr/share/qmodem/quectel.sh + . /usr/share/qmodem/vendor/quectel.sh ;; "fibocom") - . /usr/share/qmodem/fibocom.sh + . /usr/share/qmodem/vendor/fibocom.sh + ;; + "sierra") + . /usr/share/qmodem/vendor/sierra.sh ;; *) . /usr/share/qmodem/generic.sh @@ -255,5 +258,13 @@ case $method in json_close_object rm -rf /tmp/cache_sms_$2 ;; + "get_disabled_features") + json_add_array disabled_features + #从vendor文件中读取对vendor禁用的功能 + vendor_get_disabled_features + get_modem_disabled_features + get_global_disabled_features + json_close_array + ;; esac json_dump diff --git a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json index 3502383..e1d1196 100644 --- a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json +++ b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json @@ -458,6 +458,17 @@ "rndis", "ncm" ] + }, + "em9190": { + "manufacturer_id": "1199", + "manufacturer": "sierra", + "platform": "qualcomm", + "data_interface": "usb", + "define_connect": "1", + "modes": [ + "mbim", + "rmnet" + ] } }, "pcie": { diff --git a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_util.sh b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_util.sh index f85f47c..7cf12a7 100755 --- a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_util.sh +++ b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_util.sh @@ -11,6 +11,7 @@ at() tom_modem -d $at_port -o a -c "$atcmd" } + fastat() { local at_port=$1 diff --git a/luci/luci-app-qmodem/root/usr/share/qmodem/fibocom.sh b/luci/luci-app-qmodem/root/usr/share/qmodem/vendor/fibocom.sh similarity index 100% rename from luci/luci-app-qmodem/root/usr/share/qmodem/fibocom.sh rename to luci/luci-app-qmodem/root/usr/share/qmodem/vendor/fibocom.sh diff --git a/luci/luci-app-qmodem/root/usr/share/qmodem/quectel.sh b/luci/luci-app-qmodem/root/usr/share/qmodem/vendor/quectel.sh similarity index 100% rename from luci/luci-app-qmodem/root/usr/share/qmodem/quectel.sh rename to luci/luci-app-qmodem/root/usr/share/qmodem/vendor/quectel.sh