// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.bluetooth.test;

/// Defines the list of HCI protocol error codes that a Bluetooth controller can report. These
/// values are taken from Bluetooth Core Specification v5.1, Vol 2, Part D.
type HciError = strict enum : uint8 {
    SUCCESS = 0x00;
    UNKNOWN_COMMAND = 0x01;
    UNKNOWN_CONNECTION_ID = 0x02;
    HARDWARE_FAILURE = 0x03;
    PAGE_TIMEOUT = 0x04;
    AUTHENTICATION_FAILURE = 0x05;
    PIN_OR_KEY_MISSING = 0x06;
    MEMORY_CAPACITY_EXCEEDED = 0x07;
    CONNECTION_TIMEOUT = 0x08;
    CONNECTION_LIMIT_EXCEEDED = 0x09;
    SYNCHRONOUS_CONNECTION_LIMIT_EXCEEDED = 0x0A;
    CONNECTION_ALREADY_EXISTS = 0x0B;
    COMMAND_DISALLOWED = 0x0C;
    CONNECTION_REJECTED_LIMITED_RESOURCES = 0x0D;
    CONNECTION_REJECTED_SECURITY = 0x0E;
    CONNECTION_REJECTED_BAD_BD_ADDR = 0x0F;
    CONNECTION_ACCEPT_TIMEOUT_EXCEEDED = 0x10;
    UNSUPPORTED_FEATURE_OR_PARAMETER = 0x11;
    INVALID_HCICOMMAND_PARAMETERS = 0x12;
    REMOTE_USER_TERMINATED_CONNECTION = 0x13;
    REMOTE_DEVICE_TERMINATED_CONNECTION_LOW_RESOURCES = 0x14;
    REMOTE_DEVICE_TERMINATED_CONNECTION_POWER_OFF = 0x15;
    CONNECTION_TERMINATED_BY_LOCAL_HOST = 0x16;
    REPEATED_ATTEMPTS = 0x17;
    PAIRING_NOT_ALLOWED = 0x18;
    UNKNOWN_LMP_PDU = 0x19;
    UNSUPPORTED_REMOTE_FEATURE = 0x1A;
    SCO_OFFSET_REJECTED = 0x1B;
    SCO_INTERVAL_REJECTED = 0x1C;
    SCO_AIR_MODE_REJECTED = 0x1D;
    INVALID_LMP_OR_LL_PARAMETERS = 0x1E;
    UNSPECIFIED_ERROR = 0x1F;
    UNSUPPORTED_LMP_OR_LL_PARAMETER_VALUE = 0x20;
    ROLE_CHANGE_NOT_ALLOWED = 0x21;
    LMP_OR_LL_RESPONSE_TIMEOUT = 0x22;
    LMP_ERROR_TRANSACTION_COLLISION = 0x23;
    LMP_PDU_NOT_ALLOWED = 0x24;
    ENCRYPTION_MODE_NOT_ACCEPTABLE = 0x25;
    LINK_KEY_CANNOT_BE_CHANGED = 0x26;
    REQUESTED_QOS_NOT_SUPPORTED = 0x27;
    INSTANT_PASSED = 0x28;
    PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED = 0x29;
    DIFFERENT_TRANSACTION_COLLISION = 0x2A;
    RESERVED0 = 0x2B;
    QOS_UNACCEPTABLE_PARAMETER = 0x2C;
    QOS_REJECTED = 0x2D;
    CHANNEL_CLASSIFICATION_NOT_SUPPORTED = 0x2E;
    INSUFFICIENT_SECURITY = 0x2F;
    PARAMETER_OUT_OF_MANDATORY_RANGE = 0x30;
    RESERVED1 = 0x31;
    ROLE_SWITCH_PENDING = 0x32;
    RESERVED2 = 0x33;
    RESERVED_SLOT_VIOLATION = 0x34;
    ROLE_SWITCH_FAILED = 0x35;
    EXTENDED_INQUIRY_RESPONSE_TOO_LARGE = 0x36;
    SECURE_SIMPLE_PAIRING_NOT_SUPPORTED_BY_HOST = 0x37;
    HOST_BUSY_PAIRING = 0x38;
    CONNECTION_REJECTED_NO_SUITABLE_CHANNEL_FOUND = 0x39;
    CONTROLLER_BUSY = 0x3A;
    UNACCEPTABLE_CONNECTION_PARAMETERS = 0x3B;
    DIRECTED_ADVERTISING_TIMEOUT = 0x3C;
    CONNECTION_TERMINATED_MIC_FAILURE = 0x3D;
    CONNECTION_FAILED_TO_BE_ESTABLISHED = 0x3E;
    MAC_CONNECTION_FAILED = 0x3F;
    COARSE_CLOCK_ADJUSTMENT_REJECTED = 0x40;
    TYPE0_SUBMAP_NOT_DEFINED = 0x41;
    UNKNOWN_ADVERTISING_IDENTIFIER = 0x42;
    LIMIT_REACHED = 0x43;
    OPERATION_CANCELLED_BY_HOST = 0x44;
};
