// Copyright 2017 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.

#ifndef GARNET_DRIVERS_BLUETOOTH_LIB_HCI_HCI_CONSTANTS_H_
#define GARNET_DRIVERS_BLUETOOTH_LIB_HCI_HCI_CONSTANTS_H_

// clang-format off

#include <array>
#include <cstddef>
#include <cstdint>

// This file contains constants and numbers used in HCI packet payloads.

namespace btlib {
namespace hci {

// HCI_Version Assigned Values See the "Assigned Numbers" document for
// reference.
// (https://www.bluetooth.com/specifications/assigned-numbers/host-controller-interface)
enum class HCIVersion : uint8_t {
  // Bluetooth Core Specification 1.0b
  k1_0b = 0,

  // Bluetooth Core Specification 1.1
  k1_1,

  // Bluetooth Core Specification 1.2
  k1_2,

  // Bluetooth Core Specification 2.0 + EDR
  k2_0_EDR,

  // Bluetooth Core Specification 2.1 + EDR
  k2_1_EDR,

  // Bluetooth Core Specification 3.0 + HS
  k3_0_HS,

  // Bluetooth Core Specification 4.0
  k4_0,

  // Bluetooth Core Specification 4.1
  k4_1,

  // Bluetooth Core Specification 4.2
  k4_2,

  // Bluetooth Core Specification 5.0
  k5_0,

  kReserved
};

// HCI Error Codes. Refer to Core Spec v5.0, Vol 2, Part D for definitions and
// descriptions. All enum values are in increasing numerical order, however the
// values are listed below for clarity.
enum StatusCode : uint8_t {
  kSuccess                                      = 0x00,
  kUnknownCommand                               = 0x01,
  kUnknownConnectionId                          = 0x02,
  kHardwareFailure                              = 0x03,
  kPageTimeout                                  = 0x04,
  kAuthenticationFailure                        = 0x05,
  kPinOrKeyMissing                              = 0x06,
  kMemoryCapacityExceeded                       = 0x07,
  kConnectionTimeout                            = 0x08,
  kConnectionLimitExceeded                      = 0x09,
  kSynchronousConnectionLimitExceeded           = 0x0A,
  kConnectionAlreadyExists                      = 0x0B,
  kCommandDisallowed                            = 0x0C,
  kConnectionRejectedLimitedResources           = 0x0D,
  kConnectionRejectedSecurity                   = 0x0E,
  kConnectionRejectedBadBdAddr                  = 0x0F,
  kConnectionAcceptTimeoutExceeded              = 0x10,
  kUnsupportedFeatureOrParameter                = 0x11,
  kInvalidHCICommandParameters                  = 0x12,
  kRemoteUserTerminatedConnection               = 0x13,
  kRemoteDeviceTerminatedConnectionLowResources = 0x14,
  kRemoteDeviceTerminatedConnectionPowerOff     = 0x15,
  kConnectionTerminatedByLocalHost              = 0x16,
  kRepeatedAttempts                             = 0x17,
  kPairingNotAllowed                            = 0x18,
  kUnknownLMPPDU                                = 0x19,
  kUnsupportedRemoteFeature                     = 0x1A,
  kSCOOffsetRejected                            = 0x1B,
  kSCOIntervalRejected                          = 0x1C,
  kSCOAirModeRejected                           = 0x1D,
  kInvalidLMPOrLLParameters                     = 0x1E,
  kUnspecifiedError                             = 0x1F,
  kUnsupportedLMPOrLLParameterValue             = 0x20,
  kRoleChangeNotAllowed                         = 0x21,
  kLMPOrLLResponseTimeout                       = 0x22,
  kLMPErrorTransactionCollision                 = 0x23,
  kLMPPDUNotAllowed                             = 0x24,
  kEncryptionModeNotAcceptable                  = 0x25,
  kLinkKeyCannotBeChanged                       = 0x26,
  kRequestedQoSNotSupported                     = 0x27,
  kInstantPassed                                = 0x28,
  kPairingWithUnitKeyNotSupported               = 0x29,
  kDifferentTransactionCollision                = 0x2A,
  kReserved0                                    = 0x2B,
  kQoSUnacceptableParameter                     = 0x2C,
  kQoSRejected                                  = 0x2D,
  kChannelClassificationNotSupported            = 0x2E,
  kInsufficientSecurity                         = 0x2F,
  kParameterOutOfMandatoryRange                 = 0x30,
  kReserved1                                    = 0x31,
  kRoleSwitchPending                            = 0x32,
  kReserved2                                    = 0x33,
  kReservedSlotViolation                        = 0x34,
  kRoleSwitchFailed                             = 0x35,
  kExtendedInquiryResponseTooLarge              = 0x36,
  kSecureSimplePairingNotSupportedByHost        = 0x37,
  kHostBusyPairing                              = 0x38,
  kConnectionRejectedNoSuitableChannelFound     = 0x39,
  kControllerBusy                               = 0x3A,
  kUnacceptableConnectionParameters             = 0x3B,
  kDirectedAdvertisingTimeout                   = 0x3C,
  kConnectionTerminatedMICFailure               = 0x3D,
  kConnectionFailedToBeEstablished              = 0x3E,
  kMACConnectionFailed                          = 0x3F,
  kCoarseClockAdjustmentRejected                = 0x40,

  // 5.0
  kType0SubmapNotDefined                        = 0x41,
  kUnknownAdvertisingIdentifier                 = 0x42,
  kLimitReached                                 = 0x43,
  kOperationCancelledByHost                     = 0x44,
};

// Bitmask values for the 8-octet Local Supported LMP Features bit-field. See
// Core Specv5.0, Volume 2, Part C, Section 3.3 "Feature Mask Definition".
enum class LMPFeature : uint64_t {
  // Octet 0
  k3SlotPackets   = (1 << 0),
  k5SlotPackets   = (1 << 1),
  kEncryption     = (1 << 2),
  kSlotOffset     = (1 << 3),
  kTimingAccuracy = (1 << 4),
  kRoleSwitch     = (1 << 5),
  kHoldMode       = (1 << 6),
  kSniffMode      = (1 << 7),

  // Octet 1
  // Reserved (1 << 0 + 8)
  // TODO(armansito): Add definitions

  // Octet 2
  // TODO(armansito): Add definitions

  // Octet 3
  // Reserved (1ull << 24)
  kEDRACL2MbitMode        = (1ull << 25),
  kEDRACL3MbitMode        = (1ull << 26),
  kEnhancedInquiryScan    = (1ull << 27),
  kInterlacedInquiryScan  = (1ull << 28),
  kInterlacedPageScan     = (1ull << 29),
  kRSSIwithInquiryResults = (1ull << 30),
  kEV3Packets             = (1ull << 31),

  // Octet 4
  kEV4Packets         = (1ull << 32),
  kEV5Packets         = (1ull << 33),
  // Reserved
  kAFHCapableSlave    = (1ull << 35),
  kAFHClassSlave      = (1ull << 36),
  kBREDRNotSupported  = (1ull << 37),
  kLESupported        = (1ull << 38),
  k3SlotEDRACLPackets = (1ull << 39),

  // Octet 5
  // TODO(armansito): Add definitions

  // Octet 6
  kExtendedInquiryResponse        = (1ull << 48),
  kSimultaneousLEAndBREDR         = (1ull << 49),
  // Reserved
  kSecureSimplePairing            = (1ull << 51),
  kEncapsulatedPDU                = (1ull << 52),
  kErroneousDataReporting         = (1ull << 53),
  kNonflushablePacketBoundaryFlag = (1ull << 54),
  // Reerved

  // Octet 7
  kLinkSupervisionTimeoutChangedEvent = (1ull << 56),
  kInquiryTxPowerLevel                = (1ull << 57),
  kEnhancedPowerControl               = (1ull << 58),
  // Reserved
  // Reserved
  // Reserved
  // Reserved
  kExtendedFeatures                   = (1ull << 63),

