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

Commit dd69f603 authored by Jeremy Wu's avatar Jeremy Wu Committed by Gerrit Code Review
Browse files

Merge changes Ia7b7b1d9,I0103856f,I45fa4309,Ib3fab843,Ic171b996, ... into main

* changes:
  floss: consolidate group related members in BluetoothMedia
  floss: allow |leaudio.dual_bidirection_swb.supported|
  floss: propagate VC connection event to audio server
  floss: |set_group_volume| on vc/group connection
  floss: add LEA volume update callback events
  floss: encapsulate cancelled info to |stream_started|
parents bf455766 193edabe
Loading
Loading
Loading
Loading
+18 −6
Original line number Original line Diff line number Diff line
@@ -86,6 +86,8 @@ bool HostStartRequest() {
    return false;
    return false;
  }
  }


  host::le_audio::LeAudioSinkTransport::stream_started =
      btle_stream_started_status::IDLE;
  host::le_audio::LeAudioSinkTransport::instance->ResetPresentationPosition();
  host::le_audio::LeAudioSinkTransport::instance->ResetPresentationPosition();
  return host::le_audio::LeAudioSinkTransport::instance->StartRequest();
  return host::le_audio::LeAudioSinkTransport::instance->StartRequest();
}
}
@@ -125,6 +127,8 @@ bool PeerStartRequest() {
    return false;
    return false;
  }
  }


  host::le_audio::LeAudioSourceTransport::stream_started =
      btle_stream_started_status::IDLE;
  host::le_audio::LeAudioSourceTransport::instance->ResetPresentationPosition();
  host::le_audio::LeAudioSourceTransport::instance->ResetPresentationPosition();
  return host::le_audio::LeAudioSourceTransport::instance->StartRequest();
  return host::le_audio::LeAudioSourceTransport::instance->StartRequest();
}
}
@@ -157,11 +161,11 @@ btle_pcm_parameters GetPeerPcmConfig() {
  return pcm_config;
  return pcm_config;
}
}


bool GetHostStreamStarted() {
btle_stream_started_status GetHostStreamStarted() {
  return host::le_audio::LeAudioSinkTransport::stream_started;
  return host::le_audio::LeAudioSinkTransport::stream_started;
}
}


bool GetPeerStreamStarted() {
btle_stream_started_status GetPeerStreamStarted() {
  return host::le_audio::LeAudioSourceTransport::stream_started;
  return host::le_audio::LeAudioSourceTransport::stream_started;
}
}


@@ -248,7 +252,8 @@ void LeAudioClientInterface::Sink::StopSession() {
    host::le_audio::LeAudioSinkTransport::instance->ClearStartRequestState();
    host::le_audio::LeAudioSinkTransport::instance->ClearStartRequestState();
  }
  }


  host::le_audio::LeAudioSinkTransport::stream_started = false;
  host::le_audio::LeAudioSinkTransport::stream_started =
      btle_stream_started_status::IDLE;
}
}


