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

Commit 29cc988c authored by Łukasz Rymanowski's avatar Łukasz Rymanowski
Browse files

leaudio: Add time tracking for setting up the stream in dumpsys

Bug: 150670922
Tag: #feature
Sponsor: jpawlowski@
Test: manual

Change-Id: I2a2bef79c54760d4d91ce1eb52698cba40a1db4c
parent a0f88a05
Loading
Loading
Loading
Loading
+20 −1
Original line number Original line Diff line number Diff line
@@ -29,6 +29,7 @@
#include "btm_iso_api.h"
#include "btm_iso_api.h"
#include "client_audio.h"
#include "client_audio.h"
#include "client_parser.h"
#include "client_parser.h"
#include "common/time_util.h"
#include "device/include/controller.h"
#include "device/include/controller.h"
#include "devices.h"
#include "devices.h"
#include "embdrv/lc3/Api/Lc3Decoder.hpp"
#include "embdrv/lc3/Api/Lc3Decoder.hpp"
@@ -164,6 +165,8 @@ class LeAudioClientImpl : public LeAudioClient {
        active_group_id_(bluetooth::groups::kGroupUnknown),
        active_group_id_(bluetooth::groups::kGroupUnknown),
        current_context_type_(LeAudioContextType::MEDIA),
        current_context_type_(LeAudioContextType::MEDIA),
        upcoming_context_type_(LeAudioContextType::MEDIA),
        upcoming_context_type_(LeAudioContextType::MEDIA),
        stream_setup_start_timestamp_(0),
        stream_setup_end_timestamp_(0),
        audio_receiver_state_(AudioState::IDLE),
        audio_receiver_state_(AudioState::IDLE),
        audio_sender_state_(AudioState::IDLE),
        audio_sender_state_(AudioState::IDLE),
        current_source_codec_config({0, 0, 0, 0}),
        current_source_codec_config({0, 0, 0, 0}),
@@ -555,8 +558,13 @@ class LeAudioClientImpl : public LeAudioClient {
      return false;
      return false;
    }
    }


    return groupStateMachine_->StartStream(
    bool result = groupStateMachine_->StartStream(
        group, static_cast<LeAudioContextType>(final_context_type));
        group, static_cast<LeAudioContextType>(final_context_type));
    if (result)
      stream_setup_start_timestamp_ =
          bluetooth::common::time_get_os_boottime_us();

    return result;
  }
  }


  void GroupStream(const int group_id, const uint16_t context_type) override {
  void GroupStream(const int group_id, const uint16_t context_type) override {
@@ -2293,6 +2301,10 @@ class LeAudioClientImpl : public LeAudioClient {
    dprintf(fd, "  Active group: %d\n", active_group_id_);
    dprintf(fd, "  Active group: %d\n", active_group_id_);
    dprintf(fd, "    current content type: 0x%08hx\n", current_context_type_);
    dprintf(fd, "    current content type: 0x%08hx\n", current_context_type_);
    dprintf(fd, "    upcoming content type: 0x%08hx\n", upcoming_context_type_);
    dprintf(fd, "    upcoming content type: 0x%08hx\n", upcoming_context_type_);
    dprintf(
        fd, "    stream setup time if started: %d ms\n",
        (int)((stream_setup_end_timestamp_ - stream_setup_start_timestamp_) /
              1000));
    printCurrentStreamConfiguration(fd);
    printCurrentStreamConfiguration(fd);
    dprintf(fd, "  ----------------\n ");
    dprintf(fd, "  ----------------\n ");
    dprintf(fd, "  LE Audio Groups:\n");
    dprintf(fd, "  LE Audio Groups:\n");
@@ -2956,12 +2968,17 @@ class LeAudioClientImpl : public LeAudioClient {
          StartSendingAudio(active_group_id_);
          StartSendingAudio(active_group_id_);
        if (audio_receiver_state_ == AudioState::READY_TO_START)
        if (audio_receiver_state_ == AudioState::READY_TO_START)
          StartReceivingAudio(active_group_id_);
          StartReceivingAudio(active_group_id_);

        stream_setup_end_timestamp_ =
            bluetooth::common::time_get_os_boottime_us();
        break;
        break;
      case GroupStreamStatus::SUSPENDED:
      case GroupStreamStatus::SUSPENDED:
        /** Stop Audio but don't release all the Audio resources */
        /** Stop Audio but don't release all the Audio resources */
        SuspendAudio();
        SuspendAudio();
        break;
        break;
      case GroupStreamStatus::IDLE:
      case GroupStreamStatus::IDLE:
        stream_setup_end_timestamp_ = 0;
        stream_setup_start_timestamp_ = 0;
        CancelStreamingRequest();
        CancelStreamingRequest();
        break;
        break;
      case GroupStreamStatus::RELEASING:
      case GroupStreamStatus::RELEASING:
@@ -2983,6 +3000,8 @@ class LeAudioClientImpl : public LeAudioClient {
  int active_group_id_;
  int active_group_id_;
  LeAudioContextType current_context_type_;
  LeAudioContextType current_context_type_;
  LeAudioContextType upcoming_context_type_;
  LeAudioContextType upcoming_context_type_;
  uint64_t stream_setup_start_timestamp_;
  uint64_t stream_setup_end_timestamp_;


  /* Microphone (s) */
  /* Microphone (s) */
  AudioState audio_receiver_state_;
  AudioState audio_receiver_state_;