  // Extended features (Page 1)
  kSecureSimplePairingHostSupport = (1ull << 0),
  kLESupportedHost                = (1ull << 1),
  kSimultaneousLEAndBREDRHost     = (1ull << 2),
  kSecureConnectionsHost          = (1ull << 3),

  // Extended features (Page 2)
  // TODO(armansito): Add definitions
};

// Bitmask values for the 64-octet Supported Commands bit-field. See Core Spec
// v5.0, Volume 2, Part E, Section 6.27 "Supported Commands".
enum class SupportedCommand : uint8_t {
  // Octet 0
  kInquiry                 = (1 << 0),
  kInquiryCancel           = (1 << 1),
  kPeriodicInquiryMode     = (1 << 2),
  kExitPeriodicInquiryMode = (1 << 3),
  kCreateConnection        = (1 << 4),
  kDisconnect              = (1 << 5),
  kAddSCOConnection        = (1 << 6),  // deprecated
  kCreateConnectionCancel  = (1 << 7),

  // Octet 1
  kAcceptConnectionRequest     = (1 << 0),
  kRejectConnectionRequest     = (1 << 1),
  kLinkKeyRequestReply         = (1 << 2),
  kLinkKeyRequestNegativeReply = (1 << 3),
  kPINCodeRequestReply         = (1 << 4),
  kPINCodeRequestNegativeReply = (1 << 5),
  kChangeConnectionPacketType  = (1 << 6),
  kAuthenticationRequested     = (1 << 7),

  // Octet 2
  kSetConnectionEncryption      = (1 << 0),
  kChangeConnectionLinkKey      = (1 << 1),
  kMasterLinkKey                = (1 << 2),
  kRemoteNameRequest            = (1 << 3),
  kRemoteNameRequestCancel      = (1 << 4),
  kReadRemoteSupportedFeatures  = (1 << 5),
  kReadRemoteExtendedFeatures   = (1 << 6),
  kReadRemoteVersionInformation = (1 << 7),

  // Octet 3
  kReadClockOffset = (1 << 0),
  kReadLMPHandle   = (1 << 1),

  // Octet 4
  kHoldMode      = (1 << 1),
  kSniffMode     = (1 << 2),
  kExitSniffMode = (1 << 3),
  kParkState     = (1 << 4),  // Reserved in 5.0
  kExitParkState = (1 << 5),  // Reserved in 5.0
  kQOSSetup      = (1 << 6),
  kRoleDiscovery = (1 << 7),

  // Octet 5
  kSwitchRole                     = (1 << 0),
  kReadLinkPolicySettings         = (1 << 1),
  kWriteLinkPolicySettings        = (1 << 2),
  kReadDefaultLinkPolicySettings  = (1 << 3),
  kWriteDefaultLinkPolicySettings = (1 << 4),
  kFlowSpecification              = (1 << 5),
  kSetEventMask                   = (1 << 6),
  kReset                          = (1 << 7),

  // Octet 6
  kSetEventFilter       = (1 << 0),
  kFlush                = (1 << 1),
  kReadPINType          = (1 << 2),
  kWritePINType         = (1 << 3),
  kCreateNewUnitKey     = (1 << 4),
  kReadStoredLinkKey    = (1 << 5),
  kWriteStoredLinkKey   = (1 << 6),
  kDeletedStoredLinkKey = (1 << 7),

  // Octet 7
  kWriteLocalName                = (1 << 0),
  kReadLocalName                 = (1 << 1),
  kReadConnectionAttemptTimeout  = (1 << 2),
  kWriteConnectionAttemptTimeout = (1 << 3),
  kReadPageTimeout               = (1 << 4),
  kWritePageTimeout              = (1 << 5),
  kReadScanEnable                = (1 << 6),
  kWriteScanEnable               = (1 << 7),

  // Octet 8
  kReadPageScanActivity      = (1 << 0),
  kWritePageScanActivity     = (1 << 1),
  kReadInquiryScanActivity   = (1 << 2),
  kWriteInquiryScanActivity  = (1 << 3),
  kReadAuthenticationEnable  = (1 << 4),
  kWriteAuthenticationEnable = (1 << 5),
  kReadEncryptionMode        = (1 << 6),  // deprecated
  kWriteEncryptionMode       = (1 << 7),  // deprecated

  // Octet 9
  kReadClassOfDevice                = (1 << 0),
  kWriteClassOfDevice               = (1 << 1),
  kReadVoiceSetting                 = (1 << 2),
  kWriteVoiceSetting                = (1 << 3),
  kReadAutomaticFlushTimeout        = (1 << 4),
  kWriteAutomaticFlushTimeout       = (1 << 5),
  kReadNumBroadcastRetransmissions  = (1 << 6),
  kWriteNumBroadcastRetransmissions = (1 << 7),

  // Octet 10
  kReadHoldModeActivity              = (1 << 0),
  kWriteHoldModeActivity             = (1 << 1),
  kReadTransmitPowerLevel            = (1 << 2),
  kReadSynchronousFlowControlEnable  = (1 << 3),
  kWriteSynchronousFlowControlEnable = (1 << 4),
  kSetControllerToHostFlowControl    = (1 << 5),
  kHostBufferSize                    = (1 << 6),
  kHostNumberOfCompletedPackets      = (1 << 7),

  // Octet 11
  kReadLinkSupervisionTimeout        = (1 << 0),
  kWriteLinkSupervisionTimeout       = (1 << 1),
  kReadNumberOfSupportedIAC          = (1 << 2),
  kReadCurrentIACLAP                 = (1 << 3),
  kWriteCurrentIACLAP                = (1 << 4),
  kReadPageScanModePeriod            = (1 << 5),  // deprecated
  kWritePageScanModePeriod           = (1 << 6),  // deprecated
  kReadPageScanMode                  = (1 << 7),  // deprecated

  // Octet 12
  kWritePageScanMode               = (1 << 0),  // deprecated
  kSetAFHHostChannelClassification = (1 << 1),
  kReadInquiryScanType             = (1 << 4),
  kWriteInquiryScanType            = (1 << 5),
  kReadInquiryMode                 = (1 << 6),
  kWriteInquiryMode                = (1 << 7),

  // Octet 13
  kReadPageScanType              = (1 << 0),
  kWritePageScanType             = (1 << 1),
  kReadAFHChannelAssessmentMode  = (1 << 2),
  kWriteAFHChannelAssessmentMode = (1 << 3),

  // Octet 14
  kReadLocalVersionInformation = (1 << 3),
  kReadLocalSupportedFeatures  = (1 << 5),
  kReadLocalExtendedFeatures   = (1 << 6),
  kReadBufferSize              = (1 << 7),

  // Octet 15
  kReadCountryCode           = (1 << 0),  // deprecated
  kReadBDADDR                = (1 << 1),
  kReadFailedContactCounter  = (1 << 2),
  kResetFailedContactCOunter = (1 << 3),
  kReadLinkQuality           = (1 << 4),
  kReadRSSI                  = (1 << 5),
  kReadAFHChannelMap         = (1 << 6),
  kReadClock                 = (1 << 7),

  // Octet 16
  kReadLoopbackMode                   = (1 << 0),
  kWriteLoopbackMode                  = (1 << 1),
  kEnableDeviceUnderTestMode          = (1 << 2),
  kSetupSynchronousConnectionRequest  = (1 << 3),
  kAcceptSynchronousConnectionRequest = (1 << 4),
  kRejectSynchronousConnectionRequest = (1 << 5),

  // Octet 17
  kReadExtendedInquiryResponse  = (1 << 0),
  kWriteExtendedInquiryResponse = (1 << 1),
  kRefreshEncryptionKey         = (1 << 2),
  kSniffSubrating               = (1 << 4),
  kReadSimplePairingMode        = (1 << 5),
  kWriteSimplePairingMode       = (1 << 6),
  kReadLocalOOBData             = (1 << 7),

  // Octet 18
  kReadInquiryResponseTransmitPowerLevel = (1 << 0),
  kWriteInquiryTransmitPowerLevel        = (1 << 1),
  kReadDefaultErroneousDataReporting     = (1 << 2),
  kWriteDefaultErroneousDataReporting    = (1 << 3),
  kIOCapabilityRequestReply              = (1 << 7),

