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;
|
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_at (MMPortProbe *self);
|
||||||
static gboolean serial_probe_qcdm (MMPortProbe *self);
|
static gboolean serial_probe_qcdm (MMPortProbe *self);
|
||||||
static void serial_probe_schedule (MMPortProbe *self);
|
static void serial_probe_schedule (MMPortProbe *self);
|
||||||
@@ -170,6 +230,7 @@ serial_probe_qcdm_parse_response (MMQcdmSerialPort *port,
|
|||||||
{
|
{
|
||||||
QcdmResult *result;
|
QcdmResult *result;
|
||||||
gint err = QCDM_SUCCESS;
|
gint err = QCDM_SUCCESS;
|
||||||
|
gboolean is_qcdm = FALSE;
|
||||||
|
|
||||||
/* Just the initial poke; ignore it */
|
/* Just the initial poke; ignore it */
|
||||||
if (!self)
|
if (!self)
|
||||||
@@ -190,17 +251,14 @@ serial_probe_qcdm_parse_response (MMQcdmSerialPort *port,
|
|||||||
err);
|
err);
|
||||||
} else {
|
} else {
|
||||||
/* yay, probably a QCDM port */
|
/* yay, probably a QCDM port */
|
||||||
qcdm_result_unref (result);
|
is_qcdm = TRUE;
|
||||||
self->priv->is_qcdm = TRUE;
|
|
||||||
|
|
||||||
/* Also set as not an AT port */
|
qcdm_result_unref (result);
|
||||||
self->priv->is_at = FALSE;
|
|
||||||
self->priv->flags |= MM_PORT_PROBE_AT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mark as being probed */
|
/* Set probing result */
|
||||||
self->priv->flags |= MM_PORT_PROBE_QCDM;
|
mm_port_probe_set_result_qcdm (self, is_qcdm);
|
||||||
|
|
||||||
/* Reschedule probing */
|
/* Reschedule probing */
|
||||||
serial_probe_schedule (self);
|
serial_probe_schedule (self);
|
||||||
@@ -300,16 +358,12 @@ serial_probe_at_product_result_processor (MMPortProbe *self,
|
|||||||
if (result) {
|
if (result) {
|
||||||
/* If any result given, it must be a string */
|
/* If any result given, it must be a string */
|
||||||
g_assert (g_variant_is_of_type (result, G_VARIANT_TYPE_STRING));
|
g_assert (g_variant_is_of_type (result, G_VARIANT_TYPE_STRING));
|
||||||
|
mm_port_probe_set_result_at_product (self,
|
||||||
mm_dbg ("(%s) product probing finished", self->priv->name);
|
g_variant_get_string (result, NULL));
|
||||||
self->priv->product = g_utf8_casefold (g_variant_get_string (result, NULL), -1);
|
|
||||||
self->priv->flags |= MM_PORT_PROBE_AT_PRODUCT;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mm_dbg ("(%s) no result in product probing", self->priv->name);
|
mm_port_probe_set_result_at_product (self, NULL);
|
||||||
self->priv->product = NULL;
|
|
||||||
self->priv->flags |= MM_PORT_PROBE_AT_PRODUCT;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -319,16 +373,12 @@ serial_probe_at_vendor_result_processor (MMPortProbe *self,
|
|||||||
if (result) {
|
if (result) {
|
||||||
/* If any result given, it must be a string */
|
/* If any result given, it must be a string */
|
||||||
g_assert (g_variant_is_of_type (result, G_VARIANT_TYPE_STRING));
|
g_assert (g_variant_is_of_type (result, G_VARIANT_TYPE_STRING));
|
||||||
|
mm_port_probe_set_result_at_vendor (self,
|
||||||
mm_dbg ("(%s) vendor probing finished", self->priv->name);
|
g_variant_get_string (result, NULL));
|
||||||
self->priv->vendor = g_utf8_casefold (g_variant_get_string (result, NULL), -1);
|
|
||||||
self->priv->flags |= MM_PORT_PROBE_AT_VENDOR;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mm_dbg ("(%s) no result in vendor probing", self->priv->name);
|
mm_port_probe_set_result_at_vendor (self, NULL);
|
||||||
self->priv->vendor = NULL;
|
|
||||||
self->priv->flags |= MM_PORT_PROBE_AT_VENDOR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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));
|
g_assert (g_variant_is_of_type (result, G_VARIANT_TYPE_BOOLEAN));
|
||||||
|
|
||||||
if (g_variant_get_boolean (result)) {
|
if (g_variant_get_boolean (result)) {
|
||||||
mm_dbg ("(%s) port is AT-capable", self->priv->name);
|
mm_port_probe_set_result_at (self, TRUE);
|
||||||
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;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mm_dbg ("(%s) port is not AT-capable", self->priv->name);
|
mm_port_probe_set_result_at (self, FALSE);
|
||||||
self->priv->is_at = FALSE;
|
|
||||||
self->priv->flags |= (MM_PORT_PROBE_AT |
|
|
||||||
MM_PORT_PROBE_AT_VENDOR |
|
|
||||||
MM_PORT_PROBE_AT_PRODUCT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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_physdev (MMPortProbe *self);
|
||||||
const gchar *mm_port_probe_get_port_driver (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 */
|
/* Run probing */
|
||||||
void mm_port_probe_run (MMPortProbe *self,
|
void mm_port_probe_run (MMPortProbe *self,
|
||||||
MMPortProbeFlag flags,
|
MMPortProbeFlag flags,
|
||||||
|
Reference in New Issue
Block a user