summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2011-04-28 21:01:27 +0200
committerGravatar Martin Szulecki2011-04-28 21:01:27 +0200
commitfa40b4ad59bce6b9d8c3a0763b09530e8cf2a006 (patch)
treeb3c3409dac86c2d0ee90e1b620763bb37ac3b527
parentd81887cf6a0d067d8b345d8077027ccd634c1c17 (diff)
downloadlibimobiledevice-fa40b4ad59bce6b9d8c3a0763b09530e8cf2a006.tar.gz
libimobiledevice-fa40b4ad59bce6b9d8c3a0763b09530e8cf2a006.tar.bz2
device_link_service: Allow passing a reason message upon disconnecting
-rw-r--r--src/device_link_service.c8
-rw-r--r--src/device_link_service.h2
-rw-r--r--src/mobilebackup.c2
-rw-r--r--src/mobilebackup2.c1
-rw-r--r--src/mobilesync.c2
-rw-r--r--src/screenshotr.c2
6 files changed, 11 insertions, 6 deletions
diff --git a/src/device_link_service.c b/src/device_link_service.c
index 6083d80..5825f0c 100644
--- a/src/device_link_service.c
+++ b/src/device_link_service.c
@@ -235,20 +235,24 @@ leave:
235 * Performs a disconnect with the connected device link service client. 235 * Performs a disconnect with the connected device link service client.
236 * 236 *
237 * @param client The device link service client to disconnect. 237 * @param client The device link service client to disconnect.
238 * @param message Optional message to send send to the device or NULL.
238 * 239 *
239 * @return DEVICE_LINK_SERVICE_E_SUCCESS on success, 240 * @return DEVICE_LINK_SERVICE_E_SUCCESS on success,
240 * DEVICE_LINK_SERVICE_E_INVALID_ARG if client is NULL, 241 * DEVICE_LINK_SERVICE_E_INVALID_ARG if client is NULL,
241 * or DEVICE_LINK_SERVICE_E_MUX_ERROR when there's an error when sending 242 * or DEVICE_LINK_SERVICE_E_MUX_ERROR when there's an error when sending
242 * the the disconnect message. 243 * the the disconnect message.
243 */ 244 */
244device_link_service_error_t device_link_service_disconnect(device_link_service_client_t client) 245device_link_service_error_t device_link_service_disconnect(device_link_service_client_t client, const char *message)
245{ 246{
246 if (!client) 247 if (!client)
247 return DEVICE_LINK_SERVICE_E_INVALID_ARG; 248 return DEVICE_LINK_SERVICE_E_INVALID_ARG;
248 249
249 plist_t array = plist_new_array(); 250 plist_t array = plist_new_array();
250 plist_array_append_item(array, plist_new_string("DLMessageDisconnect")); 251 plist_array_append_item(array, plist_new_string("DLMessageDisconnect"));
251 plist_array_append_item(array, plist_new_string("All done, thanks for the memories")); 252 if (message)
253 plist_array_append_item(array, plist_new_string(message));
254 else
255 plist_array_append_item(array, plist_new_string("___EmptyParameterString___"));
252 256
253 device_link_service_error_t err = DEVICE_LINK_SERVICE_E_SUCCESS; 257 device_link_service_error_t err = DEVICE_LINK_SERVICE_E_SUCCESS;
254 if (property_list_service_send_binary_plist(client->parent, array) != PROPERTY_LIST_SERVICE_E_SUCCESS) { 258 if (property_list_service_send_binary_plist(client->parent, array) != PROPERTY_LIST_SERVICE_E_SUCCESS) {
diff --git a/src/device_link_service.h b/src/device_link_service.h
index 9953f77..8589428 100644
--- a/src/device_link_service.h
+++ b/src/device_link_service.h
@@ -48,7 +48,7 @@ device_link_service_error_t device_link_service_send_ping(device_link_service_cl
48device_link_service_error_t device_link_service_receive_message(device_link_service_client_t client, plist_t *msg_plist, char **dlmessage); 48device_link_service_error_t device_link_service_receive_message(device_link_service_client_t client, plist_t *msg_plist, char **dlmessage);
49device_link_service_error_t device_link_service_send_process_message(device_link_service_client_t client, plist_t message); 49device_link_service_error_t device_link_service_send_process_message(device_link_service_client_t client, plist_t message);
50device_link_service_error_t device_link_service_receive_process_message(device_link_service_client_t client, plist_t *message); 50device_link_service_error_t device_link_service_receive_process_message(device_link_service_client_t client, plist_t *message);
51device_link_service_error_t device_link_service_disconnect(device_link_service_client_t client); 51device_link_service_error_t device_link_service_disconnect(device_link_service_client_t client, const char *message);
52device_link_service_error_t device_link_service_send(device_link_service_client_t client, plist_t plist); 52device_link_service_error_t device_link_service_send(device_link_service_client_t client, plist_t plist);
53device_link_service_error_t device_link_service_receive(device_link_service_client_t client, plist_t *plist); 53device_link_service_error_t device_link_service_receive(device_link_service_client_t client, plist_t *plist);
54 54
diff --git a/src/mobilebackup.c b/src/mobilebackup.c
index fcff60d..78f9a5c 100644
--- a/src/mobilebackup.c
+++ b/src/mobilebackup.c
@@ -115,7 +115,7 @@ mobilebackup_error_t mobilebackup_client_free(mobilebackup_client_t client)
115 return MOBILEBACKUP_E_INVALID_ARG; 115 return MOBILEBACKUP_E_INVALID_ARG;
116 mobilebackup_error_t err = MOBILEBACKUP_E_SUCCESS; 116 mobilebackup_error_t err = MOBILEBACKUP_E_SUCCESS;
117 if (client->parent) { 117 if (client->parent) {
118 device_link_service_disconnect(client->parent); 118 device_link_service_disconnect(client->parent, NULL);
119 err = mobilebackup_error(device_link_service_client_free(client->parent)); 119 err = mobilebackup_error(device_link_service_client_free(client->parent));
120 } 120 }
121 free(client); 121 free(client);
diff --git a/src/mobilebackup2.c b/src/mobilebackup2.c
index c72823e..c16da9a 100644
--- a/src/mobilebackup2.c
+++ b/src/mobilebackup2.c
@@ -116,6 +116,7 @@ mobilebackup2_error_t mobilebackup2_client_free(mobilebackup2_client_t client)
116 return MOBILEBACKUP2_E_INVALID_ARG; 116 return MOBILEBACKUP2_E_INVALID_ARG;
117 mobilebackup2_error_t err = MOBILEBACKUP2_E_SUCCESS; 117 mobilebackup2_error_t err = MOBILEBACKUP2_E_SUCCESS;
118 if (client->parent) { 118 if (client->parent) {
119 device_link_service_disconnect(client->parent, NULL);
119 err = mobilebackup2_error(device_link_service_client_free(client->parent)); 120 err = mobilebackup2_error(device_link_service_client_free(client->parent));
120 } 121 }
121 free(client); 122 free(client);
diff --git a/src/mobilesync.c b/src/mobilesync.c
index ee9af5f..e600452 100644
--- a/src/mobilesync.c
+++ b/src/mobilesync.c
@@ -122,7 +122,7 @@ mobilesync_error_t mobilesync_client_free(mobilesync_client_t client)
122{ 122{
123 if (!client) 123 if (!client)
124 return MOBILESYNC_E_INVALID_ARG; 124 return MOBILESYNC_E_INVALID_ARG;
125 device_link_service_disconnect(client->parent); 125 device_link_service_disconnect(client->parent, "All done, thanks for the memories");
126 mobilesync_error_t err = mobilesync_error(device_link_service_client_free(client->parent)); 126 mobilesync_error_t err = mobilesync_error(device_link_service_client_free(client->parent));
127 free(client); 127 free(client);
128 return err; 128 return err;
diff --git a/src/screenshotr.c b/src/screenshotr.c
index 0c4c9b2..e9301a9 100644
--- a/src/screenshotr.c
+++ b/src/screenshotr.c
@@ -114,7 +114,7 @@ screenshotr_error_t screenshotr_client_free(screenshotr_client_t client)
114{ 114{
115 if (!client) 115 if (!client)
116 return SCREENSHOTR_E_INVALID_ARG; 116 return SCREENSHOTR_E_INVALID_ARG;
117 device_link_service_disconnect(client->parent); 117 device_link_service_disconnect(client->parent, NULL);
118 screenshotr_error_t err = screenshotr_error(device_link_service_client_free(client->parent)); 118 screenshotr_error_t err = screenshotr_error(device_link_service_client_free(client->parent));
119 free(client); 119 free(client);
120 return err; 120 return err;