summaryrefslogtreecommitdiff
path: root/src/devices/wwan/nm-modem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/wwan/nm-modem.c')
-rw-r--r--src/devices/wwan/nm-modem.c64
1 files changed, 57 insertions, 7 deletions
diff --git a/src/devices/wwan/nm-modem.c b/src/devices/wwan/nm-modem.c
index a21cebc350..e6174ccc49 100644
--- a/src/devices/wwan/nm-modem.c
+++ b/src/devices/wwan/nm-modem.c
@@ -97,6 +97,8 @@ typedef struct _NMModemPrivate {
/* PPP stats */
guint32 in_bytes;
guint32 out_bytes;
+
+ bool claimed:1;
} NMModemPrivate;
G_DEFINE_TYPE (NMModem, nm_modem, G_TYPE_OBJECT)
@@ -174,6 +176,53 @@ nm_modem_state_to_string (NMModemState state)
return NULL;
}
+/*****************************************************************************/
+
+gboolean
+nm_modem_is_claimed (NMModem *self)
+{
+ g_return_val_if_fail (NM_IS_MODEM (self), FALSE);
+
+ return NM_MODEM_GET_PRIVATE (self)->claimed;
+}
+
+NMModem *
+nm_modem_claim (NMModem *self)
+{
+ NMModemPrivate *priv;
+
+ g_return_val_if_fail (NM_IS_MODEM (self), NULL);
+
+ priv = NM_MODEM_GET_PRIVATE (self);
+
+ g_return_val_if_fail (!priv->claimed, NULL);
+
+ priv->claimed = TRUE;
+ return g_object_ref (self);
+}
+
+void
+nm_modem_unclaim (NMModem *self)
+{
+ NMModemPrivate *priv;
+
+ g_return_if_fail (NM_IS_MODEM (self));
+
+ priv = NM_MODEM_GET_PRIVATE (self);
+
+ g_return_if_fail (priv->claimed);
+
+ /* we don't actually unclaim the instance. This instance should not be re-used
+ * by another owner, that is because we only claim modems as we receive them.
+ * There is no mechanism that somebody else would later re-use them again.
+ *
+ * // priv->claimed = FALSE; */
+
+ g_object_unref (self);
+}
+
+/*****************************************************************************/
+
NMModemState
nm_modem_get_state (NMModem *self)
{
@@ -980,6 +1029,8 @@ nm_modem_act_stage1_prepare (NMModem *self,
NMSecretAgentGetSecretsFlags flags = NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION;
NMConnection *connection;
+ g_return_val_if_fail (NM_IS_ACT_REQUEST (req), NM_ACT_STAGE_RETURN_FAILURE);
+
if (priv->act_request)
g_object_unref (priv->act_request);
priv->act_request = g_object_ref (req);
@@ -1014,19 +1065,18 @@ nm_modem_act_stage1_prepare (NMModem *self,
/*****************************************************************************/
-NMActStageReturn
-nm_modem_act_stage2_config (NMModem *self,
- NMActRequest *req,
- NMDeviceStateReason *out_failure_reason)
+void
+nm_modem_act_stage2_config (NMModem *self)
{
- NMModemPrivate *priv = NM_MODEM_GET_PRIVATE (self);
+ NMModemPrivate *priv;
+
+ g_return_if_fail (NM_IS_MODEM (self));
+ priv = NM_MODEM_GET_PRIVATE (self);
/* Clear secrets tries counter since secrets were successfully used
* already if we get here.
*/
priv->secrets_tries = 0;
-
- return NM_ACT_STAGE_RETURN_SUCCESS;
}
/*****************************************************************************/