| // 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; |
| }; |