/*
 * Copyright (C) 2018 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.
 */

syntax = "proto2";
package android.net.wifi;

option java_outer_classname = "WifiProtoEnums";
option java_multiple_files = true;

/**
 * Wifi Lock modes, primarily used in
 * frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiLockManager.java.
 */
enum WifiModeEnum {
    /**
     * Deprecated.
     * Wi-Fi will be kept active, and will behave normally.
     */
    WIFI_MODE_FULL = 1 [deprecated=true];

    /**
     * Deprecated.
     * Wi-Fi will be kept active, but the only operation that will be supported is initiation of
     * scans, and the subsequent reporting of scan results.
     */
    WIFI_MODE_SCAN_ONLY = 2 [deprecated=true];

    /**
     * Wi-Fi will not go to power save.
     */
    WIFI_MODE_FULL_HIGH_PERF = 3;

    /**
     * Wi-Fi will operate with a priority to achieve low latency.
     */
    WIFI_MODE_FULL_LOW_LATENCY = 4;
}
