blob: 4dd149d4aaa5e0ba85e7f39ff78b962a824f0413 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.update.usb;
using fuchsia.io;
using fuchsia.pkg;
/// The front door of an OTA via USB.
[Discoverable]
protocol Checker {
/// Triggers a USB OTA.
///
/// + request `update_url` the unpinned fuchsia-pkg:// URL of the update package to use for
/// the OTA.
/// + request `logs_dir` an optional client end of a directory to which the `Checker` will
/// write system logs.
/// + request `monitor` an optional client end on which the `Checker` will send status events
/// for this update check. The monitor is only valid for the check started by this request
/// and will be closed on completion.
/// - response `response` - the success state of the `Check`. If this was returned either the
/// system was successfully updated, or the update package indicated by `update_url` was not
/// newer than the system version, and no update was necessary.
/// - error - a `CheckError` value, indicating that the `Check` failed and did not complete a
/// system update.
Check(
fuchsia.pkg.PackageUrl update_url,
fuchsia.io.Directory? logs_dir,
Monitor? monitor
) -> (CheckSuccess response) error CheckError;
};
/// Success type for [`fuchsia.update.usb/Checker.Check`]
enum CheckSuccess {
/// An update was installed successfully, and the device should be rebooted
/// now to switch to the updated system.
UPDATE_PERFORMED = 0;
/// The update package's version was equal to or older than the currently
/// installed system version, so no update needs to be installed.
UPDATE_NOT_NEEDED = 1;
};
/// Monitors a single update check.
protocol Monitor {
/// Called if and when `Checker.Check` triggers a system update.
///
/// Never called if no update is needed.
OnUpdateStarted();
};
/// Error type for [`fuchsia.update.usb/Checker.Check`]
enum CheckError {
/// The `update_url` parameter was an invalid fuchsia-pkg:// url.
INVALID_UPDATE_URL = 1;
/// A system update was attempted, but the update failed.
UPDATE_FAILED = 2;
};