  // Octet 19
  kUserConfirmationRequestReply         = (1 << 0),
  kUserConfirmationRequestNegativeReply = (1 << 1),
  kUserPasskeyRequestReply              = (1 << 2),
  kUserPasskeyRequestNegativeReply      = (1 << 3),
  kRemoteOOBDataRequestReply            = (1 << 4),
  kWriteSimplePairingDebugMode          = (1 << 5),
  kEnhancedFlush                        = (1 << 6),
  kRemoteOOBDataRequestNegativeReply    = (1 << 7),

  // Octet 20
  kSendKeypressNotification         = (1 << 2),
  kIOCapabilityRequestNegativeReply = (1 << 3),
  kReadEncryptionKeySize            = (1 << 4),

  // Octet 21
  kCreatePhysicalLink     = (1 << 0),
  kAcceptPhysicalLink     = (1 << 1),
  kDisconnectPhysicalLink = (1 << 2),
  kCreateLogicalLink      = (1 << 3),
  kAcceptLogicalLink      = (1 << 4),
  kDisconnectLogicalLink  = (1 << 5),
  kLogicalLinkCancel      = (1 << 6),
  kFlowSpecModify         = (1 << 7),

  // Octet 22
  kReadLogicalLinkAcceptTimeout  = (1 << 0),
  kWriteLogicalLinkAcceptTimeout = (1 << 1),
  kSetEventMaskPage2             = (1 << 2),
  kReadLocationData              = (1 << 3),
  kWriteLocationData             = (1 << 4),
  kReadLocalAMPInfo              = (1 << 5),
  kReadLocalAMPASSOC             = (1 << 6),
  kWriteRemoteAMPASSOC           = (1 << 7),

  // Octet 23
  kReadFlowControlMode      = (1 << 0),
  kWriteFlowControlMode     = (1 << 1),
  kReadDataBlockSize        = (1 << 2),
  kEnableAMPReceiverReports = (1 << 5),
  kAMPTestEnd               = (1 << 6),
  kAMPTest                  = (1 << 7),

  // Octet 24
  kReadEnhancedTransmitPowerLevel = (1 << 0),
  kReadBestEffortFlushTimeout     = (1 << 2),
  kWriteBestEffortFlushTimeout    = (1 << 3),
  kShortRangeMode                 = (1 << 4),
  kReadLEHostSupported            = (1 << 5),
  kWriteLEHostSupport             = (1 << 6),

  // Octet 25
  kLESetEventMask                  = (1 << 0),
  kLEReadBufferSize                = (1 << 1),
  kLEReadLocalSupportedFeatures    = (1 << 2),
  kLESetRandomAddress              = (1 << 4),
  kLESetAdvertisingParameters      = (1 << 5),
  kLEReadAdvertisingChannelTXPower = (1 << 6),
  kLESetAdvertisingData            = (1 << 7),

  // Octet 26
  kLESetScanResponseData    = (1 << 0),
  kLESetAdvertisingEnable   = (1 << 1),
  kLESetScanParameters      = (1 << 2),
  kLESetScanEnable          = (1 << 3),
  kLECreateConnection       = (1 << 4),
  kLECreateConnectionCancel = (1 << 5),
  kLEReadWhiteListSize      = (1 << 6),
  kLEClearWhiteList         = (1 << 7),

  // Octet 27
  kLEAddDeviceToWhiteList         = (1 << 0),
  kLERemoveDeviceFromWhiteList    = (1 << 1),
  kLEConnectionUpdate             = (1 << 2),
  kLESetHostChannelClassification = (1 << 3),
  kLEReadChannelMap               = (1 << 4),
  kLEReadRemoteUsedFeatures       = (1 << 5),
  kLEEncrypt                      = (1 << 6),
  kLERand                         = (1 << 7),

  // Octet 28
  kLEStartEncryption                 = (1 << 0),
  kLELongTermKeyRequestReply         = (1 << 1),
  kLELongTermKeyRequestNegativeReply = (1 << 2),
  kLEReadSupportedStates             = (1 << 3),
  kLEReceiverTest                    = (1 << 4),
  kLETransmitterTest                 = (1 << 5),
  kLETestEnd                         = (1 << 6),

  // Octet 29
  kEnhancedSetupSynchronousConnection  = (1 << 3),
  kEnhancedAcceptSynchronousConnection = (1 << 4),
  kReadLocalSupportedCodecs            = (1 << 5),
  kSetMWSChannelParameters             = (1 << 6),
  kSetExternalFrameConfiguration       = (1 << 7),

  // Octet 30
  kSetMWSSignaling                   = (1 << 0),
  kSetMWSTransportLayer              = (1 << 1),
  kSetMWSScanFrequencyTable          = (1 << 2),
  kGetMWSTransportLayerConfiguration = (1 << 3),
  kSetMWSPATTERNConfiguration        = (1 << 4),
  kSetTriggeredClockCapture          = (1 << 5),
  kTruncatedPage                     = (1 << 6),
  kTruncatedPageCancel               = (1 << 7),

  // Octet 31
  kSetConnectionlessSlaveBroadcast        = (1 << 0),
  kSetConnectionlessSlaveBroadcastReceive = (1 << 1),
  kStartSynchronizationTrain              = (1 << 2),
  kReceiveSynchronizationTrain            = (1 << 3),
  kSetReservedLTADDR                      = (1 << 4),
  kDeleteReservedLTADDR                   = (1 << 5),
  kSetConnectionlessSlaveBroadcastData    = (1 << 6),
  kReadSynchronizationTrainParameters     = (1 << 7),

  // Octet 32
  kWriteSynchronizationTrainParameters = (1 << 0),
  kRemoteOOBExtendedDataRequestReply   = (1 << 1),
  kReadSecureConnectionsHostSupport    = (1 << 2),
  kWriteSecureConnectionsHostSupport   = (1 << 3),
  kReadAuthenticatedPayloadTimeout     = (1 << 4),
  kWriteAuthenticatedPayloadTimeout    = (1 << 5),
  kReadLocalOOBExtendedData            = (1 << 6),
  kWriteSecureConnectionsTestMode      = (1 << 7),

  // Octet 33
  kReadExtendedPageTimeout                         = (1 << 0),
  kWriteExtendedPageTimeout                        = (1 << 1),
  kReadExtendedInquiryLength                       = (1 << 2),
  kWriteExtendedInquiryLength                      = (1 << 3),
  kLERemoteConnectionParameterRequestReply         = (1 << 4),
  kLERemoteConnectionParameterRequestNegativeReply = (1 << 5),
  kLESetDataLength                                 = (1 << 6),
  kLEReadSuggestedDefaultDataLength                = (1 << 7),

  // Octet 34
  kLEWriteSuggestedDefaultDataLength = (1 << 0),
  kLEReadLocalP256PublicKey          = (1 << 1),
  kLEGenerateDHKey                   = (1 << 2),
  kLEAddDeviceToResolvingList        = (1 << 3),
  kLERemoveDeviceFromResolvingList   = (1 << 4),
  kLEClearResolvingList              = (1 << 5),
  kLEReadResolvingListSize           = (1 << 6),
  kLEReadPeerResolvableAddress       = (1 << 7),

  // Octet 35
  kLEReadLocalResolvableAddress         = (1 << 0),
  kLESetAddressResolutionEnable         = (1 << 1),
  kLESetResolvablePrivateAddressTimeout = (1 << 2),
  kLEReadMaximumDataLength              = (1 << 3),

  // Added in 5.0 (octet 35 cont'd)
  kLEReadPHYCommand                     = (1 << 4),
  kLESetDefaultPHYCommand               = (1 << 5),
  kLESetPHYCommand                      = (1 << 6),
  kLEEnhancedReceiverTestCommand        = (1 << 7),

