--autoconnect > /dev/null
}
+qmi_wds_release() {
+ [ -n "$cid" ] || return 0
+
+ uqmi -s -d "$device" --set-client-id wds,"$cid" --release-client-id wds
+ uci_revert_state network $interface cid
+}
+
proto_qmi_setup() {
local interface="$1"
[ -n "$device" ] || {
echo "No control device specified"
proto_notify_error "$interface" NO_DEVICE
- proto_block_restart "$interface"
+ proto_set_available "$interface" 0
return 1
}
[ -c "$device" ] || {
echo "The specified control device does not exist"
proto_notify_error "$interface" NO_DEVICE
- proto_block_restart "$interface"
+ proto_set_available "$interface" 0
return 1
}
[ -n "$ifname" ] || {
echo "The interface could not be found."
proto_notify_error "$interface" NO_IFACE
- proto_block_restart "$interface"
+ proto_set_available "$interface" 0
return 1
}
[ -n "$apn" ] || {
echo "No APN specified"
proto_notify_error "$interface" NO_APN
- proto_block_restart "$interface"
return 1
}
qmi_disconnect
+ uqmi -s -d "$device" --set-data-format 802.3
+
echo "Waiting for network registration"
while uqmi -s -d "$device" --get-serving-system | grep '"searching"' > /dev/null; do
sleep 5;
[ $? -ne 0 ] && {
echo "Unable to obtain client ID"
proto_notify_error "$interface" NO_CID
- proto_block_restart "$interface"
return 1
}
${password:+--password $password} \
--autoconnect > /dev/null
- if ! uqmi -s -d "$device" --get-data-status | grep '"connected"' > /dev/null; then
- echo "Connection lost"
- proto_notify_error "$interface" NOT_CONNECTED
- return 1
- fi
-
- echo "Connected, starting DHCP"
+ echo "Starting DHCP"
proto_init_update "$ifname" 1
proto_send_update "$interface"
echo "Stopping network"
qmi_disconnect
- [ -n "$cid" ] && {
- uqmi -s -d "$device" --set-client-id wds,"$cid" --release-client-id wds
- uci_revert_state network $interface cid
- }
+ qmi_wds_release
proto_init_update "*" 0
proto_send_update "$interface"