Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 087c007b authored by Jeremy Wu's avatar Jeremy Wu Committed by Automerger Merge Worker
Browse files

Merge "Floss: enable BLE build" into main am: 858953b9

parents a81a3cbe 858953b9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ static_library("audio_hal_interface") {
  sources = [
    "a2dp_encoding_host.cc",
    "hearing_aid_software_encoding_host.cc",
    "le_audio_software_host.cc",
  ]

  include_dirs = [
+107 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 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.
 */

#pragma once

#include <stddef.h>

/* maximum audio device address length */
#define AUDIO_DEVICE_MAX_ADDRESS_LEN 32

typedef enum {
  AUDIO_SOURCE_DEFAULT = 0,
  AUDIO_SOURCE_MIC = 1,
  AUDIO_SOURCE_VOICE_UPLINK = 2,
  AUDIO_SOURCE_VOICE_DOWNLINK = 3,
  AUDIO_SOURCE_VOICE_CALL = 4,
  AUDIO_SOURCE_CAMCORDER = 5,
  AUDIO_SOURCE_VOICE_RECOGNITION = 6,
  AUDIO_SOURCE_VOICE_COMMUNICATION = 7,
  AUDIO_SOURCE_REMOTE_SUBMIX = 8,
  AUDIO_SOURCE_UNPROCESSED = 9,
  AUDIO_SOURCE_VOICE_PERFORMANCE = 10,
  AUDIO_SOURCE_ECHO_REFERENCE = 1997,
  AUDIO_SOURCE_FM_TUNER = 1998,
  AUDIO_SOURCE_HOTWORD = 1999,
  AUDIO_SOURCE_INVALID = -1,
} audio_source_t;

typedef enum {
  AUDIO_CONTENT_TYPE_UNKNOWN = 0u,
  AUDIO_CONTENT_TYPE_SPEECH = 1u,
  AUDIO_CONTENT_TYPE_MUSIC = 2u,
  AUDIO_CONTENT_TYPE_MOVIE = 3u,
  AUDIO_CONTENT_TYPE_SONIFICATION = 4u,
} audio_content_type_t;

typedef enum {
  AUDIO_USAGE_UNKNOWN = 0,
  AUDIO_USAGE_MEDIA = 1,
  AUDIO_USAGE_VOICE_COMMUNICATION = 2,
  AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING = 3,
  AUDIO_USAGE_ALARM = 4,
  AUDIO_USAGE_NOTIFICATION = 5,
  AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE = 6,
  AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST = 7,
  AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT = 8,
  AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED = 9,
  AUDIO_USAGE_NOTIFICATION_EVENT = 10,
  AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY = 11,
  AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE = 12,
  AUDIO_USAGE_ASSISTANCE_SONIFICATION = 13,
  AUDIO_USAGE_GAME = 14,
  AUDIO_USAGE_VIRTUAL_SOURCE = 15,
  AUDIO_USAGE_ASSISTANT = 16,
  AUDIO_USAGE_CALL_ASSISTANT = 17,
  AUDIO_USAGE_EMERGENCY = 1000,
  AUDIO_USAGE_SAFETY = 1001,
  AUDIO_USAGE_VEHICLE_STATUS = 1002,
  AUDIO_USAGE_ANNOUNCEMENT = 1003,
} audio_usage_t;

typedef enum {
  AUDIO_DEVICE_DEFAULT = 0,
} audio_devices_t;

/** Metadata of a playback track for an in stream. */
typedef struct playback_track_metadata {
  audio_usage_t usage;
  audio_content_type_t content_type;
  float gain;  // Normalized linear volume. 0=silence, 1=0dbfs...
} playback_track_metadata_t;

/** Metadata of a record track for an out stream. */
typedef struct record_track_metadata {
  audio_source_t source;
  float gain;  // Normalized linear volume. 0=silence, 1=0dbfs...
               // For record tracks originating from a software patch, the
               // dest_device fields provide information about the downstream
               // device.
  audio_devices_t dest_device;
  char dest_device_address[AUDIO_DEVICE_MAX_ADDRESS_LEN];
} record_track_metadata_t;

typedef struct source_metadata {
  size_t track_count;
  /** Array of metadata of each track connected to this source. */
  struct playback_track_metadata* tracks;
} source_metadata_t;

typedef struct sink_metadata {
  size_t track_count;
  /** Array of metadata of each track connected to this sink. */
  struct record_track_metadata* tracks;
} sink_metadata_t;
+4 −0
Original line number Diff line number Diff line
@@ -16,7 +16,11 @@

#pragma once

#ifdef TARGET_FLOSS
#include <audio_hal_interface/audio_linux.h>
#else
#include <hardware/audio.h>
#endif

#include <functional>

+0 −1
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@
 * limitations under the License.
 */

#include "audio_hal_interface/hal_version_manager.h"
#include "audio_hal_interface/le_audio_software.h"
#include "bta/le_audio/codec_manager.h"

+76 −6
Original line number Diff line number Diff line
@@ -14,6 +14,9 @@
#  limitations under the License.
#

import("//bt/system/gd/dumpsys/bundler/bundler.gni")
import("//common-mk/flatbuffer.gni")

static_library("bta") {
  sources = [
    "ag/bta_ag_act.cc",
@@ -55,11 +58,11 @@ static_library("bta") {
    "gatt/database.cc",
    "gatt/database_builder.cc",
    "groups/groups.cc",
    # TODO(abps) - Enable with long-term effort for LE Audio
    #"has/has_client.cc",
    #"has/has_ctp.cc",
    #"has/has_preset.cc",
    #"has/has_types.cc",
    "has/has_client.cc",
    "has/has_ctp.cc",
    "has/has_preset.cc",
    "has/has_types.cc",
    "has/has_journal.cc",
    "hearing_aid/hearing_aid.cc",
    "hearing_aid/hearing_aid_audio_source.cc",
    "hf_client/bta_hf_client_act.cc",
@@ -82,8 +85,26 @@ static_library("bta") {
    "jv/bta_jv_act.cc",
    "jv/bta_jv_api.cc",
    "jv/bta_jv_cfg.cc",
    "le_audio/client_linux.cc",
    "le_audio/audio_hal_client/audio_sink_hal_client.cc",
    "le_audio/audio_hal_client/audio_source_hal_client.cc",
    "le_audio/broadcaster/broadcaster.cc",
    "le_audio/broadcaster/broadcaster_types.cc",
    "le_audio/broadcaster/state_machine.cc",
    "le_audio/client.cc",
    "le_audio/client_parser.cc",
    "le_audio/codec_interface.cc",
    "le_audio/codec_manager.cc",
    "le_audio/content_control_id_keeper.cc",
    "le_audio/devices.cc",
    "le_audio/hal_verifier_linux.cc",
    "le_audio/le_audio_health_status.cc",
    "le_audio/le_audio_log_history.cc",
    "le_audio/le_audio_set_configuration_provider_json.cc",
    "le_audio/le_audio_types.cc",
    "le_audio/le_audio_utils.cc",
    "le_audio/metrics_collector.cc",
    "le_audio/state_machine.cc",
    "le_audio/storage_helper.cc",
    "pan/bta_pan_act.cc",
    "pan/bta_pan_api.cc",
    "pan/bta_pan_ci.cc",
@@ -107,6 +128,7 @@ static_library("bta") {
    "include",
    "sys",
    "//bt/system/",
    "//bt/system/include",
    "//bt/system/linux_include",
    "//bt/system/bta",
    "//bt/system/gd",
@@ -129,9 +151,57 @@ static_library("bta") {
  ]

  deps = [
    "//bt/system/bta:LeAudioSetScenariosSchema_bfbs",
    "//bt/system/bta:LeAudioSetConfigsSchema_bfbs",
    "//bt/system/bta:install_audio_set_scenarios_json",
    "//bt/system/bta:install_audio_set_configurations_json",
    "//bt/system/bta:install_audio_set_scenarios_bfbs",
    "//bt/system/bta:install_audio_set_configurations_bfbs",
    "//bt/system:libbt-platform-protos-lite",
    "//bt/system/gd/rust/shim:init_flags_bridge_header",
  ]

  libs = [
    "lc3",
  ]
}

bt_flatc_binary_schema("LeAudioSetScenariosSchema_bfbs") {
  sources = [
    "le_audio/audio_set_scenarios.fbs",
  ]

  include_dir = "system"
  gen_header = true
}

bt_flatc_binary_schema("LeAudioSetConfigsSchema_bfbs") {
  sources = [
    "le_audio/audio_set_configurations.fbs",
  ]

  include_dir = "system"
  gen_header = true
}

install_config("install_audio_set_scenarios_bfbs") {
  sources = [ "$target_gen_dir/audio_set_scenarios.bfbs" ]
  install_path = "/etc/bluetooth/le_audio/"
}

install_config("install_audio_set_configurations_bfbs") {
  sources = [ "$target_gen_dir/audio_set_configurations.bfbs" ]
  install_path = "/etc/bluetooth/le_audio/"
}

install_config("install_audio_set_scenarios_json") {
  sources = [ "le_audio/audio_set_scenarios.json" ]
  install_path = "/etc/bluetooth/le_audio/"
}

install_config("install_audio_set_configurations_json") {
  sources = [ "le_audio/audio_set_configurations.json" ]
  install_path = "/etc/bluetooth/le_audio/"
}

if (use.test) {
Loading