  // Octet 36
  kLEEnhancedTransmitterTestCommand              = (1 << 0),
  kLESetAdvertisingSetRandomAddressCommand       = (1 << 1),
  kLESetExtendedAdvertisingParametersCommand     = (1 << 2),
  kLESetExtendedAdvertisingDataCommand           = (1 << 3),
  kLESetExtendedScanResponseDataCommand          = (1 << 4),
  kLESetExtendedAdvertisingEnableCommand         = (1 << 5),
  kLEReadMaximumAdvertisingDataLengthCommand     = (1 << 6),
  kLEReadNumberOfSupportedAdvertisingSetsCommand = (1 << 7),

  // Octet 37
  kLERemoveAdvertisingSetCommand             = (1 << 0),
  kLEClearAdvertisingSetsCommand             = (1 << 1),
  kLESetPeriodicAdvertisingParametersCommand = (1 << 2),
  kLESetPeriodicAdvertisingDataCommand       = (1 << 3),
  kLESetPeriodicAdvertisingEnableCommand     = (1 << 4),
  kLESetExtendedScanParametersCommand        = (1 << 5),
  kLESetExtendedScanEnableCommand            = (1 << 6),
  kLEExtendedCreateConnectionCommand         = (1 << 7),

  // Octet 38
  kLEPeriodicAdvertisingCreateSyncCommand          = (1 << 0),
  kLEPeriodicAdvertisingCreateSyncCancelCommand    = (1 << 1),
  kLEPeriodicAdvertisingTerminateSyncCommand       = (1 << 2),
  kLEAddDeviceToPeriodicAdvertiserListCommand      = (1 << 3),
  kLERemoveDeviceFromPeriodicAdvertiserListCommand = (1 << 4),
  kLEClearPeriodicAdvertiserListCommand            = (1 << 5),
  kLEReadPeriodicAdvertiserListSizeCommand         = (1 << 6),
  kLEReadTransmitPowerCommand                      = (1 << 7),

  // Octet 39
  kLEReadRFPathCompensationCommand   = (1 << 0),
  kLEWriteRFPathCompensationCommand  = (1 << 1),
  kLESetPrivacyMode                  = (1 << 2),
};

// Bitmask values for the 8-octet LE Supported Features bit-field. See Core Spec
// v5.0, Volume 6, Part B, Section 4.6 "Feature Support".
enum class LESupportedFeature : uint64_t {
  kLEEncryption                         = (1 << 0),
  kConnectionParametersRequestProcedure = (1 << 1),
  kExtendedRejectIndication             = (1 << 2),
  kSlaveInitiatedFeaturesExchange       = (1 << 3),
  kLEPing                               = (1 << 4),
  kLEDataPacketLengthExtension          = (1 << 5),
  kLLPrivacy                            = (1 << 6),
  kExtendedScannerFilterPolicies        = (1 << 7),

  // Added in 5.0
  kStableModulationIndexTransmitter     = (1 << 8),
  kStableModulationIndexReceiver        = (1 << 9),
  kLECodedPHY                           = (1 << 10),
  kLEExtendedAdvertising                = (1 << 11),
  kLEPeriodicAdvertising                = (1 << 12),
  kChannelSelectionAlgorithm2           = (1 << 13),
  kLEPowerClass1                        = (1 << 14),
  kMinimumNumberOfUsedChannelsProcedure = (1 << 15),

  // The rest is reserved for future use.
};

// Bitmask values for the 8-octet HCI_Set_Event_Mask command parameter.
enum class EventMask : uint64_t {
  kInquiryCompleteEvent = (1 << 0),
  kInquiryResultEvent = (1 << 1),
  kConnectionCompleteEvent = (1 << 2),
  kConnectionRequestEvent = (1 << 3),
  kDisconnectionCompleteEvent = (1 << 4),
  kAuthenticationCompleteEvent = (1 << 5),
  kRemoteNameRequestCompleteEvent = (1 << 6),
  kEncryptionChangeEvent = (1 << 7),
  kChangeConnectionLinkKeyCompleteEvent = (1 << 8),
  kMasterLinkKeyCompleteEvent = (1 << 9),
  kReadRemoteSupportedFeaturesCompleteEvent = (1 << 10),
  kReadRemoteVersionInformationCompleteEvent = (1 << 11),
  kQoSSetupCompleteEvent = (1 << 12),
  // Reserved For Future Use: (1 << 13)
  // Reserved For Future Use: (1 << 14)
  kHardwareErrorEvent = (1 << 15),
  kFlushOccurredEvent = (1 << 16),
  kRoleChangeEvent = (1 << 17),
  // Reserved For Future Use: (1 << 18)
  kModeChangeEvent = (1 << 19),
  kReturnLinkKeysEvent = (1 << 20),
  kPINCodeRequestEvent = (1 << 21),
  kLinkKeyRequestEvent = (1 << 22),
  kLinkKeyNotificationEvent = (1 << 23),
  kLoopbackCommandEvent = (1 << 24),
  kDataBufferOverflowEvent = (1 << 25),
  kMaxSlotsChangeEvent = (1 << 26),
  kReadClockOffsetCompleteEvent = (1 << 27),
  kConnectionPacketTypeChangedEvent = (1 << 28),
  kQoSViolationEvent = (1 << 29),
  kPageScanModeChangeEvent = (1 << 30),  // deprecated
  kPageScanRepetitionModeChangeEvent = (1ull << 31),
  kFlowSpecificationCompleteEvent = (1ull << 32),
  kInquiryResultWithRSSIEvent = (1ull << 33),
  kReadRemoteExtendedFeaturesCompleteEvent = (1ull << 34),
  // Reserved For Future Use: (1ull << 35)
  // Reserved For Future Use: (1ull << 36)
  // Reserved For Future Use: (1ull << 37)
  // Reserved For Future Use: (1ull << 38)
  // Reserved For Future Use: (1ull << 39)
  // Reserved For Future Use: (1ull << 40)
  // Reserved For Future Use: (1ull << 41)
  // Reserved For Future Use: (1ull << 42)
  kSynchronousConnectionCompleteEvent = (1ull << 43),
  kSynchronousConnectionChangedEvent = (1ull << 44),
  kSniffSubratingEvent = (1ull << 45),
  kExtendedInquiryResultEvent = (1ull << 46),
  kEncryptionKeyRefreshCompleteEvent = (1ull << 47),
  kIOCapabilityRequestEvent = (1ull << 48),
  kIOCapabilityResponseEvent = (1ull << 49),
  kUserConfirmationRequestEvent = (1ull << 50),
  kUserPasskeyRequestEvent = (1ull << 51),
  kRemoteOOBDataRequestEvent = (1ull << 52),
  kSimplePairingCompleteEvent = (1ull << 53),
  // Reserved For Future Use: (1ull << 54)
  kLinkSupervisionTimeoutChangedEvent = (1ull << 55),
  kEnhancedFlushCompleteEvent = (1ull << 56),
  // Reserved For Future Use: (1ull << 57)
  kUserPasskeyNotificationEvent = (1ull << 58),
  kKeypressNotificationEvent = (1ull << 59),
  kRemoteHostSupportedFeaturesNotificationEvent = (1ull << 60),
  kLEMetaEvent = (1ull << 61),
  // Reserved For Future Use: (1ull << 62)
  // Reserved For Future Use: (1ull << 63)
};

// Bitmask values for the 8-octet HCI_Set_Event_Mask_Page_2 command parameter.
enum class EventMaskPage2 : uint64_t {
  kPhysicalLinkCompleteEvent = (1 << 0),
  kChannelSelectedEvent = (1 << 1),
  kDisconnectionPhysicalLinkCompleteEvent = (1 << 2),
  kPhysicalLinkLossEarlyWarningEvent = (1 << 3),
  kPhysicalLinkRecoveryEvent = (1 << 4),
  kLogicalLinkCompleteEvent = (1 << 5),
  kDisconnectionLogicalLinkCompleteEvent = (1 << 6),
  kFlowSpecModifyCompleteEvent = (1 << 7),
  kNumberOfCompletedDataBlocksEvent = (1 << 8),
  kAMPStartTestEvent = (1 << 9),
  kAMPTestEndEvent = (1 << 10),
  kAMPReceiverReportEvent = (1 << 11),
  kShortRangeModeChangeCompleteEvent = (1 << 12),
  kAMPStatusChangeEvent = (1 << 13),
  kTriggeredClockCaptureEvent = (1 << 14),
  kSynchronizationTrainCompleteEvent = (1 << 15),
  kSynchronizationTrainReceivedEvent = (1 << 16),
  kConnectionlessSlaveBroadcastReceiveEvent = (1 << 17),
  kConnectionlessSlaveBroadcastTimeoutEvent = (1 << 18),
  kTruncatedPageCompleteEvent = (1 << 19),
  kSlavePageResponseTimeoutEvent = (1 << 20),
  kConnectionlessSlaveBroadcastChannelMapChangeEvent = (1 << 21),
  kInquiryResponseNotificationEvent = (1 << 22),
  kAuthenticatedPayloadTimeoutExpiredEvent = (1 << 23),
  kSAMStatusChangeEvent = (1 << 24),
};

// Bitmask values for the 8-octet HCI_LE_Set_Event_Mask command parameter.
enum class LEEventMask : uint64_t {
  kLEConnectionComplete                 = (1 << 0),
  kLEAdvertisingReport                  = (1 << 1),
  kLEConnectionUpdateComplete           = (1 << 2),
  kLEReadRemoteFeaturesComplete         = (1 << 3),
  kLELongTermKeyRequest                 = (1 << 4),
  kLERemoteConnectionParameterRequest   = (1 << 5),
  kLEDataLengthChange                   = (1 << 6),
  kLEReadLocalP256PublicKeyComplete     = (1 << 7),
  kLEGenerateDHKeyComplete              = (1 << 8),
  kLEEnhancedConnectionComplete         = (1 << 9),
  kLEDirectedAdvertisingReport          = (1 << 10),
  kLEPHYUpdateComplete                  = (1 << 11),
  kLEExtendedAdvertisingReport          = (1 << 12),
  kLEPeriodicAdvertisingSyncEstablished = (1 << 13),
  kLEPeriodicAdvertisingReport          = (1 << 14),
  kLEPeriodicAdvertisingSyncLost        = (1 << 15),
  kLEExtendedScanTimeout                = (1 << 16),
  kLEExtendedAdvertisingSetTerminated   = (1 << 17),
  kLEScanRequestReceived                = (1 << 18),
  kLEChannelSelectionAlgorithm          = (1 << 19),
};

// Binary values that can be generically passed to HCI commands that expect a
// 1-octet boolean "enable"/"disable" parameter.
enum class GenericEnableParam : uint8_t {
  kDisable = 0x00,
  kEnable = 0x01,
};

// Values that can be passed to the Type parameter in a
// HCI_Read_Transmit_Power_Level command.
enum class ReadTransmitPowerType : uint8_t {
  // Read Current Transmit Power Level.
  kCurrent = 0x00,

