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:
+3
-30
@@ -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
@@ -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,
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user