[LEDE-DEV] [PATCH] comgt-ncm: Add support for specifying profile index
John Crispin
john at phrozen.org
Sat Dec 10 23:47:54 PST 2016
Hi Matti
i noticed that you remove the ipv6 option/support and this is not
mentioned in the commit message. could you elaborate on that one ?
John
On 06/12/2016 17:52, Matti Laakso wrote:
> Add support for specifying a call profile index instead of APN. A
> specific index different from 1 must be used for some service
> provider and modem combinations.
>
> In addition, change the manufacturer detection to use the standard
> AT+CGMI command, which produces more predictable output than ATI,
> and remove the redundant ipv6 option, since it is more customary
> to specify the PDP context type with mobile connections.
>
> Signed-off-by: Matti Laakso <malaakso at elisanet.fi>
> ---
> package/network/utils/comgt/Makefile | 2 +-
> package/network/utils/comgt/files/getcardinfo.gcom | 2 +-
> package/network/utils/comgt/files/ncm.json | 26 ++++-----
> package/network/utils/comgt/files/ncm.sh | 65 ++++++++++------------
> 4 files changed, 44 insertions(+), 51 deletions(-)
>
> diff --git a/package/network/utils/comgt/Makefile b/package/network/utils/comgt/Makefile
> index 9d99d64..4b6e6ea 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 5c69a64..f91665f 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 d1f8699..8f74e17 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 14b6347..df60fe8 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 { 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,21 @@ proto_ncm_setup() {
> return 1
> }
>
> - echo "Connected, starting DHCP on $ifname"
> + echo "Setting up $ifname"
>
> proto_init_update "$ifname" 1
> 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,12 +152,14 @@ proto_ncm_teardown() {
>
> local manufacturer disconnect
>
> - local device
> - json_get_vars device
> + local device profile
> + json_get_vars device profile
> +
> + [ -n "$profile" ] || profile=1
>
> - echo "Stopping network"
> + echo "Stopping network $interface"
>
> - 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 { print tolower($1); exit; }'`
> [ $? -ne 0 ] && {
> echo "Failed to get modem information"
> proto_notify_error "$interface" GETINFO_FAILED
> @@ -181,7 +174,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
>
More information about the Lede-dev
mailing list