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

Commit cf4bfc9d authored by Łukasz Rymanowski's avatar Łukasz Rymanowski
Browse files

leaudio: Minor cleanup on suspent_timeout_

Add helper functions to start and stop suspend_timeout_

Bug: 372120241
Flag: EXEMPT, mechanical refactor
Test: mmm packages/modules/Bluetooth
Change-Id: Ie541d871aeed2d364e0d80a4f239f8d1751a4143
parent 9479db36
Loading
Loading
Loading
Loading
+36 −36
Original line number Diff line number Diff line
@@ -365,6 +365,36 @@ public:
    }
  }

  void StartSuspendTimeout(void) {
    StopSuspendTimeout();

    /* Group should tie in time to get requested status */
    uint64_t timeoutMs = kAudioSuspentKeepIsoAliveTimeoutMs;
    timeoutMs = osi_property_get_int32(kAudioSuspentKeepIsoAliveTimeoutMsProp, timeoutMs);

    if (stack_config_get_interface()->get_pts_le_audio_disable_ases_before_stopping()) {
      timeoutMs += kAudioDisableTimeoutMs;
    }

    log::debug("Stream suspend_timeout_ started: {} ms", static_cast<int>(timeoutMs));

    alarm_set_on_mloop(
            suspend_timeout_, timeoutMs,
            [](void* data) {
              if (instance) {
                instance->GroupStop(PTR_TO_INT(data));
              }
            },
            INT_TO_PTR(active_group_id_));
  }

  void StopSuspendTimeout(void) {
    if (alarm_is_scheduled(suspend_timeout_)) {
      log::debug("Cancel suspend timeout");
      alarm_cancel(suspend_timeout_);
    }
  }

  void AseInitialStateReadRequest(LeAudioDevice* leAudioDevice) {
    int ases_num = leAudioDevice->ases_.size();
    void* notify_flag_ptr = NULL;
@@ -1292,9 +1322,7 @@ public:
    sink_monitor_notified_status_ = std::nullopt;
    log::info("Group id: {}", active_group_id_);

    if (alarm_is_scheduled(suspend_timeout_)) {
      alarm_cancel(suspend_timeout_);
    }
    StopSuspendTimeout();

    StopAudio();
    ClientAudioInterfaceRelease();
@@ -3921,9 +3949,7 @@ public:

  void Cleanup() {
    StopVbcCloseTimeout();
    if (alarm_is_scheduled(suspend_timeout_)) {
      alarm_cancel(suspend_timeout_);
    }
    StopSuspendTimeout();

    if (active_group_id_ != bluetooth::groups::kGroupUnknown) {
      /* Bluetooth turned off while streaming */
@@ -4037,27 +4063,7 @@ public:
              INT_TO_PTR(active_group_id_));
    }

    /* Group should tie in time to get requested status */
    uint64_t timeoutMs = kAudioSuspentKeepIsoAliveTimeoutMs;
    timeoutMs = osi_property_get_int32(kAudioSuspentKeepIsoAliveTimeoutMsProp, timeoutMs);

    if (stack_config_get_interface()->get_pts_le_audio_disable_ases_before_stopping()) {
      timeoutMs += kAudioDisableTimeoutMs;
    }

    log::debug("Stream suspend_timeout_ started: {} ms", static_cast<int>(timeoutMs));
    if (alarm_is_scheduled(suspend_timeout_)) {
      alarm_cancel(suspend_timeout_);
    }

    alarm_set_on_mloop(
            suspend_timeout_, timeoutMs,
            [](void* data) {
              if (instance) {
                instance->GroupStop(PTR_TO_INT(data));
              }
            },
            INT_TO_PTR(active_group_id_));
    StartSuspendTimeout();
  }

  void OnLocalAudioSourceSuspend() {
@@ -4255,9 +4261,7 @@ public:
          case AudioState::IDLE:
          case AudioState::READY_TO_RELEASE:
            /* Stream is up just restore it */
            if (alarm_is_scheduled(suspend_timeout_)) {
              alarm_cancel(suspend_timeout_);
            }
            StopSuspendTimeout();
            ConfirmLocalAudioSourceStreamingRequest();
            bluetooth::le_audio::MetricsCollector::Get()->OnStreamStarted(
                    active_group_id_, configuration_context_type_);
@@ -4507,9 +4511,7 @@ public:
          case AudioState::READY_TO_START:
          case AudioState::READY_TO_RELEASE:
            /* Stream is up just restore it */
            if (alarm_is_scheduled(suspend_timeout_)) {
              alarm_cancel(suspend_timeout_);
            }
            StopSuspendTimeout();
            ConfirmLocalAudioSinkStreamingRequest();
            break;
          case AudioState::RELEASING:
@@ -4604,9 +4606,7 @@ public:
      return false;
    }

    if (alarm_is_scheduled(suspend_timeout_)) {
      alarm_cancel(suspend_timeout_);
    }
    StopSuspendTimeout();

    /* Need to reconfigure stream. At this point pre_configuration_context_type shall be set */