diff options
Diffstat (limited to 'src/mm-port-probe.c')
-rw-r--r-- | src/mm-port-probe.c | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/mm-port-probe.c b/src/mm-port-probe.c index dcedc3a8..a5d2207d 100644 --- a/src/mm-port-probe.c +++ b/src/mm-port-probe.c @@ -112,6 +112,12 @@ struct _MMPortProbePrivate { GTask *task; }; +static const MMStringUintMap port_subsys_map[] = { + { "usbmisc", MM_PORT_SUBSYS_USBMISC }, + { "rpmsg", MM_PORT_SUBSYS_RPMSG }, + { "wwan", MM_PORT_SUBSYS_WWAN }, +}; + /*****************************************************************************/ static void @@ -542,11 +548,12 @@ wdm_probe_qmi (MMPortProbe *self) } else #endif /* WITH_QRTR */ { - MMPortSubsys subsys = MM_PORT_SUBSYS_USBMISC; - - if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "rpmsg")) - subsys = MM_PORT_SUBSYS_RPMSG; + MMPortSubsys subsys; + subsys = mm_string_uint_map_lookup (port_subsys_map, + G_N_ELEMENTS (port_subsys_map), + mm_kernel_device_get_subsystem (self->priv->port), + MM_PORT_SUBSYS_USBMISC); ctx->port_qmi = mm_port_qmi_new (mm_kernel_device_get_name (self->priv->port), subsys); } @@ -1215,15 +1222,13 @@ serial_open_at (MMPortProbe *self) /* Create AT serial port if not done before */ if (!ctx->serial) { - gpointer parser; - MMPortSubsys subsys = MM_PORT_SUBSYS_TTY; - - if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "usbmisc")) - subsys = MM_PORT_SUBSYS_USBMISC; - else if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "rpmsg")) - subsys = MM_PORT_SUBSYS_RPMSG; - else if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "wwan")) - subsys = MM_PORT_SUBSYS_WWAN; + gpointer parser; + MMPortSubsys subsys; + + subsys = mm_string_uint_map_lookup (port_subsys_map, + G_N_ELEMENTS (port_subsys_map), + mm_kernel_device_get_subsystem (self->priv->port), + MM_PORT_SUBSYS_TTY); ctx->serial = MM_PORT_SERIAL (mm_port_serial_at_new (mm_kernel_device_get_name (self->priv->port), subsys)); if (!ctx->serial) { |