/*
 * 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;
  ENABLE_DISABLE_REASON_FACTORY_RESET = 10;
  ENABLE_DISABLE_REASON_INIT_FLAGS_CHANGED = 11;
  ENABLE_DISABLE_REASON_SATELLITE_MODE = 12;
  ENABLE_DISABLE_REASON_APPLICATION_DIED = 13;
  ENABLE_DISABLE_REASON_AUTO_ON = 14;
}

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;
  BOND_SUB_STATE_LOCAL_BOND_STATE_INTENT_SENT = 6;
  BOND_SUB_STATE_LOCAL_START_PAIRING = 7;
  BOND_SUB_STATE_LOCAL_START_PAIRING_OOB = 8;
}

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;
}

enum SocketErrorEnum {
  SOCKET_ERROR_UNKNOWN = 0;
  SOCKET_ERROR_NONE = 1;
  SOCKET_ERROR_SERVER_START_FAILURE = 2;
  SOCKET_ERROR_CLIENT_INIT_FAILURE = 3;
  SOCKET_ERROR_LISTEN_FAILURE = 4;
  SOCKET_ERROR_CONNECTION_FAILURE = 5;
  SOCKET_ERROR_OPEN_FAILURE = 6;
  SOCKET_ERROR_OFFLOAD_SERVER_NOT_ACCEPTING = 7;
  SOCKET_ERROR_OFFLOAD_HAL_OPEN_FAILURE = 8;
  SOCKET_ERROR_SEND_TO_APP_FAILURE = 9;
  SOCKET_ERROR_RECEIVE_DATA_FAILURE = 10;
  SOCKET_ERROR_READ_SIGNALED_FAILURE = 11;
  SOCKET_ERROR_WRITE_SIGNALED_FAILURE = 12;
  // Server Channel Number (SCN) in RFCOMM is a dynamically assigned port-like identifier that
  // allows clients to connect to a specific service on a Bluetooth device via the Service
  // Discovery Protocol (SDP).
  // This error occurs when the system fails to transmit the SCN to the application.
  SOCKET_ERROR_SEND_SCN_FAILURE = 13;
  // This error occurs when the system fails to allocate an SCN.
  SOCKET_ERROR_SCN_ALLOCATION_FAILURE = 14;
  // Service Discovery Protocol (SDP) is used to discover available services on remote devices and
  // retrieve essential information, such as the Server Channel Number (SCN) for RFCOMM-based
  // connections.
  // This error occurs when the system fails to add an SDP record to the SDP database.
  SOCKET_ERROR_ADD_SDP_FAILURE = 15;
  // This error occurs when the SDP service discovery process fails to complete.
  SOCKET_ERROR_SDP_DISCOVERY_FAILURE = 16;
}

enum L2capCocConnectionResult {
  RESULT_L2CAP_CONN_UNKNOWN = 0;
  RESULT_L2CAP_CONN_SUCCESS = 1;
  RESULT_L2CAP_CONN_ACL_FAILURE = 2;
  RESULT_L2CAP_CONN_CL_SEC_FAILURE = 3;
  RESULT_L2CAP_CONN_INSUFFICIENT_AUTHENTICATION = 4;
  RESULT_L2CAP_CONN_INSUFFICIENT_AUTHORIZATION = 5;
  RESULT_L2CAP_CONN_INSUFFICIENT_ENCRYP_KEY_SIZE = 6;
  RESULT_L2CAP_CONN_INSUFFICIENT_ENCRYP = 7;
  RESULT_L2CAP_CONN_INVALID_SOURCE_CID = 8;
  RESULT_L2CAP_CONN_SOURCE_CID_ALREADY_ALLOCATED = 9;
  RESULT_L2CAP_CONN_UNACCEPTABLE_PARAMETERS = 10;
  RESULT_L2CAP_CONN_INVALID_PARAMETERS = 11;
  RESULT_L2CAP_CONN_NO_RESOURCES = 12;
  RESULT_L2CAP_CONN_NO_PSM = 13;
  RESULT_L2CAP_CONN_TIMEOUT = 14;
  RESULT_L2CAP_CONN_BLUETOOTH_OFF = 15;

  // Modify the curresponding value of BluetoothSocket.java
  RESULT_L2CAP_CONN_BLUETOOTH_SOCKET_CONNECTION_FAILED = 1000;
  RESULT_L2CAP_CONN_BLUETOOTH_SOCKET_CONNECTION_CLOSED = 1001;
  RESULT_L2CAP_CONN_BLUETOOTH_UNABLE_TO_SEND_RPC = 1002;
  RESULT_L2CAP_CONN_BLUETOOTH_NULL_BLUETOOTH_DEVICE = 1003;
  RESULT_L2CAP_CONN_BLUETOOTH_GET_SOCKET_MANAGER_FAILED = 1004;
  RESULT_L2CAP_CONN_BLUETOOTH_NULL_FILE_DESCRIPTOR = 1005;

  // Modify the curresponding value of BluetoothServerSocket.java
  RESULT_L2CAP_CONN_SERVER_FAILURE= 2000;
}

enum CodePathCounterKeyEnum {
  COUNTER_KEY_UNKNOWN = 0;
  // Reserve smaller counters for very important bt features

  // [100,000 - 120,000) profile connection related

    // [100,000 - 100,100) L2CAP
    L2CAP_SUCCESS = 100000;
    L2CAP_CONNECT_CONFIRM_NEG= 100001;
    L2CAP_NO_COMPATIBLE_CHANNEL_AT_CSM_CLOSED = 100002;
    L2CAP_SECURITY_NEG_AT_CSM_CLOSED= 100003;
    L2CAP_TIMEOUT_AT_CSM_CLOSED = 100004;
    L2CAP_CREDIT_BASED_CONNECT_RSP_NEG = 100005;
    L2CAP_CONNECT_RSP_NEG = 100006;
    L2CAP_INFO_NO_COMPATIBLE_CHANNEL_AT_RSP = 100007;
    L2CAP_CONFIG_REQ_FAILURE = 100008;
    L2CAP_CONFIG_RSP_NEG = 100009;
    L2CAP_NO_COMPATIBLE_CHANNEL_AT_W4_SEC = 100010;
    L2CAP_SECURITY_NEG_AT_W4_SEC= 100011;
    L2CAP_TIMEOUT_AT_CONNECT_RSP = 100012;
    L2CAP_CONN_OTHER_ERROR_AT_CONNECT_RSP = 100013;

    // [100,100 - 100,200) SDP
    SDP_SUCCESS = 100100;
    SDP_FAILURE = 100101;
    SDP_SENDING_DELAYED_UUID = 100102;
    SDP_NOT_SENDING_DELAYED_UUID = 100103;
    SDP_SENT_UUID = 100104;
    SDP_UUIDS_EQUAL_SKIP = 100105;
    SDP_ADD_UUID_WITH_INTENT = 100106;
    SDP_ADD_UUID_WITH_NO_INTENT = 100107;
    SDP_DROP_UUID = 100108;
    SDP_FETCH_UUID_SKIP_ALREADY_CACHED = 100109;
    SDP_FETCH_UUID_SKIP_ALREADY_BONDED = 100110;
    SDP_INVOKE_SDP_CYCLE = 100111;
    SDP_FETCH_UUID_REQUEST = 100112;


    // [101,000 - 102,000) HFP

      // [101,000 - 101,100) RFCOMM
      RFCOMM_CONNECTION_SUCCESS_IND = 101000;
      RFCOMM_CONNECTION_SUCCESS_CNF = 101001;
      RFCOMM_PORT_START_CNF_FAILED = 101002;
      RFCOMM_PORT_START_CLOSE = 101003;
      RFCOMM_PORT_START_FAILED = 101004;
      RFCOMM_PORT_NEG_FAILED = 101005;
      RFCOMM_PORT_CLOSED = 101006;
      RFCOMM_PORT_PEER_CONNECTION_FAILED = 101007;
      RFCOMM_PORT_PEER_TIMEOUT = 101008;

      // [101,100 - 101,200) HFP (btif)
      HFP_COLLISON_AT_AG_OPEN = 101101;
      HFP_COLLISON_AT_CONNECTING = 101102;
      HFP_SELF_INITIATED_AG_FAILED = 101103;
      HFP_SLC_SETUP_FAILED = 101104;

    // [102,000 - 103,000) A2DP
    A2DP_CONNECTION_SUCCESS = 102000;
    A2DP_CONNECTION_ACL_DISCONNECTED = 102001;
    A2DP_CONNECTION_REJECT_EVT = 102002;
    A2DP_CONNECTION_FAILURE = 102003;
    A2DP_CONNECTION_UNKNOWN_EVENT = 102004;
    A2DP_ALREADY_CONNECTING = 102005;
    A2DP_OFFLOAD_START_REQ_FAILURE = 102006;
    A2DP_CONNECTION_CLOSE = 102007;
    A2DP_CONNECTION_DISCONNECTED = 102008;
    A2DP_CONNECTION_TIMEOUT = 102009;

    // [103,000 - 103,100) HIDD
    HID_PLUG_FAILURE = 103001;
    HIDD_REGISTER_DESCRIPTOR_MALFORMED = 103002;

    HIDD_ERR_NOT_REGISTERED_AT_INITIATE = 103003;
    HIDD_ERR_NO_RESOURCES = 103004;
    HIDD_ERR_NO_CONNECTION_AT_SEND_DATA = 103005;
    HIDD_ERR_NO_CONNECTION_AT_DISCONNECT = 103006;
    HIDD_ERR_INVALID_PARAM = 103007;
    HIDD_ERR_CONGESTED_AT_DATA_WRITE = 103008;
    HIDD_ERR_CONGESTED_AT_FLAG_CHECK = 103009;
    HIDD_ERR_CONN_IN_PROCESS = 103010;
    HIDD_ERR_ALREADY_CONN = 103011;
    HIDD_ERR_DISCONNECTING = 103012;
    HIDD_ERR_L2CAP_NOT_STARTED_INCOMING = 103013;
    HIDD_ERR_L2CAP_FAILED_INITIATE = 103014;
    HIDD_ERR_L2CAP_FAILED_CONTROL = 103015;
    HIDD_ERR_L2CAP_FAILED_INTERRUPT = 103016;
    HIDD_ERR_HOST_CALLBACK_NULL = 103017;
    HIDD_ERR_INVALID_PARAM_SEND_REPORT = 103018;
    HIDD_ERR_DEVICE_NOT_IN_USE_AT_CONNECT = 103019;
    HIDD_ERR_DEVICE_NOT_IN_USE_AT_DISCONNECT = 103020;
    HIDD_ERR_NOT_REGISTERED_AT_CONNECT = 103021;
    HIDD_ERR_NOT_REGISTERED_AT_DISCONNECT = 103022;
    HIDD_ERR_NOT_REGISTERED_AT_GET_DEVICE = 103023;
    HIDD_ERR_NOT_REGISTERED_AT_DEREGISTER = 103024;
    HIDD_ERR_NOT_REGISTERED_DUE_TO_DESCRIPTOR_LENGTH = 103025;
    HIDD_ERR_NOT_REGISTERED_DUE_TO_BUFFER_ALLOCATION = 103026;
    HIDD_ERR_NOT_REGISTERED_AT_SDP = 103027;
    HIDD_ERR_ALREADY_REGISTERED = 103028;

    // [103,100 - 103,200) HIDH
    HIDH_ERR_ALREADY_REGISTERED = 103101;
    HIDH_ERR_NO_RESOURCES_SDP = 103102;
    HIDH_ERR_NO_RESOURCES_ADD_DEVICE = 103103;
    HIDH_ERR_NO_CONNECTION_AT_SEND_DATA = 103104;
    HIDH_ERR_NO_CONNECTION_AT_HOST_WRITE_DEV = 103105;
    HIDH_ERR_NO_CONNECTION_AT_HOST_CLOSE_DEV = 103106;

    HIDH_ERR_INVALID_PARAM_AT_SEND_DATA = 103107;
    HIDH_ERR_INVALID_PARAM_AT_HOST_REGISTER = 103108;
    HIDH_ERR_INVALID_PARAM_AT_HOST_REMOVE_DEV = 103109;
    HIDH_ERR_INVALID_PARAM_AT_HOST_OPEN_DEV = 103110;
    HIDH_ERR_INVALID_PARAM_AT_HOST_CLOSE_DEV = 103111;
    HIDH_ERR_INVALID_PARAM_AT_HOST_WRITE_DEV = 103112;

    HIDH_ERR_CONGESTED_AT_SEND_DATA = 103113;
    HIDH_ERR_CONGESTED_AT_FLAG_CHECK = 103114;
    HIDH_ERR_CONN_IN_PROCESS = 103115;
    HIDH_ERR_ALREADY_CONN = 103116;

    HIDH_ERR_L2CAP_FAILED_AT_INITIATE = 103117;
    HIDH_ERR_L2CAP_FAILED_AT_REGISTER_CONTROL = 103118;
    HIDH_ERR_L2CAP_FAILED_AT_REGISTER_INTERRUPT = 103119;

    HIDH_ERR_AUTH_FAILED = 103120;
    HIDH_ERR_SDP_BUSY = 103121;

    //Native and Java
    HIDH_COUNT_MAX_ADDED_DEVICE_LIMIT_REACHED = 103122;
    HIDH_COUNT_VIRTUAL_UNPLUG_REQUESTED_BY_REMOTE_DEVICE = 103123;
    HIDH_COUNT_CONNECT_REQ_WHEN_MAX_DEVICE_LIMIT_REACHED = 103124;
    HIDH_COUNT_WRONG_REPORT_TYPE = 103125;
    HIDH_COUNT_INCOMING_CONNECTION_REJECTED = 103126;
    HIDH_COUNT_CONNECTION_POLICY_DISABLED = 103127;
    HIDH_COUNT_SUPPORT_BOTH_HID_AND_HOGP = 103128;
    HIDH_COUNT_SUPPORT_ONLY_HID_OR_HOGP = 103129;


  // [120,000 - 120,500) LE scan related
    // [120,000 - 120,100) LE scan enable/disable count
    LE_SCAN_COUNT_TOTAL_ENABLE = 120000;
    LE_SCAN_COUNT_TOTAL_DISABLE = 120001;
    LE_SCAN_COUNT_FILTERED_ENABLE = 120002;
    LE_SCAN_COUNT_FILTERED_DISABLE = 120003;
    LE_SCAN_COUNT_UNFILTERED_ENABLE = 120004;
    LE_SCAN_COUNT_UNFILTERED_DISABLE = 120005;
    LE_SCAN_COUNT_BATCH_ENABLE = 120006;
    LE_SCAN_COUNT_BATCH_DISABLE = 120007;
    LE_SCAN_COUNT_AUTO_BATCH_ENABLE = 120008;
    LE_SCAN_COUNT_AUTO_BATCH_DISABLE =  120009;

    // [120,100 - 120,200) LE scan duration bucket count
    LE_SCAN_DURATION_COUNT_REGULAR_10S = 120100;
    LE_SCAN_DURATION_COUNT_REGULAR_1M = 120101;
    LE_SCAN_DURATION_COUNT_REGULAR_10M = 120102;
    LE_SCAN_DURATION_COUNT_REGULAR_1H =120103;
    LE_SCAN_DURATION_COUNT_REGULAR_1HP =120104;
    LE_SCAN_DURATION_COUNT_BATCH_10S = 120105;
    LE_SCAN_DURATION_COUNT_BATCH_1M = 120106;
    LE_SCAN_DURATION_COUNT_BATCH_10M = 120107;
    LE_SCAN_DURATION_COUNT_BATCH_1H = 120108;
    LE_SCAN_DURATION_COUNT_BATCH_1HP = 120109;

    // [120,200 - 120,250) LE scan radio active duration
    LE_SCAN_RADIO_DURATION_ALL = 120200;
    LE_SCAN_RADIO_DURATION_REGULAR = 120201;
    LE_SCAN_RADIO_DURATION_BATCH = 120202;
    LE_SCAN_RADIO_DURATION_REGULAR_SCREEN_ON = 120203;
    LE_SCAN_RADIO_DURATION_REGULAR_SCREEN_OFF = 120204;
    LE_SCAN_RADIO_DURATION_BATCH_SCREEN_ON = 120205;
    LE_SCAN_RADIO_DURATION_BATCH_SCREEN_OFF = 120206;

    // [120,250 - 120,300) LE scan radio scan mode count
    LE_SCAN_RADIO_SCAN_MODE_OPPORTUNISTIC_COUNT = 120250;
    LE_SCAN_RADIO_SCAN_MODE_LOW_POWER_COUNT = 120251;
    LE_SCAN_RADIO_SCAN_MODE_BALANCED_COUNT = 120252;
    LE_SCAN_RADIO_SCAN_MODE_LOW_LATENCY_COUNT = 120253;
    LE_SCAN_RADIO_SCAN_MODE_AMBIENT_DISCOVERY_COUNT = 120254;
    LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_COUNT = 120255;
    LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_BALANCED_COUNT = 120256;
    LE_SCAN_RADIO_SCAN_MODE_OPPORTUNISTIC_COUNT_SCREEN_OFF = 120257;
    LE_SCAN_RADIO_SCAN_MODE_LOW_POWER_COUNT_SCREEN_OFF = 120258;
    LE_SCAN_RADIO_SCAN_MODE_BALANCED_COUNT_SCREEN_OFF = 120259;
    LE_SCAN_RADIO_SCAN_MODE_LOW_LATENCY_COUNT_SCREEN_OFF = 120260;
    LE_SCAN_RADIO_SCAN_MODE_AMBIENT_DISCOVERY_COUNT_SCREEN_OFF = 120261;
    LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_COUNT_SCREEN_OFF = 120262;
    LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_BALANCED_COUNT_SCREEN_OFF = 120263;

    // [120,300 - 120,400) LE scan results count
    LE_SCAN_RESULTS_COUNT_ALL = 120300;
    LE_SCAN_RESULTS_COUNT_REGULAR = 120301;
    LE_SCAN_RESULTS_COUNT_BATCH = 120302;
    LE_SCAN_RESULTS_COUNT_REGULAR_SCREEN_ON = 120303;
    LE_SCAN_RESULTS_COUNT_REGULAR_SCREEN_OFF =  120304;
    LE_SCAN_RESULTS_COUNT_BATCH_SCREEN_ON = 120305;
    LE_SCAN_RESULTS_COUNT_BATCH_SCREEN_OFF = 120306;
    LE_SCAN_RESULTS_COUNT_BATCH_BUNDLE = 120307;
    LE_SCAN_RESULTS_COUNT_BATCH_BUNDLE_SCREEN_ON = 120308;
    LE_SCAN_RESULTS_COUNT_BATCH_BUNDLE_SCREEN_OFF = 120309;

    // [120,400 - 120,500) LE scan abuse count
    LE_SCAN_ABUSE_COUNT_SCAN_TIMEOUT = 120400;
    LE_SCAN_ABUSE_COUNT_HW_FILTER_NOT_AVAILABLE = 120401;
    LE_SCAN_ABUSE_COUNT_TRACKING_HW_FILTER_NOT_AVAILABLE = 120402;

  // [120,500 - 121,000) LE advertise related
    // [120,500 - 120,600) LE advertise enable/disable count
    LE_ADV_COUNT_ENABLE = 120500;
    LE_ADV_COUNT_DISABLE = 120501;
    LE_ADV_COUNT_CONNECTABLE_ENABLE = 120502;
    LE_ADV_COUNT_CONNECTABLE_DISABLE = 120503;
    LE_ADV_COUNT_PERIODIC_ENABLE = 120504;
    LE_ADV_COUNT_PERIODIC_DISABLE = 120505;

    // [120,600 - 120,700) LE advertise instance bucket count
    LE_ADV_INSTANCE_COUNT_5 = 120600;
    LE_ADV_INSTANCE_COUNT_10 = 120601;
    LE_ADV_INSTANCE_COUNT_15 = 120602;
    LE_ADV_INSTANCE_COUNT_15P = 120603;

    // [120,700 - 120,800) LE advertise duration bucket count
    LE_ADV_DURATION_COUNT_TOTAL_1M = 120700;
    LE_ADV_DURATION_COUNT_TOTAL_30M = 120701;
    LE_ADV_DURATION_COUNT_TOTAL_1H = 120702;
    LE_ADV_DURATION_COUNT_TOTAL_3H = 120703;
    LE_ADV_DURATION_COUNT_TOTAL_3HP = 120704;
    LE_ADV_DURATION_COUNT_CONNECTABLE_1M = 120705;
    LE_ADV_DURATION_COUNT_CONNECTABLE_30M = 120706;
    LE_ADV_DURATION_COUNT_CONNECTABLE_1H = 120707;
    LE_ADV_DURATION_COUNT_CONNECTABLE_3H = 120708;
    LE_ADV_DURATION_COUNT_CONNECTABLE_3HP = 120709;
    LE_ADV_DURATION_COUNT_PERIODIC_1M = 120710;
    LE_ADV_DURATION_COUNT_PERIODIC_30M = 120711;
    LE_ADV_DURATION_COUNT_PERIODIC_1H = 120712;
    LE_ADV_DURATION_COUNT_PERIODIC_3H = 120713;
    LE_ADV_DURATION_COUNT_PERIODIC_3HP = 120714;

    // [120,800 - 120,900) LE advertise error count
    LE_ADV_ERROR_ON_START_COUNT = 120800;

    // [120,900 - 121,000) GATT Related Count
    GATT_CLIENT_CONNECT_IS_DIRECT = 120900;
    GATT_CLIENT_CONNECT_IS_AUTOCONNECT = 120901;
    GATT_CLIENT_CONNECT_IS_DIRECT_IN_FOREGROUND = 120902;
    GATT_CLIENT_CONNECT_IS_DIRECT_NOT_IN_FOREGROUND = 120903;
    GATT_CLIENT_CONNECT_IS_AUTOCONNECT_IN_FOREGROUND = 120904;
    GATT_CLIENT_CONNECT_IS_AUTOCONNECT_NOT_IN_FOREGROUND = 120905;
    GATT_SERVER_CONNECT_IS_DIRECT_IN_FOREGROUND = 120906;
    GATT_SERVER_CONNECT_IS_DIRECT_NOT_IN_FOREGROUND = 120907;
    GATT_SERVER_CONNECT_IS_AUTOCONNECT_IN_FOREGROUND = 120908;
    GATT_SERVER_CONNECT_IS_AUTOCONNECT_NOT_IN_FOREGROUND = 120909;

  // [121,000 - 121,100) System state related
    // [121,000 - 121,010) Screen on/off count
    SCREEN_ON_EVENT = 121000;
    SCREEN_OFF_EVENT = 121001;

  // [121,100 - 122,000) Le Audio related
    // [121,100 - 121,200) device/group health status count
    LE_AUDIO_ALLOWLIST_DEVICE_HEALTH_STATUS_GOOD = 121100;
    LE_AUDIO_ALLOWLIST_DEVICE_HEALTH_STATUS_BAD = 121101;
    LE_AUDIO_ALLOWLIST_DEVICE_HEALTH_STATUS_BAD_INVALID_DB = 121102;
    LE_AUDIO_ALLOWLIST_DEVICE_HEALTH_STATUS_BAD_INVALID_CSIS = 121103;
    LE_AUDIO_NONALLOWLIST_DEVICE_HEALTH_STATUS_GOOD = 121104;
    LE_AUDIO_NONALLOWLIST_DEVICE_HEALTH_STATUS_BAD = 121105;
    LE_AUDIO_NONALLOWLIST_DEVICE_HEALTH_STATUS_BAD_INVALID_DB = 121106;
    LE_AUDIO_NONALLOWLIST_DEVICE_HEALTH_STATUS_BAD_INVALID_CSIS = 121107;
    LE_AUDIO_ALLOWLIST_GROUP_HEALTH_STATUS_GOOD = 121108;
    LE_AUDIO_ALLOWLIST_GROUP_HEALTH_STATUS_TRENDING_BAD = 121109;
    LE_AUDIO_ALLOWLIST_GROUP_HEALTH_STATUS_BAD = 121110;
    LE_AUDIO_ALLOWLIST_GROUP_HEALTH_STATUS_BAD_ONCE_CIS_FAILED = 121111;
    LE_AUDIO_ALLOWLIST_GROUP_HEALTH_STATUS_BAD_ONCE_SIGNALING_FAILED = 121112;
    LE_AUDIO_NONALLOWLIST_GROUP_HEALTH_STATUS_GOOD = 121113;
    LE_AUDIO_NONALLOWLIST_GROUP_HEALTH_STATUS_TRENDING_BAD = 121114;
    LE_AUDIO_NONALLOWLIST_GROUP_HEALTH_STATUS_BAD = 121115;
    LE_AUDIO_NONALLOWLIST_GROUP_HEALTH_STATUS_BAD_ONCE_CIS_FAILED = 121116;
    LE_AUDIO_NONALLOWLIST_GROUP_HEALTH_STATUS_BAD_ONCE_SIGNALING_FAILED = 121117;
}

enum AddressTypeEnum {
  ADDRESS_TYPE_PUBLIC = 0;
  ADDRESS_TYPE_RANDOM = 1;
  ADDRESS_TYPE_UNKNOWN = 0xFFFF;
}

// Major Class from packages/modules/Bluetooth/framework/java/android/bluetooth/BluetoothClass.java
enum MajorClassEnum {
  MAJOR_CLASS_UNCATEGORIZED = 0x1F00;
  MAJOR_CLASS_MISC = 0x0000;
  MAJOR_CLASS_COMPUTER = 0x0100;
  MAJOR_CLASS_PHONE = 0x0200;
  MAJOR_CLASS_NETWORKING = 0x0300;
  MAJOR_CLASS_AUDIO_VIDEO = 0x0400;
  MAJOR_CLASS_PERIPHERAL = 0x0500;
  MAJOR_CLASS_IMAGING = 0x0600;
  MAJOR_CLASS_WEARABLE = 0x0700;
  MAJOR_CLASS_TOY = 0x0800;
  MAJOR_CLASS_HEALTH = 0x0900;
}

enum ProfileConnectionResult {
  RESULT_UNKNOWN = 0;
  RESULT_SUCCESS = 1;
  RESULT_FAILURE = 2;
}

enum ProfileConnectionReason {
  REASON_UNKNOWN = 0;
  REASON_SUCCESS = 1;
  REASON_UNEXPECTED_STATE = 2;
  REASON_NATIVE_LAYER_REJECTED = 3;
  REASON_INCOMING_CONN_REJECTED = 4;
}

enum LeConnectionResult {
  LE_CONNECTION_RESULT_UNKNOWN = 0;
  LE_CONNECTION_RESULT_SUCCESS = 1;
  LE_CONNECTION_RESULT_FAILURE = 2;
}

// Comment added to those whose enum names do not match the actual file names.
enum ContentProfileFileName {
  BLUETOOTH_FILE_NAME_UNKNOWN = 0;

  // [1, 10000] - MAP
  BLUETOOTH_MAP_ACCOUNT_LOADER = 1;
  BLUETOOTH_MAP_APP_OBSERVER = 2;
  BLUETOOTH_MAP_APP_PARAMS = 3;
  BLUETOOTH_MAP_BMESSAGE = 4;
  BLUETOOTH_MAP_BMESSAGE_EMAIL = 5;
  BLUETOOTH_MAP_BMESSAGE_MIME = 6;
  BLUETOOTH_MAP_CONTENT = 7;
  BLUETOOTH_MAP_CONTENT_OBSERVER = 8;
  BLUETOOTH_MAP_CONVO_CONTACT_ELEMENT = 9;
  BLUETOOTH_MAP_CONVO_LISTING = 10;
  BLUETOOTH_MAP_CONVO_LISTING_ELEMENT = 11;
  BLUETOOTH_MAP_FOLDER_ELEMENT = 12;
  BLUETOOTH_MAP_MAS_INSTANCE = 13;
  BLUETOOTH_MAP_MESSAGE_LISTING = 14;
  BLUETOOTH_MAP_OBEX_SERVER = 15;
  BLUETOOTH_MAP_SERVICE = 16;
  BLUETOOTH_MAP_SMS_PDU = 17;
  BLUETOOTH_MAP_UTILS = 18;
  BLUETOOTH_MNS_OBEX_CLIENT = 19;
  BLUETOOTH_SMS_MMS_CONTACTS = 20;  // SmsMmsContacts.java
  BLUETOOTH_MMS_FILE_PROVIDER = 21; // MmsFileProvider.java

  // [10001, 20000] - OPP
  BLUETOOTH_OPP_MANAGER = 10001;
  BLUETOOTH_OPP_TRANSFER_HISTORY = 10002;
  BLUETOOTH_OPP_OBEX_CLIENT_SESSION = 10003;
  BLUETOOTH_OPP_UTILITY = 10004;
  BLUETOOTH_OPP_LAUNCHER_ACTIVITY = 10005;
  BLUETOOTH_OPP_RECEIVER = 10006;
  BLUETOOTH_OPP_TRANSFER = 10007;
  BLUETOOTH_OPP_SEND_FILE_INFO = 10008;
  BLUETOOTH_OPP_INCOMING_FILE_CONFIRM_ACTIVITY = 10009;
  BLUETOOTH_OPP_OBEX_SERVER_SESSION = 10010;
  BLUETOOTH_OPP_RECEIVE_FILE_INFO = 10011;
  BLUETOOTH_OPP_TRANSFER_ACTIVITY = 10012;
  BLUETOOTH_OPP_PROVIDER = 10013;
  BLUETOOTH_OPP_SERVICE = 10014;
  BLUETOOTH_OPP_CONSTANTS = 10015; // Constants.java

  // [20001, 30000] - PBAP
  BLUETOOTH_PBAP_ACTIVITY = 20001;
  BLUETOOTH_PBAP_AUTHENTICATOR = 20002;
  BLUETOOTH_PBAP_CALL_LOG_COMPOSER = 20003;
  BLUETOOTH_PBAP_CONFIG = 20004;
  BLUETOOTH_PBAP_OBEX_SERVER = 20005;
  BLUETOOTH_PBAP_SERVICE = 20006;
  BLUETOOTH_PBAP_SIM_VCARD_MANAGER = 20007;
  BLUETOOTH_PBAP_UTILS = 20008;
  BLUETOOTH_PBAP_VCARD_MANAGER = 20009;
  BLUETOOTH_PBAP_HANDLER_FOR_STRING_BUFFER = 20010; // HandlerForStringBuffer.java
  BLUETOOTH_PBAP_STATE_MACHINE = 20011; // PbapStateMachine.java

  // Will be added more if needed in future.
}

enum EventType {
  EVENT_TYPE_UNKNOWN = 0;
  ACL_CONNECTION_RESPONDER = 1;
  ACL_CONNECTION_INITIATOR = 2;
  PROFILE_CONNECTION = 3;
  AUTHENTICATION_REQUEST = 4;
  IO_CAPABILITY_REQUEST = 5;
  USER_CONF_REQUEST = 6;
  USER_CONF_POSITIVE_REPLY = 7;
  USER_CONF_NEGATIVE_REPLY = 8;
  AUTHENTICATION_COMPLETE = 9;
  SERVICE_DISCOVERY = 10;
  REMOTE_NAME_REQUEST = 11;
  ACL_DISCONNECTION_INITIATOR = 12;
  ACL_DISCONNECTION_RESPONDER = 13;
  AUTHENTICATION_COMPLETE_FAIL = 14;
  BONDING = 15;
  INITIATOR_CONNECTION = 16;
  BOND = 17;
  PROFILE_CONNECTION_A2DP = 18;
  PROFILE_CONNECTION_A2DP_SINK = 19;
  PROFILE_CONNECTION_HEADSET = 20;
  PROFILE_CONNECTION_HEADSET_CLIENT = 21;
  PROFILE_CONNECTION_MAP_CLIENT = 22;
  PROFILE_CONNECTION_HID_HOST = 23;
  PROFILE_CONNECTION_PAN = 24;
  PROFILE_CONNECTION_PBAP_CLIENT = 25;
  PROFILE_CONNECTION_HEARING_AID = 26;
  PROFILE_CONNECTION_HAP_CLIENT = 27;
  PROFILE_CONNECTION_VOLUME_CONTROL = 28;
  PROFILE_CONNECTION_CSIP_SET_COORDINATOR = 29;
  PROFILE_CONNECTION_LE_AUDIO = 30;
  PROFILE_CONNECTION_LE_AUDIO_BROADCAST_ASSISTANT = 31;
  PROFILE_CONNECTION_BATTERY = 32;
  TRANSPORT = 33;
  BOND_RETRY = 34;
  SMP_PAIRING_OUTGOING = 35;
  SMP_PAIRING_INCOMING = 36;
  LE_ACL_CONNECTION_INITIATOR = 37;
  LE_ACL_CONNECTION_RESPONDER = 38;
  LE_ACL_DISCONNECTION_INITIATOR = 39;
  LE_ACL_DISCONNECTION_RESPONDER = 40;
  GATT_CONNECT_JAVA = 41;
  GATT_CONNECT_NATIVE = 42;
  LE_DEVICE_IN_ACCEPT_LIST = 43;
  GATT_DISCONNECT_JAVA = 44;
  GATT_DISCONNECT_NATIVE = 45;
  TRANSPORT_MATCH = 46;
  HFP_SESSION = 47;
  HFP_AG_VERSION = 48;
  HFP_HF_VERSION = 49;
  HFP_HF_FEATURES = 50;
  SCO_SESSION = 51;
  SCO_CODEC = 52;
  TRANSITION = 53;
  LE_CONNECTION_REJECTED = 54;

  // AVDTP L2CAP Events
  AVDTP_L2CAP_CONNECTION_REQUEST_SENT = 500;
  AVDTP_L2CAP_CONNECTION_REQUEST_RECEIVED = 501;
  AVDTP_L2CAP_CONNECTION_RESPONSE_SENT = 502;
  AVDTP_L2CAP_CONNECTION_RESPONSE_RECEIVED = 503;
  AVDTP_L2CAP_DISCONNECTION_REQUEST_SENT = 504;
  AVDTP_L2CAP_DISCONNECTION_REQUEST_RECEIVED = 505;
  AVDTP_L2CAP_DISCONNECTION_RESPONSE_SENT = 506;
  AVDTP_L2CAP_DISCONNECTION_RESPONSE_RECEIVED = 507;

  // AVDTP L2CAP error Event
  AVDTP_ON_L2CAP_ERROR = 510;

  // AVDTP error Events
  AVDTP_DISC_FAIL_EVT = 560;
  AVDTP_GETCAP_FAIL_EVT = 561;
  AVDTP_OPEN_FAIL_EVT = 562;
  AVDTP_OPEN_REJECT_EVT = 563;
  AVDTP_SET_CONFIG_REJECT_EVT = 564;
  AVDTP_START_REJECT_EVT = 565;
  AVDTP_SUSPEND_REJECT_EVT = 566;
  AVDTP_SIGNALING_TIMEOUT = 567;

  AVDTP_ABORT_RESPONSE_SEND_EVT = 568;
  AVDTP_CLOSE_RESPONSE_SEND_EVT = 569;

  A2DP_BTIF_AV_STATE_CHANGE_EVT = 600;

  // A2DP Profile State Machine Events
  A2DP_PROFILE_STATE_CHANGE = 800;
  A2DP_PROFILE_ERROR_STATE_CHANGE = 801;
}

enum State {
  STATE_UNKNOWN = 0;
  START = 1;
  END = 2;
  SUCCESS = 3;
  FAIL = 4;
  ALREADY_CONNECTED = 5;
  TIMEOUT = 6;
  REMOTE_USER_TERMINATED_CONNECTION = 7;
  KEY_MISSING = 8;
  MEMORY_EXCEEDED = 9;
  BUSY_PAIRING = 10;
  REPEATED_ATTEMPTS = 11;
  PAIRING_NOT_ALLOWED = 12;
  RESOURCES_EXCEEDED = 13;
  AUTH_FAILURE = 14;
  LOCAL_DEVICE_TERMINATED_CONNECTION = 15;
  TRANSACTION_COLLISION = 16;
  PAGE_TIMEOUT = 17;
  CONNECTION_TIMEOUT = 18;
  CONNECTION_ACCEPT_TIMEOUT = 19;
  TRANSACTION_RESPONSE_TIMEOUT = 20;
  STATE_NONE = 21;
  STATE_BONDED = 22;
  CLASSIC = 23;
  LE = 24;
  HARDWARE_FAILURE = 25;
  MEMORY_CAPACITY_EXCEEDED = 26;
  CONNECTION_LIMIT_EXCEEDED = 27;
  SYNCHRONOUS_CONNECTION_LIMIT_EXCEEDED = 28;
  CONNECTION_REJECTED_SECURITY_REASONS = 29;
  CONNECTION_REJECTED_UNACCEPTABLE_BD_ADDR = 30;
  UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE = 31;
  INVALID_HCI_COMMAND_PARAMETERS = 32;
  UNSUPPORTED_REMOTE_OR_LMP_FEATURE = 33;
  SCO_OFFSET_REJECTED = 34;
  SCO_INTERVAL_REJECTED = 35;
  SCO_AIR_MODE_REJECTED = 36;
  INVALID_LMP_OR_LL_PARAMETERS = 37;
  UNSPECIFIED_ERROR = 38;
  UNSUPPORTED_LMP_OR_LL_PARAMETER = 39;
  ROLE_CHANGE_NOT_ALLOWED = 40;
  LINK_LAYER_COLLISION = 41;
  LMP_PDU_NOT_ALLOWED = 42;
  ENCRYPTION_MODE_NOT_ACCEPTABLE = 43;
  LINK_KEY_CANNOT_BE_CHANGED = 44;
  REQUESTED_QOS_NOT_SUPPORTED = 45;
  INSTANT_PASSED = 46;
  PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED = 47;
  DIFFERENT_TRANSACTION_COLLISION = 48;
  QOS_UNACCEPTABLE_PARAMETERS = 49;
  QOS_REJECTED = 50;
  CHANNEL_ASSESSMENT_NOT_SUPPORTED = 51;
  INSUFFICIENT_SECURITY = 52;
  PARAMETER_OUT_OF_MANDATORY_RANGE = 53;
  ROLE_SWITCH_PENDING = 54;
  RESERVED_SLOT_VIOLATION = 55;
  ROLE_SWITCH_FAILED = 56;
  EXTENDED_INQUIRY_RESPONSE_TOO_LARGE = 57;
  SECURE_SIMPLE_PAIRING_NOT_SUPPORTED_BY_HOST = 58;
  HOST_BUSY_PAIRING = 59;
  CONNECTION_REJECTED_NO_SUITABLE_CHANNEL_FOUND = 60;
  CONTROLLER_BUSY = 61;
  UNACCEPTABLE_CONNECTION_PARAMETERS = 62;
  ADVERTISING_TIMEOUT = 63;
  CONNECTION_TERMINATED_DUE_TO_MIC_FAILURE = 64;
  CONNECTION_FAILED_ESTABLISHMENT = 65;
  COARSE_CLOCK_ADJUSTMENT_REJECTED = 66;
  TYPE0_SUBMAP_NOT_DEFINED = 67;
  UNKNOWN_ADVERTISING_IDENTIFIER = 68;
  LIMIT_REACHED = 69;
  OPERATION_CANCELLED_BY_HOST = 70;
  PACKET_TOO_LONG = 71;
  CONNECTION_TERMINATED_BY_LOCAL_HOST = 72;
  PASSKEY_ENTRY_FAIL = 73;
  OOB_FAIL = 74;
  CONFIRM_VALUE_ERROR = 75;
  ENC_KEY_SIZE = 76;
  INVALID_CMD = 77;
  INVALID_PARAMETERS = 78;
  DHKEY_CHK_FAIL = 79;
  NUMERIC_COMPARISON_FAIL = 80;
  BR_PAIRING_IN_PROGRESS = 81;
  CROSS_TRANSPORT_NOT_ALLOWED = 82;
  INTERNAL_ERROR = 83;
  UNKNOWN_IO_CAP = 84;
  ENCRYPTION_FAIL = 85;
  RESPONSE_TIMEOUT = 86;
  SIRK_DEVICE_INVALID = 87;
  USER_CANCELLATION = 88;
  DIRECT_CONNECT = 89;
  INDIRECT_CONNECT = 90;
  HFP_CONNECTED = 91;
  HFP_SLC_FAIL_CONNECTION = 92;
  HFP_RFCOMM_CHANNEL_FAIL = 93;
  HFP_RFCOMM_COLLISION_FAIL = 94;
  HFP_RFCOMM_AG_OPEN_FAIL = 95;
  HFP_CONNECT_FAIL = 96;
  SCO_TELECOM_INITIATED_START = 97;
  SCO_VIRTUAL_VOICE_INITIATED_START = 98;
  SCO_VOICE_RECOGNITION_INITIATED_START = 99;
  SCO_CONNECT_AUDIO_START = 100;
  SCO_LINK_CREATED = 101;
  SCO_AUDIO_CONNECTED = 102;
  SCO_LINK_REMOVED = 103;
  SCO_TELECOM_INITIATED_END = 104;
  SCO_VIRTUAL_VOICE_INITIATED_END = 105;
  SCO_VOICE_RECOGNITION_INITIATED_END = 106;
  SCO_DISCONNECT_AUDIO_END = 107;
  ILLEGAL_COMMAND = 108;
  NO_CONNECTION = 109;
  HW_FAILURE = 110;
  MEMORY_FULL = 111;
  MAX_NUMBER_OF_CONNECTIONS = 112;
  MAX_NUM_OF_SCOS = 113;
  CONNECTION_EXISTS = 114;
  COMMAND_DISALLOWED = 115;
  HOST_REJECT_RESOURCES = 116;
  HOST_REJECT_SECURITY = 117;
  ILLEGAL_PARAMETER_FMT = 118;
  PEER_USER = 119;
  REMOTE_LOW_RESOURCE = 120;
  REMOTE_POWER_OFF = 121;
  CONN_CAUSE_LOCAL_HOST = 122;
  HOST_REJECT_DEVICE = 123;
  UNSUPPORTED_REM_FEATURE = 124;
  UNSPECIFIED = 125;
  UNACCEPT_CONN_INTERVAL = 126;
  UNIT_KEY_USED = 127;
  DIFF_TRANSACTION_COLLISION = 128;
  LMP_ERR_TRANS_COLLISION = 129;
  CANCELLED_BY_LOCAL_HOST = 130;
  MAX_ERR = 131;
  UNDEFINED = 132;
  BOND_BONDED_TO_ACTION_KEY_MISSING = 133;
  ACTION_KEY_MISSING_TO_ENCRYPTION_CHANGE = 134;
  ACTION_KEY_MISSING_TO_BOND_NONE = 135;
  UNKNOWN_HCI_COMMAND = 136;
  REMOTE_DEVICE_TERMINATED_CONNECTION_LOW_RESOURCES = 137;
  REMOTE_DEVICE_TERMINATED_CONNECTION_POWER_OFF = 138;
  UNKNOWN_LMP_PDU = 139;
  VERSION_1_0 = 140;
  VERSION_1_1 = 141;
  VERSION_1_2 = 142;
  VERSION_1_3 = 143;
  VERSION_1_4 = 144;
  VERSION_1_5 = 145;
  VERSION_1_6 = 146;
  VERSION_1_7 = 147;
  VERSION_1_8 = 148;
  VERSION_1_9 = 149;
  VERSION_UNKNOWN = 150;
  START_LOCAL_INITIATED = 151;
  START_REMOTE_INITIATED = 152;
  HFP_CONNECT_REJECT_FAIL = 153;
  HFP_ACL_CONNECT_FAIL = 154;
  ATTEMPT_IN_PROGRESS = 155;
  CODEC_CVSD = 156;
  CODEC_MSBC = 157;
  CODEC_LC3 = 158;
  CODEC_UNKNOWN = 159;
  SCO_LINK_LOSS = 160;
  CODEC_APTX_SWB_SETTINGS_Q0_MASK = 161;
  CODEC_APTX_SWB_SETTINGS_Q1_MASK = 162;
  CODEC_APTX_SWB_SETTINGS_Q2_MASK = 163;
  CODEC_APTX_SWB_SETTINGS_Q3_MASK = 164;
  SCO_VOICE_RECOGNITION_HEADSET_START = 165;
  SCO_VOICE_RECOGNITION_HEADSET_END = 166;
  SCO_VOICE_RECOGNITION_HEADSET_TIMEOUT = 167;
  AUDIO_PORT_START_STREAM = 168;
  AUDIO_PORT_SUSPEND_STREAM = 169;
  AUDIO_PROVIDER_STREAM_STARTED = 170;
  SDP_DISCOVERY_FAILED = 171;
  RFCOMM_CONNECTION_FAILED = 172;

  //L2CAP conn Result Codes
  // Define in packages/modules/Bluetooth/system/stack/include/l2cdefs.h
  L2CAP_CONN_STATUS_OK = 500;
  L2CAP_CONN_STATUS_PENDING = 501;
  L2CAP_CONN_STATUS_NO_PSM = 502;
  L2CAP_CONN_STATUS_SECURITY_BLOCK = 503;
  L2CAP_CONN_STATUS_NO_RESOURCES = 504;
  L2CAP_CONN_STATUS_TIMEOUT = 505;
  /* Generic L2CAP conn failure reasons */
  L2CAP_CONN_STATUS_OTHER_ERROR = 506;
  L2CAP_CONN_STATUS_ACL_CONNECTION_FAILED = 507;
  L2CAP_CONN_STATUS_CLIENT_SECURITY_CLEARANCE_FAILED = 508;
  L2CAP_CONN_STATUS_NO_LINK = 509;
  /* For LE result codes converted to L2CAP conn failure code */
  L2CAP_CONN_STATUS_INSUFFICIENT_AUTHENTICATION = 510;
  L2CAP_CONN_STATUS_INSUFFICIENT_AUTHORIZATION = 511;
  L2CAP_CONN_STATUS_INSUFFICIENT_ENCRYP_KEY_SIZE = 512;
  L2CAP_CONN_STATUS_INSUFFICIENT_ENCRYP = 513;
  L2CAP_CONN_STATUS_INVALID_SOURCE_CID = 514;
  L2CAP_CONN_STATUS_SOURCE_CID_ALREADY_ALLOCATED = 515;
  L2CAP_CONN_STATUS_UNACCEPTABLE_PARAMETERS = 516;
  L2CAP_CONN_STATUS_INVALID_PARAMETERS = 517;
  L2CAP_CONN_STATUS_UNKNOWN_ERROR = 518;

  // A2DP Generic Status for Cross-Layer Events
  A2DP_EVENT_STATUS_SUCCESS = 1000;
  A2DP_EVENT_STATUS_FAILURE = 1001;

  // A2DP Service State Machine States
  A2DP_STATE_DISCONNECTED = 1010;
  A2DP_STATE_CONNECTING = 1011;
  A2DP_STATE_CONNECTED = 1012;
  A2DP_STATE_DISCONNECTING = 1013;
  A2DP_STATE_PLAYING = 1014;
  A2DP_STATE_NOT_PLAYING = 1015;

  // AV status values on BTA layer
  // Define in packages/modules/Bluetooth/system/bta/include/bta_av_api.h
  BTA_AV_STATUS_SUCCESS = 1020;
  BTA_AV_STATUS_FAIL = 1021;
  BTA_AV_STATUS_FAIL_SDP = 1022;
  BTA_AV_STATUS_FAIL_STREAM = 1023;
  BTA_AV_STATUS_FAIL_RESOURCES = 2014;
  BTA_AV_STATUS_FAIL_ROLE = 1025;
  BTA_AV_STATUS_FAIL_GET_CAP = 1026;

  // Additional AVDTP Result Error Codes
  // Define in packages/modules/Bluetooth/system/stack/include/avdt_api.h
  AVDT_STATUS_ERR_CONNECT = 1060;
  AVDT_STATUS_ERR_TIMEOUT = 1061;
  AVDTP_STATUS_UNKNOWN_ERROR = 1062;
}