  // Read Maximum Transmit Power Level.
  kMax = 0x01,
};

// HCI command timeout interval (milliseconds)
// TODO(BT-603/BT-604) This was increased to handle flaking integration tests.
// We may want to reduce this to something lower again once we have a better 
// resolution to this issue.
constexpr int64_t kCommandTimeoutMs = 10000;

// The minimum and maximum range values for the LE advertising interval
// parameters.
// (see Core Spec v5.0, Vol 2, Part E, Section 7.8.5)
constexpr uint16_t kLEAdvertisingIntervalMin = 0x0020;
constexpr uint16_t kLEAdvertisingIntervalMax = 0x4000;

// The minimum and maximum range values for the LE periodic advertising interval
// parameters.
// (see Core Spec v5.0, Vol 2, Part E, Section 7.8.61)
constexpr uint16_t kLEPeriodicAdvertisingIntervalMin = 0x0006;
constexpr uint16_t kLEPeriodicAdvertisingIntervalMax = 0xFFFF;

// The minimum and maximum range values for the LE extended advertising interval
// parameters.
constexpr uint32_t kLEExtendedAdvertisingIntervalMin = 0x000020;
constexpr uint32_t kLEExtendedAdvertisingIntervalMax = 0xFFFFFF;

// The default LE advertising interval parameter value, corresponding to 1.28
// seconds (see Core Spec v5.0, Vol 2, Part E, Section 7.8.5).
constexpr uint16_t kLEAdvertisingIntervalDefault = 0x0800;

// The minimum and maximum range values for the LE scan interval parameters.
// (see Core Spec v5.0, Vol 2, Part E, Section 7.8.10)
constexpr uint16_t kLEScanIntervalMin = 0x0004;
constexpr uint16_t kLEScanIntervalMax = 0x4000;

// The minimum and maximum range values for the LE extended scan interval
// parameters.
// (see Core Spec v5.0, Vol 2, Part E, Section 7.8.64)
constexpr uint16_t kLEExtendedScanIntervalMin = 0x0004;
constexpr uint16_t kLEExtendedScanIntervalMax = 0xFFFF;

// The default LE scan interval parameter value, corresponding to 10
// milliseconds (see Core Spec v5.0, Vol 2, Part E, Section 7.8.10).
constexpr uint16_t kLEScanIntervalDefault = 0x0010;

// The minimum and maximum range values for the LE connection interval parameters.
// (see Core Spec v5.0, Vol 2, Part E, Section 7.8.12)
constexpr uint16_t kLEConnectionIntervalMin = 0x0006;
constexpr uint16_t kLEConnectionIntervalMax = 0x0C80;

// The maximum value that can be used for the |conn_latency| parameter in a
// HCI_LE_Create_Connection
// command (see Core Spec v5.0, Vol 2, Part E, Section 7.8.12).
constexpr uint16_t kLEConnectionLatencyMax = 0x01F3;

// The minimum and maximum range values for LE connection supervision timeout
// parameters.
constexpr uint16_t kLEConnectionSupervisionTimeoutMin = 0x000A;
constexpr uint16_t kLEConnectionSupervisionTimeoutMax = 0x0C80;

// The minimum and maximum range values for LE link layer tx PDU used on
// connections.
constexpr uint16_t kLEMaxTxOctetsMin = 0x001B;
constexpr uint16_t kLEMaxTxOctetsMax = 0x00FB;

// The minimum and maximum range values for LE link layer tx maximum packet
// transmission time used on connections.
constexpr uint16_t kLEMaxTxTimeMin = 0x0148;
constexpr uint16_t kLEMaxTxTimeMax = 0x4290;

// Minimum, maximum, default values for the Resolvable Private Address timeout
// parameter.
constexpr uint16_t kLERPATimeoutMin = 0x0001;      // 1 second
constexpr uint16_t kLERPATimeoutMax = 0xA1B8;      // Approx. 11.5 hours
constexpr uint16_t kLERPATimeoutDefault = 0x0384;  // 900 seconds or 15 minutes.

// LE advertising types (see Core Spec v5.0, Vol 2, Part E, Section 7.8.5).
enum class LEAdvertisingType : uint8_t {
  // ADV_IND: Connectable and scannable undirected advertising (the default
  // value used by the controller).
  kAdvInd = 0x00,

  // ADV_DIRECT_IND (high duty cycle): Connectable high duty cycle directed
  // advertising.
  kAdvDirectIndHighDutyCycle = 0x01,

  // ADV_SCAN_IND: Scannable undirected advertising.
  kAdvScanInd = 0x02,

  // ADV_NONCONN_IND: Non-connectable undirected advertising.
  kAdvNonConnInd = 0x03,

  // ADV_DIRECT_IND (low duty cycle): Connectable low duty cycle advertising.
  kAdvDirectIndLowDutyCycle = 0x04,

  // The rest is reserved for future use
};

// LE Advertising event types that can be reported in a LE Advertising Report
// event.
enum class LEAdvertisingEventType : uint8_t {
  // Connectable and scannable undirected advertising (ADV_IND)
  kAdvInd = 0x00,

