From 8c9c819a1c25f59947abc4cf8206113e102f1b99 Mon Sep 17 00:00:00 2001 From: ling <1042585959@qq.com> Date: Wed, 28 Feb 2024 19:32:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A8=A1=E5=9D=97=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=89=AB=E6=8F=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- luci-app-modem/luasrc/controller/modem.lua | 61 ++++++------ .../model/cbi/modem/quick_commands_config.lua | 53 ++++++++++ .../luasrc/view/modem/modem_info.htm | 10 +- .../root/usr/share/modem/modem_scan.sh | 98 +++++++++---------- .../root/usr/share/modem/modem_support | 12 --- .../root/usr/share/modem/modem_support.json | 68 +++++++++++++ 6 files changed, 203 insertions(+), 99 deletions(-) create mode 100644 luci-app-modem/luasrc/model/cbi/modem/quick_commands_config.lua delete mode 100644 luci-app-modem/root/usr/share/modem/modem_support create mode 100644 luci-app-modem/root/usr/share/modem/modem_support.json diff --git a/luci-app-modem/luasrc/controller/modem.lua b/luci-app-modem/luasrc/controller/modem.lua index c96fd8e..b2ba8e4 100644 --- a/luci-app-modem/luasrc/controller/modem.lua +++ b/luci-app-modem/luasrc/controller/modem.lua @@ -34,6 +34,9 @@ function index() --AT命令旧界面 entry({"admin", "network", "modem", "at_command_old"},template("modem/at_command_old")).leaf = true + + --AT快捷命令配置 + --entry({"admin", "network", "modem", "quick_commands_config"},cbi("modem/quick_commands_config"),translate("自定义快捷命令配置"),40).leaf = true end --[[ @@ -148,38 +151,40 @@ function getModemInfo() --设置翻译 local translation={} --设备信息翻译 - if modem_device_info then - -- local name=modem_device_info["name"] - -- translation[name]=luci.i18n.translate(name) - -- local manufacturer=modem_device_info["manufacturer"] - -- translation[manufacturer]=luci.i18n.translate(manufacturer) - -- local mode=modem_device_info["mode"] - -- translation[mode]=luci.i18n.translate(mode) - local data_interface=modem_device_info["data_interface"] - translation[data_interface]=luci.i18n.translate(data_interface) - local network=modem_device_info["network"] - translation[network]=luci.i18n.translate(network) - end + -- if modem_device_info then + -- local name=modem_device_info["name"] + -- translation[name]=luci.i18n.translate(name) + -- local manufacturer=modem_device_info["manufacturer"] + -- translation[manufacturer]=luci.i18n.translate(manufacturer) + -- local mode=modem_device_info["mode"] + -- translation[mode]=luci.i18n.translate(mode) + -- local data_interface=modem_device_info["data_interface"] + -- translation[data_interface]=luci.i18n.translate(data_interface) + -- local network=modem_device_info["network"] + -- translation[network]=luci.i18n.translate(network) + -- end --基本信息翻译 - if modem_more_info["base_info"] then - for key in pairs(modem_more_info["base_info"]) do - local value=modem_more_info["base_info"][key] - --翻译值 - translation[value]=luci.i18n.translate(value) - end - end + -- if modem_more_info["base_info"] then + -- for key in pairs(modem_more_info["base_info"]) do + -- local value=modem_more_info["base_info"][key] + -- --翻译值 + -- translation[value]=luci.i18n.translate(value) + -- end + -- end --SIM卡信息翻译 if modem_more_info["sim_info"] then local sim_info=modem_more_info["sim_info"] for i = 1, #sim_info do local info = sim_info[i] for key in pairs(info) do + --翻译键 translation[key]=luci.i18n.translate(key) - local value=info[key] - if hasLetters(value) then - translation[value]=luci.i18n.translate(value) - end + -- local value=info[key] + -- if hasLetters(value) then + -- --翻译值 + -- translation[value]=luci.i18n.translate(value) + -- end end end end @@ -188,11 +193,11 @@ function getModemInfo() for key in pairs(modem_more_info["network_info"]) do --翻译键 translation[key]=luci.i18n.translate(key) - local value=modem_more_info["network_info"][key] - if hasLetters(value) then - --翻译值 - translation[value]=luci.i18n.translate(value) - end + -- local value=modem_more_info["network_info"][key] + -- if hasLetters(value) then + -- --翻译值 + -- translation[value]=luci.i18n.translate(value) + -- end end end --小区信息翻译 diff --git a/luci-app-modem/luasrc/model/cbi/modem/quick_commands_config.lua b/luci-app-modem/luasrc/model/cbi/modem/quick_commands_config.lua new file mode 100644 index 0000000..48960d5 --- /dev/null +++ b/luci-app-modem/luasrc/model/cbi/modem/quick_commands_config.lua @@ -0,0 +1,53 @@ +-- Copyright 2020-2021 Rafa� Wabik (IceG) - From eko.one.pl forum +-- Licensed to the GNU General Public License v3.0. + +local dispatcher = require "luci.dispatcher" +local fs = require "nixio.fs" +local http = require "luci.http" +local uci = require "luci.model.uci".cursor() + +local AT_FILE_PATH = "/etc/modem/custom_at_commands.json" + +m = Map("sms_tool") +m.title = translate("Configuration sms-tool") +m.description = translate("Configuration panel for sms_tool and gui application.") + +-- 自定义命令 -- +s = m:section(TypedSection, "custom_at_commands", translate("Custom AT Commands")) +s.anonymous = true +s.addremove = true +s.template = "cbi/tblsection" + +description = s:option(Value, "description", translate("Description")) +description.placeholder = "" +description.rmempty = false +description.optional = false + +command = s:option(Value, "command", translate("Command")) +-- command.placeholder = "" +command.rmempty = false +-- command.optional = false + +function command.cfgvalue(self, section) + local custom_commands=fs.readfile(AT_FILE_PATH) + return "模组信息 > ATI" +end + +-- RAW File -- +s = m:section(NamedSection, 'general' , "sms_tool" , translate("")) +s.anonymous = true + +local tat = s:option(TextValue, "user_at", translate("User AT Commands"), translate("Each line must have the following format: 'AT Command name;AT Command'. Save to file '/etc/config/atcmds.user'.")) +tat.rows = 20 +tat.rmempty = true + +function tat.cfgvalue(self, section) + return fs.readfile(AT_FILE_PATH) +end + +function tat.write(self, section, value) + value = value:gsub("\r\n", "\n") + fs.writefile(AT_FILE_PATH, value) +end + +return m diff --git a/luci-app-modem/luasrc/view/modem/modem_info.htm b/luci-app-modem/luasrc/view/modem/modem_info.htm index 500e6b3..bee3063 100644 --- a/luci-app-modem/luasrc/view/modem/modem_info.htm +++ b/luci-app-modem/luasrc/view/modem/modem_info.htm @@ -176,14 +176,14 @@ end } //显示信息 - function set_info(info,translation) + function set_info(info) { for (var key in info) { var info_Element=document.getElementById(key); if (info_Element!=null) { - info_Element.innerHTML=translation[info[key]]; + info_Element.innerHTML=info[key]; } } } @@ -305,13 +305,13 @@ end // 设备信息 var device_info=modem_info["device_info"]; - set_info(device_info,translation); + set_info(device_info); // 更多信息 var more_info=modem_info["more_info"]; //基本信息 var base_info=more_info["base_info"]; - set_info(base_info,translation); + set_info(base_info); //基本信息界面控制 base_info_view(base_info["manufacturer"]); @@ -334,7 +334,7 @@ end //网络信息 var network_info=more_info["network_info"]; - set_info(network_info,translation); + set_info(network_info); //小区信息 var cell_info=more_info["cell_info"]; diff --git a/luci-app-modem/root/usr/share/modem/modem_scan.sh b/luci-app-modem/root/usr/share/modem/modem_scan.sh index 738d07a..ea5cb95 100755 --- a/luci-app-modem/root/usr/share/modem/modem_scan.sh +++ b/luci-app-modem/root/usr/share/modem/modem_scan.sh @@ -106,70 +106,60 @@ setPortConfig() done } -#设置模块信息(名称、制造商、拨号模式) -# $modem_count:模块计数 -# $1:模块序号 +#设置模组信息(名称、制造商、拨号模式) +# $modem_count:模组计数 +# $1:模组序号 # $2:AT串口 setModemInfoConfig() { #获取数据接口 local data_interface=$(uci -q get modem.modem$1.data_interface) - #遍历模块信息文件 - local line_count=$(wc -l < "$modem_support_file") - local line_context - for i in $(seq 1 $(($line_count))); do + #获取支持的模组 + local modem_support=$(cat $current_dir/modem_support.json) - #获取一行的内容 - local line_context=$(sed -n $i'p' "$modem_support_file") - #获取数据接口内容 - local data_interface_info=$(echo "$line_context" | cut -d ";" -f 4) - if [ "$data_interface" = "$data_interface_info" ]; then - #获取模块名 - local modem_name=$(echo "$line_context" | cut -d ";" -f 2) - - local at_result - if [ "$modem_name" != "unknown" ]; then - #获取AT命令返回的内容 - at_result=$(echo `sh $current_dir/modem_at.sh $2 "ATI" | sed -n '3p' | tr 'A-Z' 'a-z'`) - else - #数据库中没有此模块的信息,使用默认值 - at_result="unknown" - fi + #获取模组名 + local at_response=$(sh $current_dir/modem_at.sh $2 "AT+CGMM" | sed -n '2p' | sed 's/\r//g' | tr 'A-Z' 'a-z') - if [[ "$at_result" = *"$modem_name"* ]]; then - #设置模块名 - uci set modem.modem$1.name="$modem_name" + #获取模组信息 + local modem_info=$(echo $modem_support | jq '.modem_support.'$data_interface'."'$at_response'"') - #设置制造商 - local manufacturer=$(echo "$line_context" | cut -d ";" -f 1) - uci set modem.modem$1.manufacturer="$manufacturer" + local modem_name + local manufacturer + local platform + local mode + local modes + if [ "$modem_info" = "null" ]; then + modem_name="unknown" + manufacturer="unknown" + platform="unknown" + mode="unknown" + modes="qmi gobinet ecm mbim rndis ncm" + else + #获取模组名 + modem_name="$at_response" + #获取制造商 + manufacturer=$(echo $modem_info | jq -r '.manufacturer') + #获取平台 + platform=$(echo $modem_info | jq -r '.platform') + #获取当前的拨号模式 + mode=$(source $current_dir/$manufacturer.sh && get_mode $2 $platform) + #获取支持的拨号模式 + modes=$(echo $modem_info | jq -r '.modes[]') + fi - #设置平台 - local platform=$(echo "$line_context" | cut -d ";" -f 3) - uci set modem.modem$1.platform="$platform" - - #设置当前的拨号模式 - local mode - if [ "$manufacturer" = "unknown" ]; then - mode="unknown" - else - mode=$(source $current_dir/$manufacturer.sh && get_mode $2 $platform) - fi - uci set modem.modem$1.mode="$mode" - - #设置支持的拨号模式 - local modes=$(echo "$line_context" | cut -d ";" -f 5 | tr ',' ' ') - - #删除原来的拨号模式列表 - uci -q del modem.modem$1.modes - #添加新的拨号模式列表 - for mode in $modes; do - uci add_list modem.modem$1.modes="$mode" - done - break - fi - fi + #设置模组名 + uci set modem.modem$1.name="$modem_name" + #设置制造商 + uci set modem.modem$1.manufacturer="$manufacturer" + #设置平台 + uci set modem.modem$1.platform="$platform" + #设置当前的拨号模式 + uci set modem.modem$1.mode="$mode" + #设置支持的拨号模式 + uci -q del modem.modem$1.modes #删除原来的拨号模式列表 + for mode in $modes; do + uci add_list modem.modem$1.modes="$mode" done } diff --git a/luci-app-modem/root/usr/share/modem/modem_support b/luci-app-modem/root/usr/share/modem/modem_support deleted file mode 100644 index 5f44d9a..0000000 --- a/luci-app-modem/root/usr/share/modem/modem_support +++ /dev/null @@ -1,12 +0,0 @@ -quectel;rg200u-cn;unisoc;usb;ecm,mbim,rndis,ncm -quectel;rm500u-cn;unisoc;usb;ecm,mbim,rndis,ncm -quectel;rm500q-gl;qualcomm;usb;qmi,gobinet,ecm,mbim,rndis,ncm -quectel;rm500q-gl;qualcomm;pcie;qmi,gobinet,mbim -quectel;rm502q-gl;qualcomm;usb;qmi,gobinet,ecm,mbim,rndis,ncm -quectel;rm502q-gl;qualcomm;pcie;qmi,gobinet,mbim -fibocom;fm650-cn;unisoc;usb;ecm,mbim,rndis,ncm -fibocom;fm150-ae;qualcomm;usb;qmi,gobinet,ecm,mbim,rndis,ncm -fibocom;fm150-ae;qualcomm;pcie;qmi -fibocom;fm160-cn;qualcomm;usb;qmi,gobinet,ecm,mbim,rndis,ncm -unknown;unknown;unknown;usb;qmi,gobinet,ecm,mbim,rndis,ncm -unknown;unknown;unknown;pcie;qmi,gobinet,mbim diff --git a/luci-app-modem/root/usr/share/modem/modem_support.json b/luci-app-modem/root/usr/share/modem/modem_support.json new file mode 100644 index 0000000..0836a83 --- /dev/null +++ b/luci-app-modem/root/usr/share/modem/modem_support.json @@ -0,0 +1,68 @@ +{ + "modem_support":{ + "usb":{ + "rg200u-cn":{ + "manufacturer":"quectel", + "platform":"unisoc", + "network_interface":"usb", + "modes":["ecm","mbim","rndis","ncm"] + }, + "rm500u-cn":{ + "manufacturer":"quectel", + "platform":"unisoc", + "network_interface":"usb", + "modes":["ecm","mbim","rndis","ncm"] + }, + "rm500q-gl":{ + "manufacturer":"quectel", + "platform":"qualcomm", + "network_interface":"usb", + "modes":["qmi","gobinet","ecm","mbim","rndis","ncm"] + }, + "rm502q-gl":{ + "manufacturer":"quectel", + "platform":"qualcomm", + "network_interface":"usb", + "modes":["qmi","gobinet","ecm","mbim","rndis","ncm"] + }, + "fm650-cn":{ + "manufacturer":"fibocom", + "platform":"unisoc", + "network_interface":"usb", + "modes":["ecm","mbim","rndis","ncm"] + }, + "fm150-ae":{ + "manufacturer":"fibocom", + "platform":"qualcomm", + "network_interface":"usb", + "modes":["qmi","gobinet","ecm","mbim","rndis","ncm"] + }, + "fm160-cn":{ + "manufacturer":"fibocom", + "platform":"qualcomm", + "network_interface":"usb", + "modes":["qmi","gobinet","ecm","mbim","rndis","ncm"] + } + }, + "pcie":{ + "rm500q-gl":{ + "manufacturer":"quectel", + "platform":"qualcomm", + "network_interface":"pcie", + "modes":["qmi","gobinet","mbim"] + }, + "rm502q-gl":{ + "manufacturer":"fibocom", + "platform":"qualcomm", + "network_interface":"pcie", + "modes":["qmi","gobinet","mbim"] + }, + "fm150-ae":{ + "manufacturer":"fibocom", + "platform":"qualcomm", + "network_interface":"pcie", + "modes":["qmi"] + } + } + } +}