// Copyright 2019 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.device.manager;

using zx;

/// All available suspend flags
const uint32 SUSPEND_FLAG_REBOOT = 0xdcdc0100;
const uint32 SUSPEND_FLAG_REBOOT_BOOTLOADER = 0xdcdc0101;
const uint32 SUSPEND_FLAG_REBOOT_RECOVERY = 0xdcdc0102;
const uint32 SUSPEND_FLAG_POWEROFF = 0xdcdc0200;
const uint32 SUSPEND_FLAG_MEXEC = 0xdcdc0300;
const uint32 SUSPEND_FLAG_SUSPEND_RAM = 0xdcdc0400;

// TODO(ravoorir): When the system power states are properly defined,
// remove the suspend flags. For now, treat each suspend flag as a system
// power state.
enum SystemPowerState : uint8 {
    SYSTEM_POWER_STATE_FULLY_ON = 1;
    SYSTEM_POWER_STATE_REBOOT = 2;
    SYSTEM_POWER_STATE_REBOOT_BOOTLOADER = 3;
    SYSTEM_POWER_STATE_REBOOT_RECOVERY = 4;
    SYSTEM_POWER_STATE_POWEROFF = 5;
    SYSTEM_POWER_STATE_MEXEC = 6;
    SYSTEM_POWER_STATE_SUSPEND_RAM = 7;
};
const uint32 MAX_SYSTEM_POWER_STATES = 7;

/// Provides administration services for the device manager service and the device tree it controls.
[Discoverable, Layout = "Simple"]
protocol Administrator {
    /// Ask all devices to enter the suspend state indicated by `flags`. Flags should be some
    /// combination of `DEVICE_SUSPEND_FLAG_*` from the DDK.
    Suspend(uint32 flags) -> (zx.status status);
};