enum RemoteDeviceTypeMetadata {
  WATCH = 0;
  UNTETHERED_HEADSET = 1;
  STYLUS = 2;
  SPEAKER = 3;
  HEADSET = 4;
  CARKIT = 5;
  DEFAULT = 6;
  NOT_AVAILABLE = 7;
}

enum BroadcastAudioQualityType {
  QUALITY_UNKNOWN = 0;
  QUALITY_STANDARD = 1;
  QUALITY_HIGH = 2;
}

enum BroadcastSessionSetupStatus {
  SETUP_STATUS_UNKNOWN = 0;
  SETUP_STATUS_REQUESTED = 1;
  SETUP_STATUS_CREATED = 2;
  SETUP_STATUS_STREAMING = 3;
  SETUP_STATUS_CREATE_FAILED = 4;
  SETUP_STATUS_STREAMING_FAILED = 5;
}

enum BroadcastSyncStatus {
  SYNC_STATUS_UNKNOWN = 0;
  SYNC_STATUS_SYNC_REQUESTED = 1;
  SYNC_STATUS_PA_SYNC_SUCCESS = 2;
  SYNC_STATUS_AUDIO_SYNC_SUCCESS = 3;
  SYNC_STATUS_PA_SYNC_FAILED = 4;
  SYNC_STATUS_PA_SYNC_NO_PAST = 5;
  SYNC_STATUS_BIG_DECRYPT_FAILED = 6;
  SYNC_STATUS_AUDIO_SYNC_FAILED = 7;
}

