Hello community,

here is the log from the commit of package ofono for openSUSE:Factory checked 
in at 2018-10-15 09:46:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ofono (Old)
 and      /work/SRC/openSUSE:Factory/.ofono.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ofono"

Mon Oct 15 09:46:05 2018 rev:10 rq:641935 version:1.25

Changes:
--------
--- /work/SRC/openSUSE:Factory/ofono/ofono.changes      2018-06-19 
12:05:09.046718813 +0200
+++ /work/SRC/openSUSE:Factory/.ofono.new/ofono.changes 2018-10-15 
09:46:57.891135207 +0200
@@ -1,0 +2,10 @@
+Sun Oct 14 15:11:56 UTC 2018 - [email protected]
+
+- Update to version 1.25:
+  * Fix issue with handling GPRS context release.
+  * Fix issue with GPRS context shutdown and Huawei modems.
+  * Fix issue with roaming status report and QMI devices.
+  * Add support for voice call handling of U-Blox modems
+  * Add support for EUTRAN technology reporting.
+
+-------------------------------------------------------------------

Old:
----
  ofono-1.24.tar.xz
  ofono-1.24.tar.xz.sig

New:
----
  ofono-1.25.tar.xz
  ofono-1.25.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ofono.spec ++++++
--- /var/tmp/diff_new_pack.vcCEdO/_old  2018-10-15 09:47:02.479130095 +0200
+++ /var/tmp/diff_new_pack.vcCEdO/_new  2018-10-15 09:47:02.483130090 +0200
@@ -19,7 +19,7 @@
 
 
 Name:           ofono
-Version:        1.24
+Version:        1.25
 Release:        0
 Summary:        Mobile telephony application development framework
 License:        GPL-2.0-only

++++++ ofono-1.24.tar.xz -> ofono-1.25.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/AUTHORS new/ofono-1.25/AUTHORS
--- old/ofono-1.24/AUTHORS      2018-06-14 23:22:27.000000000 +0200
+++ new/ofono-1.25/AUTHORS      2018-09-29 10:33:43.000000000 +0200
@@ -135,3 +135,5 @@
 Bob Ham <[email protected]>
 Varun Gargi <[email protected]>
 Florent Beillonnet <[email protected]>
+Martin Hundebøll <[email protected]>
+Julien Tournier <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/ChangeLog new/ofono-1.25/ChangeLog
--- old/ofono-1.24/ChangeLog    2018-06-14 23:22:27.000000000 +0200
+++ new/ofono-1.25/ChangeLog    2018-09-29 10:33:43.000000000 +0200
@@ -1,3 +1,10 @@
+ver 1.25:
+       Fix issue with handling GPRS context release.
+       Fix issue with GPRS context shutdown and Huawei modems.
+       Fix issue with roaming status report and QMI devices.
+       Add support for voice call handling of U-Blox modems
+       Add support for EUTRAN technology reporting.
+
 ver 1.24:
        Fix issue with property changed signals and CDMA networks.
        Fix issue with handling SIM filesystem and SIM removal.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/Makefile.in new/ofono-1.25/Makefile.in
--- old/ofono-1.24/Makefile.in  2018-06-14 23:23:00.000000000 +0200
+++ new/ofono-1.25/Makefile.in  2018-09-29 10:34:16.000000000 +0200
@@ -1462,8 +1462,6 @@
 GLIB_CFLAGS = @GLIB_CFLAGS@
 GLIB_LIBS = @GLIB_LIBS@
 GREP = @GREP@
-GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
-GTHREAD_LIBS = @GTHREAD_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/config.h.in new/ofono-1.25/config.h.in
--- old/ofono-1.24/config.h.in  2018-06-14 23:22:53.000000000 +0200
+++ new/ofono-1.25/config.h.in  2018-09-29 10:34:09.000000000 +0200
@@ -40,9 +40,6 @@
    */
 #undef LT_OBJDIR
 
-/* Define if threading support is required */
-#undef NEED_THREADS
-
 /* Name of package */
 #undef PACKAGE
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/configure new/ofono-1.25/configure
--- old/ofono-1.24/configure    2018-06-14 23:22:56.000000000 +0200
+++ new/ofono-1.25/configure    2018-09-29 10:34:12.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ofono 1.24.
+# Generated by GNU Autoconf 2.69 for ofono 1.25.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@
 # Identity of this package.
 PACKAGE_NAME='ofono'
 PACKAGE_TARNAME='ofono'
-PACKAGE_VERSION='1.24'
-PACKAGE_STRING='ofono 1.24'
+PACKAGE_VERSION='1.25'
+PACKAGE_STRING='ofono 1.25'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -681,8 +681,6 @@
 DBUS_CONFDIR
 DBUS_LIBS
 DBUS_CFLAGS
-GTHREAD_LIBS
-GTHREAD_CFLAGS
 GLIB_LIBS
 GLIB_CFLAGS
 CPP
@@ -819,7 +817,6 @@
 enable_optimization
 enable_debug
 enable_pie
-enable_threads
 with_dbusconfdir
 with_dbusdatadir
 with_systemdunitdir
@@ -856,8 +853,6 @@
 CPP
 GLIB_CFLAGS
 GLIB_LIBS
-GTHREAD_CFLAGS
-GTHREAD_LIBS
 DBUS_CFLAGS
 DBUS_LIBS
 UDEV_CFLAGS
