/*
 * 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.server.location;

option java_outer_classname = "ServerLocationProtoEnums";
option java_multiple_files = true;

// GPS Signal Quality levels,
// primarily used by location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
enum GpsSignalQualityEnum {
    GPS_SIGNAL_QUALITY_UNKNOWN = -1;
    GPS_SIGNAL_QUALITY_POOR = 0;
    GPS_SIGNAL_QUALITY_GOOD = 1;
}

// A type which distinguishes different categories of NI request, such as VOICE, UMTS_SUPL etc.
enum GnssNiType {
    VOICE = 1;
    UMTS_SUPL = 2;
    UMTS_CTRL_PLANE = 3;
    EMERGENCY_SUPL = 4;
};

// GNSS NI responses, used to define the response in NI structures.
enum GnssUserResponseType {
    RESPONSE_ACCEPT = 1;
    RESPONSE_DENY = 2;
    RESPONSE_NORESP = 3;
};

// GNSS NI data encoding scheme.
enum GnssNiEncodingType {
    ENC_NONE = 0;
    ENC_SUPL_GSM_DEFAULT = 1;
    ENC_SUPL_UTF8 = 2;
    ENC_SUPL_UCS2 = 3;
    ENC_UNKNOWN = -1;
};

// Protocol stack that initiated the non-framework location request.
enum NfwProtocolStack {
    // Cellular control plane requests.
    CTRL_PLANE = 0;
    // All types of SUPL requests.
    SUPL = 1;
    // All types of requests from IMS.
    IMS = 10;
    // All types of requests from SIM.
    SIM = 11;
    // Requests from other protocol stacks.
    OTHER_PROTOCOL_STACK = 100;
};

// Source initiating/receiving the location information.
enum NfwRequestor  {
    // Wireless service provider.
    CARRIER = 0;
    // Device manufacturer.
    OEM = 10;
    // Modem chipset vendor.
    MODEM_CHIPSET_VENDOR = 11;
    // GNSS chipset vendor.
    GNSS_CHIPSET_VENDOR = 12;
    // Other chipset vendor.
    OTHER_CHIPSET_VENDOR = 13;
    // Automobile client.
    AUTOMOBILE_CLIENT = 20;
    // Other sources.
    OTHER_REQUESTOR = 100;
};

// Indicates whether location information was provided for this request.
enum NfwResponseType {
    // Request rejected because framework has not given permission for this use case.
    REJECTED = 0;
    // Request accepted but could not provide location because of a failure.
    ACCEPTED_NO_LOCATION_PROVIDED = 1;
    // Request accepted and location provided.
    ACCEPTED_LOCATION_PROVIDED = 2;
};

// The SUPL mode.
enum SuplMode {
    // Mobile Station Based.
    MSB = 0x01;
    // Mobile Station Assisted.
    MSA = 0x02;
};

// Enum that hold the bit masks for various LTE Positioning Profile settings (LPP_PROFILE
// configuration parameter). If none of the bits in the enum are set, the default setting is
// Radio Resource Location Protocol(RRLP).
enum LppProfile {
    // Enable LTE Positioning Protocol user plane.
    USER_PLANE = 0x01;
    // Enable LTE Positioning Protocol Control plane.
    CONTROL_PLANE = 0x02;
};

// Positioning protocol on A-Glonass system.
enum GlonassPosProtocol {
    // Radio Resource Control(RRC) control-plane.
    RRC_CPLANE = 0x01;
    // Radio Resource Location user-plane.
    RRLP_CPLANE = 0x02;
    // LTE Positioning Protocol User plane.
    LPP_UPLANE = 0x04;
};

// Configurations of how GPS functionalities should be locked when user turns off GPS On setting.
enum GpsLock {
    // Lock Mobile Originated GPS functionalitues.
    MO = 0x01;
    // Lock Network Initiated GPS functionalities.
    NI = 0x02;
};