enum BtaStatus {
  BTA_STATUS_UNKNOWN = 0;
  BTA_STATUS_SUCCESS = 1;
  BTA_STATUS_FAILURE = 2;
  BTA_STATUS_BUSY = 3;
}

enum ChannelSoundingType {
  CS_UNSPECIFIED = 0;
  CS_BT_CORE60 = 1;
}

enum ChannelSoundingStopReason {
  REASON_UNSPECIFIED = 0;
  REASON_LOCAL_APP_REQUEST = 1;
  REASON_HAL_OPEN_FAILED = 2;
  REASON_CONFIG_ID_RUN_OUT =3;
  REASON_LOCAL_CS_STACK_NOT_READY = 4;
  REASON_LE_DISCONNECT = 5;
  REASON_VENDOR_SPECIFIC_REPLY_FAILED = 6;
  REASON_B2B_CONFLICT = 7;
  REASON_REMOTE_TIMEOUT = 8;
  REASON_PROCEDURE_ENABLE_COMMAND_STATUS_ERROR = 9;
  REASON_READ_REMOTE_CAP_COMPLETE_FAILED = 10;
  REASON_SET_DEFAULT_SETTINGS_COMPLETE_FAILED = 11;
  REASON_SECURITY_ENABLE_COMPLETE_FAILED = 12;
  REASON_CREATE_CONFIG_COMPLETE_FAILED = 13;
  REASON_SECURITY_ENABLE_TIMEOUT = 14;
  REASON_SET_PROCEDURE_PARAMETERS_COMPLETE_FAILED = 15;
  REASON_PROCEDURE_ENABLE_COMPLETE_FAILED = 16;
  REASON_REMOTE_PROCEDURE_DATA_BROKEN = 17;
  REASON_READ_REMOTE_CAP_COMMAND_STATUS_ERROR = 18;
  REASON_SECURITY_ENABLE_COMMAND_STATUS_ERROR = 19;
  REASON_CREATE_CONFIG_COMMAND_STATUS_ERROR = 20;
  REASON_RAS_REMOTE_NOT_SUPPORT = 21;
  REASON_RAS_FATAL_ERROR = 22;
}

