/** * Connects to the screenshotr service on the specified device. * * @param device The device to connect to. * @param service The service descriptor returned by lockdownd_start_service. * @param client Pointer that will be set to a newly allocated * screenshotr_client_t upon successful return. * * @note This service is only available if a developer disk image has been * mounted. * * @return SCREENSHOTR_E_SUCCESS on success, SCREENSHOTR_E_INVALID ARG if one * or more parameters are invalid, or SCREENSHOTR_E_CONN_FAILED if the * connection to the device could not be established. */ screenshotr_error_t screenshotr_client_new(idevice_t device, lockdownd_service_descriptor_t service, screenshotr_client_t * client) { if (!device || !service || service->port == 0 || !client || *client) return SCREENSHOTR_E_INVALID_ARG; device_link_service_client_t dlclient = NULL; screenshotr_error_t ret = screenshotr_error(device_link_service_client_new(device, service, &dlclient)); if (ret != SCREENSHOTR_E_SUCCESS) { return ret; } screenshotr_client_t client_loc = (screenshotr_client_t) malloc(sizeof(struct screenshotr_client_private)); client_loc->parent = dlclient; /* perform handshake */ ret = screenshotr_error(device_link_service_version_exchange(dlclient, SCREENSHOTR_VERSION_INT1, SCREENSHOTR_VERSION_INT2)); if (ret != SCREENSHOTR_E_SUCCESS) { debug_info("version exchange failed, error %d", ret); screenshotr_client_free(client_loc); return ret; } *client = client_loc; return ret; }
/** * Connects to the mobilebackup2 service on the specified device. * * @param device The device to connect to. * @param service The service descriptor returned by lockdownd_start_service. * @param client Pointer that will be set to a newly allocated * mobilebackup2_client_t upon successful return. * * @return 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_new(idevice_t device, lockdownd_service_descriptor_t service, mobilebackup2_client_t * client) { if (!device || service->port == 0 || !client || *client) return MOBILEBACKUP2_E_INVALID_ARG; device_link_service_client_t dlclient = NULL; mobilebackup2_error_t ret = mobilebackup2_error(device_link_service_client_new(device, service, &dlclient)); if (ret != MOBILEBACKUP2_E_SUCCESS) { return ret; } mobilebackup2_client_t client_loc = (mobilebackup2_client_t) malloc(sizeof(struct mobilebackup2_client_private)); client_loc->parent = dlclient; /* perform handshake */ ret = mobilebackup2_error(device_link_service_version_exchange(dlclient, MBACKUP2_VERSION_INT1, MBACKUP2_VERSION_INT2)); if (ret != MOBILEBACKUP2_E_SUCCESS) { debug_info("version exchange failed, error %d", ret); mobilebackup2_client_free(client_loc); return ret; } *client = client_loc; return ret; }
/** * Connects to the mobilesync service on the specified device. * * @param device The device to connect to. * @param service The service descriptor returned by lockdownd_start_service. * @param client Pointer that will be set to a newly allocated * #mobilesync_client_t upon successful return. * * @retval MOBILESYNC_E_SUCCESS on success * @retval MOBILESYNC_E_INVALID_ARG if one or more parameters are invalid * @retval DEVICE_LINK_SERVICE_E_BAD_VERSION if the mobilesync version on * the device is newer. */ mobilesync_error_t mobilesync_client_new(idevice_t device, lockdownd_service_descriptor_t service, mobilesync_client_t * client) { if (!device || !service || service->port == 0 || !client || *client) return MOBILESYNC_E_INVALID_ARG; device_link_service_client_t dlclient = NULL; mobilesync_error_t ret = mobilesync_error(device_link_service_client_new(device, service, &dlclient)); if (ret != MOBILESYNC_E_SUCCESS) { return ret; } mobilesync_client_t client_loc = (mobilesync_client_t) malloc(sizeof(struct mobilesync_client_private)); client_loc->parent = dlclient; client_loc->direction = MOBILESYNC_SYNC_DIR_DEVICE_TO_COMPUTER; client_loc->data_class = NULL; /* perform handshake */ ret = mobilesync_error(device_link_service_version_exchange(dlclient, MSYNC_VERSION_INT1, MSYNC_VERSION_INT2)); if (ret != MOBILESYNC_E_SUCCESS) { debug_info("version exchange failed, error %d", ret); mobilesync_client_free(client_loc); return ret; } *client = client_loc; return ret; }