port-probe: new probing result setters
We make them public, so that we can set results before actually running the probing.
This commit is contained in:
@@ -89,6 +89,66 @@ struct _MMPortProbePrivate {
|
||||
PortProbeRunTask *task;
|
||||
};
|
||||
|
||||
void
|
||||
mm_port_probe_set_result_at (MMPortProbe *self,
|
||||
gboolean at)
|
||||
{
|
||||
self->priv->is_at = at;
|
||||
self->priv->flags |= MM_PORT_PROBE_AT;
|
||||
|
||||
if (self->priv->is_at) {
|
||||
mm_dbg ("(%s) port is AT-capable", self->priv->name);
|
||||
|
||||
/* Also set as not a QCDM port */
|
||||
self->priv->is_qcdm = FALSE;
|
||||
self->priv->flags |= MM_PORT_PROBE_QCDM;
|
||||
} else {
|
||||
mm_dbg ("(%s) port is not AT-capable", self->priv->name);
|
||||
self->priv->vendor = NULL;
|
||||
self->priv->product = NULL;
|
||||
self->priv->flags |= (MM_PORT_PROBE_AT_VENDOR | MM_PORT_PROBE_AT_PRODUCT);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
mm_port_probe_set_result_at_vendor (MMPortProbe *self,
|
||||
const gchar *at_vendor)
|
||||
{
|
||||
mm_dbg ("(%s) vendor probing finished", self->priv->name);
|
||||
self->priv->vendor = g_utf8_casefold (at_vendor, -1);
|
||||
self->priv->flags |= MM_PORT_PROBE_AT_VENDOR;
|
||||
}
|
||||
|
||||
void
|
||||
mm_port_probe_set_result_at_product (MMPortProbe *self,
|
||||
const gchar *at_product)
|
||||
{
|
||||
mm_dbg ("(%s) product probing finished", self->priv->name);
|
||||
self->priv->product = g_utf8_casefold (at_product, -1);
|
||||
self->priv->flags |= MM_PORT_PROBE_AT_PRODUCT;
|
||||
}
|
||||
|
||||
void
|
||||
mm_port_probe_set_result_qcdm (MMPortProbe *self,
|
||||
gboolean qcdm)
|
||||
{
|
||||
self->priv->is_qcdm = qcdm;
|
||||
self->priv->flags |= MM_PORT_PROBE_QCDM;
|
||||
|
||||
if (self->priv->is_qcdm) {
|
||||
mm_dbg ("(%s) port is QCDM-capable", self->priv->name);
|
||||
|
||||
/* Also set as not an AT port */
|
||||
self->priv->is_at = FALSE;
|
||||
self->priv->vendor = NULL;
|
||||
self->priv->product = NULL;
|
||||
self->priv->flags |= (MM_PORT_PROBE_AT |
|
||||
MM_PORT_PROBE_AT_VENDOR |
|
||||
MM_PORT_PROBE_AT_PRODUCT);
|
||||
} else
|
||||
mm_dbg ("(%s) port is not QCDM-capable", self->priv->name);
|
||||
}
|
||||
|
||||
static gboolean serial_probe_at (MMPortProbe *self);
|
||||
static gboolean serial_probe_qcdm (MMPortProbe *self);
|
||||
static void serial_probe_schedule (MMPortProbe *self);
|
||||
@@ -170,6 +230,7 @@ serial_probe_qcdm_parse_response (MMQcdmSerialPort *port,
|
||||
{
|
||||
QcdmResult *result;
|
||||
gint err = QCDM_SUCCESS;
|
||||
gboolean is_qcdm = FALSE;
|
||||
|
||||
/* Just the initial poke; ignore it */
|
||||
if (!self)
|
||||
@@ -190,17 +251,14 @@ serial_probe_qcdm_parse_response (MMQcdmSerialPort *port,
|
||||
err);
|
||||
} else {
|
||||
/* yay, probably a QCDM port */
|
||||
is_qcdm = TRUE;
|
||||
|
||||
qcdm_result_unref (result);
|
||||
self->priv->is_qcdm = TRUE;
|
||||
|
||||
/* Also set as not an AT port */
|
||||
self->priv->is_at = FALSE;
|
||||
self->priv->flags |= MM_PORT_PROBE_AT;
|
||||
}
|
||||
}
|
||||
|
||||
/* Mark as being probed */
|
||||
self->priv->flags |= MM_PORT_PROBE_QCDM;
|
||||
/* Set probing result */
|
||||
mm_port_probe_set_result_qcdm (self, is_qcdm);
|
||||
|
||||
/* Reschedule probing */
|
||||
serial_probe_schedule (self);
|
||||
@@ -300,16 +358,12 @@ serial_probe_at_product_result_processor (MMPortProbe *self,
|
||||
if (result) {
|
||||
/* If any result given, it must be a string */
|
||||
g_assert (g_variant_is_of_type (result, G_VARIANT_TYPE_STRING));
|
||||
|
||||
mm_dbg ("(%s) product probing finished", self->priv->name);
|
||||
self->priv->product = g_utf8_casefold (g_variant_get_string (result, NULL), -1);
|
||||
self->priv->flags |= MM_PORT_PROBE_AT_PRODUCT;
|
||||
mm_port_probe_set_result_at_product (self,
|
||||
g_variant_get_string (result, NULL));
|
||||
return;
|
||||
}
|
||||
|
||||
mm_dbg ("(%s) no result in product probing", self->priv->name);
|
||||
self->priv->product = NULL;
|
||||
self->priv->flags |= MM_PORT_PROBE_AT_PRODUCT;
|
||||
mm_port_probe_set_result_at_product (self, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -319,16 +373,12 @@ serial_probe_at_vendor_result_processor (MMPortProbe *self,
|
||||
if (result) {
|
||||
/* If any result given, it must be a string */
|
||||
g_assert (g_variant_is_of_type (result, G_VARIANT_TYPE_STRING));
|
||||
|
||||
mm_dbg ("(%s) vendor probing finished", self->priv->name);
|
||||
self->priv->vendor = g_utf8_casefold (g_variant_get_string (result, NULL), -1);
|
||||
self->priv->flags |= MM_PORT_PROBE_AT_VENDOR;
|
||||
mm_port_probe_set_result_at_vendor (self,
|
||||
g_variant_get_string (result, NULL));
|
||||
return;
|
||||
}
|
||||
|
||||
mm_dbg ("(%s) no result in vendor probing", self->priv->name);
|
||||
self->priv->vendor = NULL;
|
||||
self->priv->flags |= MM_PORT_PROBE_AT_VENDOR;
|
||||
mm_port_probe_set_result_at_vendor (self, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -340,22 +390,12 @@ serial_probe_at_result_processor (MMPortProbe *self,
|
||||
g_assert (g_variant_is_of_type (result, G_VARIANT_TYPE_BOOLEAN));
|
||||
|
||||
if (g_variant_get_boolean (result)) {
|
||||
mm_dbg ("(%s) port is AT-capable", self->priv->name);
|
||||
self->priv->is_at = TRUE;
|
||||
self->priv->flags |= MM_PORT_PROBE_AT;
|
||||
|
||||
/* Also set as not a QCDM port */
|
||||
self->priv->is_qcdm = FALSE;
|
||||
self->priv->flags |= MM_PORT_PROBE_QCDM;
|
||||
mm_port_probe_set_result_at (self, TRUE);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
mm_dbg ("(%s) port is not AT-capable", self->priv->name);
|
||||
self->priv->is_at = FALSE;
|
||||
self->priv->flags |= (MM_PORT_PROBE_AT |
|
||||
MM_PORT_PROBE_AT_VENDOR |
|
||||
MM_PORT_PROBE_AT_PRODUCT);
|
||||
mm_port_probe_set_result_at (self, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -65,6 +65,16 @@ const gchar *mm_port_probe_get_port_subsys (MMPortProbe *self);
|
||||
const gchar *mm_port_probe_get_port_physdev (MMPortProbe *self);
|
||||
const gchar *mm_port_probe_get_port_driver (MMPortProbe *self);
|
||||
|
||||
/* Probing result setters */
|
||||
void mm_port_probe_set_result_at (MMPortProbe *self,
|
||||
gboolean at);
|
||||
void mm_port_probe_set_result_at_vendor (MMPortProbe *self,
|
||||
const gchar *at_vendor);
|
||||
void mm_port_probe_set_result_at_product (MMPortProbe *self,
|
||||
const gchar *at_product);
|
||||
void mm_port_probe_set_result_qcdm (MMPortProbe *self,
|
||||
gboolean qcdm);
|
||||
|
||||
/* Run probing */
|
||||
void mm_port_probe_run (MMPortProbe *self,
|
||||
MMPortProbeFlag flags,
|
||||
|
Reference in New Issue
Block a user