  // Connectable directed advertising (ADV_DIRECT_IND)
  kAdvDirectInd = 0x01,

  // Scannable undirected advertising (ADV_SCAN_IND)
  kAdvScanInd = 0x02,

  // Non connectable undirected advertising (ADV_NONCONN_IND)
  kAdvNonConnInd = 0x03,

  // Scan Response (SCAN_RSP)
  kScanRsp = 0x04,

  // The rest is reserved for future use
};

// Possible values that can be reported for the |address_type| parameter in a LE
// Advertising Report event.
enum class LEAddressType : uint8_t {
  // Public Device Address
  kPublic = 0x00,

  // Random Device Address
  kRandom = 0x01,

  // Public Identity Address (Corresponds to Resolved Private Address)
  kPublicIdentity = 0x02,

  // Random (static) Identity Address (Corresponds to Resolved Private Address)
  kRandomIdentity = 0x03,

  // This is a special value used in LE Extended Advertising Report events to
  // indicate a random address that the controller was unable to resolve.
  kRandomUnresolved = 0xFE,

  // This is a special value that is only used in LE Directed Advertising Report
  // events.
  // Meaning: No address provided (anonymous advertisement)
  kAnonymous = 0xFF,
};

// Possible values that can be used for the |own_address_type| parameter in a
// HCI_LE_Set_Advertising_Parameters or a HCI_LE_Set_Scan_Parameters command.
// (see Core Spec v5.0, Vol 2, Part E, Sections 7.8.5 and 7.8.10)
enum class LEOwnAddressType : uint8_t {
  // Public device address (default)
  kPublic = 0x00,

  // Random device address
  kRandom = 0x01,

  // Controller generates Resolvable Private Address based on the local IRK from
  // the resolving list. If the resolving list contains no matching entry, use
  // the public address.
  kPrivateDefaultToPublic = 0x02,

  // Controller generates Resolvable Private Address based on the local IRK from
  // the resolving list. If the resolving list contains no matching entry, use
  // the random address from LE_Set_Random_Address.
  kPrivateDefaultToRandom = 0x03,

  // The rest is reserved for future use
};

// Possible values that can be used for the |peer_address_type| parameter in a
// HCI_LE_Set_Advertising_Parameters command.
// (see Core Spec v5.0, Vol 2, Part E, Section 7.8.5)
enum class LEPeerAddressType : uint8_t {
  // Public Device Address (default) or Public Identity Address
  kPublic = 0x00,

  // Random Device Address or Random (static) Identity Address
  kRandom = 0x01,

  // This is a special value that should only be used with the
  // HCI_LE_Add_Device_To_White_List and HCI_LE_Remove_Device_From_White_List
  // commands for peer devices sending anonymous advertisements.
  kAnonymous = 0xFF,
};

// Possible values that can be used for the |adv_channel_map| bitfield in a
// HCI_LE_Set_Advertising_Parameters command.
// (see Core Spec v5.0, Vol 2, Part E, Section 7.8.5)
constexpr uint8_t kLEAdvertisingChannel37 = 0x01;
constexpr uint8_t kLEAdvertisingChannel38 = 0x02;
constexpr uint8_t kLEAdvertisingChannel39 = 0x04;
constexpr uint8_t kLEAdvertisingChannelAll = 0x07;

// Possible values that can be used for the |adv_filter_policy| parameter in a
// HCI_LE_Set_Advertising_Parameters command.
// (see Core Spec v5.0, Vol 2, Part E, Section 7.8.5)
enum class LEAdvFilterPolicy : uint8_t {
  // Process scan and connection requests from all devices (i.e., the White List
  // is not in use) (default).
  kAllowAll = 0x00,

  // Process connection requests from all devices and only scan requests from
  // devices that are in the White List.
  kConnAllScanWhiteList = 0x01,

  // Process scan requests from all devices and only connection requests from
  // devices that are in the White List.
  kScanAllConnWhiteList = 0x02,

  // Process scan and connection requests only from devices in the White List.
  kWhiteListOnly = 0x03,

  // The rest is reserved for future use.
};

// Possible values that can be used for the Filter_Policy parameter in a
// HCI_LE_Periodic_Advertising_Create_Sync command.
// (see Core Spec v5.0, Vol 2, Part E, Section 7.8.67)
enum class LEPeriodicAdvFilterPolicy : uint8_t {
  // Use the Advertising_SID, Advertising_Address_Type, and Advertising_Address
  // parameters to determine which advertiser to listen to.
  kListNotUsed = 0x00,

  // Use the Periodic Advertiser List to determine which advertiser to listen to.
  kUsePeriodicAdvList = 0x01,
};

// Possible values that can be used for the |scan_type| parameter in a
// LE_Set_Scan_Parameters command.
// (see Core Spec v5.0, Vol 2, Part E, Section 7.8.10)
enum class LEScanType : uint8_t {
  // Passive Scanning. No scanning PDUs shall be sent (default)
  kPassive = 0x00,

  // Active scanning. Scanning PDUs may be sent.
  kActive = 0x01,

  // The rest is reserved for future use.
};

// Possible values that can be used for the |filter_policy| parameter
// in a HCI_LE_Set_Scan_Parameters command.
// (see Core Spec v5.0, Vol 2, Part E, Section 7.8.10)
enum class LEScanFilterPolicy : uint8_t {
  // Accept all advertising packets except directed advertising packets not
  // addressed to this device (default).
  kNoWhiteList = 0x00,

  // Accept only advertising packets from devices where the advertiser’s address
  // is in the White List. Directed advertising packets which are not addressed
  // to this device shall be ignored.
  kUseWhiteList = 0x01,

  // Accept all advertising packets except directed advertising packets where
  // the initiator's identity address does not address this device.
  // Note: Directed advertising packets where the initiator's address is a
  // resolvable private address that cannot be resolved are also accepted.
  kNoWhiteListWithPrivacy = 0x02,

  // Accept all advertising packets except:
  //
  //   - advertising packets where the advertiser's identity address is not in
  //     the White List; and
  //
  //   - directed advertising packets where the initiator's identity address
  //     does not address this device
  //
  // Note: Directed advertising packets where the initiator's address is a
  // resolvable private address that cannot be resolved are also accepted.
  kUseWhiteListWithPrivacy = 0x03,
};

// Possible values that can be used for the |filter_duplicates| parameter in a
// HCI_LE_Set_Extended_Scan_Enable command.
enum class LEExtendedDuplicateFilteringOption : uint8_t {
  kDisabled = 0x00,
  kEnabled = 0x01,

  // Duplicate advertisements in a single scan period should not be sent to the
  // Host in advertising report events; this setting shall only be used if the
  // Period parameter is non-zero.
  kEnabledResetForEachScanPeriod = 0x02,
};

// The PHY bitfield values that can be used in HCI_LE_Set_PHY and
// HCI_LE_Set_Default_PHY commands that can be used for the TX_PHYS and RX_PHYS
// parameters.
constexpr uint8_t kLEPHYBit1M = (1 << 0);
constexpr uint8_t kLEPHYBit2M = (1 << 1);
constexpr uint8_t kLEPHYBitCoded = (1 << 2);

// The PHY bitfield values that can be used in HCI_LE_Set_PHY and
// HCI_LE_Set_Default_PHY commands that can be used for the ALL_PHYS parameter.
constexpr uint8_t kLEAllPHYSBitTxNoPreference = (1 << 0);
constexpr uint8_t kLEAllPHYSBitRxNoPreference = (1 << 1);

// Potential values that can be used for the LE PHY parameters in HCI commands
// and events.
enum class LEPHY : uint8_t {
  kLE1M = 0x01,
  kLE2M = 0x02,

  // Only for the HCI_LE_Enhanced_Transmitter_Test command this value implies
  // S=8 data coding. Otherwise this refers to general LE Coded PHY.
  kLECoded = 0x03,

  // This should ony be used with the HCI_LE_Enhanced_Transmitter_Test command.
  kLECodedS2 = 0x04,

