aboutsummaryrefslogtreecommitdiff
path: root/src/mm-base-modem.c
diff options
context:
space:
mode:
authorCarlo Lobrano <c.lobrano@gmail.com>2016-08-08 15:47:18 +0200
committerAleksander Morgado <aleksander@aleksander.es>2016-08-10 09:39:27 +0200
commit60f4f9e57df90cf094fffb6896ffce8dba15d244 (patch)
treea611d459cc957f1c5bf3e16268d2d3b8ba082f9f /src/mm-base-modem.c
parent3047522b2e494776d9aced64180e54c46e861de1 (diff)
modem: support SIM hot swap
BaseModem added reprobe property. MMDevice added logic to recreate the modem if it is set invalid and "to reprobe" MMBroadbandModem * added initialization step for SIM hot swap: 1. keep dedicated ports open to listen to modem's unsolicited 2. dedicated error management in case of initialization failure due to SIM missing * added function to be called in order to act upon SIM insertion/removal: 1. close dedicated ports 2. set the modem to be reprobed 3. disable modem * added SIM HOT SWAP boolean property MMIfaceModem * added initialization step for SIM hot swap, if supported by the plugin * dedicated error management in case of initialization failure due to SIM missing
Diffstat (limited to 'src/mm-base-modem.c')
-rw-r--r--src/mm-base-modem.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c
index 9cd7c5fa..ede014ba 100644
--- a/src/mm-base-modem.c
+++ b/src/mm-base-modem.c
@@ -47,6 +47,7 @@ enum {
PROP_VENDOR_ID,
PROP_PRODUCT_ID,
PROP_CONNECTION,
+ PROP_REPROBE,
PROP_LAST
};
@@ -70,6 +71,7 @@ struct _MMBaseModemPrivate {
gboolean hotplugged;
gboolean valid;
+ gboolean reprobe;
guint max_timeouts;
@@ -392,6 +394,24 @@ mm_base_modem_set_valid (MMBaseModem *self,
}
}
+void
+mm_base_modem_set_reprobe (MMBaseModem *self,
+ gboolean reprobe)
+{
+ g_return_if_fail (MM_IS_BASE_MODEM (self));
+
+ self->priv->reprobe = reprobe;
+}
+
+gboolean
+mm_base_modem_get_reprobe (MMBaseModem *self)
+{
+ g_return_val_if_fail (MM_IS_BASE_MODEM (self), FALSE);
+
+ return self->priv->reprobe;
+}
+
+
gboolean
mm_base_modem_get_valid (MMBaseModem *self)
{
@@ -1295,6 +1315,9 @@ set_property (GObject *object,
case PROP_VALID:
mm_base_modem_set_valid (self, g_value_get_boolean (value));
break;
+ case PROP_REPROBE:
+ mm_base_modem_set_reprobe (self, g_value_get_boolean (value));
+ break;
case PROP_MAX_TIMEOUTS:
self->priv->max_timeouts = g_value_get_uint (value);
break;
@@ -1338,6 +1361,9 @@ get_property (GObject *object,
case PROP_VALID:
g_value_set_boolean (value, self->priv->valid);
break;
+ case PROP_REPROBE:
+ g_value_set_boolean (value, self->priv->reprobe);
+ break;
case PROP_MAX_TIMEOUTS:
g_value_set_uint (value, self->priv->max_timeouts);
break;