// see 10.11.1 of BLUETOOTH CORE SPECIFICATION Version 6.0 | Vol 3, Part C
enum ChannelSoundingSecurityLevel {
  LEVEL_UNSPECIFIED = 0;
  LEVEL_ONE = 1;
  LEVEL_TWO = 2;
  LEVEL_THREE = 3;
  LEVEL_FOUR = 4;
}

enum BluetoothPbapClientContactDownloadStatus {
  DOWNLOAD_STATUS_UNSPECIFIED = 0;
  DOWNLOAD_STATUS_CANCELLED = 1;
  DOWNLOAD_STATUS_COMPLETED = 2;
  DOWNLOAD_STATUS_ERROR = 3;
}

enum BluetoothPbapClientPhonebookDownloadStatus {
  STATUS_UNSPECIFIED = 0;
  STATUS_SUCCESS = 1;                   // Supported and downloaded
  STATUS_SUCCESS_CACHE_INVALIDATED = 2; // Cached copy was invalidated
  STATUS_NOT_SUPPORTED = 3;             // Remote device does not support
  STATUS_SUPPORTED_NOT_REQUESTED = 4;   // Remote device supports but not requested
  STATUS_CACHED = 5;                    // Contacts were cached
  STATUS_ERROR = 6;
  STATUS_ERROR_OBEX_HTTP_BAD_REQUEST = 7;
  STATUS_ERROR_OBEX_HTTP_UNAUTHORIZED = 8;
  STATUS_ERROR_OBEX_HTTP_FORBIDDEN = 9;
  STATUS_ERROR_OBEX_HTTP_NOT_FOUND = 10;
  STATUS_ERROR_OBEX_HTTP_NOT_ACCEPTABLE = 11;
  STATUS_ERROR_OBEX_HTTP_TIMEOUT = 12;
  STATUS_ERROR_OBEX_HTTP_PRECON_FAILED = 13;
  STATUS_ERROR_OBEX_HTTP_INTERNAL_ERROR = 14;
  STATUS_ERROR_OBEX_HTTP_NOT_IMPLEMENTED = 15;
  STATUS_ERROR_OBEX_HTTP_UNAVAILABLE = 16;
}

