modemmanager: move generally applicable functions to modemmanager.common
authorFlorian Eckert <fe@dev.tdt.de>
Wed, 17 Jan 2024 09:58:15 +0000 (10:58 +0100)
committerFlorian Eckert <fe@dev.tdt.de>
Fri, 19 Jan 2024 07:43:35 +0000 (08:43 +0100)
These moved functions are general functions. This is a preparatory
commit so that these moved functions can also be used in other
ModemManager scripts.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
net/modemmanager/files/10-report-down
net/modemmanager/files/modemmanager.common
net/modemmanager/files/modemmanager.proto

index 88b010cf064015e0fbd9b44ce1cce0d0a95c39e6..0ebe87de52ab2bf5f0497d69b520e21c92713e83 100755 (executable)
@@ -16,9 +16,8 @@ STATE="$4"
 
 [ "${STATE}" = "disconnected" ] || exit 0
 
-. /usr/share/ModemManager/modemmanager.common
 . /lib/netifd/netifd-proto.sh
-INCLUDE_ONLY=1 . /lib/netifd/proto/modemmanager.sh
+. /usr/share/ModemManager/modemmanager.common
 
 MODEM_STATUS=$(mmcli --modem="${MODEM_PATH}" --output-keyvalue)
 [ -n "${MODEM_STATUS}" ] || exit 1
index 2ba2036ce9281b61364ebbff598e1fb5fa11b0a3..4daffb2c1820187e35890b6d3d99672a6a21bf6f 100644 (file)
@@ -6,7 +6,6 @@
 
 . /lib/functions.sh
 . /lib/netifd/netifd-proto.sh
-INCLUDE_ONLY=1 . /lib/netifd/proto/modemmanager.sh
 
 ################################################################################
 # Runtime state
@@ -351,3 +350,69 @@ mm_report_events_from_cache() {
                mm_report_event_from_cache_line "${event_line}"
        done < ${MODEMMANAGER_EVENTS_CACHE}
 }
+
+# This method expects as first argument a list of key-value pairs, as returned by mmcli --output-keyvalue
+# The second argument must be exactly the name of the field to read
+#
+# Sample output:
+#     $ mmcli -m 0 -K
+#     modem.dbus-path                                 : /org/freedesktop/ModemManager1/Modem/0
+#     modem.generic.device-identifier                 : ed6eff2e3e0f90463da1c2a755b2acacd1335752
+#     modem.generic.manufacturer                      : Dell Inc.
+#     modem.generic.model                             : DW5821e Snapdragon X20 LTE
+#     modem.generic.revision                          : T77W968.F1.0.0.4.0.GC.009\n026
+#     modem.generic.carrier-configuration             : GCF
+#     modem.generic.carrier-configuration-revision    : 08E00009
+#     modem.generic.hardware-revision                 : DW5821e Snapdragon X20 LTE
+#     ....
+modemmanager_get_field() {
+       local list=$1
+       local field=$2
+       local value=""
+
+       [ -z "${list}" ] || [ -z "${field}" ] && return
+
+       # there is always at least a whitespace after each key, and we use that as part of the
+       # key matching we do (e.g. to avoid getting 'modem.generic.state-failed-reason' as a result
+       # when grepping for 'modem.generic.state'.
+       line=$(echo "${list}" | grep "${field} ")
+       value=$(echo ${line#*:})
+
+       # not found?
+       [ -n "${value}" ] || return 2
+
+       # only print value if set
+       [ "${value}" != "--" ] && echo "${value}"
+       return 0
+}
+
+# build a comma-separated list of values from the list
+modemmanager_get_multivalue_field() {
+       local list=$1
+       local field=$2
+       local value=""
+       local length idx item
+
+       [ -z "${list}" ] || [ -z "${field}" ] && return
+
+       length=$(modemmanager_get_field "${list}" "${field}.length")
+       [ -n "${length}" ] || return 0
+       [ "$length" -ge 1 ] || return 0
+
+       idx=1
+       while [ $idx -le "$length" ]; do
+               item=$(modemmanager_get_field "${list}" "${field}.value\[$idx\]")
+               [ -n "${item}" ] && [ "${item}" != "--" ] && {
+                       [ -n "${value}" ] && value="${value}, "
+                       value="${value}${item}"
+               }
+               idx=$((idx + 1))
+       done
+
+       # nothing built?
+       [ -n "${value}" ] || return 2
+
+       # only print value if set
+       echo "${value}"
+       return 0
+}
index 671f0db15beb47a0be54a692ba3e9380fbc93997..b059b4c59cadedc164ad2c917c4e80bde875a6b3 100755 (executable)
@@ -8,6 +8,7 @@
        . /lib/functions.sh
        . ../netifd-proto.sh
        . ./ppp.sh
+       . /usr/share/ModemManager/modemmanager.common
        init_proto "$@"
 }
 
@@ -24,72 +25,6 @@ cdr2mask ()
        echo "${1-0}"."${2-0}"."${3-0}"."${4-0}"
 }
 
-# This method expects as first argument a list of key-value pairs, as returned by mmcli --output-keyvalue
-# The second argument must be exactly the name of the field to read
-#
-# Sample output:
-#     $ mmcli -m 0 -K
-#     modem.dbus-path                                 : /org/freedesktop/ModemManager1/Modem/0
-#     modem.generic.device-identifier                 : ed6eff2e3e0f90463da1c2a755b2acacd1335752
-#     modem.generic.manufacturer                      : Dell Inc.
-#     modem.generic.model                             : DW5821e Snapdragon X20 LTE
-#     modem.generic.revision                          : T77W968.F1.0.0.4.0.GC.009\n026
-#     modem.generic.carrier-configuration             : GCF
-#     modem.generic.carrier-configuration-revision    : 08E00009
-#     modem.generic.hardware-revision                 : DW5821e Snapdragon X20 LTE
-#     ....
-modemmanager_get_field() {
-       local list=$1
-       local field=$2
-       local value=""
-
-       [ -z "${list}" ] || [ -z "${field}" ] && return
-
-       # there is always at least a whitespace after each key, and we use that as part of the
-       # key matching we do (e.g. to avoid getting 'modem.generic.state-failed-reason' as a result
-       # when grepping for 'modem.generic.state'.
-       line=$(echo "${list}" | grep "${field} ")
-       value=$(echo ${line#*:})
-
-       # not found?
-       [ -n "${value}" ] || return 2
-
-       # only print value if set
-       [ "${value}" != "--" ] && echo "${value}"
-       return 0
-}
-
-# build a comma-separated list of values from the list
-modemmanager_get_multivalue_field() {
-       local list=$1
-       local field=$2
-       local value=""
-       local length idx item
-
-       [ -z "${list}" ] || [ -z "${field}" ] && return
-
-       length=$(modemmanager_get_field "${list}" "${field}.length")
-       [ -n "${length}" ] || return 0
-       [ "$length" -ge 1 ] || return 0
-
-       idx=1
-       while [ $idx -le "$length" ]; do
-               item=$(modemmanager_get_field "${list}" "${field}.value\[$idx\]")
-               [ -n "${item}" ] && [ "${item}" != "--" ] && {
-                       [ -n "${value}" ] && value="${value}, "
-                       value="${value}${item}"
-               }
-               idx=$((idx + 1))
-       done
-
-       # nothing built?
-       [ -n "${value}" ] || return 2
-
-       # only print value if set
-       echo "${value}"
-       return 0
-}
-
 modemmanager_cleanup_connection() {
        local modemstatus="$1"