summaryrefslogtreecommitdiffstats
path: root/include/libimobiledevice/libimobiledevice.h
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2025-06-07 12:09:24 +0200
committerGravatar Nikias Bassen2025-06-07 12:09:24 +0200
commite3f2d6070de7125058c343ef63961c27bc991bb6 (patch)
tree2436f76213b34ba2e06db96a990a6f0e17106e6e /include/libimobiledevice/libimobiledevice.h
parent2e1ee28bf1d744edcf3513859a38ac5f6615b096 (diff)
downloadlibimobiledevice-e3f2d6070de7125058c343ef63961c27bc991bb6.tar.gz
libimobiledevice-e3f2d6070de7125058c343ef63961c27bc991bb6.tar.bz2
Add new idevice_get_device_version() to interface
This allows getting a numerical representation of the device's ProductVersion string for easier version range checks
Diffstat (limited to 'include/libimobiledevice/libimobiledevice.h')
-rw-r--r--include/libimobiledevice/libimobiledevice.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/include/libimobiledevice/libimobiledevice.h b/include/libimobiledevice/libimobiledevice.h
index 8df3fed..bc57778 100644
--- a/include/libimobiledevice/libimobiledevice.h
+++ b/include/libimobiledevice/libimobiledevice.h
@@ -404,6 +404,19 @@ LIBIMOBILEDEVICE_API idevice_error_t idevice_get_handle(idevice_t device, uint32
LIBIMOBILEDEVICE_API idevice_error_t idevice_get_udid(idevice_t device, char **udid);
/**
+ * Returns the device ProductVersion in numerical form, where "X.Y.Z"
+ * will be returned as (X << 16) | (Y << 8) | Z .
+ * Use IDEVICE_DEVICE_VERSION macro for easy version comparison.
+ * @see IDEVICE_DEVICE_VERSION
+ *
+ * @param client Initialized device client
+ *
+ * @return A numerical representation of the X.Y.Z ProductVersion string
+ * or 0 if the version cannot be retrieved.
+ */
+LIBIMOBILEDEVICE_API unsigned int idevice_get_device_version(idevice_t device);
+
+/**
* Gets a readable error string for a given idevice error code.
*
* @param err An idevice error code
@@ -419,6 +432,10 @@ LIBIMOBILEDEVICE_API const char* idevice_strerror(idevice_error_t err);
*/
LIBIMOBILEDEVICE_API const char* libimobiledevice_version();
+/* macros */
+/** Helper macro to get a numerical representation of a product version tuple */
+#define IDEVICE_DEVICE_VERSION(maj, min, patch) ((((maj) & 0xFF) << 16) | (((min) & 0xFF) << 8) | ((patch) & 0xFF))
+
#ifdef __cplusplus
}
#endif