cdma: implement EquipmentIdentity for CDMA devices
This commit is contained in:
+42
-1
@@ -124,6 +124,44 @@ check_valid (MMGenericCdma *self)
|
||||
mm_modem_base_set_valid (MM_MODEM_BASE (self), new_valid);
|
||||
}
|
||||
|
||||
static void
|
||||
get_esn_cb (MMModem *modem,
|
||||
const char *result,
|
||||
GError *error,
|
||||
gpointer user_data)
|
||||
{
|
||||
if (modem) {
|
||||
mm_modem_base_set_equipment_identity (MM_MODEM_BASE (modem), error ? "" : result);
|
||||
mm_serial_port_close (MM_SERIAL_PORT (MM_GENERIC_CDMA_GET_PRIVATE (modem)->primary));
|
||||
check_valid (MM_GENERIC_CDMA (modem));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
initial_esn_check (MMGenericCdma *self)
|
||||
{
|
||||
GError *error = NULL;
|
||||
MMGenericCdmaPrivate *priv;
|
||||
|
||||
g_return_if_fail (MM_IS_GENERIC_CDMA (self));
|
||||
priv = MM_GENERIC_CDMA_GET_PRIVATE (self);
|
||||
|
||||
g_return_if_fail (priv->primary != NULL);
|
||||
|
||||
if (mm_serial_port_open (MM_SERIAL_PORT (priv->primary), &error)) {
|
||||
/* Make sure echoing is off */
|
||||
mm_at_serial_port_queue_command (priv->primary, "E0", 3, NULL, NULL);
|
||||
mm_modem_cdma_get_esn (MM_MODEM_CDMA (self), get_esn_cb, NULL);
|
||||
} else {
|
||||
g_warning ("%s: failed to open serial port: (%d) %s",
|
||||
__func__,
|
||||
error ? error->code : -1,
|
||||
error && error->message ? error->message : "(unknown)");
|
||||
g_clear_error (&error);
|
||||
check_valid (self);
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
owns_port (MMModem *modem, const char *subsys, const char *name)
|
||||
{
|
||||
@@ -176,7 +214,10 @@ mm_generic_cdma_grab_port (MMGenericCdma *self,
|
||||
priv->data = port;
|
||||
g_object_notify (G_OBJECT (self), MM_MODEM_DATA_DEVICE);
|
||||
}
|
||||
check_valid (self);
|
||||
|
||||
/* Get modem's ESN number */
|
||||
initial_esn_check (self);
|
||||
|
||||
} else if (ptype == MM_PORT_TYPE_SECONDARY)
|
||||
priv->secondary = MM_AT_SERIAL_PORT (port);
|
||||
} else if (MM_IS_QCDM_SERIAL_PORT (port)) {
|
||||
|
||||
Reference in New Issue
Block a user