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>
This commit is contained in:
Dan Williams
2025-05-08 20:08:06 -05:00
parent ec5104c9a8
commit 1fa21fcc48
8 changed files with 45 additions and 104 deletions
+3 -30
View File
@@ -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",
+2 -5
View File
@@ -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,
+13 -25
View File
@@ -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);
}
}
}
@@ -11537,22 +11542,6 @@ cell_broadcast_set_channels (MMIfaceModemCellBroadcast *_self,
g_task_new (self, NULL, callback, user_data));
}
/*****************************************************************************/
/* 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) */
@@ -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
+12 -18
View File
@@ -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
+4 -2
View File
@@ -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);
}
/*****************************************************************************/
+1
View File
@@ -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);
+7 -17
View File
@@ -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 */
+3 -7
View File
@@ -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 */