summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2020-06-17 10:51:09 +0200
committerBastien Nocera <hadess@hadess.net>2020-06-17 11:01:30 +0200
commit97185bae75b16bea48d532aa5511417e485b1c06 (patch)
tree665b7018a8df1363a2300757c4e3fc2981b09d68
parentd2917c0c71b2ee5cfd0e46e7401229a4c80ca0e3 (diff)
downloadupower-97185bae75b16bea48d532aa5511417e485b1c06.tar.gz
linux: Add support for iPhone XR, XS models
Modifying the udev serial to be acceptable as an hyphened UDID, as the usbmux stack expects. Closes: #114
-rw-r--r--src/linux/up-device-idevice.c28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/linux/up-device-idevice.c b/src/linux/up-device-idevice.c
index a808269..d2fa0a1 100644
--- a/src/linux/up-device-idevice.c
+++ b/src/linux/up-device-idevice.c
@@ -203,6 +203,28 @@ out:
return G_SOURCE_CONTINUE;
}
+static char *
+get_device_uuid (GUdevDevice *native)
+{
+ const char *uuid;
+ char *retval;
+
+ uuid = g_udev_device_get_property (native, "ID_SERIAL_SHORT");
+ if (uuid == NULL)
+ return NULL;
+
+ if (strlen (uuid) != 24)
+ return g_strdup (uuid);
+
+ /* new style UDID: add hyphen between first 8 and following 16 digits */
+ retval = g_malloc0 (24 + 1 + 1);
+ memcpy (&retval[0], &uuid[0], 8);
+ retval[8] = '-';
+ memcpy (&retval[9], &uuid[8], 16);
+
+ return retval;
+}
+
/**
* up_device_idevice_coldplug:
*
@@ -213,7 +235,7 @@ up_device_idevice_coldplug (UpDevice *device)
{
UpDeviceIdevice *idevice = UP_DEVICE_IDEVICE (device);
GUdevDevice *native;
- const gchar *uuid;
+ char *uuid;
const gchar *model;
UpDeviceKind kind;
@@ -223,7 +245,7 @@ up_device_idevice_coldplug (UpDevice *device)
return FALSE;
/* Get the UUID */
- uuid = g_udev_device_get_property (native, "ID_SERIAL_SHORT");
+ uuid = get_device_uuid (native);
if (uuid == NULL)
return FALSE;
@@ -253,6 +275,8 @@ up_device_idevice_coldplug (UpDevice *device)
g_source_set_name_by_id (idevice->priv->start_id,
"[upower] up_device_idevice_start_poll_cb (linux)");
+ g_free (uuid);
+
return TRUE;
}