broadband-modem: notify when a sync is needed after a suspend/resume

Modem/SIM implementations that keep cached info that is not supposed
to change during runtime of a modem may need to be notified about when
a suspend/resume has happened, so that they can clear and reload the
internally cached data.
This commit is contained in:
Aleksander Morgado
2022-08-01 19:51:26 +00:00
parent bda3ade5a8
commit f5b3dc7689
2 changed files with 39 additions and 3 deletions
+29 -1
View File
@@ -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
}
+10 -2
View File
@@ -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);