blob: 8eb67eccf636e6580106b3f4fdab3d8f14b4bf9e [file] [log] [blame]
/*
* Copyright 2020 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 SRC_CONNECTIVITY_BLUETOOTH_CORE_BT_HOST_SCO_SCO_H_
#define SRC_CONNECTIVITY_BLUETOOTH_CORE_BT_HOST_SCO_SCO_H_
#include "src/connectivity/bluetooth/core/bt-host/hci/hci_constants.h"
namespace bt::sco {
// Codec SCO parameter sets as defined in HFP specification (v1.8, section 5.7).
struct ParameterSet {
uint16_t packet_types;
uint32_t transmit_receive_bandwidth;
hci::CodingFormat transmit_receive_format;
uint16_t max_latency_ms;
hci::ScoRetransmissionEffort retransmission_effort;
};
constexpr ParameterSet kParameterSetMsbcT1{
.packet_types = static_cast<uint8_t>(hci::ScoPacketTypeBits::kEv3) |
static_cast<uint8_t>(hci::ScoPacketTypeBits::kNot2Ev3),
.transmit_receive_bandwidth = 8000,
.transmit_receive_format = hci::CodingFormat::kTransparent,
.max_latency_ms = 8,
.retransmission_effort = hci::ScoRetransmissionEffort::kQualityOptimized};
constexpr ParameterSet kParameterSetMsbcT2{
.packet_types = static_cast<uint8_t>(hci::ScoPacketTypeBits::kEv3),
.transmit_receive_bandwidth = 8000,
.transmit_receive_format = hci::CodingFormat::kTransparent,
.max_latency_ms = 13,
.retransmission_effort = hci::ScoRetransmissionEffort::kQualityOptimized};
constexpr ParameterSet kParameterSetCvsdS1{
.packet_types = static_cast<uint8_t>(hci::ScoPacketTypeBits::kEv3) |
static_cast<uint8_t>(hci::ScoPacketTypeBits::kNot2Ev3),
.transmit_receive_bandwidth = 8000,
.transmit_receive_format = hci::CodingFormat::kCvsd,
.max_latency_ms = 7,
.retransmission_effort = hci::ScoRetransmissionEffort::kPowerOptimized};
constexpr ParameterSet kParameterSetCvsdS2{
.packet_types = static_cast<uint8_t>(hci::ScoPacketTypeBits::kEv3),
.transmit_receive_bandwidth = 8000,
.transmit_receive_format = hci::CodingFormat::kCvsd,
.max_latency_ms = 7,
.retransmission_effort = hci::ScoRetransmissionEffort::kPowerOptimized};
constexpr ParameterSet kParameterSetCvsdS3{
.packet_types = static_cast<uint8_t>(hci::ScoPacketTypeBits::kEv3),
.transmit_receive_bandwidth = 8000,
.transmit_receive_format = hci::CodingFormat::kCvsd,
.max_latency_ms = 10,
.retransmission_effort = hci::ScoRetransmissionEffort::kPowerOptimized};
constexpr ParameterSet kParameterSetCvsdS4{
.packet_types = static_cast<uint8_t>(hci::ScoPacketTypeBits::kEv3),
.transmit_receive_bandwidth = 8000,
.transmit_receive_format = hci::CodingFormat::kCvsd,
.max_latency_ms = 12,
.retransmission_effort = hci::ScoRetransmissionEffort::kQualityOptimized};
constexpr ParameterSet kParameterSetCvsdD0{
.packet_types = static_cast<uint8_t>(hci::ScoPacketTypeBits::kHv1),
.transmit_receive_bandwidth = 8000,
.transmit_receive_format = hci::CodingFormat::kCvsd,
.max_latency_ms = 0xFFFF,
.retransmission_effort = hci::ScoRetransmissionEffort::kDontCare};
constexpr ParameterSet kParameterSetCvsdD1{
.packet_types = static_cast<uint8_t>(hci::ScoPacketTypeBits::kHv3),
.transmit_receive_bandwidth = 8000,
.transmit_receive_format = hci::CodingFormat::kCvsd,
.max_latency_ms = 0xFFFF,
.retransmission_effort = hci::ScoRetransmissionEffort::kDontCare};
} // namespace bt::sco
#endif // SRC_CONNECTIVITY_BLUETOOTH_CORE_BT_HOST_SCO_SCO_H_