aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mm-broadband-modem.c30
-rw-r--r--src/mm-broadband-modem.h12
2 files changed, 39 insertions, 3 deletions
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c
index 5295c058..e6df8754 100644
--- a/src/mm-broadband-modem.c
+++ b/src/mm-broadband-modem.c
@@ -14,7 +14,7 @@
* Copyright (C) 2009 - 2012 Red Hat, Inc.
* Copyright (C) 2015 Marco Bascetta <marco.bascetta@sadel.it>
* Copyright (C) 2019 Purism SPC
- * Copyright (C) 2011 - 2021 Google, Inc.
+ * Copyright (C) 2011 - 2022 Google, Inc.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc.
*/
@@ -143,6 +143,17 @@ enum {
static GParamSpec *properties[PROP_LAST];
+#if defined WITH_SUSPEND_RESUME
+
+enum {
+ SIGNAL_SYNC_NEEDED,
+ SIGNAL_LAST
+};
+
+static guint signals[SIGNAL_LAST];
+
+#endif
+
/* When CIND is supported, invalid indicators are marked with this value */
#define CIND_INDICATOR_INVALID 255
#define CIND_INDICATOR_IS_VALID(u) (u != CIND_INDICATOR_INVALID)
@@ -12177,6 +12188,7 @@ enable (MMBaseModem *self,
typedef enum {
SYNCING_STEP_FIRST,
+ SYNCING_STEP_NOTIFY,
SYNCING_STEP_IFACE_MODEM,
SYNCING_STEP_IFACE_3GPP,
SYNCING_STEP_IFACE_TIME,
@@ -12282,6 +12294,11 @@ syncing_step (GTask *task)
ctx->step++;
/* fall through */
+ case SYNCING_STEP_NOTIFY:
+ g_signal_emit (self, signals[SIGNAL_SYNC_NEEDED], 0);
+ ctx->step++;
+ /* fall through */
+
case SYNCING_STEP_IFACE_MODEM:
/*
* Start interface Modem synchronization.
@@ -13936,4 +13953,15 @@ mm_broadband_modem_class_init (MMBroadbandModemClass *klass)
FALSE,
G_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_INDICATORS_DISABLED, properties[PROP_INDICATORS_DISABLED]);
+
+#if defined WITH_SUSPEND_RESUME
+ signals[SIGNAL_SYNC_NEEDED] =
+ g_signal_new (MM_BROADBAND_MODEM_SIGNAL_SYNC_NEEDED,
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (MMBroadbandModemClass, sync_needed),
+ NULL, NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE, 0);
+#endif
}
diff --git a/src/mm-broadband-modem.h b/src/mm-broadband-modem.h
index bb4e1f66..d2ce65a5 100644
--- a/src/mm-broadband-modem.h
+++ b/src/mm-broadband-modem.h
@@ -12,8 +12,8 @@
*
* Copyright (C) 2008 - 2009 Novell, Inc.
* Copyright (C) 2009 - 2011 Red Hat, Inc.
- * Copyright (C) 2011 Google, Inc.
* Copyright (C) 2015 - Marco Bascetta <marco.bascetta@sadel.it>
+ * Copyright (C) 2011 - 2022 Google, Inc.
*/
#ifndef MM_BROADBAND_MODEM_H
@@ -42,6 +42,10 @@ typedef struct _MMBroadbandModemPrivate MMBroadbandModemPrivate;
#define MM_BROADBAND_MODEM_FLOW_CONTROL "broadband-modem-flow-control"
#define MM_BROADBAND_MODEM_INDICATORS_DISABLED "broadband-modem-indicators-disabled"
+#if defined WITH_SUSPEND_RESUME
+# define MM_BROADBAND_MODEM_SIGNAL_SYNC_NEEDED "broadband-modem-sync-needed"
+#endif
+
struct _MMBroadbandModem {
MMBaseModem parent;
MMBroadbandModemPrivate *priv;
@@ -85,10 +89,14 @@ struct _MMBroadbandModemClass {
GAsyncResult *res,
GError **error);
-
/* Last disabling step */
gboolean (* disabling_stopped) (MMBroadbandModem *self,
GError **error);
+
+#if defined WITH_SUSPEND_RESUME
+ /* signals */
+ void (* sync_needed) (MMBroadbandModem *self);
+#endif
};
GType mm_broadband_modem_get_type (void);