libimobiledevice  1.2.0
Macros | Typedefs | Enumerations | Functions
mobilebackup2.h File Reference

Backup and restore of all device data (mobilebackup2, iOS4+ only) More...

Macros

#define MOBILEBACKUP2_SERVICE_NAME   "com.apple.mobilebackup2"
 

Typedefs

typedef struct
mobilebackup2_client_private 
mobilebackup2_client_private
 
typedef
mobilebackup2_client_private * 
mobilebackup2_client_t
 The client handle. More...
 

Enumerations

enum  mobilebackup2_error_t {
  MOBILEBACKUP2_E_SUCCESS = 0,
  MOBILEBACKUP2_E_INVALID_ARG = -1,
  MOBILEBACKUP2_E_PLIST_ERROR = -2,
  MOBILEBACKUP2_E_MUX_ERROR = -3,
  MOBILEBACKUP2_E_BAD_VERSION = -4,
  MOBILEBACKUP2_E_REPLY_NOT_OK = -5,
  MOBILEBACKUP2_E_NO_COMMON_VERSION = -6,
  MOBILEBACKUP2_E_UNKNOWN_ERROR = -256
}
 Error Codes.
 

Functions

mobilebackup2_error_t mobilebackup2_client_new (idevice_t device, lockdownd_service_descriptor_t service, mobilebackup2_client_t *client)
 Connects to the mobilebackup2 service on the specified device. More...
 
mobilebackup2_error_t mobilebackup2_client_start_service (idevice_t device, mobilebackup2_client_t *client, const char *label)
 Starts a new mobilebackup2 service on the specified device and connects to it. More...
 
mobilebackup2_error_t mobilebackup2_client_free (mobilebackup2_client_t client)
 Disconnects a mobilebackup2 client from the device and frees up the mobilebackup2 client data. More...
 
mobilebackup2_error_t mobilebackup2_send_message (mobilebackup2_client_t client, const char *message, plist_t options)
 Sends a backup message plist. More...
 
mobilebackup2_error_t mobilebackup2_receive_message (mobilebackup2_client_t client, plist_t *msg_plist, char **dlmessage)
 Receives a DL* message plist from the device. More...
 
mobilebackup2_error_t mobilebackup2_send_raw (mobilebackup2_client_t client, const char *data, uint32_t length, uint32_t *bytes)
 Send binary data to the device. More...
 
mobilebackup2_error_t mobilebackup2_receive_raw (mobilebackup2_client_t client, char *data, uint32_t length, uint32_t *bytes)
 Receive binary from the device. More...
 
mobilebackup2_error_t mobilebackup2_version_exchange (mobilebackup2_client_t client, double local_versions[], char count, double *remote_version)
 Performs the mobilebackup2 protocol version exchange. More...
 
mobilebackup2_error_t mobilebackup2_send_request (mobilebackup2_client_t client, const char *request, const char *target_identifier, const char *source_identifier, plist_t options)
 Send a request to the connected mobilebackup2 service. More...
 
mobilebackup2_error_t mobilebackup2_send_status_response (mobilebackup2_client_t client, int status_code, const char *status1, plist_t status2)
 Sends a DLMessageStatusResponse to the device. More...
 

Detailed Description

Backup and restore of all device data (mobilebackup2, iOS4+ only)

Typedef Documentation

typedef mobilebackup2_client_private* mobilebackup2_client_t

The client handle.

Function Documentation

mobilebackup2_error_t mobilebackup2_client_free ( mobilebackup2_client_t  client)

Disconnects a mobilebackup2 client from the device and frees up the mobilebackup2 client data.

Parameters
clientThe mobilebackup2 client to disconnect and free.
Returns
MOBILEBACKUP2_E_SUCCESS on success, or MOBILEBACKUP2_E_INVALID_ARG if client is NULL.
mobilebackup2_error_t mobilebackup2_client_new ( idevice_t  device,
lockdownd_service_descriptor_t  service,
mobilebackup2_client_t client 
)

Connects to the mobilebackup2 service on the specified device.

Parameters
deviceThe device to connect to.
serviceThe service descriptor returned by lockdownd_start_service.
clientPointer that will be set to a newly allocated mobilebackup2_client_t upon successful return.
Returns
MOBILEBACKUP2_E_SUCCESS on success, MOBILEBACKUP2_E_INVALID ARG if one or more parameter is invalid, or MOBILEBACKUP2_E_BAD_VERSION if the mobilebackup2 version on the device is newer.
mobilebackup2_error_t mobilebackup2_client_start_service ( idevice_t  device,
mobilebackup2_client_t client,
const char *  label 
)

Starts a new mobilebackup2 service on the specified device and connects to it.

Parameters
deviceThe device to connect to.
clientPointer that will point to a newly allocated mobilebackup2_client_t upon successful return. Must be freed using mobilebackup2_client_free() after use.
labelThe label to use for communication. Usually the program name. Pass NULL to disable sending the label in requests to lockdownd.
Returns
MOBILEBACKUP2_E_SUCCESS on success, or an MOBILEBACKUP2_E_* error code otherwise.
mobilebackup2_error_t mobilebackup2_receive_message ( mobilebackup2_client_t  client,
plist_t *  msg_plist,
char **  dlmessage 
)

