aboutsummaryrefslogtreecommitdiff
path: root/src/mm-base-modem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-base-modem.c')
-rw-r--r--src/mm-base-modem.c57
1 files changed, 49 insertions, 8 deletions
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c
index 668199b9..74deb0ac 100644
--- a/src/mm-base-modem.c
+++ b/src/mm-base-modem.c
@@ -325,6 +325,14 @@ mm_base_modem_get_port_primary (MMBaseModem *self)
{
g_return_val_if_fail (MM_IS_BASE_MODEM (self), NULL);
+ return (self->priv->primary ? g_object_ref (self->priv->primary) : NULL);
+}
+
+MMAtSerialPort *
+mm_base_modem_peek_port_primary (MMBaseModem *self)
+{
+ g_return_val_if_fail (MM_IS_BASE_MODEM (self), NULL);
+
return self->priv->primary;
}
@@ -333,6 +341,14 @@ mm_base_modem_get_port_secondary (MMBaseModem *self)
{
g_return_val_if_fail (MM_IS_BASE_MODEM (self), NULL);
+ return (self->priv->secondary ? g_object_ref (self->priv->secondary) : NULL);
+}
+
+MMAtSerialPort *
+mm_base_modem_peek_port_secondary (MMBaseModem *self)
+{
+ g_return_val_if_fail (MM_IS_BASE_MODEM (self), NULL);
+
return self->priv->secondary;
}
@@ -341,12 +357,29 @@ mm_base_modem_get_port_qcdm (MMBaseModem *self)
{
g_return_val_if_fail (MM_IS_BASE_MODEM (self), NULL);
+ return (self->priv->qcdm ? g_object_ref (self->priv->qcdm) : NULL);
+}
+
+MMQcdmSerialPort *
+mm_base_modem_peek_port_qcdm (MMBaseModem *self)
+{
+ g_return_val_if_fail (MM_IS_BASE_MODEM (self), NULL);
+
return self->priv->qcdm;
}
MMPort *
mm_base_modem_get_best_data_port (MMBaseModem *self)
{
+ MMPort *port;
+
+ port = mm_base_modem_peek_best_data_port (self);
+ return (port ? g_object_ref (port) : NULL);
+}
+
+MMPort *
+mm_base_modem_peek_best_data_port (MMBaseModem *self)
+{
g_return_val_if_fail (MM_IS_BASE_MODEM (self), NULL);
/* TODO: sometime we'll have a list of available data ports to use instead
@@ -361,24 +394,32 @@ MMAtSerialPort *
mm_base_modem_get_best_at_port (MMBaseModem *self,
GError **error)
{
- MMAtSerialPort *port;
+ MMAtSerialPort *best;
+ best = mm_base_modem_peek_best_at_port (self, error);
+ return (best ? g_object_ref (best) : NULL);
+}
+
+MMAtSerialPort *
+mm_base_modem_peek_best_at_port (MMBaseModem *self,
+ GError **error)
+{
/* Decide which port to use */
- port = mm_base_modem_get_port_primary (self);
- if (port && !mm_port_get_connected (MM_PORT (port)))
- return port;
+ if (self->priv->primary &&
+ !mm_port_get_connected (MM_PORT (self->priv->primary)))
+ return self->priv->primary;
/* If primary port is connected, check if we can get the secondary
* port */
- port = mm_base_modem_get_port_secondary (self);
- if (port && !mm_port_get_connected (MM_PORT (port)))
- return port;
+ if (self->priv->secondary &&
+ !mm_port_get_connected (MM_PORT (self->priv->secondary)))
+ return self->priv->secondary;
/* Otherwise, we cannot get any port */
g_set_error (error,
MM_CORE_ERROR,
MM_CORE_ERROR_CONNECTED,
- "No port available to run command");
+ "No AT port available to run command");
return NULL;
}