enum BluetoothPbapClientPhonebookType {
  PHONEBOOK_UNSPECIFIED = 0;
  PHONEBOOK_LOCAL = 1;     // Device phonebook
  PHONEBOOK_FAVORITES = 2; // Contacts marked as favorite
  PHONEBOOK_MCH = 3;       // Missed calls
  PHONEBOOK_ICH = 4;       // Incoming calls
  PHONEBOOK_OCH = 5;       // Outgoing calls
  PHONEBOOK_SIM = 6;       // SIM stored phonebook
  PHONEBOOK_SIM_MCH = 7;   // SIM stored missed calls
  PHONEBOOK_SIM_ICH = 8;   // SIM stored incoming calls
  PHONEBOOK_SIM_OCH = 9;   // SIM stored outgoing calls
}

enum BluetoothOppSessionStatus {
  OPP_SESSION_STATUS_UNSPECIFIED = 0;
  OPP_SESSION_STATUS_PENDING = 1;
  OPP_SESSION_STATUS_RUNNING = 2;
  OPP_SESSION_STATUS_SUCCESS = 3;
  OPP_SESSION_STATUS_BAD_REQUEST = 4;
  OPP_SESSION_STATUS_USER_STATUS_FORBIDDEN = 5;
  OPP_SESSION_STATUS_NOT_ACCEPTABLE = 6;
  OPP_SESSION_STATUS_LENGTH_REQUIRED = 7;
  OPP_SESSION_STATUS_PRECONDITION_FAILED = 8;
  OPP_SESSION_STATUS_CANCELED = 9;
  OPP_SESSION_STATUS_UNKNOWN_ERROR = 10;
  OPP_SESSION_STATUS_FILE_ERROR = 11;
  OPP_SESSION_STATUS_ERROR_NO_SDCARD = 12;
  OPP_SESSION_STATUS_ERROR_SDCARD_FULL = 13;
  OPP_SESSION_STATUS_UNHANDLED_OBEX_CODE = 14;
  OPP_SESSION_STATUS_OBEX_DATA_ERROR = 15;
  OPP_SESSION_STATUS_CONNECTION_ERROR = 16;
  OPP_SESSION_STATUS_UNSUPPORTED_TYPE = 17;
}