Receives a DL* message plist from the device.

This function is a wrapper around device_link_service_receive_message.

Parameters
clientThe connected MobileBackup client to use.
msg_plistPointer to a plist that will be set to the contents of the message plist upon successful return.
dlmessageA pointer that will be set to a newly allocated char* containing the DL* string from the given plist. It is up to the caller to free the allocated memory. If this parameter is NULL it will be ignored.
Returns
MOBILEBACKUP2_E_SUCCESS if a DL* message was received, MOBILEBACKUP2_E_INVALID_ARG if client or message is invalid, MOBILEBACKUP2_E_PLIST_ERROR if the received plist is invalid or is not a DL* message plist, or MOBILEBACKUP2_E_MUX_ERROR if receiving from the device failed.
mobilebackup2_error_t mobilebackup2_receive_raw ( mobilebackup2_client_t  client,
char *  data,
uint32_t  length,
uint32_t *  bytes 
)

Receive binary from the device.

Note
This function returns MOBILEBACKUP2_E_SUCCESS even if no data has been received (unless a communication error occured). The fourth parameter is required and must be checked to know how many bytes were actually received.
Parameters
clientThe MobileBackup client to receive from.
dataPointer to a buffer that will be filled with the received data.
lengthNumber of bytes to receive. The data buffer needs to be large enough to store this amount of data. bytes Number of bytes actually received.
Returns
MOBILEBACKUP2_E_SUCCESS if any or no data was received, MOBILEBACKUP2_E_INVALID_ARG if one of the parameters is invalid, or MOBILEBACKUP2_E_MUX_ERROR if receiving the data failed.
mobilebackup2_error_t mobilebackup2_send_message ( mobilebackup2_client_t  client,
const char *  message,
plist_t  options 
)

Sends a backup message plist.

Parameters
clientThe connected MobileBackup client to use.
messageThe message to send. This will be inserted into the request plist as value for MessageName. If this parameter is NULL, the plist passed in the options parameter will be sent directly.
optionsAdditional options as PLIST_DICT to add to the request. The MessageName key with the value passed in the message parameter will be inserted into this plist before sending it. This parameter can be NULL if message is not NULL.
mobilebackup2_error_t mobilebackup2_send_raw ( mobilebackup2_client_t  client,
const char *  data,
uint32_t  length,
uint32_t *  bytes 
)

Send binary data to the device.

Note
This function returns MOBILEBACKUP2_E_SUCCESS even if less than the requested length has been sent. The fourth parameter is required and must be checked to ensure if the whole data has been sent.
Parameters
clientThe MobileBackup client to send to.
dataPointer to the data to send
lengthNumber of bytes to send
bytesNumber of bytes actually sent
Returns
MOBILEBACKUP2_E_SUCCESS if any data was successfully sent, MOBILEBACKUP2_E_INVALID_ARG if one of the parameters is invalid, or MOBILEBACKUP2_E_MUX_ERROR if sending of the data failed.
mobilebackup2_error_t mobilebackup2_send_request ( mobilebackup2_client_t  client,
const char *  request,
const char *  target_identifier,
const char *  source_identifier,
plist_t  options 
)

Send a request to the connected mobilebackup2 service.

Parameters
client
requestThe request to send to the backup service. Currently, this is one of "Backup", "Restore", "Info", or "List".
target_identifierUDID of the target device.
source_identifierUDID of backup data?
optionsAdditional options in a plist of type PLIST_DICT.
Returns
MOBILEBACKUP2_E_SUCCESS if the request was successfully sent, or a MOBILEBACKUP2_E_* error value otherwise.
mobilebackup2_error_t mobilebackup2_send_status_response ( mobilebackup2_client_t  client,
int  status_code,
const char *  status1,
plist_t  status2 
)

Sends a DLMessageStatusResponse to the device.

Parameters
clientThe MobileBackup client to use.
status_codeThe status code to send.
status1A status message to send. Can be NULL if not required.
status2An additional status plist to attach to the response. Can be NULL if not required.
Returns
MOBILEBACKUP2_E_SUCCESS on success, MOBILEBACKUP2_E_INVALID_ARG if client is invalid, or another MOBILEBACKUP2_E_* otherwise.
mobilebackup2_error_t mobilebackup2_version_exchange ( mobilebackup2_client_t  client,
double  local_versions[],
char  count,
double *  remote_version 
)

Performs the mobilebackup2 protocol version exchange.

Parameters
clientThe MobileBackup client to use.
local_versionsAn array of supported versions to send to the remote.
countThe number of items in local_versions.
remote_versionHolds the protocol version of the remote on success.
Returns
MOBILEBACKUP2_E_SUCCESS on success, or a MOBILEBACKUP2_E_* error code otherwise.