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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user