/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.os; import android.os.IUpdateEngineCallback; import android.os.ParcelFileDescriptor; /** @hide */ interface IUpdateEngine { /** @hide */ void applyPayload(String url, in long payload_offset, in long payload_size, in String[] headerKeyValuePairs); /** @hide */ void applyPayloadFd(in ParcelFileDescriptor pfd, in long payload_offset, in long payload_size, in String[] headerKeyValuePairs); /** @hide */ boolean bind(IUpdateEngineCallback callback); /** @hide */ boolean unbind(IUpdateEngineCallback callback); /** @hide */ void suspend(); /** @hide */ void resume(); /** @hide */ void cancel(); /** @hide */ void resetStatus(); /** @hide */ void setShouldSwitchSlotOnReboot(in String metadataFilename); /** @hide */ void resetShouldSwitchSlotOnReboot(); /** @hide */ boolean verifyPayloadApplicable(in String metadataFilename); /** * Allocate space on userdata partition. * * @return 0 indicates allocation is successful. * Non-zero indicates space is insufficient. The returned value is the * total required space (in bytes) on userdata partition. * * @throws ServiceSpecificException for other errors. * * @hide */ long allocateSpaceForPayload(in String metadataFilename, in String[] headerKeyValuePairs); /** @hide * * Wait for merge to finish, and clean up necessary files. * * @param callback Report status updates in callback (not the one previously * bound with {@link #bind()}). * {@link IUpdateEngineCallback#onStatusUpdate} is called with * CLEANUP_PREVIOUS_UPDATE and a progress value during the cleanup. * {@link IUpdateEngineCallback#onPayloadApplicationComplete} is called at * the end with SUCCESS if successful. ERROR if transient errors (e.g. merged * but needs reboot). DEVICE_CORRUPTED for permanent errors. */ void cleanupSuccessfulUpdate(IUpdateEngineCallback callback); }