summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2009-07-14 14:21:53 +0200
committerGravatar Matt Colyer2009-07-18 10:39:42 -0700
commit484ff2166a2de58dd185a05fefea47a3f8165033 (patch)
treea8b6f712399369b60999dcd81c8bdbdd36c8ce8b /src
parent5fa071717799ee2424c41b62360c7122b104fefb (diff)
downloadlibimobiledevice-484ff2166a2de58dd185a05fefea47a3f8165033.tar.gz
libimobiledevice-484ff2166a2de58dd185a05fefea47a3f8165033.tar.bz2
Cleanup mobilesync API and bindings. Move get_all_contacts() into msyncclient.
Diffstat (limited to 'src')
-rw-r--r--src/MobileSync.c125
-rw-r--r--src/MobileSync.h8
2 files changed, 15 insertions, 118 deletions
diff --git a/src/MobileSync.c b/src/MobileSync.c
index 7d6e947..b9a1cb0 100644
--- a/src/MobileSync.c
+++ b/src/MobileSync.c
@@ -29,8 +29,8 @@
29#define MSYNC_VERSION_INT1 100 29#define MSYNC_VERSION_INT1 100
30#define MSYNC_VERSION_INT2 100 30#define MSYNC_VERSION_INT2 100
31 31
32iphone_error_t iphone_msync_new_client(iphone_device_t device, int dst_port, 32iphone_error_t mobilesync_new_client(iphone_device_t device, int dst_port,
33 iphone_msync_client_t * client) 33 mobilesync_client_t * client)
34{ 34{
35 if (!device || dst_port == 0 || !client || *client) 35 if (!device || dst_port == 0 || !client || *client)
36 return IPHONE_E_INVALID_ARG; 36 return IPHONE_E_INVALID_ARG;
@@ -43,14 +43,14 @@ iphone_error_t iphone_msync_new_client(iphone_device_t device, int dst_port,
43 return ret; 43 return ret;
44 } 44 }
45 45
46 iphone_msync_client_t client_loc = (iphone_msync_client_t) malloc(sizeof(struct iphone_msync_client_int)); 46 mobilesync_client_t client_loc = (mobilesync_client_t) malloc(sizeof(struct mobilesync_client_int));
47 client_loc->sfd = sfd; 47 client_loc->sfd = sfd;
48 48
49 //perform handshake 49 //perform handshake
50 plist_t array = NULL; 50 plist_t array = NULL;
51 51
52 //first receive version 52 //first receive version
53 ret = iphone_msync_recv(client_loc, &array); 53 ret = mobilesync_recv(client_loc, &array);
54 54
55 plist_t msg_node = plist_find_node_by_string(array, "DLMessageVersionExchange"); 55 plist_t msg_node = plist_find_node_by_string(array, "DLMessageVersionExchange");
56 plist_t ver_1 = plist_get_next_sibling(msg_node); 56 plist_t ver_1 = plist_get_next_sibling(msg_node);
@@ -77,12 +77,12 @@ iphone_error_t iphone_msync_new_client(iphone_device_t device, int dst_port,
77 plist_add_sub_string_el(array, "DLMessageVersionExchange"); 77 plist_add_sub_string_el(array, "DLMessageVersionExchange");
78 plist_add_sub_string_el(array, "DLVersionsOk"); 78 plist_add_sub_string_el(array, "DLVersionsOk");
79 79
80 ret = iphone_msync_send(client_loc, array); 80 ret = mobilesync_send(client_loc, array);
81 81
82 plist_free(array); 82 plist_free(array);
83 array = NULL; 83 array = NULL;
84 84
85 ret = iphone_msync_recv(client_loc, &array); 85 ret = mobilesync_recv(client_loc, &array);
86 plist_t rep_node = plist_find_node_by_string(array, "DLMessageDeviceReady"); 86 plist_t rep_node = plist_find_node_by_string(array, "DLMessageDeviceReady");
87 87
88 if (rep_node) { 88 if (rep_node) {
@@ -96,12 +96,12 @@ iphone_error_t iphone_msync_new_client(iphone_device_t device, int dst_port,
96 } 96 }
97 97
98 if (IPHONE_E_SUCCESS != ret) 98 if (IPHONE_E_SUCCESS != ret)
99 iphone_msync_free_client(client_loc); 99 mobilesync_free_client(client_loc);
100 100
101 return ret; 101 return ret;
102} 102}
103 103
104static void iphone_msync_stop_session(iphone_msync_client_t client) 104static void mobilesync_disconnect(mobilesync_client_t client)
105{ 105{
106 if (!client) 106 if (!client)
107 return; 107 return;
@@ -110,17 +110,17 @@ static void iphone_msync_stop_session(iphone_msync_client_t client)
110 plist_add_sub_string_el(array, "DLMessageDisconnect"); 110 plist_add_sub_string_el(array, "DLMessageDisconnect");
111 plist_add_sub_string_el(array, "All done, thanks for the memories"); 111 plist_add_sub_string_el(array, "All done, thanks for the memories");
112 112
113 iphone_msync_send(client, array); 113 mobilesync_send(client, array);
114 plist_free(array); 114 plist_free(array);
115 array = NULL; 115 array = NULL;
116} 116}
117 117
118iphone_error_t iphone_msync_free_client(iphone_msync_client_t client) 118iphone_error_t mobilesync_free_client(mobilesync_client_t client)
119{ 119{
120 if (!client) 120 if (!client)
121 return IPHONE_E_INVALID_ARG; 121 return IPHONE_E_INVALID_ARG;
122 122
123 iphone_msync_stop_session(client); 123 mobilesync_disconnect(client);
124 return usbmuxd_disconnect(client->sfd); 124 return usbmuxd_disconnect(client->sfd);
125} 125}
126 126
@@ -131,7 +131,7 @@ iphone_error_t iphone_msync_free_client(iphone_msync_client_t client)
131 * 131 *
132 * @return an error code 132 * @return an error code
133 */ 133 */
134iphone_error_t iphone_msync_recv(iphone_msync_client_t client, plist_t * plist) 134iphone_error_t mobilesync_recv(mobilesync_client_t client, plist_t * plist)
135{ 135{
136 if (!client || !plist || (plist && *plist)) 136 if (!client || !plist || (plist && *plist))
137 return IPHONE_E_INVALID_ARG; 137 return IPHONE_E_INVALID_ARG;
@@ -177,7 +177,7 @@ iphone_error_t iphone_msync_recv(iphone_msync_client_t client, plist_t * plist)
177 * 177 *
178 * @return an error code 178 * @return an error code
179 */ 179 */
180iphone_error_t iphone_msync_send(iphone_msync_client_t client, plist_t plist) 180iphone_error_t mobilesync_send(mobilesync_client_t client, plist_t plist)
181{ 181{
182 if (!client || !plist) 182 if (!client || !plist)
183 return IPHONE_E_INVALID_ARG; 183 return IPHONE_E_INVALID_ARG;
@@ -207,102 +207,3 @@ iphone_error_t iphone_msync_send(iphone_msync_client_t client, plist_t plist)
207 return ret; 207 return ret;
208} 208}
209 209
210iphone_error_t iphone_msync_get_all_contacts(iphone_msync_client_t client)
211{
212 if (!client)
213 return IPHONE_E_INVALID_ARG;
214
215 iphone_error_t ret = IPHONE_E_UNKNOWN_ERROR;
216 plist_t array = NULL;
217
218 array = plist_new_array();
219 plist_add_sub_string_el(array, "SDMessageSyncDataClassWithDevice");
220 plist_add_sub_string_el(array, "com.apple.Contacts");
221 plist_add_sub_string_el(array, "---");
222 plist_add_sub_string_el(array, "2009-01-09 18:03:58 +0100");
223 plist_add_sub_uint_el(array, 106);
224 plist_add_sub_string_el(array, "___EmptyParameterString___");
225
226 ret = iphone_msync_send(client, array);
227 plist_free(array);
228 array = NULL;
229
230 ret = iphone_msync_recv(client, &array);
231
232 plist_t rep_node = plist_find_node_by_string(array, "SDSyncTypeSlow");
233
234 if (!rep_node)
235 return ret;
236
237 plist_free(array);
238 array = NULL;
239
240 array = plist_new_array();
241 plist_add_sub_string_el(array, "SDMessageGetAllRecordsFromDevice");
242 plist_add_sub_string_el(array, "com.apple.Contacts");
243
244
245 ret = iphone_msync_send(client, array);
246 plist_free(array);
247 array = NULL;
248
249 ret = iphone_msync_recv(client, &array);
250
251 plist_t contact_node;
252 plist_t switch_node;
253
254 contact_node = plist_find_node_by_string(array, "com.apple.Contacts");
255 switch_node = plist_find_node_by_string(array, "SDMessageDeviceReadyToReceiveChanges");
256
257 while (NULL == switch_node) {
258
259 plist_free(array);
260 array = NULL;
261
262 array = plist_new_array();
263 plist_add_sub_string_el(array, "SDMessageAcknowledgeChangesFromDevice");
264 plist_add_sub_string_el(array, "com.apple.Contacts");
265
266 ret = iphone_msync_send(client, array);
267 plist_free(array);
268 array = NULL;
269
270 ret = iphone_msync_recv(client, &array);
271
272 contact_node = plist_find_node_by_string(array, "com.apple.Contacts");
273 switch_node = plist_find_node_by_string(array, "SDMessageDeviceReadyToReceiveChanges");
274 }
275
276 array = plist_new_array();
277 plist_add_sub_string_el(array, "DLMessagePing");
278 plist_add_sub_string_el(array, "Preparing to get changes for device");
279
280 ret = iphone_msync_send(client, array);
281 plist_free(array);
282 array = NULL;
283
284 array = plist_new_array();
285 plist_add_sub_string_el(array, "SDMessageProcessChanges");
286 plist_add_sub_string_el(array, "com.apple.Contacts");
287 plist_add_sub_node(array, plist_new_dict());
288 plist_add_sub_bool_el(array, 0);
289 plist_t dict = plist_new_dict();
290 plist_add_sub_node(array, dict);
291 plist_add_sub_key_el(dict, "SyncDeviceLinkEntityNamesKey");
292 plist_t array2 = plist_new_array();
293 plist_add_sub_string_el(array2, "com.apple.contacts.Contact");
294 plist_add_sub_string_el(array2, "com.apple.contacts.Group");
295 plist_add_sub_key_el(dict, "SyncDeviceLinkAllRecordsOfPulledEntityTypeSentKey");
296 plist_add_sub_bool_el(dict, 0);
297
298 ret = iphone_msync_send(client, array);
299 plist_free(array);
300 array = NULL;
301
302 ret = iphone_msync_recv(client, &array);
303 plist_free(array);
304 array = NULL;
305
306
307 return ret;
308}
diff --git a/src/MobileSync.h b/src/MobileSync.h
index 495e702..5279ce0 100644
--- a/src/MobileSync.h
+++ b/src/MobileSync.h
@@ -23,16 +23,12 @@
23 23
24#include "iphone.h" 24#include "iphone.h"
25#include "utils.h" 25#include "utils.h"
26#include "libiphone/mobilesync.h"
26 27
27#include <plist/plist.h> 28#include <plist/plist.h>
28 29
29 30struct mobilesync_client_int {
30
31struct iphone_msync_client_int {
32 int sfd; 31 int sfd;
33}; 32};
34 33
35
36iphone_error_t iphone_msync_get_all_contacts(iphone_msync_client_t client);
37
38#endif 34#endif