/*
 * Copyright 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.bluetooth;

option java_outer_classname = "BluetoothProtoEnums";
option java_multiple_files = true;

// Bluetooth connection states.
enum ConnectionStateEnum {
    CONNECTION_STATE_DISCONNECTED = 0;
    CONNECTION_STATE_CONNECTING = 1;
    CONNECTION_STATE_CONNECTED = 2;
    CONNECTION_STATE_DISCONNECTING = 3;
}

// Bluetooth Adapter Enable and Disable Reasons
enum EnableDisableReasonEnum {
    ENABLE_DISABLE_REASON_UNSPECIFIED = 0;
    ENABLE_DISABLE_REASON_APPLICATION_REQUEST = 1;
    ENABLE_DISABLE_REASON_AIRPLANE_MODE = 2;
    ENABLE_DISABLE_REASON_DISALLOWED = 3;
    ENABLE_DISABLE_REASON_RESTARTED = 4;
    ENABLE_DISABLE_REASON_START_ERROR = 5;
    ENABLE_DISABLE_REASON_SYSTEM_BOOT = 6;
    ENABLE_DISABLE_REASON_CRASH = 7;
    ENABLE_DISABLE_REASON_USER_SWITCH = 8;
    ENABLE_DISABLE_REASON_RESTORE_USER_SETTING = 9;
}

enum DirectionEnum {
    DIRECTION_UNKNOWN = 0;
    DIRECTION_OUTGOING = 1;
    DIRECTION_INCOMING = 2;
}

// First item is the default value, other values follow Bluetooth spec definition
enum LinkTypeEnum {
    // Link type is at most 1 byte (0xFF), thus 0xFFF must not be a valid value
    LINK_TYPE_UNKNOWN = 0xFFF;
    LINK_TYPE_SCO = 0x00;
    LINK_TYPE_ACL = 0x01;
    LINK_TYPE_ESCO = 0x02;
}

enum DeviceInfoSrcEnum {
    DEVICE_INFO_SRC_UNKNOWN = 0;
    // Within Android Bluetooth stack
    DEVICE_INFO_INTERNAL = 1;
    // Outside Android Bluetooth stack
    DEVICE_INFO_EXTERNAL = 2;
}

enum DeviceTypeEnum {
    DEVICE_TYPE_UNKNOWN = 0;
    DEVICE_TYPE_CLASSIC = 1;
    DEVICE_TYPE_LE = 2;
    DEVICE_TYPE_DUAL = 3;
}

// Defined in frameworks/base/core/java/android/bluetooth/BluetoothDevice.java
enum TransportTypeEnum {
    TRANSPORT_TYPE_AUTO = 0;
    TRANSPORT_TYPE_BREDR = 1;
    TRANSPORT_TYPE_LE = 2;
}

// Bond state enum
// Defined in frameworks/base/core/java/android/bluetooth/BluetoothDevice.java
enum BondStateEnum {
    BOND_STATE_UNKNOWN = 0;
    BOND_STATE_NONE = 10;
    BOND_STATE_BONDING = 11;
    BOND_STATE_BONDED = 12;
}

// Sub states within the bonding general state
enum BondSubStateEnum {
    BOND_SUB_STATE_UNKNOWN = 0;
    BOND_SUB_STATE_LOCAL_OOB_DATA_PROVIDED = 1;
    BOND_SUB_STATE_LOCAL_PIN_REQUESTED = 2;
    BOND_SUB_STATE_LOCAL_PIN_REPLIED = 3;
    BOND_SUB_STATE_LOCAL_SSP_REQUESTED = 4;
    BOND_SUB_STATE_LOCAL_SSP_REPLIED = 5;
}

enum UnbondReasonEnum {
    UNBOND_REASON_UNKNOWN = 0;
    UNBOND_REASON_AUTH_FAILED = 1;
    UNBOND_REASON_AUTH_REJECTED = 2;
    UNBOND_REASON_AUTH_CANCELED = 3;
    UNBOND_REASON_REMOTE_DEVICE_DOWN = 4;
    UNBOND_REASON_DISCOVERY_IN_PROGRESS = 5;
    UNBOND_REASON_AUTH_TIMEOUT = 6;
    UNBOND_REASON_REPEATED_ATTEMPTS = 7;
    UNBOND_REASON_REMOTE_AUTH_CANCELED = 8;
    UNBOND_REASON_REMOVED = 9;
}

enum SocketTypeEnum {
    SOCKET_TYPE_UNKNOWN = 0;
    SOCKET_TYPE_RFCOMM = 1;
    SOCKET_TYPE_SCO = 2;
    SOCKET_TYPE_L2CAP_BREDR = 3;
    SOCKET_TYPE_L2CAP_LE = 4;
}

enum SocketConnectionstateEnum {
    SOCKET_CONNECTION_STATE_UNKNOWN = 0;
    // Socket acts as a server waiting for connection
    SOCKET_CONNECTION_STATE_LISTENING = 1;
    // Socket acts as a client trying to connect
    SOCKET_CONNECTION_STATE_CONNECTING = 2;
    // Socket is connected
    SOCKET_CONNECTION_STATE_CONNECTED = 3;
    // Socket tries to disconnect from remote
    SOCKET_CONNECTION_STATE_DISCONNECTING = 4;
    // This socket is closed
    SOCKET_CONNECTION_STATE_DISCONNECTED = 5;
}

enum SocketRoleEnum {
    SOCKET_ROLE_UNKNOWN = 0;
    SOCKET_ROLE_LISTEN = 1;
    SOCKET_ROLE_CONNECTION = 2;
}