enum BluetoothOppTransferDirection {
  OPP_TRANSFER_DIRECTION_UNSPECIFIED = 0;
  OPP_TRANSFER_DIRECTION_SEND = 1;
  OPP_TRANSFER_DIRECTION_RECEIVE = 2;
}

enum BluetoothOppFileSize {
  OPP_FILE_SIZE_UNSPECIFIED = 0;
  OPP_FILE_SIZE_UNDER_1_KB = 1;
  OPP_FILE_SIZE_1KB_TO_2KB = 2;
  OPP_FILE_SIZE_2KB_TO_4KB = 3;
  OPP_FILE_SIZE_4KB_TO_8KB = 4;
  OPP_FILE_SIZE_8KB_TO_16KB = 5;
  OPP_FILE_SIZE_16KB_TO_32KB = 6;
  OPP_FILE_SIZE_32KB_TO_64KB = 7;
  OPP_FILE_SIZE_64KB_TO_128KB = 8;
  OPP_FILE_SIZE_128KB_TO_256KB = 9;
  OPP_FILE_SIZE_256KB_TO_512KB = 10;
  OPP_FILE_SIZE_512KB_TO_1MB = 11;
  OPP_FILE_SIZE_1MB_TO_2MB = 12;
  OPP_FILE_SIZE_2MB_TO_4MB = 13;
  OPP_FILE_SIZE_4MB_TO_8MB = 14;
  OPP_FILE_SIZE_8MB_TO_16MB = 15;
  OPP_FILE_SIZE_16MB_TO_32MB = 16;
  OPP_FILE_SIZE_32MB_TO_64MB = 17;
  OPP_FILE_SIZE_64MB_TO_128MB = 18;
  OPP_FILE_SIZE_128MB_TO_256MB = 19;
  OPP_FILE_SIZE_256MB_TO_512MB = 20;
  OPP_FILE_SIZE_512MB_TO_1GB = 21;
  OPP_FILE_SIZE_1GB_TO_2GB = 22;
  OPP_FILE_SIZE_2GB_TO_4GB = 23;
  OPP_FILE_SIZE_4GB_TO_8GB = 24;
  OPP_FILE_SIZE_ABOVE_8GB = 25;
}

