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
This commit is contained in:
committed by
Aleksander Morgado
parent
3047522b2e
commit
60f4f9e57d
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user