  // Some HCI events may use this value to indicate that no packets were sent
  // on a particular PHY, specifically the LE Extended Advertising Report event.
  kNone = 0x00,
};

// Potential values that can be used for the PHY_options parameter in a
// HCI_LE_Set_PHY command.
enum class LEPHYOptions : uint16_t {
  kNoPreferredEncoding = 0x00,
  kPreferS2Coding = 0x01,
  kPreferS8Coding = 0x02,
};

// Potential values that can be passed for the Modulation_Index parameter in a
// HCI_LE_Enhanced_Receiver_Test command.
enum class LETestModulationIndex : uint8_t {
  kAssumeStandard = 0x00,
  kAssumeStable = 0x01,
};

// Potential values for the Operation parameter in a
// HCI_LE_Set_Extended_Advertising_Data command.
enum class LESetExtendedAdvDataOp : uint8_t {
  // Intermediate fragment of fragmented extended advertising data.
  kIntermediateFragment = 0x00,

  // First fragment of fragmented extended advertising data.
  kFirstFragment = 0x01,

  // Last fragment of fragmented extended advertising data.
  kLastFragment = 0x02,

  // Complete extended advertising data.
  kComplete = 0x03,

  // Unchanged data (just update the Advertising DID)
  kUnchangedData = 0x04,
};

// Potential values for the Fragment_Preference parameter in a
// HCI_LE_Set_Extended_Advertising_Data command.
enum class LEExtendedAdvFragmentPreference : uint8_t {
  // The Controller may fragment all Host advertising data
  kMayFragment = 0x00,

  // The Controller should not fragment or should minimize fragmentation of Host
  // advertising data
  kShouldNotFragment = 0x01,
};

// The Advertising_Event_Properties bitfield values used in a
// HCI_LE_Set_Extended_Advertising_Parameters command.
constexpr uint16_t kLEAdvEventPropBitConnectable                      = (1 << 0);
constexpr uint16_t kLEAdvEventPropBitScannable                        = (1 << 1);
constexpr uint16_t kLEAdvEventPropBitDirected                         = (1 << 2);
constexpr uint16_t kLEAdvEventPropBitHighDutyCycleDirectedConnectable = (1 << 3);
constexpr uint16_t kLEAdvEventPropBitUseLegacyPDUs                    = (1 << 4);
constexpr uint16_t kLEAdvEventPropBitAnonymousAdvertising             = (1 << 5);
constexpr uint16_t kLEAdvEventPropBitIncludeTxPower                   = (1 << 6);

// The Event_Type bitfield values reported in a LE Extended Advertising Report Event.
constexpr uint16_t kLEExtendedAdvEventTypeConnectable  = (1 << 0);
constexpr uint16_t kLEExtendedAdvEventTypeScannable    = (1 << 1);
constexpr uint16_t kLEExtendedAdvEventTypeDirected     = (1 << 2);
constexpr uint16_t kLEExtendedAdvEventTypeScanResponse = (1 << 3);
constexpr uint16_t kLEExtendedAdvEventTypeLegacy       = (1 << 4);

// LE Advertising data status properties stored in bits 5 and 6 of the
// Event_Type bitfield of a LE Extended Advertising Report event and in a LE
// Periodic Advertising Report event.
enum class LEAdvertisingDataStatus : uint16_t {
  // Data is complete.
  kComplete = 0x00,

  // Data is incomplete, more data to come in future events.
  kIncomplete = 0x01,

  // Data is incomplete and truncated, no more data to come.
  kIncompleteTruncated = 0x02,
};

// The Periodic_Advertising_Properties bitfield used in a
// HCI_LE_Set_Periodic_Advertising_Parameters command.
constexpr uint16_t kLEPeriodicAdvPropBitIncludeTxPower = (1 << 6);

// Potential values for the Privacy_Mode parameter in a HCI_LE_Set_Privacy_Mode
// command.
enum class LEPrivacyMode : uint8_t {
  // Use Network Privacy Mode for this peer device (default).
  kNetwork = 0x00,

  // Use Device Privacy Mode for this peer device.
  kDevice = 0x01,
};

// The maximum length of advertising data that can get passed to the
// HCI_LE_Set_Advertising_Data command.
//
// This constant should be used on pre-5.0 controllers. On controllers that
// support 5.0+ the host should use the
// HCI_LE_Read_Maximum_Advertising_Data_Length command to obtain this
// information.
constexpr size_t kMaxLEAdvertisingDataLength = 0x1F;  // (31)

// The maximum length of advertising data that can get passed to the
// HCI_LE_Set_Extended_Advertising_Data command. The advertised data can be
// larger than this value (based on the value returned for the LE Read Maximum
// Advertising Data Length parameter), however must be fragmented among multiple
// command packets.
constexpr size_t kMaxLEExtendedAdvertisingDataLength = 251;

// Maximum value of the Advertising SID subfield in the ADI field of the PDU
constexpr uint8_t kLEAdvertsingSIDMax = 0xEF;

// Invalid RSSI value.
constexpr int8_t kRSSIInvalid = 127;

// Invalid Tx Power value
constexpr int8_t kTxPowerInvalid = 127;

// The maximum length of a friendly name that can be assigned to a BR/EDR
// controller, in octets.
constexpr size_t kMaxNameLength = 248;

// The maximum number of bytes in a HCI Command Packet payload, excluding the
// header. See Core Spec v5.0 Vol 2, Part E, 5.4.1, paragraph 2.
constexpr size_t kMaxCommandPacketPayloadSize = 255;

// The maximum number of bytes in a HCI event Packet payload, excluding the
// header. See Core Spec v5.0 Vol 2, Part E, 5.4.4, paragraph 1.
constexpr size_t kMaxEventPacketPayloadSize = 255;

// The maximum number of bytes in a HCI ACL data packet payload supported by our
// stack.
constexpr size_t kMaxACLPayloadSize = 1024;

// Values that can be used in HCI Read|WriteFlowControlMode commands.
enum class FlowControlMode : uint8_t {
  // Packet based data flow control mode (default for a Primary Controller)
  kPacketBased = 0x00,

