diff options
Diffstat (limited to 'include/libimobiledevice/screenshotr.h')
-rw-r--r-- | include/libimobiledevice/screenshotr.h | 94 |
1 files changed, 77 insertions, 17 deletions
diff --git a/include/libimobiledevice/screenshotr.h b/include/libimobiledevice/screenshotr.h index b3669ee..db3c969 100644 --- a/include/libimobiledevice/screenshotr.h +++ b/include/libimobiledevice/screenshotr.h | |||
@@ -4,7 +4,8 @@ | |||
4 | * @note Requires a mounted developer image. | 4 | * @note Requires a mounted developer image. |
5 | * \internal | 5 | * \internal |
6 | * | 6 | * |
7 | * Copyright (c) 2010 Nikias Bassen All Rights Reserved. | 7 | * Copyright (c) 2010-2019 Nikias Bassen, All Rights Reserved. |
8 | * Copyright (c) 2010-2014 Martin Szulecki, All Rights Reserved. | ||
8 | * | 9 | * |
9 | * This library is free software; you can redistribute it and/or | 10 | * This library is free software; you can redistribute it and/or |
10 | * modify it under the terms of the GNU Lesser General Public | 11 | * modify it under the terms of the GNU Lesser General Public |
@@ -29,27 +30,86 @@ extern "C" { | |||
29 | #endif | 30 | #endif |
30 | 31 | ||
31 | #include <libimobiledevice/libimobiledevice.h> | 32 | #include <libimobiledevice/libimobiledevice.h> |
33 | #include <libimobiledevice/lockdown.h> | ||
32 | 34 | ||
33 | /** @name Error Codes */ | 35 | /** Service identifier passed to lockdownd_start_service() to start the screenshotr service */ |
34 | /*@{*/ | 36 | #define SCREENSHOTR_SERVICE_NAME "com.apple.mobile.screenshotr" |
35 | #define SCREENSHOTR_E_SUCCESS 0 | ||
36 | #define SCREENSHOTR_E_INVALID_ARG -1 | ||
37 | #define SCREENSHOTR_E_PLIST_ERROR -2 | ||
38 | #define SCREENSHOTR_E_MUX_ERROR -3 | ||
39 | #define SCREENSHOTR_E_BAD_VERSION -4 | ||
40 | 37 | ||
41 | #define SCREENSHOTR_E_UNKNOWN_ERROR -256 | 38 | /** Error Codes */ |
42 | /*@}*/ | 39 | typedef enum { |
40 | SCREENSHOTR_E_SUCCESS = 0, | ||
41 | SCREENSHOTR_E_INVALID_ARG = -1, | ||
42 | SCREENSHOTR_E_PLIST_ERROR = -2, | ||
43 | SCREENSHOTR_E_MUX_ERROR = -3, | ||
44 | SCREENSHOTR_E_SSL_ERROR = -4, | ||
45 | SCREENSHOTR_E_RECEIVE_TIMEOUT = -5, | ||
46 | SCREENSHOTR_E_BAD_VERSION = -6, | ||
47 | SCREENSHOTR_E_UNKNOWN_ERROR = -256 | ||
48 | } screenshotr_error_t; | ||
43 | 49 | ||
44 | /** Represents an error code. */ | 50 | typedef struct screenshotr_client_private screenshotr_client_private; /**< \private */ |
45 | typedef int16_t screenshotr_error_t; | ||
46 | |||
47 | typedef struct screenshotr_client_private screenshotr_client_private; | ||
48 | typedef screenshotr_client_private *screenshotr_client_t; /**< The client handle. */ | 51 | typedef screenshotr_client_private *screenshotr_client_t; /**< The client handle. */ |
49 | 52 | ||
50 | screenshotr_error_t screenshotr_client_new(idevice_t device, uint16_t port, screenshotr_client_t * client); | 53 | |
51 | screenshotr_error_t screenshotr_client_free(screenshotr_client_t client); | 54 | /** |
52 | screenshotr_error_t screenshotr_take_screenshot(screenshotr_client_t client, char **imgdata, uint64_t *imgsize); | 55 | * Connects to the screenshotr service on the specified device. |
56 | * | ||
57 | * @param device The device to connect to. | ||
58 | * @param service The service descriptor returned by lockdownd_start_service. | ||
59 | * @param client Pointer that will be set to a newly allocated | ||
60 | * screenshotr_client_t upon successful return. | ||
61 | * | ||
62 | * @note This service is only available if a developer disk image has been | ||
63 | * mounted. | ||
64 | * | ||
65 | * @return SCREENSHOTR_E_SUCCESS on success, SCREENSHOTR_E_INVALID ARG if one | ||
66 | * or more parameters are invalid, or SCREENSHOTR_E_CONN_FAILED if the | ||
67 | * connection to the device could not be established. | ||
68 | */ | ||
69 | LIBIMOBILEDEVICE_API screenshotr_error_t screenshotr_client_new(idevice_t device, lockdownd_service_descriptor_t service, screenshotr_client_t * client); | ||
70 | |||
71 | /** | ||
72 | * Starts a new screenshotr service on the specified device and connects to it. | ||
73 | * | ||
74 | * @param device The device to connect to. | ||
75 | * @param client Pointer that will point to a newly allocated | ||
76 | * screenshotr_client_t upon successful return. Must be freed using | ||
77 | * screenshotr_client_free() after use. | ||
78 | * @param label The label to use for communication. Usually the program name. | ||
79 | * Pass NULL to disable sending the label in requests to lockdownd. | ||
80 | * | ||
81 | * @return SCREENSHOTR_E_SUCCESS on success, or an SCREENSHOTR_E_* error | ||
82 | * code otherwise. | ||
83 | */ | ||
84 | LIBIMOBILEDEVICE_API screenshotr_error_t screenshotr_client_start_service(idevice_t device, screenshotr_client_t* client, const char* label); | ||
85 | |||
86 | /** | ||
87 | * Disconnects a screenshotr client from the device and frees up the | ||
88 | * screenshotr client data. | ||
89 | * | ||
90 | * @param client The screenshotr client to disconnect and free. | ||
91 | * | ||
92 | * @return SCREENSHOTR_E_SUCCESS on success, or SCREENSHOTR_E_INVALID_ARG | ||
93 | * if client is NULL. | ||
94 | */ | ||
95 | LIBIMOBILEDEVICE_API screenshotr_error_t screenshotr_client_free(screenshotr_client_t client); | ||
96 | |||
97 | |||
98 | /** | ||
99 | * Get a screen shot from the connected device. | ||
100 | * | ||
101 | * @param client The connection screenshotr service client. | ||
102 | * @param imgdata Pointer that will point to a newly allocated buffer | ||
103 | * containing TIFF image data upon successful return. It is up to the | ||
104 | * caller to free the memory. | ||
105 | * @param imgsize Pointer to a uint64_t that will be set to the size of the | ||
106 | * buffer imgdata points to upon successful return. | ||
107 | * | ||
108 | * @return SCREENSHOTR_E_SUCCESS on success, SCREENSHOTR_E_INVALID_ARG if | ||
109 | * one or more parameters are invalid, or another error code if an | ||
110 | * error occurred. | ||
111 | */ | ||
112 | LIBIMOBILEDEVICE_API screenshotr_error_t screenshotr_take_screenshot(screenshotr_client_t client, char **imgdata, uint64_t *imgsize); | ||
53 | 113 | ||
54 | #ifdef __cplusplus | 114 | #ifdef __cplusplus |
55 | } | 115 | } |