diff options
-rw-r--r-- | package/network/utils/comgt/Makefile | 2 | ||||
-rw-r--r-- | package/network/utils/comgt/files/getcardinfo.gcom | 2 | ||||
-rw-r--r-- | package/network/utils/comgt/files/ncm.json | 26 | ||||
-rw-r--r-- | package/network/utils/comgt/files/ncm.sh | 77 |
4 files changed, 51 insertions, 56 deletions
diff --git a/package/network/utils/comgt/Makefile b/package/network/utils/comgt/Makefile index 9d99d640bc..4b6e6eaf82 100644 --- a/package/network/utils/comgt/Makefile +++ b/package/network/utils/comgt/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=comgt PKG_VERSION:=0.32 -PKG_RELEASE:=27 +PKG_RELEASE:=28 PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz PKG_SOURCE_URL:=@SF/comgt diff --git a/package/network/utils/comgt/files/getcardinfo.gcom b/package/network/utils/comgt/files/getcardinfo.gcom index 5c69a64604..f91665f72e 100644 --- a/package/network/utils/comgt/files/getcardinfo.gcom +++ b/package/network/utils/comgt/files/getcardinfo.gcom @@ -6,7 +6,7 @@ opengt flash 0.1 :start - send "ATI^m" + send "AT+CGMI^m" get 1 "" $s print $s diff --git a/package/network/utils/comgt/files/ncm.json b/package/network/utils/comgt/files/ncm.json index d1f869974a..8f74e173d1 100644 --- a/package/network/utils/comgt/files/ncm.json +++ b/package/network/utils/comgt/files/ncm.json @@ -7,7 +7,7 @@ "ATV1", "ATE1", "ATS0=0", - "AT+CGDCONT=1,\\\"${pdptype}\\\",\\\"${apn}\\\"" + "AT+CGDCONT=${profile},\\\"${pdptype}\\\"${apn:+,\\\"$apn\\\"}" ], "modes": { "preferlte": "AT^SYSCFGEX=\\\"030201\\\",3fffffff,2,4,7fffffffffffffff,,", @@ -17,8 +17,8 @@ "gsm": "AT^SYSCFGEX=\\\"01\\\",3fffffff,2,4,7fffffffffffffff,,", "auto": "AT^SYSCFGEX=\\\"00\\\",3fffffff,2,4,7fffffffffffffff,," }, - "connect": "AT^NDISDUP=1,1,\\\"${apn}\\\"${username:+,\\\"$username\\\"}${password:+,\\\"$password\\\"}${auth:+,$auth}", - "disconnect": "AT^NDISDUP=1,0" + "connect": "AT^NDISDUP=${profile},1${apn:+,\\\"$apn\\\"}${username:+,\\\"$username\\\"}${password:+,\\\"$password\\\"}${auth:+,$auth}", + "disconnect": "AT^NDISDUP=${profile},0" }, "samsung": { "initialize": [ @@ -26,7 +26,7 @@ "AT+CGREG=2", "AT+CFUN=5", "AT+MODESELECT=3", - "AT+CGDCONT=1,\\\"${pdptype}\\\",\\\"${apn}\\\"" + "AT+CGDCONT=${profile},\\\"${pdptype}\\\"${apn:+,\\\"$apn\\\"}" ], "modes": { "umts": "AT+CHANGEALLPATH=1" @@ -34,11 +34,11 @@ "connect": "AT+CGATT=1", "disconnect": "AT+CGATT=0" }, - "sierra wireless, incorporated": { + "sierra": { "initialize": [ "AT+CFUN=1", - "AT+CGDCONT=1,\\\"${pdptype}\\\",\\\"${apn}\\\"", - "AT$QCPDPP=1${auth:+,$auth}${password:+,\\\"$password\\\"}${username:+,\\\"$username\\\"}" + "AT+CGDCONT=${profile},\\\"${pdptype}\\\"${apn:+,\\\"$apn\\\"}", + "AT$QCPDPP=${profile},${auth:-0}${password:+,\\\"$password\\\"}${username:+,\\\"$username\\\"}" ], "modes": { "preferlte": "AT!SELRAT=07", @@ -48,20 +48,20 @@ "gsm": "AT!SELRAT=02", "auto": "AT!SELRAT=00" }, - "connect": "AT!SCACT=1,1", - "disconnect": "AT!SCACT=0,1" + "connect": "AT!SCACT=1,${profile}", + "disconnect": "AT!SCACT=0,${profile}" }, - "sony ericsson": { + "sony": { "initialize": [ "AT+CFUN=1", - "AT+CGDCONT=1,\\\"${pdptype}\\\",\\\"${apn}\\\"", - "AT*EIAAUW=1,1,\\\"${username}\\\",\\\"${password}\\\",${auth:-00111}" + "AT+CGDCONT=${profile},\\\"${pdptype}\\\"${apn:+,\\\"$apn\\\"}", + "AT*EIAAUW=${profile},1,\\\"${username}\\\",\\\"${password}\\\",${auth:-00111}" ], "modes": { "umts": "AT+CFUN=6", "gsm": "AT+CFUN=5" }, - "connect": "AT*ENAP=1,1", + "connect": "AT*ENAP=1,${profile}", "disconnect": "AT*ENAP=0" } } diff --git a/package/network/utils/comgt/files/ncm.sh b/package/network/utils/comgt/files/ncm.sh index 14b6347d3f..09c2c18b40 100644 --- a/package/network/utils/comgt/files/ncm.sh +++ b/package/network/utils/comgt/files/ncm.sh @@ -18,7 +18,7 @@ proto_ncm_init_config() { proto_config_add_string delay proto_config_add_string mode proto_config_add_string pdptype - proto_config_add_boolean ipv6 + proto_config_add_int profile proto_config_add_defaults } @@ -27,22 +27,15 @@ proto_ncm_setup() { local manufacturer initialize setmode connect ifname devname devpath - local device apn auth username password pincode delay mode pdptype ipv6 $PROTO_DEFAULT_OPTIONS - json_get_vars device apn auth username password pincode delay mode pdptype ipv6 $PROTO_DEFAULT_OPTIONS - - if [ "$ipv6" = 0 ]; then - ipv6="" - else - ipv6=1 - fi - - [ -z "$pdptype" ] && { - if [ -n "$ipv6" ]; then - pdptype="IPV4V6" - else - pdptype="IP" - fi - } + local device apn auth username password pincode delay mode pdptype profile $PROTO_DEFAULT_OPTIONS + json_get_vars device apn auth username password pincode delay mode pdptype profile $PROTO_DEFAULT_OPTIONS + + [ "$metric" = "" ] && metric="0" + + [ -n "$profile" ] || profile=1 + + pdptype=`echo "$pdptype" | awk '{print toupper($0)}'` + [ "$pdptype" = "IP" -o "$pdptype" = "IPV6" -o "$pdptype" = "IPV4V6" ] || $pdptype="IP" [ -n "$ctl_device" ] && device=$ctl_device @@ -57,11 +50,6 @@ proto_ncm_setup() { proto_set_available "$interface" 0 return 1 } - [ -n "$apn" ] || { - echo "No APN specified" - proto_notify_error "$interface" NO_APN - return 1 - } devname="$(basename "$device")" case "$devname" in @@ -83,7 +71,7 @@ proto_ncm_setup() { [ -n "$delay" ] && sleep "$delay" - manufacturer=`gcom -d "$device" -s /etc/gcom/getcardinfo.gcom | awk '/Manufacturer/ { print tolower($2) }'` + manufacturer=`gcom -d "$device" -s /etc/gcom/getcardinfo.gcom | awk 'NF && $0 !~ /AT\+CGMI/ { sub(/\+CGMI: /,""); print tolower($1); exit; }'` [ $? -ne 0 ] && { echo "Failed to get modem information" proto_notify_error "$interface" GETINFO_FAILED @@ -126,6 +114,7 @@ proto_ncm_setup() { json_select .. } + echo "Starting network $interface" json_get_vars connect eval COMMAND="$connect" gcom -d "$device" -s /etc/gcom/runcommand.gcom || { echo "Failed to connect" @@ -133,19 +122,24 @@ proto_ncm_setup() { return 1 } - echo "Connected, starting DHCP on $ifname" + echo "Setting up $ifname" proto_init_update "$ifname" 1 + proto_add_data + json_add_string "manufacturer" "$manufacturer" + proto_close_data proto_send_update "$interface" - json_init - json_add_string name "${interface}_4" - json_add_string ifname "@$interface" - json_add_string proto "dhcp" - proto_add_dynamic_defaults - ubus call network add_dynamic "$(json_dump)" + [ "$pdptype" = "IP" -o "$pdptype" = "IPV4V6" ] && { + json_init + json_add_string name "${interface}_4" + json_add_string ifname "@$interface" + json_add_string proto "dhcp" + proto_add_dynamic_defaults + ubus call network add_dynamic "$(json_dump)" + } - [ -n "$ipv6" ] && { + [ "$pdptype" = "IPV6" -o "$pdptype" = "IPV4V6" ] && { json_init json_add_string name "${interface}_6" json_add_string ifname "@$interface" @@ -161,17 +155,18 @@ proto_ncm_teardown() { local manufacturer disconnect - local device - json_get_vars device + local device profile + json_get_vars device profile - echo "Stopping network" + [ -n "$ctl_device" ] && device=$ctl_device - manufacturer=`gcom -d "$device" -s /etc/gcom/getcardinfo.gcom | awk '/Manufacturer/ { print tolower($2) }'` - [ $? -ne 0 ] && { - echo "Failed to get modem information" - proto_notify_error "$interface" GETINFO_FAILED - return 1 - } + [ -n "$profile" ] || profile=1 + + echo "Stopping network $interface" + + json_load "$(ubus call network.interface.$interface status)" + json_select data + json_get_vars manufacturer json_load "$(cat /etc/gcom/ncm.json)" json_select "$manufacturer" || { @@ -181,7 +176,7 @@ proto_ncm_teardown() { } json_get_vars disconnect - COMMAND="$disconnect" gcom -d "$device" -s /etc/gcom/runcommand.gcom || { + eval COMMAND="$disconnect" gcom -d "$device" -s /etc/gcom/runcommand.gcom || { echo "Failed to disconnect" proto_notify_error "$interface" DISCONNECT_FAILED return 1 |