/*
 * Copyright (C) 2020 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.hardware.dumpstate@1.1;

/**
 * Constants that define the type of bug report being taken to restrict content appropriately.
 */
enum DumpstateMode : uint32_t {
    /**
     * Takes a bug report without user interference.
     */
    FULL = 0,
    /**
     * Interactive bug report, i.e. triggered by the user.
     */
    INTERACTIVE = 1,
    /**
     * Remote bug report triggered by DevicePolicyManager, for example.
     */
    REMOTE = 2,
    /**
     * Bug report triggered on a wear device.
     */
    WEAR = 3,
    /**
     * Bug report limited to only connectivity info (cellular, wifi, and networking). Sometimes
     * called "telephony" in legacy contexts.
     *
     * All reported information MUST directly relate to connectivity debugging or customer support
     * and MUST NOT contain unrelated private information. This information MUST NOT identify
     * user-installed packages (UIDs are OK, package names are not), and MUST NOT contain logs of
     * user application traffic.
     */
    CONNECTIVITY = 4,
    /**
     * Bug report limited to only wifi info.
     */
    WIFI = 5,
    /**
     * Default mode, essentially analogous to calling @1.0::IDumpstateDevice.dumpstateBoard(handle).
     * This mode MUST be supported if the dumpstate HAL is implemented.
     */
    DEFAULT = 6,
    /**
     * Takes a report in protobuf.
     *
     * The content, if implemented, must be a binary protobuf message written to the first file
     * descriptor of the native handle. The protobuf schema shall be defined by the vendor.
     */
    PROTO = 7,
};

/**
 * A simple return enum for use with dumpstateBoard_1_1.
 */
enum DumpstateStatus : uint32_t {
    OK = 0,
    /**
     * Returned for cases where the device doesn't support the given DumpstateMode (e.g. a phone
     * trying to use DumpstateMode::WEAR).
     */
    UNSUPPORTED_MODE = 1,
    /**
     * Returned for cases where an IllegalArgumentException is typically appropriate, e.g. missing
     * file descriptors.
     */
    ILLEGAL_ARGUMENT = 2,
    /**
     * Returned when device logging is not enabled.
     */
    DEVICE_LOGGING_NOT_ENABLED = 3,
};
