plugin: port to use object logging

This commit is contained in:
Aleksander Morgado
2020-03-31 17:58:09 +02:00
parent 4b0c83b9ed
commit 6987d1bea6

View File

@@ -34,7 +34,7 @@
#include "mm-port-serial-qcdm.h" #include "mm-port-serial-qcdm.h"
#include "mm-serial-parsers.h" #include "mm-serial-parsers.h"
#include "mm-private-boxed-types.h" #include "mm-private-boxed-types.h"
#include "mm-log.h" #include "mm-log-object.h"
#include "mm-daemon-enums-types.h" #include "mm-daemon-enums-types.h"
#if defined WITH_QMI #if defined WITH_QMI
@@ -44,7 +44,10 @@
# include "mm-broadband-modem-mbim.h" # include "mm-broadband-modem-mbim.h"
#endif #endif
G_DEFINE_TYPE (MMPlugin, mm_plugin, G_TYPE_OBJECT) static void log_object_iface_init (MMLogObjectInterface *iface);
G_DEFINE_TYPE_EXTENDED (MMPlugin, mm_plugin, G_TYPE_OBJECT, 0,
G_IMPLEMENT_INTERFACE (MM_TYPE_LOG_OBJECT, log_object_iface_init))
/* Virtual port corresponding to the embedded modem */ /* Virtual port corresponding to the embedded modem */
static const gchar *virtual_port[] = {"smd0", NULL}; static const gchar *virtual_port[] = {"smd0", NULL};
@@ -234,9 +237,7 @@ apply_pre_probing_filters (MMPlugin *self,
/* The plugin may specify that only some subsystems are supported. If that /* The plugin may specify that only some subsystems are supported. If that
* is the case, filter by subsystem */ * is the case, filter by subsystem */
if (apply_subsystem_filter (self, port)) { if (apply_subsystem_filter (self, port)) {
mm_dbg ("(%s) [%s] filtered by subsystem", mm_obj_dbg (self, "port %s filtered by subsystem", mm_kernel_device_get_name (port));
self->priv->name,
mm_kernel_device_get_name (port));
return TRUE; return TRUE;
} }
@@ -265,9 +266,7 @@ apply_pre_probing_filters (MMPlugin *self,
/* If error retrieving driver: unsupported */ /* If error retrieving driver: unsupported */
if (!drivers) { if (!drivers) {
mm_dbg ("(%s) [%s] filtered as couldn't retrieve drivers", mm_obj_dbg (self, "port %s filtered as couldn't retrieve drivers", mm_kernel_device_get_name (port));
self->priv->name,
mm_kernel_device_get_name (port));
return TRUE; return TRUE;
} }
@@ -286,9 +285,7 @@ apply_pre_probing_filters (MMPlugin *self,
/* If we didn't match any driver: unsupported */ /* If we didn't match any driver: unsupported */
if (!found) { if (!found) {
mm_dbg ("(%s) [%s] filtered by drivers", mm_obj_dbg (self, "port %s filtered by drivers", mm_kernel_device_get_name (port));
self->priv->name,
mm_kernel_device_get_name (port));
return TRUE; return TRUE;
} }
} }
@@ -301,9 +298,7 @@ apply_pre_probing_filters (MMPlugin *self,
for (j = 0; drivers[j]; j++) { for (j = 0; drivers[j]; j++) {
/* If we match a forbidden driver: unsupported */ /* If we match a forbidden driver: unsupported */
if (g_str_equal (drivers[j], self->priv->forbidden_drivers[i])) { if (g_str_equal (drivers[j], self->priv->forbidden_drivers[i])) {
mm_dbg ("(%s) [%s] filtered by forbidden drivers", mm_obj_dbg (self, "port %s filtered by forbidden drivers", mm_kernel_device_get_name (port));
self->priv->name,
mm_kernel_device_get_name (port));
return TRUE; return TRUE;
} }
} }
@@ -317,9 +312,7 @@ apply_pre_probing_filters (MMPlugin *self,
for (j = 0; drivers[j]; j++) { for (j = 0; drivers[j]; j++) {
/* If we match the QMI driver: unsupported */ /* If we match the QMI driver: unsupported */
if (g_str_equal (drivers[j], "qmi_wwan")) { if (g_str_equal (drivers[j], "qmi_wwan")) {
mm_dbg ("(%s) [%s] filtered by implicit QMI driver", mm_obj_dbg (self, "port %s filtered by implicit QMI driver", mm_kernel_device_get_name (port));
self->priv->name,
mm_kernel_device_get_name (port));
return TRUE; return TRUE;
} }
} }
@@ -332,9 +325,7 @@ apply_pre_probing_filters (MMPlugin *self,
for (j = 0; drivers[j]; j++) { for (j = 0; drivers[j]; j++) {
/* If we match the MBIM driver: unsupported */ /* If we match the MBIM driver: unsupported */
if (g_str_equal (drivers[j], "cdc_mbim")) { if (g_str_equal (drivers[j], "cdc_mbim")) {
mm_dbg ("(%s) [%s] filtered by implicit MBIM driver", mm_obj_dbg (self, "port %s filtered by implicit MBIM driver", mm_kernel_device_get_name (port));
self->priv->name,
mm_kernel_device_get_name (port));
return TRUE; return TRUE;
} }
} }
@@ -398,9 +389,7 @@ apply_pre_probing_filters (MMPlugin *self,
!self->priv->forbidden_product_strings) || !self->priv->forbidden_product_strings) ||
g_str_equal (mm_kernel_device_get_subsystem (port), "net") || g_str_equal (mm_kernel_device_get_subsystem (port), "net") ||
g_str_has_prefix (mm_kernel_device_get_name (port), "cdc-wdm"))) { g_str_has_prefix (mm_kernel_device_get_name (port), "cdc-wdm"))) {
mm_dbg ("(%s) [%s] filtered by vendor/product IDs", mm_obj_dbg (self, "port %s filtered by vendor/product IDs", mm_kernel_device_get_name (port));
self->priv->name,
mm_kernel_device_get_name (port));
return TRUE; return TRUE;
} }
@@ -410,9 +399,7 @@ apply_pre_probing_filters (MMPlugin *self,
for (i = 0; self->priv->forbidden_product_ids[i].l; i++) { for (i = 0; self->priv->forbidden_product_ids[i].l; i++) {
if (vendor == self->priv->forbidden_product_ids[i].l && if (vendor == self->priv->forbidden_product_ids[i].l &&
product == self->priv->forbidden_product_ids[i].r) { product == self->priv->forbidden_product_ids[i].r) {
mm_dbg ("(%s) [%s] filtered by forbidden vendor/product IDs", mm_obj_dbg (self, "port %s filtered by forbidden vendor/product IDs", mm_kernel_device_get_name (port));
self->priv->name,
mm_kernel_device_get_name (port));
return TRUE; return TRUE;
} }
} }
@@ -451,9 +438,7 @@ apply_pre_probing_filters (MMPlugin *self,
/* If we didn't match any udev tag: unsupported */ /* If we didn't match any udev tag: unsupported */
if (!self->priv->udev_tags[i]) { if (!self->priv->udev_tags[i]) {
mm_dbg ("(%s) [%s] filtered by udev tags", mm_obj_dbg (self, "port %s filtered by udev tags", mm_kernel_device_get_name (port));
self->priv->name,
mm_kernel_device_get_name (port));
return TRUE; return TRUE;
} }
} }
@@ -500,9 +485,7 @@ apply_post_probing_filters (MMPlugin *self,
if (vendor_filtered) { if (vendor_filtered) {
if (!self->priv->product_strings) { if (!self->priv->product_strings) {
mm_dbg ("(%s) [%s] filtered by vendor strings", mm_obj_dbg (self, "port %s filtered by vendor strings", mm_port_probe_get_port_name (probe));
self->priv->name,
mm_port_probe_get_port_name (probe));
return TRUE; return TRUE;
} }
} else } else
@@ -525,9 +508,7 @@ apply_post_probing_filters (MMPlugin *self,
if (self->priv->product_strings) { if (self->priv->product_strings) {
/* If we didn't get any vendor or product: filtered */ /* If we didn't get any vendor or product: filtered */
if (!vendor || !product) { if (!vendor || !product) {
mm_dbg ("(%s) [%s] filtered as no vendor/product strings given", mm_obj_dbg (self, "port %s filtered as no vendor/product strings given", mm_port_probe_get_port_name (probe));
self->priv->name,
mm_port_probe_get_port_name (probe));
return TRUE; return TRUE;
} }
else { else {
@@ -548,9 +529,7 @@ apply_post_probing_filters (MMPlugin *self,
/* If we didn't match any product: unsupported */ /* If we didn't match any product: unsupported */
if (!self->priv->product_strings[i].l) { if (!self->priv->product_strings[i].l) {
mm_dbg ("(%s) [%s] filtered by vendor/product strings", mm_obj_dbg (self, "port %s filtered by vendor/product strings", mm_port_probe_get_port_name (probe));
self->priv->name,
mm_port_probe_get_port_name (probe));
return TRUE; return TRUE;
} }
} }
@@ -570,9 +549,7 @@ apply_post_probing_filters (MMPlugin *self,
g_free (casefolded_product); g_free (casefolded_product);
if (found) { if (found) {
/* If we match a forbidden product: unsupported */ /* If we match a forbidden product: unsupported */
mm_dbg ("(%s) [%s] filtered by forbidden vendor/product strings", mm_obj_dbg (self, "port %s filtered by forbidden vendor/product strings", mm_port_probe_get_port_name (probe));
self->priv->name,
mm_port_probe_get_port_name (probe));
return TRUE; return TRUE;
} }
} }
@@ -586,9 +563,7 @@ apply_post_probing_filters (MMPlugin *self,
if (self->priv->allowed_icera && if (self->priv->allowed_icera &&
!mm_port_probe_is_icera (probe)) { !mm_port_probe_is_icera (probe)) {
/* Unsupported! */ /* Unsupported! */
mm_dbg ("(%s) [%s] filtered as modem is not icera", mm_obj_dbg (self, "port %s filtered as modem is not icera", mm_port_probe_get_port_name (probe));
self->priv->name,
mm_port_probe_get_port_name (probe));
return TRUE; return TRUE;
} }
@@ -597,9 +572,7 @@ apply_post_probing_filters (MMPlugin *self,
if (self->priv->forbidden_icera && if (self->priv->forbidden_icera &&
mm_port_probe_is_icera (probe)) { mm_port_probe_is_icera (probe)) {
/* Unsupported! */ /* Unsupported! */
mm_dbg ("(%s) [%s] filtered as modem is icera", mm_obj_dbg (self, "port %s filtered as modem is icera", mm_port_probe_get_port_name (probe));
self->priv->name,
mm_port_probe_get_port_name (probe));
return TRUE; return TRUE;
} }
@@ -608,9 +581,7 @@ apply_post_probing_filters (MMPlugin *self,
if (self->priv->allowed_xmm && if (self->priv->allowed_xmm &&
!mm_port_probe_is_xmm (probe)) { !mm_port_probe_is_xmm (probe)) {
/* Unsupported! */ /* Unsupported! */
mm_dbg ("(%s) [%s] filtered as modem is not XMM", mm_obj_dbg (self, "port %s filtered as modem is not XMM", mm_port_probe_get_port_name (probe));
self->priv->name,
mm_port_probe_get_port_name (probe));
return TRUE; return TRUE;
} }
@@ -619,9 +590,7 @@ apply_post_probing_filters (MMPlugin *self,
if (self->priv->forbidden_xmm && if (self->priv->forbidden_xmm &&
mm_port_probe_is_xmm (probe)) { mm_port_probe_is_xmm (probe)) {
/* Unsupported! */ /* Unsupported! */
mm_dbg ("(%s) [%s] filtered as modem is XMM", mm_obj_dbg (self, "port %s filtered as modem is XMM", mm_port_probe_get_port_name (probe));
self->priv->name,
mm_port_probe_get_port_name (probe));
return TRUE; return TRUE;
} }
@@ -782,8 +751,7 @@ mm_plugin_supports_port (MMPlugin *self,
/* Before launching any probing, check if the port is a net device. */ /* Before launching any probing, check if the port is a net device. */
if (g_str_equal (mm_kernel_device_get_subsystem (port), "net")) { if (g_str_equal (mm_kernel_device_get_subsystem (port), "net")) {
mm_dbg ("(%s) [%s] probing deferred until result suggested", mm_obj_dbg (self, "probing of port %s deferred until result suggested", mm_kernel_device_get_name (port));
self->priv->name, mm_kernel_device_get_name (port));
g_task_return_int (task, MM_PLUGIN_SUPPORTS_PORT_DEFER_UNTIL_SUGGESTED); g_task_return_int (task, MM_PLUGIN_SUPPORTS_PORT_DEFER_UNTIL_SUGGESTED);
g_object_unref (task); g_object_unref (task);
return; return;
@@ -835,10 +803,9 @@ mm_plugin_supports_port (MMPlugin *self,
if (self->priv->single_at && if (self->priv->single_at &&
mm_port_probe_list_has_at_port (mm_device_peek_port_probe_list (device)) && mm_port_probe_list_has_at_port (mm_device_peek_port_probe_list (device)) &&
!mm_port_probe_is_at (probe)) { !mm_port_probe_is_at (probe)) {
mm_dbg ("(%s) [%s] not setting up AT probing tasks: " mm_obj_dbg (self, "not setting up AT probing tasks in port %s: "
"modem already has the expected single AT port", "modem already has the expected single AT port",
self->priv->name, mm_kernel_device_get_name (port));
mm_kernel_device_get_name (port));
/* Assuming it won't be an AT port. We still run the probe anyway, in /* Assuming it won't be an AT port. We still run the probe anyway, in
* case we need to check for other port types (e.g. QCDM) */ * case we need to check for other port types (e.g. QCDM) */
@@ -856,10 +823,9 @@ mm_plugin_supports_port (MMPlugin *self,
/* Launch the probe */ /* Launch the probe */
probe_list_str = mm_port_probe_flag_build_string_from_mask (ctx->flags); probe_list_str = mm_port_probe_flag_build_string_from_mask (ctx->flags);
mm_dbg ("(%s) [%s] probe required: '%s'", mm_obj_dbg (self, "probes required for port %s: '%s'",
self->priv->name, mm_kernel_device_get_name (port),
mm_kernel_device_get_name (port), probe_list_str);
probe_list_str);
g_free (probe_list_str); g_free (probe_list_str);
mm_port_probe_run (probe, mm_port_probe_run (probe,
@@ -972,7 +938,7 @@ mm_plugin_create_modem (MMPlugin *self,
/* Ports that are explicitly blacklisted will be grabbed as ignored */ /* Ports that are explicitly blacklisted will be grabbed as ignored */
if (mm_port_probe_is_ignored (probe)) { if (mm_port_probe_is_ignored (probe)) {
mm_dbg ("(%s/%s): port is blacklisted", subsys, name); mm_obj_dbg (self, "port %s is blacklisted", name);
force_ignored = TRUE; force_ignored = TRUE;
goto grab_port; goto grab_port;
} }
@@ -982,7 +948,7 @@ mm_plugin_create_modem (MMPlugin *self,
port_type == MM_PORT_TYPE_NET && port_type == MM_PORT_TYPE_NET &&
g_strcmp0 (driver, "qmi_wwan") != 0) { g_strcmp0 (driver, "qmi_wwan") != 0) {
/* Non-QMI net ports are ignored in QMI modems */ /* Non-QMI net ports are ignored in QMI modems */
mm_dbg ("(%s/%s): ignoring non-QMI net port in QMI modem", subsys, name); mm_obj_dbg (self, "ignoring non-QMI net port %s in QMI modem", name);
force_ignored = TRUE; force_ignored = TRUE;
goto grab_port; goto grab_port;
} }
@@ -991,7 +957,7 @@ mm_plugin_create_modem (MMPlugin *self,
port_type == MM_PORT_TYPE_NET && port_type == MM_PORT_TYPE_NET &&
g_strcmp0 (driver, "qmi_wwan") == 0) { g_strcmp0 (driver, "qmi_wwan") == 0) {
/* QMI net ports are ignored in non-QMI modems */ /* QMI net ports are ignored in non-QMI modems */
mm_dbg ("(%s/%s): ignoring QMI net port in non-QMI modem", subsys, name); mm_obj_dbg (self, "ignoring QMI net port %s in non-QMI modem", name);
force_ignored = TRUE; force_ignored = TRUE;
goto grab_port; goto grab_port;
} }
@@ -999,7 +965,7 @@ mm_plugin_create_modem (MMPlugin *self,
if (port_type == MM_PORT_TYPE_NET && if (port_type == MM_PORT_TYPE_NET &&
g_strcmp0 (driver, "qmi_wwan") == 0) { g_strcmp0 (driver, "qmi_wwan") == 0) {
/* QMI net ports are ignored if QMI support not built */ /* QMI net ports are ignored if QMI support not built */
mm_dbg ("(%s/%s): ignoring QMI net port as QMI support isn't available", subsys, name); mm_obj_dbg (self, "ignoring QMI net port %s as QMI support isn't available", name);
force_ignored = TRUE; force_ignored = TRUE;
goto grab_port; goto grab_port;
} }
@@ -1010,7 +976,7 @@ mm_plugin_create_modem (MMPlugin *self,
port_type == MM_PORT_TYPE_NET && port_type == MM_PORT_TYPE_NET &&
g_strcmp0 (driver, "cdc_mbim") != 0) { g_strcmp0 (driver, "cdc_mbim") != 0) {
/* Non-MBIM net ports are ignored in MBIM modems */ /* Non-MBIM net ports are ignored in MBIM modems */
mm_dbg ("(%s/%s): ignoring non-MBIM net port in MBIM modem", subsys, name); mm_obj_dbg (self, "ignoring non-MBIM net port %s in MBIM modem", name);
force_ignored = TRUE; force_ignored = TRUE;
goto grab_port; goto grab_port;
} }
@@ -1019,14 +985,14 @@ mm_plugin_create_modem (MMPlugin *self,
port_type == MM_PORT_TYPE_NET && port_type == MM_PORT_TYPE_NET &&
g_strcmp0 (driver, "cdc_mbim") == 0) { g_strcmp0 (driver, "cdc_mbim") == 0) {
/* MBIM net ports are ignored in non-MBIM modems */ /* MBIM net ports are ignored in non-MBIM modems */
mm_dbg ("(%s/%s): ignoring MBIM net port in non-MBIM modem", subsys, name); mm_obj_dbg (self, "ignoring MBIM net port %s in non-MBIM modem", name);
force_ignored = TRUE; force_ignored = TRUE;
goto grab_port; goto grab_port;
} }
#else #else
if (port_type == MM_PORT_TYPE_NET && if (port_type == MM_PORT_TYPE_NET &&
g_strcmp0 (driver, "cdc_mbim") == 0) { g_strcmp0 (driver, "cdc_mbim") == 0) {
mm_dbg ("(%s/%s): ignoring MBIM net port as MBIM support isn't available", subsys, name); mm_obj_dbg (self, "ignoring MBIM net port %s as MBIM support isn't available", name);
force_ignored = TRUE; force_ignored = TRUE;
goto grab_port; goto grab_port;
} }
@@ -1053,9 +1019,7 @@ mm_plugin_create_modem (MMPlugin *self,
next: next:
if (!grabbed) { if (!grabbed) {
mm_warn ("Could not grab port (%s/%s): '%s'", mm_obj_warn (self, "could not grab port %s: %s", name, inner_error ? inner_error->message : "unknown error");
subsys, name,
inner_error ? inner_error->message : "unknown error");
g_clear_error (&inner_error); g_clear_error (&inner_error);
} }
} }
@@ -1077,18 +1041,18 @@ mm_plugin_create_modem (MMPlugin *self,
* installed yet). */ * installed yet). */
kernel_device = mm_kernel_device_generic_new_with_rules (properties, NULL, &inner_error); kernel_device = mm_kernel_device_generic_new_with_rules (properties, NULL, &inner_error);
if (!kernel_device) { if (!kernel_device) {
mm_warn ("Could not grab port (virtual/%s): '%s'", mm_obj_warn (self, "could not create generic device for virtual port %s: %s",
virtual_ports[i], virtual_ports[i],
inner_error ? inner_error->message : "unknown error"); inner_error ? inner_error->message : "unknown error");
g_clear_error (&inner_error); g_clear_error (&inner_error);
} else if (!mm_base_modem_grab_port (modem, } else if (!mm_base_modem_grab_port (modem,
kernel_device, kernel_device,
MM_PORT_TYPE_AT, MM_PORT_TYPE_AT,
MM_PORT_SERIAL_AT_FLAG_NONE, MM_PORT_SERIAL_AT_FLAG_NONE,
&inner_error)) { &inner_error)) {
mm_warn ("Could not grab port (virtual/%s): '%s'", mm_obj_warn (self, "could not grab virtual port %s: %s",
virtual_ports[i], virtual_ports[i],
inner_error ? inner_error->message : "unknown error"); inner_error ? inner_error->message : "unknown error");
g_clear_error (&inner_error); g_clear_error (&inner_error);
} }
@@ -1107,6 +1071,19 @@ mm_plugin_create_modem (MMPlugin *self,
/*****************************************************************************/ /*****************************************************************************/
static gchar *
log_object_build_id (MMLogObject *_self)
{
MMPlugin *self;
g_autofree gchar *plugin_name_lowercase;
self = MM_PLUGIN (_self);
plugin_name_lowercase = g_ascii_strdown (self->priv->name, -1);
return g_strdup_printf ("plugin/%s", plugin_name_lowercase);
}
/*****************************************************************************/
static void static void
mm_plugin_init (MMPlugin *self) mm_plugin_init (MMPlugin *self)
{ {
@@ -1366,6 +1343,12 @@ finalize (GObject *object)
G_OBJECT_CLASS (mm_plugin_parent_class)->finalize (object); G_OBJECT_CLASS (mm_plugin_parent_class)->finalize (object);
} }
static void
log_object_iface_init (MMLogObjectInterface *iface)
{
iface->build_id = log_object_build_id;
}
static void static void
mm_plugin_class_init (MMPluginClass *klass) mm_plugin_class_init (MMPluginClass *klass)
{ {