aboutsummaryrefslogtreecommitdiff
path: root/src/mm-call-qmi.c
diff options
context:
space:
mode:
authorDan Williams <dan@ioncontrol.co>2025-04-26 06:21:20 -0500
committerDan Williams <dan@ioncontrol.co>2025-05-30 07:57:50 -0500
commitb9c49c7b4dd93d3f66f27cc13110ba672f7862df (patch)
tree9245da0296e884e49d9f51a1411c88d101447221 /src/mm-call-qmi.c
parent8392f30388b04cd0ab8fd41bca9d7788249c1c1b (diff)
base-call: remove usage of MMBaseModem
Split out the things we actually use from MMBaseModem into separate properties that can be independently implemented (or just left NULL) for unit tests. Signed-off-by: Dan Williams <dan@ioncontrol.co>
Diffstat (limited to 'src/mm-call-qmi.c')
-rw-r--r--src/mm-call-qmi.c43
1 files changed, 32 insertions, 11 deletions
diff --git a/src/mm-call-qmi.c b/src/mm-call-qmi.c
index 441be147..55bfa89a 100644
--- a/src/mm-call-qmi.c
+++ b/src/mm-call-qmi.c
@@ -35,6 +35,11 @@
G_DEFINE_TYPE (MMCallQmi, mm_call_qmi, MM_TYPE_BASE_CALL)
+struct _MMCallQmiPrivate {
+ /* The modem which owns this call */
+ MMBaseModem *modem;
+};
+
/*****************************************************************************/
static gboolean
@@ -48,12 +53,7 @@ ensure_qmi_client (MMCallQmi *self,
QmiClient *client;
MMPortQmi *port;
- g_object_get (self,
- MM_BASE_CALL_MODEM, &modem,
- NULL);
- g_assert (MM_IS_BASE_MODEM (modem));
-
- port = mm_broadband_modem_qmi_peek_port_qmi (MM_BROADBAND_MODEM_QMI (modem));
+ port = mm_broadband_modem_qmi_peek_port_qmi (MM_BROADBAND_MODEM_QMI (self->priv->modem));
g_object_unref (modem);
if (!port) {
@@ -491,27 +491,48 @@ mm_call_qmi_new (MMBaseModem *modem,
MMCallDirection direction,
const gchar *number)
{
- return MM_BASE_CALL (g_object_new (MM_TYPE_CALL_QMI,
- MM_BASE_CALL_MODEM, modem,
- MM_BIND_TO, G_OBJECT (modem),
- "direction", direction,
- "number", number,
+ MMBaseCall *call;
+
+ call = MM_BASE_CALL (g_object_new (MM_TYPE_CALL_QMI,
+ MM_BASE_CALL_IFACE_MODEM_VOICE, modem,
+ MM_BIND_TO, modem,
+ "direction", direction,
+ "number", number,
MM_BASE_CALL_SKIP_INCOMING_TIMEOUT, TRUE,
MM_BASE_CALL_SUPPORTS_DIALING_TO_RINGING, TRUE,
MM_BASE_CALL_SUPPORTS_RINGING_TO_ACTIVE, TRUE,
NULL));
+ MM_CALL_QMI (call)->priv->modem = g_object_ref (modem);
+ return call;
}
static void
mm_call_qmi_init (MMCallQmi *self)
{
+ /* Initialize private data */
+ self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, MM_TYPE_CALL_QMI, MMCallQmiPrivate);
+}
+
+static void
+dispose (GObject *object)
+{
+ MMCallQmi *self = MM_CALL_QMI (object);
+
+ g_clear_object (&self->priv->modem);
+
+ G_OBJECT_CLASS (mm_call_qmi_parent_class)->dispose (object);
}
static void
mm_call_qmi_class_init (MMCallQmiClass *klass)
{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
MMBaseCallClass *base_call_class = MM_BASE_CALL_CLASS (klass);
+ g_type_class_add_private (object_class, sizeof (MMCallQmiPrivate));
+
+ object_class->dispose = dispose;
+
base_call_class->start = call_start;
base_call_class->start_finish = call_start_finish;
base_call_class->accept = call_accept;