add cap to disable advance function in config file

This commit is contained in:
fujr 2025-01-08 02:24:28 +08:00
parent fb76b1ec91
commit e0fa457943
8 changed files with 91 additions and 19 deletions

View File

@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-qmodem PKG_NAME:=luci-app-qmodem
LUCI_TITLE:=LuCI support for QWRT Modem LUCI_TITLE:=LuCI support for QWRT Modem
LUCI_PKGARCH:=all LUCI_PKGARCH:=all
PKG_VERSION:=2.5.1 PKG_VERSION:=2.6.0
PKG_LICENSE:=GPLv3 PKG_LICENSE:=GPLv3
PKG_LINCESE_FILES:=LICENSE PKG_LINCESE_FILES:=LICENSE
PKG_MAINTAINER:=Tom <fjrcn@outlook.com> PKG_MAINTAINER:=Tom <fjrcn@outlook.com>

View File

@ -341,8 +341,8 @@
createCheckbox(band_class,band_name,band_id){ createCheckbox(band_class,band_name,band_id){
let checkbox = document.createElement('input'); let checkbox = document.createElement('input');
checkbox.classList = ["cbi-input-checkbox"];
checkbox.type = "checkbox"; checkbox.type = "checkbox";
checkbox.className = "cbi-input-checkbox";
checkbox.value = band_id; checkbox.value = band_id;
checkbox.setAttribute("display-band",band_name); checkbox.setAttribute("display-band",band_name);
checkbox.addEventListener("change",() => { checkbox.addEventListener("change",() => {
@ -453,8 +453,11 @@
let display_value = this.checkboxes[band_class][checkbox].getAttribute("display-band"); let display_value = this.checkboxes[band_class][checkbox].getAttribute("display-band");
let span = document.createElement('span'); let span = document.createElement('span');
span.innerHTML = display_value; span.innerHTML = display_value;
td.appendChild(this.checkboxes[band_class][checkbox]); let band_container=document.createElement('span');
td.appendChild(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.cbi_map = document.querySelector('.cbi-map');
this.class_map = {}; this.class_map = {};
this.datatabs = []; this.datatabs = [];
this.create_tabmenu(); this.disabled_features = [];
this.hotplug_elements = [];
//this.create_tabmenu();
} }
update_cfg_id(cfg_id){ update_cfg_id(cfg_id){
for (let key in this.class_map) { XHR.get('<%=luci.dispatcher.build_url("admin", "modem", "qmodem", "modem_ctrl")%>', { "cfg": cfg_id , "action" : "get_disabled_features"}, (x, data) => {
this.class_map[key].cfg_id = cfg_id; //clear class_map
this.class_map[key].get_config();
} this.disabled_features = data.disabled_features ? data.disabled_features : [];
//check if all datatab not selected //delete tabmenu
for (let tab of this.datatabs) { for (let element of this.hotplug_elements){
if (tab.className == "cbi-tab") { element.parentNode.removeChild(element);
this.switch_tab(tab);
return;
} }
}
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(){ create_tabmenu(){
//add support function to tabmenu //add support function to tabmenu
var tabmenu = document.createElement('ul'); var tabmenu = document.createElement('ul');
this.hotplug_elements.push(tabmenu);
tabmenu.className = "cbi-tabmenu"; tabmenu.className = "cbi-tabmenu";
for (let key in this.functions) { for (let key in this.functions) {
if (this.disabled_features.includes(key)) {
continue;
}
var li = document.createElement('li'); var li = document.createElement('li');
li.className = "cbi-tab-disabled"; li.className = "cbi-tab-disabled";
li.innerHTML = this.functions[key].name; li.innerHTML = this.functions[key].name;
@ -1280,7 +1303,6 @@
this.datatabs.push(li); this.datatabs.push(li);
} }
this.cbi_map.appendChild(tabmenu); this.cbi_map.appendChild(tabmenu);
this.tabmenu = tabmenu;
} }
switch_tab(target){ switch_tab(target){
@ -1295,6 +1317,7 @@
if (this.class_map[datatab] == undefined) { if (this.class_map[datatab] == undefined) {
this.class_map[datatab] = new this.functions[datatab].class(this.cfg_id); 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) { for (let key in this.class_map) {
this.class_map[key].hide(); this.class_map[key].hide();
@ -1315,6 +1338,13 @@
.cbi-tabmenu li { .cbi-tabmenu li {
padding: 0.5rem; padding: 0.5rem;
} }
.band-container {
display: flex;
margin-top: 1rem;
align-items: center;
width: 15%;
}
</style> </style>
<div class="cbi-map"> <div class="cbi-map">
<fieldset class="cbi-section"> <fieldset class="cbi-section">

View File

@ -371,3 +371,22 @@ rate_convert()
fi fi
echo "$rate `echo $rate_units | cut -d ' ' -f $(($i+1))`" 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"
}

View File

@ -15,10 +15,13 @@ modem_slot=$(basename $modem_path)
case $vendor in case $vendor in
"quectel") "quectel")
. /usr/share/qmodem/quectel.sh . /usr/share/qmodem/vendor/quectel.sh
;; ;;
"fibocom") "fibocom")
. /usr/share/qmodem/fibocom.sh . /usr/share/qmodem/vendor/fibocom.sh
;;
"sierra")
. /usr/share/qmodem/vendor/sierra.sh
;; ;;
*) *)
. /usr/share/qmodem/generic.sh . /usr/share/qmodem/generic.sh
@ -255,5 +258,13 @@ case $method in
json_close_object json_close_object
rm -rf /tmp/cache_sms_$2 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 esac
json_dump json_dump

View File

@ -458,6 +458,17 @@
"rndis", "rndis",
"ncm" "ncm"
] ]
},
"em9190": {
"manufacturer_id": "1199",
"manufacturer": "sierra",
"platform": "qualcomm",
"data_interface": "usb",
"define_connect": "1",
"modes": [
"mbim",
"rmnet"
]
} }
}, },
"pcie": { "pcie": {

View File

@ -11,6 +11,7 @@ at()
tom_modem -d $at_port -o a -c "$atcmd" tom_modem -d $at_port -o a -c "$atcmd"
} }
fastat() fastat()
{ {
local at_port=$1 local at_port=$1