diff options
| author | 2009-07-14 14:21:53 +0200 | |
|---|---|---|
| committer | 2009-07-18 10:39:42 -0700 | |
| commit | 484ff2166a2de58dd185a05fefea47a3f8165033 (patch) | |
| tree | a8b6f712399369b60999dcd81c8bdbdd36c8ce8b /src/MobileSync.c | |
| parent | 5fa071717799ee2424c41b62360c7122b104fefb (diff) | |
| download | libimobiledevice-484ff2166a2de58dd185a05fefea47a3f8165033.tar.gz libimobiledevice-484ff2166a2de58dd185a05fefea47a3f8165033.tar.bz2 | |
Cleanup mobilesync API and bindings. Move get_all_contacts() into msyncclient.
Diffstat (limited to 'src/MobileSync.c')
| -rw-r--r-- | src/MobileSync.c | 125 |
1 files changed, 13 insertions, 112 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 | ||
| 32 | iphone_error_t iphone_msync_new_client(iphone_device_t device, int dst_port, | 32 | iphone_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 | ||
| 104 | static void iphone_msync_stop_session(iphone_msync_client_t client) | 104 | static 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 | ||
| 118 | iphone_error_t iphone_msync_free_client(iphone_msync_client_t client) | 118 | iphone_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 | */ |
| 134 | iphone_error_t iphone_msync_recv(iphone_msync_client_t client, plist_t * plist) | 134 | iphone_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 | */ |
| 180 | iphone_error_t iphone_msync_send(iphone_msync_client_t client, plist_t plist) | 180 | iphone_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 | ||
| 210 | iphone_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 | } | ||
