diff options
author | Dan Williams <dan@ioncontrol.co> | 2025-04-26 06:21:20 -0500 |
---|---|---|
committer | Dan Williams <dan@ioncontrol.co> | 2025-05-30 07:57:50 -0500 |
commit | b9c49c7b4dd93d3f66f27cc13110ba672f7862df (patch) | |
tree | 9245da0296e884e49d9f51a1411c88d101447221 /src/mm-call-qmi.c | |
parent | 8392f30388b04cd0ab8fd41bca9d7788249c1c1b (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.c | 43 |
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; |