diff options
author | Dan Williams <dan@ioncontrol.co> | 2025-05-01 07:59:38 -0500 |
---|---|---|
committer | Dan Williams <dan@ioncontrol.co> | 2025-05-08 20:08:06 -0500 |
commit | 1fa21fcc48b271a8dc2191104e35bf4e95fa2331 (patch) | |
tree | cf209fc07098e68c65dca219fee38a826dbcbf1a | |
parent | ec5104c9a87a440bb791987ffe05e53bf235ae02 (diff) |
base-cbm,cbm-list,iface-cbm: remove usage of MMBaseModem
CBM isn't as complicated as SMS, and the CBM class itself doesn't
need to be overridden by QMI/MBIM/etc. Now that the log parent
and connection binding no longer require MMBaseModem we can flatten
the CBM object creation and remove usage of MMBaseModem.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
-rw-r--r-- | src/mm-base-cbm.c | 33 | ||||
-rw-r--r-- | src/mm-base-cbm.h | 7 | ||||
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 38 | ||||
-rw-r--r-- | src/mm-broadband-modem.c | 30 | ||||
-rw-r--r-- | src/mm-cbm-list.c | 6 | ||||
-rw-r--r-- | src/mm-cbm-list.h | 1 | ||||
-rw-r--r-- | src/mm-iface-modem-cell-broadcast.c | 24 | ||||
-rw-r--r-- | src/mm-iface-modem-cell-broadcast.h | 10 |
8 files changed, 45 insertions, 104 deletions
diff --git a/src/mm-base-cbm.c b/src/mm-base-cbm.c index af02120e..59b9e49a 100644 --- a/src/mm-base-cbm.c +++ b/src/mm-base-cbm.c @@ -25,12 +25,7 @@ #include <libmm-glib.h> #include "mm-base-cbm.h" -#include "mm-broadband-modem.h" -#include "mm-iface-modem.h" -#include "mm-iface-modem-cell-broadcast.h" #include "mm-cbm-part.h" -#include "mm-base-modem-at.h" -#include "mm-base-modem.h" #include "mm-log-object.h" #include "mm-modem-helpers.h" #include "mm-error-helpers.h" @@ -48,7 +43,6 @@ enum { PROP_PATH, PROP_CONNECTION, PROP_BIND_TO, - PROP_MODEM, PROP_MAX_PARTS, PROP_SERIAL, PROP_LAST @@ -64,8 +58,6 @@ struct _MMBaseCbmPrivate { /* The object this CBM is bound to */ GObject *bind_to; - /* The modem which owns this CBM */ - MMBaseModem *modem; /* The path where the CBM object is exported */ gchar *path; @@ -330,17 +322,15 @@ mm_base_cbm_take_part (MMBaseCbm *self, } MMBaseCbm * -mm_base_cbm_new (MMBaseModem *modem, - GObject *bind_to) +mm_base_cbm_new (GObject *bind_to) { return MM_BASE_CBM (g_object_new (MM_TYPE_BASE_CBM, - MM_BASE_CBM_MODEM, modem, MM_BIND_TO, bind_to, NULL)); } MMBaseCbm * -mm_base_cbm_new_with_part (MMBaseModem *modem, +mm_base_cbm_new_with_part (GObject *bind_to, MMCbmState state, guint max_parts, MMCbmPart *first_part, @@ -348,13 +338,11 @@ mm_base_cbm_new_with_part (MMBaseModem *modem, { MMBaseCbm *self; - g_assert (MM_IS_IFACE_MODEM_CELL_BROADCAST (modem)); - if (state == MM_CBM_STATE_RECEIVED) state = MM_CBM_STATE_RECEIVING; /* Create a CBM object as defined by the interface */ - self = mm_iface_modem_cell_broadcast_create_cbm (MM_IFACE_MODEM_CELL_BROADCAST (modem)); + self = mm_base_cbm_new (bind_to); g_object_set (self, MM_BASE_CBM_MAX_PARTS, max_parts, "state", state, @@ -419,10 +407,6 @@ set_property (GObject *object, self->priv->bind_to = g_value_dup_object (value); mm_bind_to (MM_BIND (self), MM_BASE_CBM_CONNECTION, self->priv->bind_to); break; - case PROP_MODEM: - g_clear_object (&self->priv->modem); - self->priv->modem = g_value_dup_object (value); - break; case PROP_MAX_PARTS: self->priv->max_parts = g_value_get_uint (value); break; @@ -453,9 +437,6 @@ get_property (GObject *object, case PROP_BIND_TO: g_value_set_object (value, self->priv->bind_to); break; - case PROP_MODEM: - g_value_set_object (value, self->priv->modem); - break; case PROP_MAX_PARTS: g_value_set_uint (value, self->priv->max_parts); break; @@ -504,7 +485,6 @@ dispose (GObject *object) g_clear_object (&self->priv->connection); } - g_clear_object (&self->priv->modem); g_clear_object (&self->priv->bind_to); G_OBJECT_CLASS (mm_base_cbm_parent_class)->dispose (object); @@ -550,13 +530,6 @@ mm_base_cbm_class_init (MMBaseCbmClass *klass) g_object_class_override_property (object_class, PROP_BIND_TO, MM_BIND_TO); - properties[PROP_MODEM] = - g_param_spec_object (MM_BASE_CBM_MODEM, - "Modem", - "The Modem which owns this CBM", - MM_TYPE_BASE_MODEM, - G_PARAM_READWRITE); - properties[PROP_MAX_PARTS] = g_param_spec_uint (MM_BASE_CBM_MAX_PARTS, "Max parts", diff --git a/src/mm-base-cbm.h b/src/mm-base-cbm.h index 08dcd3ae..8a4b2e73 100644 --- a/src/mm-base-cbm.h +++ b/src/mm-base-cbm.h @@ -23,7 +23,6 @@ #include <libmm-glib.h> #include "mm-cbm-part.h" -#include "mm-base-modem.h" /*****************************************************************************/ @@ -40,7 +39,6 @@ typedef struct _MMBaseCbmPrivate MMBaseCbmPrivate; #define MM_BASE_CBM_PATH "cbm-path" #define MM_BASE_CBM_CONNECTION "cbm-connection" -#define MM_BASE_CBM_MODEM "cbm-modem" #define MM_BASE_CBM_MAX_PARTS "cbm-max-parts" #define MM_BASE_CBM_SERIAL "cbm-serial" @@ -56,12 +54,11 @@ struct _MMBaseCbmClass { GType mm_base_cbm_get_type (void); G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMBaseCbm, g_object_unref) -MMBaseCbm *mm_base_cbm_new (MMBaseModem *modem, - GObject *bind_to); +MMBaseCbm *mm_base_cbm_new (GObject *bind_to); gboolean mm_base_cbm_take_part (MMBaseCbm *self, MMCbmPart *part, GError **error); -MMBaseCbm *mm_base_cbm_new_with_part (MMBaseModem *modem, +MMBaseCbm *mm_base_cbm_new_with_part (GObject *bind_to, MMCbmState state, guint max_parts, MMCbmPart *first_part, diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index bd79ceca..a2609277 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -10959,7 +10959,7 @@ add_new_read_cbm_part (MMIfaceModemCellBroadcast *self, GArray *data) { MMCbmPart *part = NULL; - GError *error = NULL; + g_autoptr(GError) error = NULL; switch (format) { /* Cell Broadcasts need to be broadcast messages */ @@ -10968,6 +10968,10 @@ add_new_read_cbm_part (MMIfaceModemCellBroadcast *self, data->len, self, &error); + if (error) { + /* Don't treat the error as critical */ + mm_obj_dbg (self, "error parsing PDU: %s", error->message); + } break; case QMI_WMS_MESSAGE_FORMAT_MWI: case QMI_WMS_MESSAGE_FORMAT_GSM_WCDMA_POINT_TO_POINT: @@ -10979,13 +10983,14 @@ add_new_read_cbm_part (MMIfaceModemCellBroadcast *self, if (part) { mm_obj_dbg (self, "correctly parsed PDU"); - mm_iface_modem_cell_broadcast_take_part (self, - part, - mm_cbm_state_from_qmi_message_tag (tag)); - } else if (error) { - /* Don't treat the error as critical */ - mm_obj_dbg (self, "error parsing PDU: %s", error->message); - g_error_free (error); + if (!mm_iface_modem_cell_broadcast_take_part (self, + G_OBJECT (self), + part, + mm_cbm_state_from_qmi_message_tag (tag), + &error)) { + /* Don't treat the error as critical */ + mm_obj_dbg (self, "error adding CBM: %s", error->message); + } } } @@ -11538,22 +11543,6 @@ cell_broadcast_set_channels (MMIfaceModemCellBroadcast *_self, } /*****************************************************************************/ -/* Create CBM (CellBroadcast interface) */ - -static MMBaseCbm * -cell_broadcast_create_cbm (MMIfaceModemCellBroadcast *_self) -{ - MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self); - - /* Handle AT URC only fallback */ - if (self->priv->cell_broadcast_fallback_at_only) { - return iface_modem_cell_broadcast_parent->create_cbm (_self); - } - - return mm_base_cbm_new (MM_BASE_MODEM (self), G_OBJECT (self)); -} - -/*****************************************************************************/ /* Check support (Voice interface) */ static gboolean @@ -15316,7 +15305,6 @@ iface_modem_cell_broadcast_init (MMIfaceModemCellBroadcastInterface *iface) iface->cleanup_unsolicited_events_finish = cell_broadcast_cleanup_unsolicited_events_finish; iface->set_channels = cell_broadcast_set_channels; iface->set_channels_finish = cell_broadcast_set_channels_finish; - iface->create_cbm = cell_broadcast_create_cbm; } static void diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index 2ccde45e..16d579c7 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -10606,7 +10606,7 @@ cbc_cbm_received (MMPortSerialAt *port, GMatchInfo *info, MMBroadbandModem *self) { - GError *error = NULL; + g_autoptr(GError) error = NULL; MMCbmPart *part; guint length; gchar *pdu; @@ -10621,15 +10621,19 @@ cbc_cbm_received (MMPortSerialAt *port, return; part = mm_cbm_part_new_from_pdu (pdu, self, &error); - if (part) { - mm_obj_dbg (self, "correctly parsed PDU"); - mm_iface_modem_cell_broadcast_take_part (MM_IFACE_MODEM_CELL_BROADCAST (self), - part, - MM_CBM_STATE_RECEIVED); - } else { + if (!part) { /* Don't treat the error as critical */ mm_obj_dbg (self, "error parsing PDU: %s", error->message); - g_error_free (error); + } else { + mm_obj_dbg (self, "correctly parsed PDU"); + if (!mm_iface_modem_cell_broadcast_take_part (MM_IFACE_MODEM_CELL_BROADCAST (self), + G_OBJECT (self), + part, + MM_CBM_STATE_RECEIVED, + &error)) { + /* Don't treat the error as critical */ + mm_obj_dbg (self, "error adding CBM: %s", error->message); + } } } @@ -10686,15 +10690,6 @@ modem_cell_broadcast_cleanup_unsolicited_events (MMIfaceModemCellBroadcast *self set_cell_broadcast_unsolicited_events_handlers (self, FALSE, callback, user_data); } -/*****************************************************************************/ -/* Create CBM (CellBroadcast interface) */ - -static MMBaseCbm * -modem_cell_broadcast_create_cbm (MMIfaceModemCellBroadcast *self) -{ - return mm_base_cbm_new (MM_BASE_MODEM (self), G_OBJECT (self)); -} - /***********************************************************************************/ /* Get channels (CellBroadcast interface) */ @@ -14507,7 +14502,6 @@ iface_modem_cell_broadcast_init (MMIfaceModemCellBroadcastInterface *iface) iface->cleanup_unsolicited_events_finish = modem_cell_broadcast_setup_cleanup_unsolicited_events_finish; iface->set_channels = modem_cell_broadcast_set_channels; iface->set_channels_finish = modem_cell_broadcast_set_channels_finish; - iface->create_cbm = modem_cell_broadcast_create_cbm; } static void diff --git a/src/mm-cbm-list.c b/src/mm-cbm-list.c index 02d91bdc..571c6c74 100644 --- a/src/mm-cbm-list.c +++ b/src/mm-cbm-list.c @@ -179,6 +179,7 @@ cmp_cbm_by_serial_and_id (MMBaseCbm *cbm, static gboolean take_part (MMCbmList *self, + GObject *bind_to, MMCbmPart *part, MMCbmState state, GError **error) @@ -202,7 +203,7 @@ take_part (MMCbmList *self, } /* Create new cbm */ - cbm = mm_base_cbm_new_with_part (self->priv->modem, + cbm = mm_base_cbm_new_with_part (bind_to, state, mm_cbm_part_get_num_parts (part), part, @@ -256,6 +257,7 @@ mm_cbm_list_has_part (MMCbmList *self, gboolean mm_cbm_list_take_part (MMCbmList *self, + GObject *bind_to, MMCbmPart *part, MMCbmState state, GError **error) @@ -275,7 +277,7 @@ mm_cbm_list_take_part (MMCbmList *self, return FALSE; } - return take_part (self, part, state, error); + return take_part (self, bind_to, part, state, error); } /*****************************************************************************/ diff --git a/src/mm-cbm-list.h b/src/mm-cbm-list.h index 2c493659..479c3630 100644 --- a/src/mm-cbm-list.h +++ b/src/mm-cbm-list.h @@ -69,6 +69,7 @@ gboolean mm_cbm_list_has_part (MMCbmList *self, guint8 part_num); gboolean mm_cbm_list_take_part (MMCbmList *self, + GObject *bind_to, MMCbmPart *part, MMCbmState state, GError **error); diff --git a/src/mm-iface-modem-cell-broadcast.c b/src/mm-iface-modem-cell-broadcast.c index d6fdbdfe..32a77535 100644 --- a/src/mm-iface-modem-cell-broadcast.c +++ b/src/mm-iface-modem-cell-broadcast.c @@ -275,16 +275,6 @@ handle_list (MmGdbusModemCellBroadcast *skeleton, /*****************************************************************************/ -MMBaseCbm * -mm_iface_modem_cell_broadcast_create_cbm (MMIfaceModemCellBroadcast *self) -{ - g_assert (MM_IFACE_MODEM_CELL_BROADCAST_GET_IFACE (self)->create_cbm != NULL); - - return MM_IFACE_MODEM_CELL_BROADCAST_GET_IFACE (self)->create_cbm (self); -} - -/*****************************************************************************/ - typedef struct _InitializationContext InitializationContext; static void interface_initialization_step (GTask *task); @@ -742,22 +732,22 @@ mm_iface_modem_cell_broadcast_enable (MMIfaceModemCellBroadcast *self, /*****************************************************************************/ gboolean -mm_iface_modem_cell_broadcast_take_part (MMIfaceModemCellBroadcast *self, - MMCbmPart *cbm_part, - MMCbmState state) +mm_iface_modem_cell_broadcast_take_part (MMIfaceModemCellBroadcast *self, + GObject *bind_to, + MMCbmPart *cbm_part, + MMCbmState state, + GError **error) { g_autoptr(MMCbmList) list = NULL; - g_autoptr(GError) error = NULL; gboolean added = FALSE; g_object_get (self, MM_IFACE_MODEM_CELL_BROADCAST_CBM_LIST, &list, NULL); - if (list) { - added = mm_cbm_list_take_part (list, cbm_part, state, &error); + added = mm_cbm_list_take_part (list, bind_to, cbm_part, state, error); if (!added) - mm_obj_dbg (self, "Can't take part in CBM list: %s", error->message); + g_prefix_error (error, "couldn't take part in CBM list: "); } /* If part wasn't taken, we need to free the part ourselves */ diff --git a/src/mm-iface-modem-cell-broadcast.h b/src/mm-iface-modem-cell-broadcast.h index 32170b7b..c8bfc5b6 100644 --- a/src/mm-iface-modem-cell-broadcast.h +++ b/src/mm-iface-modem-cell-broadcast.h @@ -83,9 +83,6 @@ struct _MMIfaceModemCellBroadcastInterface { GAsyncReadyCallback callback, gpointer user_data); - /* Create Cbm objects */ - MMBaseCbm * (* create_cbm) (MMIfaceModemCellBroadcast *self); - /* Set channel list */ void (* set_channels) (MMIfaceModemCellBroadcast *self, GArray *channels, @@ -129,10 +126,9 @@ void mm_iface_modem_cell_broadcast_bind_simple_status (MMIfaceModemCellBroadcast /* Report new CBM part */ gboolean mm_iface_modem_cell_broadcast_take_part (MMIfaceModemCellBroadcast *self, + GObject *bind_to, MMCbmPart *cbm_part, - MMCbmState state); - -/* CBM creation */ -MMBaseCbm *mm_iface_modem_cell_broadcast_create_cbm (MMIfaceModemCellBroadcast *self); + MMCbmState state, + GError **error); #endif /* MM_IFACE_MODEM_CELLBROADCAST_H */ |