enum BluetoothOppTransferDuration {
  OPP_TRANSFER_DURATION_UNSPECIFIED = 0;
  OPP_TRANSFER_DURATION_UNDER_1_SEC = 1;
  OPP_TRANSFER_DURATION_1_TO_5_SEC = 2;
  OPP_TRANSFER_DURATION_5_TO_30_SEC = 3;
  OPP_TRANSFER_DURATION_30_TO_60_SEC = 4;
  OPP_TRANSFER_DURATION_1_TO_5_MIN = 5;
  OPP_TRANSFER_DURATION_5_TO_15_MIN = 6;
  OPP_TRANSFER_DURATION_15_TO_30_MIN = 7;
  OPP_TRANSFER_DURATION_ABOVE_30_MIN = 8;
}

enum BluetoothOppTransferSpeed {
  OPP_TRANSFER_SPEED_UNSPECIFIED = 0;
  OPP_TRANSFER_SPEED_UNDER_10_KBPS = 1;
  OPP_TRANSFER_SPEED_10_TO_50_KBPS = 2;
  OPP_TRANSFER_SPEED_50_TO_100_KBPS = 3;
  OPP_TRANSFER_SPEED_100_TO_175_KBPS = 4;
  OPP_TRANSFER_SPEED_175_TO_250_KBPS = 5;
  OPP_TRANSFER_SPEED_250_TO_500_KBPS = 6;
  OPP_TRANSFER_SPEED_ABOVE_500_KBPS = 7;
}

enum BluetoothOppMimeTypeCategory {
  OPP_MIME_TYPE_CATEGORY_UNSPECIFIED = 0;
  OPP_MIME_TYPE_CATEGORY_IMAGE = 1;
  OPP_MIME_TYPE_CATEGORY_VIDEO = 2;
  OPP_MIME_TYPE_CATEGORY_AUDIO = 3;
  OPP_MIME_TYPE_CATEGORY_DOCUMENT = 5;
  OPP_MIME_TYPE_CATEGORY_COMPRESSED = 6;
  OPP_MIME_TYPE_CATEGORY_OTHER = 7;
}
