恢复默认配置

This commit is contained in:
Nanako 2025-04-26 05:29:27 +08:00
parent da43e7a10e
commit 547c0005d6

View File

@ -14,13 +14,6 @@ MODEM_RUN_CONFIG="${MODEM_RUNDIR}/config.cache"
#导入组件工具
source "${SCRIPT_DIR}/modem_scan.sh"
# === 添加开始 ===
# 确保 TDTech (鼎桥) 的特定函数库被加载
# 请将 modem_tdtech.sh 替换为包含 tdtech_set_mode 等函数的实际文件名
[ -f "${SCRIPT_DIR}/tdtech.sh" ] && source "${SCRIPT_DIR}/tdtech.sh"
# 如果 m_log 函数在 modem_util.sh 中,也需要确保它被加载
[ -f "${SCRIPT_DIR}/modem_util.sh" ] && source "${SCRIPT_DIR}/modem_util.sh"
# === 添加结束 ===
#设置拨号模式
# $1:拨号模式
@ -628,9 +621,6 @@ dial()
local username #用户名
local password #密码
local auth #认证类型
# === 添加开始 ===
local desired_mode # 用户期望的拨号模式 (从UCI读取)
# === 添加结束 ===
config_get remarks $1 remarks
config_get network $1 network
@ -641,10 +631,6 @@ dial()
config_get username $1 username
config_get password $1 password
config_get auth $1 auth
# === 添加开始 ===
# 从拨号配置段读取用户期望的模式,如果未设置,可以给一个默认值 (例如 ecm)
config_get desired_mode $1 mode "ecm"
# === 添加结束 ===
#获取模块序号
get_modem_no "${network}"
@ -652,71 +638,20 @@ dial()
#获取模组的拨号模式
local time=20
local mode # 存储当前实际模式
local mode
for i in $(seq 1 ${time}); do
mode=$(get_mode ${modem_no}) # get_mode 应该能调用 tdtech_get_mode
mode=$(get_mode ${modem_no})
[ -n "$mode" ] && [ "$mode" != "unknown" ] && break
sleep 5s
done
#获取不到拨号模式
[ -z "$mode" ] || [ "$mode" = "unknown" ] && {
m_log "error" "Modem $modem_no: Could not get current dial mode. Disabling config $id."
uci set modem.$1.enable=0
uci commit modem
return 0
}
# === 添加开始: 设置期望的拨号模式 ===
local current_mode="$mode" # 保存获取到的当前模式
local at_port=$(uci -q get modem.modem${modem_no}.at_port)
local manufacturer=$(uci -q get modem.modem${modem_no}.manufacturer)
# 检查是否是 TDTech 模组,并且当前模式与期望模式不同
if [ "$manufacturer" = "tdtech" ] && [ -n "$at_port" ] && [ -n "$desired_mode" ] && [ "$current_mode" != "$desired_mode" ]; then
m_log "info" "Modem $modem_no: Current mode '$current_mode', desired mode '$desired_mode'. Attempting to set..."
# 检查设置函数是否存在
if type tdtech_set_mode > /dev/null 2>&1; then
tdtech_set_mode "$at_port" "$desired_mode"
# 切换模式后模组可能需要时间重启或重新初始化USB接口
m_log "info" "Modem $modem_no: Sent mode set command. Waiting 8 seconds..." # 等待时间可能需要调整
sleep 8
# 重新获取模式以确认是否设置成功
mode=$(get_mode ${modem_no})
m_log "info" "Modem $modem_no: Mode after setting attempt is '$mode'."
if [ "$mode" != "$desired_mode" ]; then
m_log "error" "Modem $modem_no: Failed to set desired mode '$desired_mode'. Current mode is '$mode'. Disabling config $id."
uci set modem.$1.enable=0
uci commit modem
return 0
else
m_log "info" "Modem $modem_no: Mode successfully set to '$desired_mode'."
current_mode="$mode" # 更新当前模式变量以进行后续判断
fi
else
m_log "error" "Modem $modem_no: Function 'tdtech_set_mode' not found. Cannot set mode. Disabling config $id."
uci set modem.$1.enable=0
uci commit modem
return 0
fi
elif [ "$manufacturer" = "tdtech" ] && [ "$current_mode" = "$desired_mode" ]; then
m_log "info" "Modem $modem_no: Already in desired mode '$desired_mode'."
fi
# 如果不是 TDTech 模组,则跳过此设置逻辑,依赖其自身的模式保持能力或 get_mode 获取的当前模式
# === 添加结束 ===
# 再次检查模式,确保后续流程使用正确的模式变量 (即使是从上面设置逻辑更新后的)
if [ -z "$current_mode" ] || [ "$current_mode" = "unknown" ]; then
m_log "error" "Modem $modem_no: Mode became unknown after setting attempt. Disabling config $id."
uci set modem.$1.enable=0
uci commit modem
return 0
fi
# 使用确认后的模式 current_mode 进行后续操作
mode="$current_mode" # 确保后续逻辑使用确认或未改变的模式
#查看该移动网络是否已经有拨号配置在运行
mkdir -m 0755 -p "${MODEM_RUNDIR}"
if [ ! -f "${MODEM_RUN_CONFIG}" ] || ! grep -q "${network}" "${MODEM_RUN_CONFIG}"; then
@ -725,13 +660,12 @@ dial()
#获取网络接口
local network_interface=$(uci -q get modem.modem${modem_no}.network_interface)
#设置网络接口 (应基于确认后的 mode)
#设置网络接口
set_interface "${modem_no}" "${network_interface}"
else
local config_id=$(awk -v network="${network}" -F',' '!/^#/ && $0 ~ network { print $2 }' "${MODEM_RUN_CONFIG}")
#该移动网络已存在,且已有其他拨号配置在运行
if [ "$id" != "$config_id" ]; then
m_log "warn" "Modem $modem_no: Network '$network' is already being used by config '$config_id'. Disabling this config '$id'."
uci set modem.$1.enable=0
uci commit modem
return 0
@ -741,7 +675,7 @@ dial()
#设置网络预设
connect_presets
#根据不同的拨号模式拨号 (应基于确认后的 mode)
#根据不同的拨号模式拨号
if [ "$mode" = "qmi" ]; then
qmi
elif [ "$mode" = "gobinet" ]; then
@ -754,8 +688,6 @@ dial()
rndis
elif [ "$mode" = "ncm" ]; then
ncm
else
m_log "error" "Modem $modem_no: Unsupported mode '$mode' for dialing."
fi
# sleep 15