@@ -1406,7 +1401,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures ofono 1.24 to adapt to many kinds of systems.
+\`configure' configures ofono 1.25 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1476,7 +1471,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of ofono 1.24:";;
+     short | recursive ) echo "Configuration of ofono 1.25:";;
    esac
   cat <<\_ACEOF
 
@@ -1501,7 +1496,6 @@
   --disable-optimization  disable code optimization through compiler
   --enable-debug          enable compiling with debugging information
   --enable-pie            enable position independent executables flag
-  --enable-threads        enable threading support
   --enable-test           enable test/example scripts
   --enable-tools          enable testing tools
   --enable-dundee         enable dialup deamon support
@@ -1550,10 +1544,6 @@
   CPP         C preprocessor
   GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config
   GLIB_LIBS   linker flags for GLIB, overriding pkg-config
-  GTHREAD_CFLAGS
-              C compiler flags for GTHREAD, overriding pkg-config
-  GTHREAD_LIBS
-              linker flags for GTHREAD, overriding pkg-config
   DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config
   DBUS_LIBS   linker flags for DBUS, overriding pkg-config
   UDEV_CFLAGS C compiler flags for UDEV, overriding pkg-config
@@ -1630,7 +1620,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-ofono configure 1.24
+ofono configure 1.25
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1908,7 +1898,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by ofono $as_me 1.24, which was
+It was created by ofono $as_me 1.25, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2772,7 +2762,7 @@
 
 # Define the identity of the package.
  PACKAGE='ofono'
- VERSION='1.24'
+ VERSION='1.25'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -12545,12 +12535,6 @@
 fi
 
 
-# Check whether --enable-threads was given.
-if test "${enable_threads+set}" = set; then :
-  enableval=$enable_threads; enable_threads=${enableval}
-fi
-
-
 ac_fn_c_check_func "$LINENO" "signalfd" "ac_cv_func_signalfd"
 if test "x$ac_cv_func_signalfd" = xyes; then :
   dummy=yes
@@ -12676,85 +12660,6 @@
 
 
 
-if (test "${enable_threads}" = "yes"); then
-
-$as_echo "#define NEED_THREADS 1" >>confdefs.h
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTHREAD" >&5
-$as_echo_n "checking for GTHREAD... " >&6; }
-
-if test -n "$GTHREAD_CFLAGS"; then
-    pkg_cv_GTHREAD_CFLAGS="$GTHREAD_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"gthread-2.0 >= 2.16\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gthread-2.0 >= 2.16") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GTHREAD_CFLAGS=`$PKG_CONFIG --cflags "gthread-2.0 >= 2.16" 
2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$GTHREAD_LIBS"; then
-    pkg_cv_GTHREAD_LIBS="$GTHREAD_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"gthread-2.0 >= 2.16\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gthread-2.0 >= 2.16") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GTHREAD_LIBS=`$PKG_CONFIG --libs "gthread-2.0 >= 2.16" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-               GTHREAD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "gthread-2.0 >= 2.16" 2>&1`
-        else
-               GTHREAD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"gthread-2.0 >= 2.16" 2>&1`
-        fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$GTHREAD_PKG_ERRORS" >&5
-
-       as_fn_error $? "GThread >= 2.16 is required" "$LINENO" 5
-elif test $pkg_failed = untried; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       as_fn_error $? "GThread >= 2.16 is required" "$LINENO" 5
-else
-       GTHREAD_CFLAGS=$pkg_cv_GTHREAD_CFLAGS
-       GTHREAD_LIBS=$pkg_cv_GTHREAD_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-       dummy=yes
-fi
-       GLIB_CFLAGS="$GLIB_CFLAGS $GTHREAD_CFLAGS"
-       GLIB_LIBS="$GLIB_LIBS $GTHREAD_LIBS"
-fi
-
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5
@@ -14053,7 +13958,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by ofono $as_me 1.24, which was
+This file was extended by ofono $as_me 1.25, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -14119,7 +14024,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-ofono config.status 1.24
+ofono config.status 1.25
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/configure.ac new/ofono-1.25/configure.ac
--- old/ofono-1.24/configure.ac 2018-06-14 23:22:27.000000000 +0200
+++ new/ofono-1.25/configure.ac 2018-09-29 10:33:43.000000000 +0200
@@ -1,5 +1,5 @@
 AC_PREREQ(2.60)
-AC_INIT(ofono, 1.24)
+AC_INIT(ofono, 1.25)
 
 AM_INIT_AUTOMAKE([foreign subdir-objects color-tests])
 AC_CONFIG_HEADERS(config.h)
@@ -54,9 +54,6 @@
        fi
 ])
 
-AC_ARG_ENABLE(threads, AC_HELP_STRING([--enable-threads],
-               [enable threading support]), [enable_threads=${enableval}])
-
 AC_CHECK_FUNC(signalfd, dummy=yes,
                        AC_MSG_ERROR(signalfd support is required))
 
@@ -68,14 +65,6 @@
 AC_SUBST(GLIB_CFLAGS)
 AC_SUBST(GLIB_LIBS)
 
-if (test "${enable_threads}" = "yes"); then
-       AC_DEFINE(NEED_THREADS, 1, [Define if threading support is required])
-       PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= 2.16, dummy=yes,
-                               AC_MSG_ERROR(GThread >= 2.16 is required))
-       GLIB_CFLAGS="$GLIB_CFLAGS $GTHREAD_CFLAGS"
-       GLIB_LIBS="$GLIB_LIBS $GTHREAD_LIBS"
-fi
-
 PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.4, dummy=yes,
                                AC_MSG_ERROR(D-Bus >= 1.4 is required))
 AC_SUBST(DBUS_CFLAGS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/doc/location-reporting-api.txt 
new/ofono-1.25/doc/location-reporting-api.txt
--- old/ofono-1.24/doc/location-reporting-api.txt       2012-09-11 
12:09:25.000000000 +0200
+++ new/ofono-1.25/doc/location-reporting-api.txt       2018-09-29 
10:33:43.000000000 +0200
@@ -13,7 +13,7 @@
                filedescriptor Request()
 
                        Asks to turn ON the NMEA stream and supplies the
-                       gps device file descriptor. The external cliend should
+                       gps device file descriptor. The external client should
                        use the file descriptor to receive the NMEA data.
 
                        Possible Errors: [service].Error.InProgress
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/drivers/atmodem/cbs.c 
new/ofono-1.25/drivers/atmodem/cbs.c
--- old/ofono-1.24/drivers/atmodem/cbs.c        2018-06-14 23:22:27.000000000 
+0200
+++ new/ofono-1.25/drivers/atmodem/cbs.c        2018-09-29 10:33:43.000000000 
+0200
@@ -166,6 +166,7 @@
        switch (data->vendor) {
        case OFONO_VENDOR_GOBI:
        case OFONO_VENDOR_QUALCOMM_MSM:
+       case OFONO_VENDOR_GEMALTO:
                g_at_chat_send(data->chat, "AT+CSCB=0", none_prefix,
                                NULL, NULL, NULL);
                break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/drivers/atmodem/gprs-context.c 
new/ofono-1.25/drivers/atmodem/gprs-context.c
--- old/ofono-1.24/drivers/atmodem/gprs-context.c       2017-10-05 
16:32:37.000000000 +0200
+++ new/ofono-1.25/drivers/atmodem/gprs-context.c       2018-09-29 
10:33:43.000000000 +0200
@@ -461,10 +461,19 @@
 static void at_gprs_context_remove(struct ofono_gprs_context *gc)
 {
        struct gprs_context_data *gcd = ofono_gprs_context_get_data(gc);
+       GAtIO *io;
 
        DBG("");
 
        if (gcd->state != STATE_IDLE && gcd->ppp) {
+               if ((gcd->vendor == OFONO_VENDOR_HUAWEI) && gcd->chat) {
+                       /* immediately send escape sequence */
+                       io = g_at_chat_get_io(gcd->chat);
+
+                       if (io)
+                               g_at_io_write(io, "+++", 3);
+               }
+
                g_at_ppp_unref(gcd->ppp);
                g_at_chat_resume(gcd->chat);
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/drivers/atmodem/network-registration.c 
new/ofono-1.25/drivers/atmodem/network-registration.c
--- old/ofono-1.24/drivers/atmodem/network-registration.c       2018-06-14 
23:22:27.000000000 +0200
+++ new/ofono-1.25/drivers/atmodem/network-registration.c       2018-09-29 
10:33:43.000000000 +0200
@@ -228,6 +228,10 @@
        if ((status == 1 || status == 5) && (tech == -1))
                tech = nd->tech;
 
+       /* 6-10 is EUTRAN, with 8 being emergency bearer case */
+       if (status > 5 && tech == -1)
+               tech = ACCESS_TECHNOLOGY_EUTRAN;
+
        cb(&error, status, lac, ci, tech, cbd->data);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/drivers/atmodem/sim.c 
new/ofono-1.25/drivers/atmodem/sim.c
--- old/ofono-1.24/drivers/atmodem/sim.c        2018-06-14 23:22:27.000000000 
+0200
+++ new/ofono-1.25/drivers/atmodem/sim.c        2018-09-29 10:33:43.000000000 
+0200
@@ -66,10 +66,11 @@
 static const char *cpinr_prefixes[] = { "+CPINR:", "+CPINRE:", NULL };
 static const char *epin_prefix[] = { "*EPIN:", NULL };
 static const char *simcom_spic_prefix[] = { "+SPIC:", NULL };
-static const char *cinterion_spic_prefix[] = { "^SPIC:", NULL };
+static const char *gemalto_spic_prefix[] = { "^SPIC:", NULL };
 static const char *pct_prefix[] = { "#PCT:", NULL };
 static const char *pnnm_prefix[] = { "+PNNM:", NULL };
 static const char *qpinc_prefix[] = { "+QPINC:", NULL };
+static const char *qtrpin_prefix[] = { "+QTRPIN:", NULL };
 static const char *upincnt_prefix[] = { "+UPINCNT:", NULL };
 static const char *cuad_prefix[] = { "+CUAD:", NULL };
 static const char *ccho_prefix[] = { "+CCHO:", NULL };
@@ -982,6 +983,49 @@
        CALLBACK_WITH_FAILURE(cb, NULL, cbd->data);
 }
 
+static void at_qtrpin_cb(gboolean ok, GAtResult *result, gpointer user_data)
+{
+       struct cb_data *cbd = user_data;
+       ofono_sim_pin_retries_cb_t cb = cbd->cb;
+       const char *final = g_at_result_final_response(result);
+       GAtResultIter iter;
+       struct ofono_error error;
+       int retries[OFONO_SIM_PASSWORD_INVALID];
+       size_t i;
+
+       decode_at_error(&error, final);
+
+       if (!ok) {
+               cb(&error, NULL, cbd->data);
+               return;
+       }
+
+       for (i = 0; i < OFONO_SIM_PASSWORD_INVALID; i++)
+               retries[i] = -1;
+
+       g_at_result_iter_init(&iter, result);
+
+       while (g_at_result_iter_next(&iter, "+QTRPIN:")) {
+               int pin, pin2, puk, puk2;
+
+               if (!g_at_result_iter_next_number(&iter, &pin))
+                       continue;
+               if (!g_at_result_iter_next_number(&iter, &pin2))
+                       continue;
+               if (!g_at_result_iter_next_number(&iter, &puk))
+                       continue;
+               if (!g_at_result_iter_next_number(&iter, &puk2))
+                       continue;
+
+               retries[OFONO_SIM_PASSWORD_SIM_PIN] = pin;
+               retries[OFONO_SIM_PASSWORD_SIM_PUK] = puk;
+               retries[OFONO_SIM_PASSWORD_SIM_PIN2] = pin2;
+               retries[OFONO_SIM_PASSWORD_SIM_PUK2] = puk2;
+       }
+
+       cb(&error, retries, cbd->data);
+}
+
 static void at_qpinc_cb(gboolean ok, GAtResult *result, gpointer user_data)
 {
        struct cb_data *cbd = user_data;
@@ -1066,7 +1110,7 @@
        CALLBACK_WITH_FAILURE(cb, NULL, cbd->data);
 }
 
-static void cinterion_spic_cb(gboolean ok, GAtResult *result,
+static void gemalto_spic_cb(gboolean ok, GAtResult *result,
                                                        gpointer user_data)
 {
        struct cb_data *cbd = user_data;
@@ -1172,15 +1216,20 @@
                                        at_qpinc_cb, cbd, g_free) > 0)
                        return;
                break;
+       case OFONO_VENDOR_QUECTEL_M95:
+               if (g_at_chat_send(sd->chat, "AT+QTRPIN", qtrpin_prefix,
+                                       at_qtrpin_cb, cbd, g_free) > 0)
+                       return;
+               break;
        case OFONO_VENDOR_UBLOX:
        case OFONO_VENDOR_UBLOX_TOBY_L2:
                if (g_at_chat_send(sd->chat, "AT+UPINCNT", upincnt_prefix,
                                        upincnt_cb, cbd, g_free) > 0)
                        return;
                break;
-       case OFONO_VENDOR_CINTERION:
-               if (g_at_chat_send(sd->chat, "AT^SPIC", cinterion_spic_prefix,
-                                       cinterion_spic_cb, cbd, g_free) > 0)
+       case OFONO_VENDOR_GEMALTO:
+               if (g_at_chat_send(sd->chat, "AT^SPIC", gemalto_spic_prefix,
+                                       gemalto_spic_cb, cbd, g_free) > 0)
                        return;
                break;
        default:
@@ -1305,6 +1354,7 @@
        case OFONO_VENDOR_HUAWEI:
        case OFONO_VENDOR_SIMCOM:
        case OFONO_VENDOR_SIERRA:
+       case OFONO_VENDOR_QUECTEL_M95:
                /*
                 * On ZTE modems, after pin is entered, SIM state is checked
                 * by polling CPIN as their modem doesn't provide unsolicited
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/drivers/atmodem/sms.c 
new/ofono-1.25/drivers/atmodem/sms.c
--- old/ofono-1.24/drivers/atmodem/sms.c        2017-05-05 08:22:20.000000000 
+0200
+++ new/ofono-1.25/drivers/atmodem/sms.c        2018-09-29 10:33:43.000000000 
+0200
@@ -220,9 +220,16 @@
        int len;
 
        if (mms) {
-               snprintf(buf, sizeof(buf), "AT+CMMS=%d", mms);
-               g_at_chat_send(data->chat, buf, none_prefix,
-                               NULL, NULL, NULL);
+               switch (data->vendor) {
+               case OFONO_VENDOR_GEMALTO:
+                       /* no mms support */
+                       break;
+               default:
+                       snprintf(buf, sizeof(buf), "AT+CMMS=%d", mms);
+                       g_at_chat_send(data->chat, buf, none_prefix,
+                                       NULL, NULL, NULL);
+                       break;
+               }
        }
 
        len = snprintf(buf, sizeof(buf), "AT+CMGS=%d\r", tpdu_len);
@@ -329,7 +336,7 @@
        /* We must acknowledge the PDU using CNMA */
        if (data->cnma_ack_pdu) {
                switch (data->vendor) {
-               case OFONO_VENDOR_CINTERION:
+               case OFONO_VENDOR_GEMALTO:
                        snprintf(buf, sizeof(buf), "AT+CNMA=1");
                        break;
                default:
@@ -411,9 +418,25 @@
                goto err;
 
        switch (data->vendor) {
-       case OFONO_VENDOR_CINTERION:
-               if (!g_at_result_iter_next_number(&iter, &tpdu_len))
-                       goto err;
+       case OFONO_VENDOR_GEMALTO:
+               if (!g_at_result_iter_next_number(&iter, &tpdu_len)) {
+                       /*
+                        * Some Gemalto modems (ALS3,PLS8...), act in
+                        * accordance with 3GPP 27.005.  So we need to skip
+                        * the first (<alpha>) field
+                        *  \r\n+CMT: ,23\r\nCAFECAFECAFE... ...\r\n
+                        *             ^------- PDU length
+                        */
+                       DBG("Retrying to find the PDU length");
+
+                       if (!g_at_result_iter_skip_next(&iter))
+                               goto err;
+
+                       /* Next attempt at finding the PDU length. */
+                       if (!g_at_result_iter_next_number(&iter, &tpdu_len))
+                               goto err;
+               }
+
                break;
        default:
                if (!g_at_result_iter_skip_next(&iter))
@@ -439,6 +462,7 @@
 
        if (data->vendor != OFONO_VENDOR_SIMCOM)
                at_ack_delivery(sms);
+       return;
 
 err:
        ofono_error("Unable to parse CMT notification");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/drivers/atmodem/vendor.h 
new/ofono-1.25/drivers/atmodem/vendor.h
--- old/ofono-1.24/drivers/atmodem/vendor.h     2017-10-05 16:32:37.000000000 
+0200
+++ new/ofono-1.25/drivers/atmodem/vendor.h     2018-09-29 10:33:43.000000000 
+0200
@@ -44,8 +44,10 @@
        OFONO_VENDOR_WAVECOM_Q2XXX,
        OFONO_VENDOR_ALCATEL,
        OFONO_VENDOR_QUECTEL,
+       OFONO_VENDOR_QUECTEL_M95,
        OFONO_VENDOR_UBLOX,
        OFONO_VENDOR_UBLOX_TOBY_L2,
        OFONO_VENDOR_CINTERION,
        OFONO_VENDOR_XMM,
+       OFONO_VENDOR_GEMALTO,
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/drivers/mbimmodem/mbimmodem.c 
new/ofono-1.25/drivers/mbimmodem/mbimmodem.c
--- old/ofono-1.24/drivers/mbimmodem/mbimmodem.c        2018-01-21 
18:59:31.000000000 +0100
+++ new/ofono-1.25/drivers/mbimmodem/mbimmodem.c        2018-09-29 
10:33:43.000000000 +0200
@@ -33,7 +33,7 @@
        mbim_devinfo_init();
        mbim_sim_init();
        mbim_netreg_init();
-       mbim_sms_exit();
+       mbim_sms_init();
        mbim_gprs_init();
        mbim_gprs_context_init();
        return 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/drivers/qmimodem/network-registration.c 
new/ofono-1.25/drivers/qmimodem/network-registration.c
--- old/ofono-1.24/drivers/qmimodem/network-registration.c      2018-01-21 
18:59:31.000000000 +0100
+++ new/ofono-1.25/drivers/qmimodem/network-registration.c      2018-09-29 
10:33:43.000000000 +0200
@@ -42,6 +42,13 @@
        struct qmi_service *nas;
        struct ofono_network_operator operator;
        uint8_t current_rat;
+       bool is_roaming;
+};
+
+enum roaming_status {
+       ROAMING_STATUS_OFF,
+       ROAMING_STATUS_ON,
+       ROAMING_STATUS_NO_CHANGE,
 };
 
 static bool extract_ss_info_time(
@@ -78,11 +85,12 @@
 
 static bool extract_ss_info(struct qmi_result *result, int *status,
                                int *lac, int *cellid, int *tech,
+                               enum roaming_status *roaming,
                                struct ofono_network_operator *operator)
 {
        const struct qmi_nas_serving_system *ss;
        const struct qmi_nas_current_plmn *plmn;
-       uint8_t i, roaming;
+       uint8_t i, roaming_status;
        uint16_t value16, len, opname_len;
        uint32_t value32;
 
@@ -104,10 +112,13 @@
                *tech = qmi_nas_rat_to_tech(ss->radio_if[i]);
        }
 
+       *roaming = ROAMING_STATUS_NO_CHANGE;
        if (qmi_result_get_uint8(result, QMI_NAS_RESULT_ROAMING_STATUS,
-                                                               &roaming)) {
-               if (ss->status == 1 && roaming == 0)
-                       *status = NETWORK_REGISTRATION_STATUS_ROAMING;
+                                                       &roaming_status)) {
+               if (roaming_status == 0)
+                       *roaming = ROAMING_STATUS_ON;
+               else if (roaming_status == 1)
+                       *roaming = ROAMING_STATUS_OFF;
        }
 
        if (!operator)
@@ -149,7 +160,8 @@
        else
                *cellid = -1;
 
-       DBG("lac %d cellid %d tech %d", *lac, *cellid, *tech);
+       DBG("roaming %u lac %d cellid %d tech %d", *roaming, *lac, *cellid,
+                                                                       *tech);
 
        return true;
 }
@@ -160,16 +172,26 @@
        struct ofono_network_time net_time;
        struct netreg_data *data = ofono_netreg_get_data(netreg);
        int status, lac, cellid, tech;
+       enum roaming_status roaming;
 
        DBG("");
 
        if (extract_ss_info_time(result, &net_time))
                ofono_netreg_time_notify(netreg, &net_time);
 
-       if (!extract_ss_info(result, &status, &lac, &cellid, &tech,
+       if (!extract_ss_info(result, &status, &lac, &cellid, &tech, &roaming,
                                                        &data->operator))
                return;
 
+       if (roaming == ROAMING_STATUS_ON)
+               data->is_roaming = true;
+       else if (roaming == ROAMING_STATUS_OFF)
+               data->is_roaming = false;
+
+       if (status == QMI_NAS_REGISTRATION_STATE_REGISTERED &&
+                                                       data->is_roaming)
+               status = NETWORK_REGISTRATION_STATUS_ROAMING;
+
        ofono_netreg_status_notify(netreg, status, lac, cellid, tech);
 }
 
@@ -179,6 +201,7 @@
        ofono_netreg_status_cb_t cb = cbd->cb;
        struct netreg_data *data = cbd->user;
        int status, lac, cellid, tech;
+       enum roaming_status roaming;
 
        DBG("");
 
@@ -187,12 +210,21 @@
                return;
        }
 
-       if (!extract_ss_info(result, &status, &lac, &cellid, &tech,
+       if (!extract_ss_info(result, &status, &lac, &cellid, &tech, &roaming,
                                                        &data->operator)) {
                CALLBACK_WITH_FAILURE(cb, -1, -1, -1, -1, cbd->data);
                return;
        }
 
+       if (roaming == ROAMING_STATUS_ON)
+               data->is_roaming = true;
+       else if (roaming == ROAMING_STATUS_OFF)
+               data->is_roaming = false;
+
+       if (status == QMI_NAS_REGISTRATION_STATE_REGISTERED &&
+                                                       data->is_roaming)
+               status = NETWORK_REGISTRATION_STATUS_ROAMING;
+
        CALLBACK_WITH_SUCCESS(cb, status, lac, cellid, tech, cbd->data);
 }
 
@@ -580,6 +612,7 @@
        data->operator.tech = -1;
 
        data->current_rat = QMI_NAS_NETWORK_RAT_NO_CHANGE;
+       data->is_roaming = false;
 
        ofono_netreg_set_data(netreg, data);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/include/lte.h new/ofono-1.25/include/lte.h
--- old/ofono-1.24/include/lte.h        2018-06-14 23:22:27.000000000 +0200
+++ new/ofono-1.25/include/lte.h        2018-09-29 10:33:43.000000000 +0200
@@ -61,6 +61,8 @@
 
 void *ofono_lte_get_data(const struct ofono_lte *lte);
 
+struct ofono_modem *ofono_lte_get_modem(const struct ofono_lte *lte);
+
 #ifdef __cplusplus
 }
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/include/modem.h 
new/ofono-1.25/include/modem.h
--- old/ofono-1.24/include/modem.h      2018-06-14 23:22:27.000000000 +0200
+++ new/ofono-1.25/include/modem.h      2018-09-29 10:33:43.000000000 +0200
@@ -31,6 +31,7 @@
 struct ofono_modem;
 struct ofono_gprs;
 struct ofono_sim;
+struct ofono_voicecall;
 
 enum ofono_modem_type {
        OFONO_MODEM_TYPE_HARDWARE = 0,
@@ -84,6 +85,7 @@
 const char *ofono_modem_get_path(struct ofono_modem *modem);
 struct ofono_sim *ofono_modem_get_sim(struct ofono_modem *modem);
 struct ofono_gprs *ofono_modem_get_gprs(struct ofono_modem *modem);
+struct ofono_voicecall *ofono_modem_get_voicecall(struct ofono_modem *modem);
 
 void ofono_modem_set_data(struct ofono_modem *modem, void *data);
 void *ofono_modem_get_data(struct ofono_modem *modem);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/include/types.h 
new/ofono-1.25/include/types.h
--- old/ofono-1.24/include/types.h      2016-05-03 19:04:11.000000000 +0200
+++ new/ofono-1.25/include/types.h      2018-09-29 10:33:43.000000000 +0200
@@ -56,6 +56,7 @@
        OFONO_ERROR_TYPE_CEER,
        OFONO_ERROR_TYPE_SIM,
        OFONO_ERROR_TYPE_FAILURE,
+       OFONO_ERROR_TYPE_ERRNO
 };
 
 enum ofono_disconnect_reason {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/include/voicecall.h 
new/ofono-1.25/include/voicecall.h
--- old/ofono-1.24/include/voicecall.h  2018-03-10 17:16:16.000000000 +0100
+++ new/ofono-1.25/include/voicecall.h  2018-09-29 10:33:43.000000000 +0200
@@ -160,6 +160,8 @@
  */
 void ofono_voicecall_mpty_hint(struct ofono_voicecall *vc, unsigned int ids);
 
+struct ofono_modem *ofono_voicecall_get_modem(struct ofono_voicecall *vc);
+
 int ofono_voicecall_driver_register(const struct ofono_voicecall_driver *d);
 void ofono_voicecall_driver_unregister(const struct ofono_voicecall_driver *d);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/plugins/gemalto.c 
new/ofono-1.25/plugins/gemalto.c
--- old/ofono-1.24/plugins/gemalto.c    2018-06-14 23:22:27.000000000 +0200
+++ new/ofono-1.25/plugins/gemalto.c    2018-09-29 10:33:43.000000000 +0200
@@ -571,7 +571,7 @@
 
        ofono_devinfo_create(modem, 0, "atmodem", data->app);
        ofono_location_reporting_create(modem, 0, "gemaltomodem", data->app);
-       data->sim = ofono_sim_create(modem, OFONO_VENDOR_CINTERION, "atmodem",
+       data->sim = ofono_sim_create(modem, OFONO_VENDOR_GEMALTO, "atmodem",
                                                data->app);
 
        if (data->sim && data->have_sim == TRUE)
@@ -589,7 +589,7 @@
 
        ofono_phonebook_create(modem, 0, "atmodem", data->app);
 
-       ofono_sms_create(modem, OFONO_VENDOR_CINTERION, "atmodem", data->app);
+       ofono_sms_create(modem, OFONO_VENDOR_GEMALTO, "atmodem", data->app);
 
        gprs = ofono_gprs_create(modem, 0, "atmodem", data->app);
        gc = ofono_gprs_context_create(modem, 0, "atmodem", data->mdm);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/plugins/huawei.c 
new/ofono-1.25/plugins/huawei.c
--- old/ofono-1.24/plugins/huawei.c     2017-05-05 08:22:20.000000000 +0200
+++ new/ofono-1.25/plugins/huawei.c     2018-09-29 10:33:43.000000000 +0200
@@ -875,7 +875,7 @@
 
                data->gprs = ofono_gprs_create(modem, OFONO_VENDOR_HUAWEI,
                                                "atmodem", data->pcui);
-               data->gc = ofono_gprs_context_create(modem, 0,
+               data->gc = ofono_gprs_context_create(modem, OFONO_VENDOR_HUAWEI,
                                                "atmodem", data->modem);
 
                if (data->gprs && data->gc)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/plugins/mbim.c 
new/ofono-1.25/plugins/mbim.c
--- old/ofono-1.24/plugins/mbim.c       2018-06-14 23:22:27.000000000 +0200
+++ new/ofono-1.25/plugins/mbim.c       2018-09-29 10:33:43.000000000 +0200
@@ -422,8 +422,6 @@
 
 static int mbim_init(void)
 {
-       l_debug("------------------->Foobar");
-
        return ofono_modem_driver_register(&mbim_driver);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/plugins/ublox.c 
new/ofono-1.25/plugins/ublox.c
--- old/ofono-1.24/plugins/ublox.c      2018-06-14 23:22:27.000000000 +0200
+++ new/ofono-1.25/plugins/ublox.c      2018-09-29 10:33:43.000000000 +0200
@@ -40,6 +40,7 @@
 #include <ofono/gprs-context.h>
 #include <ofono/netmon.h>
 #include <ofono/lte.h>
+#include <ofono/voicecall.h>
 
 #include <drivers/atmodem/atutil.h>
 #include <drivers/atmodem/vendor.h>
@@ -286,6 +287,14 @@
        DBG("%p", modem);
 
        ofono_devinfo_create(modem, 0, "atmodem", data->aux);
+       /*
+        * Call support is technically possible only after sim insertion
+        * with the module online. However the EMERGENCY_SETUP procedure of
+        * the 3GPP TS_24.008 is triggered by the same AT command,
+        * and namely 'ATD112;' and 'ATD911;'. Therefore it makes sense to
+        * add the voice support as soon as possible.
+        */
+       ofono_voicecall_create(modem, 0, "atmodem", data->aux);
        sim = ofono_sim_create(modem, data->vendor_family, "atmodem",
                                        data->aux);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/plugins/udevng.c 
new/ofono-1.25/plugins/udevng.c
--- old/ofono-1.24/plugins/udevng.c     2018-06-14 23:22:27.000000000 +0200
+++ new/ofono-1.25/plugins/udevng.c     2018-09-29 10:33:43.000000000 +0200
@@ -233,10 +233,11 @@
                }
        }
 
+       DBG("qmi=%s net=%s mdm=%s gps=%s diag=%s", qmi, net, mdm, gps, diag);
+
        if (qmi == NULL || mdm == NULL || net == NULL)
                return FALSE;
 
-       DBG("qmi=%s net=%s mdm=%s gps=%s diag=%s", qmi, net, mdm, gps, diag);
 
        ofono_modem_set_string(modem->modem, "Device", qmi);
        ofono_modem_set_string(modem->modem, "Modem", mdm);
@@ -710,7 +711,8 @@
        return TRUE;
 }
 
-static gboolean setup_sim900(struct modem_info *modem)
+/* TODO: Not used as we have no simcom driver */
+static gboolean setup_simcom(struct modem_info *modem)
 {
        const char *mdm = NULL, *aux = NULL, *gps = NULL, *diag = NULL;
        GSList *list;
@@ -1280,7 +1282,7 @@
        { "nokia",      setup_nokia     },
        { "telit",      setup_telit,    "device/interface"      },
        { "telitqmi",   setup_telitqmi  },
-       { "sim900",     setup_sim900    },
+       { "simcom",     setup_simcom    },
        { "sim7100",    setup_sim7100   },
        { "zte",        setup_zte       },
        { "icera",      setup_icera     },
@@ -1379,11 +1381,19 @@
        const char *devpath = user_data;
        GSList *list;
 
-       for (list = modem->devices; list; list = list->next) {
-               struct device_info *info = list->data;
+       switch (modem->type) {
+       case MODEM_TYPE_USB:
+               for (list = modem->devices; list; list = list->next) {
+                       struct device_info *info = list->data;
 
-               if (g_strcmp0(info->devpath, devpath) == 0)
+                       if (g_strcmp0(info->devpath, devpath) == 0)
+                               return TRUE;
+               }
+               break;
+       case MODEM_TYPE_SERIAL:
+               if (g_strcmp0(modem->serial->devpath, devpath) == 0)
                        return TRUE;
+               break;
        }
 
        return FALSE;
@@ -1645,7 +1655,7 @@
        { "alcatel",    "option",       "1bbb", "0017"  },
        { "novatel",    "option",       "1410"          },
        { "zte",        "option",       "19d2"          },
-       { "sim900",     "option",       "05c6", "9000"  },
+       { "simcom",     "option",       "05c6", "9000"  },
        { "sim7100",    "option",       "1e0e", "9001"  },
        { "telit",      "usbserial",    "1bc7"          },
        { "telit",      "option",       "1bc7"          },
@@ -1732,6 +1742,9 @@
 
                DBG("%s [%s:%s]", drv, vendor, model);
 
+               if (vendor == NULL || model == NULL)
+                       return;
+
                for (i = 0; vendor_list[i].driver; i++) {
                        if (g_str_equal(vendor_list[i].drv, drv) == FALSE)
                                continue;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/src/dbus.c new/ofono-1.25/src/dbus.c
--- old/ofono-1.24/src/dbus.c   2018-01-21 18:59:31.000000000 +0100
+++ new/ofono-1.25/src/dbus.c   2018-09-29 10:33:43.000000000 +0200
@@ -24,6 +24,7 @@
 #endif
 
 #include <glib.h>
+#include <errno.h>
 #include <gdbus.h>
 
 #include "ofono.h"
@@ -37,7 +38,7 @@
        DBusMessage *(*ofono_error_func)(DBusMessage *);
 };
 
-struct error_mapping_entry cme_errors_mapping[] = {
+static const struct error_mapping_entry cme_errors_mapping[] = {
        { 3,    __ofono_error_not_allowed },
        { 4,    __ofono_error_not_supported },
        { 16,   __ofono_error_incorrect_password },
@@ -45,6 +46,16 @@
        { 31,   __ofono_error_timed_out },
        { 32,   __ofono_error_access_denied },
        { 50,   __ofono_error_invalid_args },
+       { }
+};
+
+static const struct error_mapping_entry errno_errors_mapping[] = {
+       { EACCES,      __ofono_error_access_denied },
+       { EOPNOTSUPP,  __ofono_error_not_supported },
+       { ENOSYS,      __ofono_error_not_implemented },
+       { ETIMEDOUT,   __ofono_error_timed_out },
+       { EINPROGRESS, __ofono_error_busy },
+       { }
 };
 
 static void append_variant(DBusMessageIter *iter,
@@ -419,26 +430,31 @@
                                        " network");
 }
 
+static DBusMessage *__ofono_map_error(const struct error_mapping_entry *map,
+                                               int error, DBusMessage *msg)
+{
+       const struct error_mapping_entry *e;
+
+       for (e = map; e->ofono_error_func; e++)
+               if (e->error == error)
+                       return e->ofono_error_func(msg);
+
+       return __ofono_error_failed(msg);
+}
+
 DBusMessage *__ofono_error_from_error(const struct ofono_error *error,
                                                DBusMessage *msg)
 {
-       struct error_mapping_entry *e;
-       int maxentries;
-       int i;
-
        switch (error->type) {
        case OFONO_ERROR_TYPE_CME:
-               e = cme_errors_mapping;
-               maxentries = sizeof(cme_errors_mapping) /
-                                       sizeof(struct error_mapping_entry);
-               for (i = 0; i < maxentries; i++)
-                       if (e[i].error == error->error)
-                               return e[i].ofono_error_func(msg);
-               break;
+               return __ofono_map_error(cme_errors_mapping, error->error, msg);
        case OFONO_ERROR_TYPE_CMS:
                return __ofono_error_failed(msg);
        case OFONO_ERROR_TYPE_CEER:
                return __ofono_error_failed(msg);
+       case OFONO_ERROR_TYPE_ERRNO:
+               return __ofono_map_error(errno_errors_mapping,
+                                               ABS(error->error), msg);
        default:
                return __ofono_error_failed(msg);
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/src/emulator.c 
new/ofono-1.25/src/emulator.c
--- old/ofono-1.24/src/emulator.c       2016-05-03 19:04:11.000000000 +0200
+++ new/ofono-1.25/src/emulator.c       2018-09-29 10:33:43.000000000 +0200
@@ -1347,6 +1347,7 @@
        case OFONO_ERROR_TYPE_CEER:
        case OFONO_ERROR_TYPE_SIM:
        case OFONO_ERROR_TYPE_FAILURE:
+       case OFONO_ERROR_TYPE_ERRNO:
 failure:
                g_at_server_send_final(em->server, G_AT_SERVER_RESULT_ERROR);
                break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/src/gprs.c new/ofono-1.25/src/gprs.c
--- old/ofono-1.24/src/gprs.c   2018-01-21 18:59:31.000000000 +0100
+++ new/ofono-1.25/src/gprs.c   2018-09-29 10:33:43.000000000 +0200
@@ -1008,7 +1008,7 @@
 
        value = pri_ctx->active;
 
-       gprs->flags &= !GPRS_FLAG_ATTACHING;
+       gprs->flags &= ~GPRS_FLAG_ATTACHING;
 
        gprs->driver_attached = TRUE;
        gprs_set_attached_property(gprs, TRUE);
@@ -1635,6 +1635,9 @@
 
                if (gc->driver->detach_shutdown != NULL)
                        gc->driver->detach_shutdown(gc, ctx->context.cid);
+
+               /* Make sure the context is properly cleared */
+               release_context(ctx);
        }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/src/lte.c new/ofono-1.25/src/lte.c
--- old/ofono-1.24/src/lte.c    2018-06-14 23:22:27.000000000 +0200
+++ new/ofono-1.25/src/lte.c    2018-09-29 10:33:43.000000000 +0200
@@ -343,7 +343,7 @@
        const char *imsi = ofono_sim_get_imsi(sim);
 
        if (imsi == NULL) {
-               ofono_error("No sim atom required for registering LTE atom.");
+               ofono_error("No sim atom found. It is required for registering 
LTE atom.");
                return;
        }
 
@@ -373,3 +373,8 @@
 {
        return lte->driver_data;
 }
+
+struct ofono_modem *ofono_lte_get_modem(const struct ofono_lte *lte)
+{
+       return __ofono_atom_get_modem(lte->atom);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/src/main.c new/ofono-1.25/src/main.c
--- old/ofono-1.24/src/main.c   2018-01-21 18:59:31.000000000 +0100
+++ new/ofono-1.25/src/main.c   2018-09-29 10:33:43.000000000 +0200
@@ -211,11 +211,6 @@
        struct ell_event_source *source;
 #endif
 
-#ifdef NEED_THREADS
-       if (g_thread_supported() == FALSE)
-               g_thread_init(NULL);
-#endif
-
        context = g_option_context_new(NULL);
        g_option_context_add_main_entries(context, options, NULL);
 
@@ -246,13 +241,6 @@
 
        event_loop = g_main_loop_new(NULL, FALSE);
 
-#ifdef NEED_THREADS
-       if (dbus_threads_init_default() == FALSE) {
-               fprintf(stderr, "Can't init usage of threads\n");
-               exit(1);
-       }
-#endif
-
 #ifdef HAVE_ELL
        l_log_set_stderr();
        l_debug_enable("*");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/src/modem.c new/ofono-1.25/src/modem.c
--- old/ofono-1.24/src/modem.c  2018-06-14 23:22:27.000000000 +0200
+++ new/ofono-1.25/src/modem.c  2018-09-29 10:33:43.000000000 +0200
@@ -194,6 +194,11 @@
        return __ofono_atom_find(OFONO_ATOM_TYPE_GPRS, modem);
 }
 
+struct ofono_voicecall *ofono_modem_get_voicecall(struct ofono_modem *modem)
+{
+       return __ofono_atom_find(OFONO_ATOM_TYPE_VOICECALL, modem);
+}
+
 struct ofono_atom *__ofono_modem_add_atom(struct ofono_modem *modem,
                                        enum ofono_atom_type type,
                                        void (*destruct)(struct ofono_atom *),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/src/plugin.c new/ofono-1.25/src/plugin.c
--- old/ofono-1.24/src/plugin.c 2011-10-11 20:21:45.000000000 +0200
+++ new/ofono-1.25/src/plugin.c 2018-09-29 10:33:43.000000000 +0200
@@ -190,17 +190,26 @@
 
        DBG("");
 
+       /*
+        * Terminate the plugins but don't unload the libraries yet.
+        * Plugins may reference data structures allocated by each other.
+        */
        for (list = plugins; list; list = list->next) {
                struct ofono_plugin *plugin = list->data;
 
                if (plugin->active == TRUE && plugin->desc->exit)
                        plugin->desc->exit();
+       }
+
+       /* Second pass - unload the libraries */
+       for (list = plugins; list; list = list->next) {
+               struct ofono_plugin *plugin = list->data;
 
                if (plugin->handle)
                        dlclose(plugin->handle);
-
-               g_free(plugin);
        }
 
-       g_slist_free(plugins);
+       /* Finally, free the memory */
+       g_slist_free_full(plugins, g_free);
+       plugins = NULL;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/src/voicecall.c 
new/ofono-1.25/src/voicecall.c
--- old/ofono-1.24/src/voicecall.c      2018-03-10 17:16:16.000000000 +0100
+++ new/ofono-1.25/src/voicecall.c      2018-09-29 10:33:43.000000000 +0200
@@ -3734,6 +3734,11 @@
        return vc->driver_data;
 }
 
+struct ofono_modem *ofono_voicecall_get_modem(struct ofono_voicecall *vc)
+{
+       return __ofono_atom_get_modem(vc->atom);
+}
+
 int ofono_voicecall_get_next_callid(struct ofono_voicecall *vc)
 {
        struct ofono_modem *modem;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/test/send-sms new/ofono-1.25/test/send-sms
--- old/ofono-1.24/test/send-sms        2014-06-29 21:43:22.000000000 +0200
+++ new/ofono-1.25/test/send-sms        2018-09-29 10:33:43.000000000 +0200
@@ -6,6 +6,7 @@
 if len(sys.argv) < 4:
        print("Usage: %s [modem] <to> <message> <delivery report>" %\
                                        (sys.argv[0]))
+       print("  where delivery report is 0|1")
        sys.exit(1)
 
 bus = dbus.SystemBus()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/tools/auto-enable.c 
new/ofono-1.25/tools/auto-enable.c
--- old/ofono-1.24/tools/auto-enable.c  2012-07-19 20:51:33.000000000 +0200
+++ new/ofono-1.25/tools/auto-enable.c  2018-09-29 10:33:43.000000000 +0200
@@ -492,11 +492,6 @@
        guint watch;
        struct sigaction sa;
 
-#ifdef NEED_THREADS
-       if (g_thread_supported() == FALSE)
-               g_thread_init(NULL);
-#endif
-
        context = g_option_context_new(NULL);
        g_option_context_add_main_entries(context, options, NULL);
 
@@ -518,13 +513,6 @@
 
        main_loop = g_main_loop_new(NULL, FALSE);
 
-#ifdef NEED_THREADS
-       if (dbus_threads_init_default() == FALSE) {
-               fprintf(stderr, "Can't init usage of threads\n");
-               exit(1);
-       }
-#endif
-
        dbus_error_init(&err);
 
        conn = g_dbus_setup_bus(DBUS_BUS_SYSTEM, NULL, &err);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ofono-1.24/tools/huawei-audio.c 
new/ofono-1.25/tools/huawei-audio.c
--- old/ofono-1.24/tools/huawei-audio.c 2012-07-19 20:51:33.000000000 +0200
+++ new/ofono-1.25/tools/huawei-audio.c 2018-09-29 10:33:43.000000000 +0200
@@ -775,11 +775,6 @@
        guint watch;
        struct sigaction sa;
 
-#ifdef NEED_THREADS
-       if (g_thread_supported() == FALSE)
-               g_thread_init(NULL);
-#endif
-
        context = g_option_context_new(NULL);
        g_option_context_add_main_entries(context, options, NULL);
 
@@ -801,13 +796,6 @@
 
        main_loop = g_main_loop_new(NULL, FALSE);
 
-#ifdef NEED_THREADS
-       if (dbus_threads_init_default() == FALSE) {
-               fprintf(stderr, "Can't init usage of threads\n");
-               exit(1);
-       }
-#endif
-
        dbus_error_init(&err);
 
        conn = g_dbus_setup_bus(DBUS_BUS_SYSTEM, NULL, &err);

++++++ ofono-1.24.tar.xz.sig -> ofono-1.25.tar.xz.sig ++++++
--- /work/SRC/openSUSE:Factory/ofono/ofono-1.24.tar.xz.sig      2018-06-19 
12:05:09.034719258 +0200
+++ /work/SRC/openSUSE:Factory/.ofono.new/ofono-1.25.tar.xz.sig 2018-10-15 
09:46:56.347136927 +0200
@@ -287,20 +287,24 @@
 4dacdc61571aad7ce8b4412ed51d03bec3d4060b93ee68f8c69b26b223bdc975  
ofono-1.23.tar.xz
 b34a2490ba9218ae6450513731ef985337ab1c934615ad20e5ffb1d9e25ee65d  
ofono-1.24.tar.gz
 9c8e351b7658f4b43f9a4380b731c47d2d7544a89987c48c3f227e73636c87ae  
ofono-1.24.tar.xz
+17b0fb2854ed9d053dc2ff753dc9f4c85d52a0ff89befd167c82092c49f76c50  
ofono-1.25.tar.gz
+eb011fcd3080e93f3a56f96be60350b6595a8b5f36b61646312ba41b0bcb0d75  
ofono-1.25.tar.xz
+4a1c2fc163e64c274822f99231afb15c3dc544b101d7b83116d20265d374fbc3  
phonesim-1.21.tar.gz
+dd2793861d8dd8c2cfed9391b850575607edf8d1aaee5c7250bf7b7fe8975d49  
phonesim-1.21.tar.xz
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.22 (GNU/Linux)
 
-iQIcBAEBCAAGBQJbIt/RAAoJEGMtOgZYnaaxNq4QAKG5gXTj05spt9Rv3OtuqbA3
-wHJ5qgw5dYJ81peiiaFVqiHqU7lZZ2AweeQkzVjJxUtIjwekJwuSzbyaWRD3gJYT
-nJMWHntrPl6I7Z2y0GgjhNKxRnHIGvLDl5mnnfBqpcmXY6ccLSS5ilk41+e2o2or
-EGhipD2yKegqaLZKU2LOajxS8Y5UKcNI5Yx0fmkq7A9j2GD93CwIxNiFN/YUdp0n
-qPtp/6ncoR06J1vgL/Gd5zpq9K38LC3Eq8HXlzpyyrOdLdiRGz67GZBYL6lfC2ok
-0Y32EoaGSBkH697CtbmldO0o/SRXD2K67XqVyAuFY5wltelkDXpydwXP/iwgWXZ7
-IIhv8F8ZSqL0ASW4n4bhrWXSje38PWqoLYLm4TwtyrKYyeFROCIidqYeChKxkz+F
-xDvcQU1KO0cEFVF6/CSX1WtTCtrV7PmIPovmHNK9mXG8Xkv+LvbVLHk5x4y0EMor
-6nzg9FgnsOkvHK3GoO1g/Hqho7CvlnjIjozhA7dapMWNV1e/H0nGHhGxIhzWVPwp
-F1rcWHYBZpli+NZOfU4yoRb31DHDfPyTpdeI65PGriMo4fEYTy4evTj/mmew8TQ4
-u/BU8EYzXsS+qGp/p/M7T7W57ly/qwybhWQJCMBenLAJ22pvjNEvE6jCVHJ83MMO
-o0x0sdTjwWBHfutfM1m0
-=OsSN
+iQIcBAEBCAAGBQJbtSEfAAoJEGMtOgZYnaax9rIP/RdoFgTtw3T8ZjIvv0VYUeRG
+DmBFwtfjlvDMS7ppcYO0cYLl091pMptnq5NNtOiOIJFhJKwUS05b/Rou1k7sn4Mi
+a5solkp395ZBBM59Km78666Wog/WXPmLQfuRSDfIfG4/fe6vLxY242kK1L9L0ihD
+ZQSEqO6FUNNSuZ5Jo3L0aPD3bXhKWhK3vV/4U7d9UGZXdmDZzsdX7L51VZaDsTgc
+0JarzTXSbVAgOjZ0TYUdtOhn5vApqLGoY8xnlSBCNNY/5nUoqVrP/qVRAaKRlmpg
+CzMm6zXNCCJqqddYBxquYv+0rRbXR9i/FqlZSsQ4FVE7vBXzdHDFOoutYMyCxwqZ
+vzHsOkBAHwh1mghv4/n3kEBoZjReV1SWMYVEqcTVHA796xLXeYAG/qJt306XzApq
+rSc93bgQ1H7Il0wUx8wKE/njXz+yuXTUYOgxHimlXrWtNxk2/0z0AtuMHJCLsf5t
+tGyyrAkCHtm/QmZQoPpvPJ+f+8meyriiYADf08Q3QPgvbVPP4dNh/qwqPuCEjHqx
+J7PqJY135pvXcUzGELeqFNz5NVacWx+d7Uxdhz92rL3giDfuWjHaYVCNeyAK91XO
+ze8YZoAt5/pk9o9A3uoePp7SIB87hZdjY5mLFdSoM2HYQaMkFTBnf57reMPIsTCF
+V2VcLm4YRHpEx3dOufD/
+=ImhY
 -----END PGP SIGNATURE-----


Reply via email to