void LeAudioClientInterface::Sink::ConfirmStreamingRequest() {
void LeAudioClientInterface::Sink::ConfirmStreamingRequest() {
@@ -275,7 +280,8 @@ void LeAudioClientInterface::Sink::ConfirmStreamingRequest() {
      log::info("Response after sending PENDING to audio HAL");
      log::info("Response after sending PENDING to audio HAL");
      instance->ClearStartRequestState();
      instance->ClearStartRequestState();
      lea_data_path_open();
      lea_data_path_open();
      host::le_audio::LeAudioSinkTransport::stream_started = true;
      host::le_audio::LeAudioSinkTransport::stream_started =
          btle_stream_started_status::STARTED;
      return;
      return;
    case StartRequestState::CONFIRMED:
    case StartRequestState::CONFIRMED:
    case StartRequestState::CANCELED:
    case StartRequestState::CANCELED:
@@ -310,6 +316,8 @@ void LeAudioClientInterface::Sink::CancelStreamingRequest() {
    case StartRequestState::PENDING_AFTER_RESUME:
    case StartRequestState::PENDING_AFTER_RESUME:
      log::info("Response after sending PENDING to audio HAL");
      log::info("Response after sending PENDING to audio HAL");
      instance->ClearStartRequestState();
      instance->ClearStartRequestState();
      host::le_audio::LeAudioSinkTransport::stream_started =
          btle_stream_started_status::CANCELED;
      return;
      return;
    case StartRequestState::CONFIRMED:
    case StartRequestState::CONFIRMED:
    case StartRequestState::CANCELED:
    case StartRequestState::CANCELED:
@@ -411,7 +419,8 @@ void LeAudioClientInterface::Source::StopSession() {
    host::le_audio::LeAudioSourceTransport::instance->ClearStartRequestState();
    host::le_audio::LeAudioSourceTransport::instance->ClearStartRequestState();
  }
  }


  host::le_audio::LeAudioSourceTransport::stream_started = false;
  host::le_audio::LeAudioSourceTransport::stream_started =
      btle_stream_started_status::IDLE;
}
}


void LeAudioClientInterface::Source::ConfirmStreamingRequest() {
void LeAudioClientInterface::Source::ConfirmStreamingRequest() {
@@ -438,7 +447,8 @@ void LeAudioClientInterface::Source::ConfirmStreamingRequest() {
      log::info("Response after sending PENDING to audio HAL");
      log::info("Response after sending PENDING to audio HAL");
      instance->ClearStartRequestState();
      instance->ClearStartRequestState();
      lea_data_path_open();
      lea_data_path_open();
      host::le_audio::LeAudioSourceTransport::stream_started = true;
      host::le_audio::LeAudioSourceTransport::stream_started =
          btle_stream_started_status::STARTED;
      return;
      return;
    case StartRequestState::CONFIRMED:
    case StartRequestState::CONFIRMED:
    case StartRequestState::CANCELED:
    case StartRequestState::CANCELED:
@@ -473,6 +483,8 @@ void LeAudioClientInterface::Source::CancelStreamingRequest() {
    case StartRequestState::PENDING_AFTER_RESUME:
    case StartRequestState::PENDING_AFTER_RESUME:
      log::info("Response after sending PENDING to audio HAL");
      log::info("Response after sending PENDING to audio HAL");
      instance->ClearStartRequestState();
      instance->ClearStartRequestState();
      host::le_audio::LeAudioSourceTransport::stream_started =
          btle_stream_started_status::CANCELED;
      return;
      return;
    case StartRequestState::CANCELED:
    case StartRequestState::CANCELED:
    case StartRequestState::CONFIRMED:
    case StartRequestState::CONFIRMED:
+16 −4
Original line number Original line Diff line number Diff line
@@ -38,6 +38,12 @@ struct btle_pcm_parameters {
  uint8_t channels_count;
  uint8_t channels_count;
};
};


enum class btle_stream_started_status : int32_t {
  CANCELED = -1,
  IDLE = 0,
  STARTED = 1,
};

// Invoked by audio server when it has audio data to stream.
// Invoked by audio server when it has audio data to stream.
// Returns whether the start request has been made successfully.
// Returns whether the start request has been made successfully.
bool HostStartRequest();
bool HostStartRequest();
@@ -45,8 +51,11 @@ bool HostStartRequest();
// Invoked by audio server when audio streaming is done.
// Invoked by audio server when audio streaming is done.
void HostStopRequest();
void HostStopRequest();


// Returns whether the host stream has started.
// Whether the peer stream has started.
bool GetHostStreamStarted();
// Returns 1, when the stream has started,
//         -1, when the previous request has been cancelled,
//         0, otherwise.
btle_stream_started_status GetHostStreamStarted();


// Returns the current host audio config.
// Returns the current host audio config.
btle_pcm_parameters GetHostPcmConfig();
btle_pcm_parameters GetHostPcmConfig();
@@ -61,8 +70,11 @@ bool PeerStartRequest();
// Invoked by audio server when audio streaming is done.
// Invoked by audio server when audio streaming is done.
void PeerStopRequest();
void PeerStopRequest();


// Returns whether the peer stream has started.
// Whether the peer stream has started.
bool GetPeerStreamStarted();
// Returns 1, when the stream has started,
//         -1, when the previous request has been cancelled,
//         0, otherwise.
btle_stream_started_status GetPeerStreamStarted();


// Returns the current peer audio config.
// Returns the current peer audio config.
btle_pcm_parameters GetPeerPcmConfig();
btle_pcm_parameters GetPeerPcmConfig();
+9 −0
Original line number Original line Diff line number Diff line
@@ -155,10 +155,13 @@ void LeAudioTransport::LeAudioSetSelectedHalPcmConfig(uint32_t sample_rate_hz,
StartRequestState LeAudioTransport::GetStartRequestState(void) {
StartRequestState LeAudioTransport::GetStartRequestState(void) {
  return start_request_state_;
  return start_request_state_;
}
}

void LeAudioTransport::ClearStartRequestState(void) {
void LeAudioTransport::ClearStartRequestState(void) {
  log::verbose("");
  start_request_state_ = StartRequestState::IDLE;
  start_request_state_ = StartRequestState::IDLE;
  remote_delay_report_ms_ = 0;
  remote_delay_report_ms_ = 0;
}
}

void LeAudioTransport::SetStartRequestState(StartRequestState state) {
void LeAudioTransport::SetStartRequestState(StartRequestState state) {
  start_request_state_ = state;
  start_request_state_ = state;
}
}
@@ -243,9 +246,12 @@ void LeAudioSinkTransport::LeAudioSetSelectedHalPcmConfig(
StartRequestState LeAudioSinkTransport::GetStartRequestState(void) {
StartRequestState LeAudioSinkTransport::GetStartRequestState(void) {
  return transport_->GetStartRequestState();
  return transport_->GetStartRequestState();
}
}

void LeAudioSinkTransport::ClearStartRequestState(void) {
void LeAudioSinkTransport::ClearStartRequestState(void) {
  log::verbose("");
  transport_->ClearStartRequestState();
  transport_->ClearStartRequestState();
}
}

void LeAudioSinkTransport::SetStartRequestState(StartRequestState state) {
void LeAudioSinkTransport::SetStartRequestState(StartRequestState state) {
  transport_->SetStartRequestState(state);
  transport_->SetStartRequestState(state);
}
}
@@ -312,9 +318,12 @@ void LeAudioSourceTransport::LeAudioSetSelectedHalPcmConfig(
StartRequestState LeAudioSourceTransport::GetStartRequestState(void) {
StartRequestState LeAudioSourceTransport::GetStartRequestState(void) {
  return transport_->GetStartRequestState();
  return transport_->GetStartRequestState();
}
}

void LeAudioSourceTransport::ClearStartRequestState(void) {
void LeAudioSourceTransport::ClearStartRequestState(void) {
  log::verbose("");
  transport_->ClearStartRequestState();
  transport_->ClearStartRequestState();
}
}

void LeAudioSourceTransport::SetStartRequestState(StartRequestState state) {
void LeAudioSourceTransport::SetStartRequestState(StartRequestState state) {
  transport_->SetStartRequestState(state);
  transport_->SetStartRequestState(state);
}
}
+5 −2
Original line number Original line Diff line number Diff line
@@ -30,6 +30,7 @@ namespace le_audio {
using ::bluetooth::le_audio::set_configurations::AudioSetConfiguration;
using ::bluetooth::le_audio::set_configurations::AudioSetConfiguration;
using ::bluetooth::le_audio::set_configurations::CodecConfigSetting;
using ::bluetooth::le_audio::set_configurations::CodecConfigSetting;


using ::bluetooth::audio::le_audio::btle_stream_started_status;
using ::bluetooth::audio::le_audio::LeAudioClientInterface;
using ::bluetooth::audio::le_audio::LeAudioClientInterface;
using ::bluetooth::audio::le_audio::StartRequestState;
using ::bluetooth::audio::le_audio::StartRequestState;
using ::bluetooth::audio::le_audio::StreamCallbacks;
using ::bluetooth::audio::le_audio::StreamCallbacks;
@@ -119,7 +120,8 @@ class LeAudioSinkTransport {
  void SetStartRequestState(StartRequestState state);
  void SetStartRequestState(StartRequestState state);


  static inline LeAudioSinkTransport* instance = nullptr;
  static inline LeAudioSinkTransport* instance = nullptr;
  static inline bool stream_started = false;
  static inline btle_stream_started_status stream_started =
      btle_stream_started_status::IDLE;


 private:
 private:
  LeAudioTransport* transport_;
  LeAudioTransport* transport_;
@@ -162,7 +164,8 @@ class LeAudioSourceTransport {
  void SetStartRequestState(StartRequestState state);
  void SetStartRequestState(StartRequestState state);


  static inline LeAudioSourceTransport* instance = nullptr;
  static inline LeAudioSourceTransport* instance = nullptr;
  static inline bool stream_started = false;
  static inline btle_stream_started_status stream_started =
      btle_stream_started_status::IDLE;


 private:
 private:
  LeAudioTransport* transport_;
  LeAudioTransport* transport_;
+2 −0
Original line number Original line Diff line number Diff line
@@ -1466,6 +1466,8 @@ impl IBluetoothMediaCallback for MediaCallback {
    ) {
    ) {
    }
    }
    fn on_lea_group_stream_status(&mut self, _group_id: i32, _status: BtLeAudioGroupStreamStatus) {}
    fn on_lea_group_stream_status(&mut self, _group_id: i32, _status: BtLeAudioGroupStreamStatus) {}
    fn on_lea_vc_connected(&mut self, _addr: RawAddress, _group_id: i32) {}
    fn on_lea_group_volume_changed(&mut self, _group_id: i32, _volume: u8) {}
    fn on_bluetooth_audio_device_added(&mut self, _device: BluetoothAudioDevice) {}
    fn on_bluetooth_audio_device_added(&mut self, _device: BluetoothAudioDevice) {}
    fn on_bluetooth_audio_device_removed(&mut self, _addr: RawAddress) {}
    fn on_bluetooth_audio_device_removed(&mut self, _addr: RawAddress) {}
    fn on_absolute_volume_supported_changed(&mut self, _supported: bool) {}
    fn on_absolute_volume_supported_changed(&mut self, _supported: bool) {}
Loading