  // Data block based flow control mode (default for an AMP Controller)
  kDataBlockBased = 0x01
};

// The Packet Boundary Flag is contained in bits 4 and 5 in the second octet of
// a HCI ACL Data packet.
enum class ACLPacketBoundaryFlag : uint8_t {
  kFirstNonFlushable  = 0x00,
  kContinuingFragment = 0x01,
  kFirstFlushable     = 0x02,
  kCompletePDU        = 0x03,
};

// The Broadcast Flag is contained in bits 6 and 7 in the second octet of a HCI
// ACL Data packet.
enum class ACLBroadcastFlag : uint8_t {
  kPointToPoint         = 0x00,
  kActiveSlaveBroadcast = 0x01,
};

// A connection role. Used for LE and BR/EDR connection roles.
enum class ConnectionRole : uint8_t {
  kMaster = 0x00,
  kSlave = 0x01,
};

// Possible values that can be reported for the Master_Clock_Accuracy and
// Advertiser_Clock_Accuracy parameters.
enum class LEClockAccuracy : uint8_t {
  k500Ppm = 0x00,
  k250Ppm = 0x01,
  k150Ppm = 0x02,
  k100Ppm = 0x03,
  k75Ppm = 0x04,
  k50Ppm = 0x05,
  k30Ppm = 0x06,
  k20Ppm = 0x07,
};

// Possible values that can be reported in a LE Channel Selection Algorithm event.
enum class LEChannelSelectionAlgorithm : uint8_t {
  kAlgorithm1 = 0x00,
  kAlgorithm2 = 0x01,
};

// "Hosts and Controllers shall be able to accept HCI ACL Data Packets with up
// to 27 bytes of data excluding the HCI ACL Data Packet header on Connection
// Handles associated with an LE-U logical link." (See Core Spec v5.0, Volume 2,
// Part E, Section 5.4.2)
constexpr size_t kMinLEACLDataBufferLength = 27;

// The maximum value that can be used for a 12-bit connection handle.
constexpr uint16_t kConnectionHandleMax = 0x0EFF;

// The maximum value that can ve used for a 8-bit advertising set handle.
constexpr uint8_t kAdvertisingHandleMax = 0xEF;

// The maximum value that can be set for the length of an Inquiry
constexpr uint8_t kInquiryLengthMax = 0x30;

// Bit 15, or "Clock_Offset_Valid_Flag" of the 16-bit clock offset field.
// Some HCI commands that require a clock offset expect this bit to be set (e.g.
// see HCI_Remote_Name_Request command, Vol 2, Part E, 7.1.19).
constexpr uint16_t kClockOffsetValidFlagBit = 0x8000;

// The page scan repetition mode, representing a maximum time between Page Scans.
// (See Core Spec v5.0, Volume 2, Part B, Section 8.3.1)
enum class PageScanRepetitionMode : uint8_t {
  kR0 = 0x00, // Continuous Scan
  kR1 = 0x01, // <= 1.28s
  kR2 = 0x02, // <= 2.56s
};

// LAPs defined for use in Inquiry LAP fields by Bluetooth SIG
// See: https://www.bluetooth.com/specifications/assigned-numbers/baseband
// The General/Unlimited Inquiry Access Code
constexpr std::array<uint8_t, 3> kGIAC {{ 0x33, 0x8B, 0x9E }};

// The Limited Dedicated Inquiry Access Code (LIAC)
constexpr std::array<uint8_t, 3> kLIAC {{ 0x00, 0x8B, 0x9E }};

// Bitmask Values for the Scan_Enable parameter in a
// HCI_(Read,Write)_Scan_Enable command.
enum class ScanEnableBit : uint8_t {
  kInquiry  = (1 << 0), // Inquiry scan enabled
  kPage     = (1 << 1), // Page scan enabled.
};

using ScanEnableType = uint8_t;

// The minimum and maximum range values for Page Scan Interval (in time slices)
// (see Core Spec v5.0, Vol 2, Part E, Section 7.3.19)
constexpr uint16_t kPageScanIntervalMin = 0x0012;
constexpr uint16_t kPageScanIntervalMax = 0x1000;

// The minimum and maximum range valeus for Page Scan Window (in time slices)
// (see Core Spec v5.0, Vol 2, Part E, Section 7.3.19)
constexpr uint16_t kPageScanWindowMin = 0x0011;
constexpr uint16_t kPageScanWindowMax = 0x1000;

enum class PageScanType : uint8_t {
  kStandardScan = 0x00, // Standard scan (default) (mandatory)
  kInterlacedScan = 0x01, // Interlaced scan
};

// Constant values for common scanning modes
// See Spec 5.0, Vol 3, Part C, Section 4.2.2.1, Table 4.2
constexpr uint16_t kPageScanR0Interval = 0x0800; // 1.28s
constexpr uint16_t kPageScanR0Window = 0x0800; // 1.28s
constexpr uint16_t kPageScanR1Interval = 0x0800; // 1.28s
constexpr uint16_t kPageScanR1Window = 0x0011; // 10.625ms
constexpr uint16_t kPageScanR2Interval = 0x1000; // 2.56s
constexpr uint16_t kPageScanR2Window = 0x0011; // 10.625ms

// The minimum and maximum range values for Inquiry Scan Interval (in time slices)
// (see Core Spec v5.0, Vol 2, Part E, Section 7.3.21)
constexpr uint16_t kInquiryScanIntervalMin = 0x0012;
constexpr uint16_t kInquiryScanIntervalMax = 0x1000;

// The minimum and maximum range values for Inquiry Scan Window (in time slices)
// (see Core Spec v5.0, Vol 2, Part E, Section 7.3.21)
constexpr uint16_t kInquiryScanWindowMin = 0x0011;
constexpr uint16_t kInquiryScanWindowMax = 0x1000;

enum class InquiryScanType : uint8_t {
  kStandardScan = 0x00, // Standard scan (default) (mandatory)
  kInterlacedScan = 0x01, // Interlaced scan
};

// Link Types for BR/EDR connections.
enum class LinkType : uint8_t {
  kSCO = 0x00,         // SCO
  kACL = 0x01,         // ACL (data channel)
  kExtendedSCO = 0x02, // eSCO
};

enum class InquiryMode : uint8_t {
  kStandard = 0x00, // Standard Inquiry Result format (default)
  kRSSI = 0x01, // Inquiry Result format with RSSI
  kExtended = 0x02, // Inquiry Result format with RSSI or EIR format
};

// Length of the Extended Inquiry Response data. (Vol 3, Part C, Section 8)
constexpr size_t kExtendedInquiryResponseBytes = 240;

// Values for the IO Capabilities
enum class IOCapability : uint8_t {
  kDisplayOnly = 0x00,
  kDisplayYesNo = 0x01,
  kKeyboardOnly = 0x02,
  kNoInputNoOutput = 0x03,
};

// Authentication requirements
// All options without MITM do not require MITM protection, and a numeric
// comparison with automatic accept is allowed.
// All options with MITM do require MITM protection, and IO capabilities should
// be used to determine the authentication procedure.
enum class AuthRequirements : uint8_t {
  kNoBonding = 0x00,
  kMITMNoBonding = 0x01,
  kDedicatedBonding = 0x02,
  kMITMDedicatedBonding = 0x03,
  kGeneralBonding = 0x04,
  kMITMGeneralBonding = 0x05,
};

// Key types for BR/EDR link encryption as reported to the host using the Link
// Key Notification event upon pairing or key changes (v5.0 Vol 2, Part E,
// Section 7.7.24).
//
// "Combination" refers to keys created from contributions of two devices
// according to v5.0 Vol 2, Part H, Section 3.2.4 and as opposed to "unit" keys
// that are generated on a single device but used by both parties (Section 3.2.3
// and deprecated in Section 3.1).
//
// Authenticated keys were generated using a challenge-response scheme described
// in v5.0 Vol 2, Part H, Section 5 to protect against man-in-the-middle (MITM)
// attacks.
//
// When Secure Connections is used, the key exchange uses keys generated from
// points on a 256-bit elliptic curve (v5.0 Vol 2, Part H, Section 7.1) and
// authentication uses Secure Authentication procedures described in Section 5.
enum class LinkKeyType : uint8_t {
  // Legacy pairing (pre-v2.1) key types
  kCombination = 0x00,
  kLocalUnit = 0x01,
  kRemoteUnit = 0x02,

  // Secure Simple Pairing key types
  kDebugCombination = 0x03,
  kUnauthenticatedCombination192 = 0x04,
  kAuthenticatedCombination192 = 0x05,

  // Special value indicating key generated due to a Change Connection Link Key
  // command. The actual key type is the same as before the change.
  kChangedCombination = 0x06,

  // Secure Simple Pairing with Secure Connections key types
  kUnauthenticatedCombination256 = 0x07,
  kAuthenticatedCombination256 = 0x08,
};

// Bitmask values for supported Packet Types
// Used for HCI_Create_Connection and HCI_Change_Connection_Packet_Type
enum class PacketTypeBits : uint16_t {
  // Reserved (1 << 0)
  kDisable2DH1 = (1 << 1),
  kDisable3DH1 = (1 << 2),
  kEnableDM1 = (1 << 3), // Note: always on in >= v1.2
  kEnableDH1 = (1 << 4),
  // Reserved (1 << 5)
  // Reserved (1 << 6)
  // Reserved (1 << 7)
  kDisable2DH3 = (1 << 8),
  kDisable3DH3 = (1 << 9),
  kEnableDM3 = (1 << 10),
  kEnableDH3 = (1 << 11),
  kDisable2DH5 = (1 << 12),
  kDisable3DH5 = (1 << 13),
  kEnableDM5 = (1 << 14),
  kEnableDH5 = (1 << 15),
};

using PacketTypeType = uint16_t;

}  // namespace hci
}  // namespace btlib

#endif  // GARNET_DRIVERS_BLUETOOTH_LIB_HCI_HCI_CONSTANTS_H_
