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

Commit 91f9d6bd authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "HearingAid: set playback_started to true when start audio command finish." am: 1940a68b

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/1892215

Change-Id: If8d7ac94bc9230846d0527e0b3c675c6813d19ae
parents 1ee89335 1940a68b
Loading
Loading
Loading
Loading
+29 −4
Original line number Diff line number Diff line
@@ -1117,12 +1117,37 @@ class HearingAidImpl : public HearingAid {
                << ", audio type=" << loghex(start[2])
                << ", device=" << device->address
                << ", other side streaming=" << loghex(start[4]);
      device->playback_started = true;
      device->command_acked = false;
      BtaGattQueue::WriteCharacteristic(device->conn_id,
                                        device->audio_control_point_handle,
                                        start, GATT_WRITE, nullptr, nullptr);
      BtaGattQueue::WriteCharacteristic(
          device->conn_id, device->audio_control_point_handle, start,
          GATT_WRITE, HearingAidImpl::StartAudioCtrlCallbackStatic, nullptr);
    }
  }

  static void StartAudioCtrlCallbackStatic(uint16_t conn_id,
                                           tGATT_STATUS status, uint16_t handle,
                                           uint16_t len, const uint8_t* value,
                                           void* data) {
    if (status != GATT_SUCCESS) {
      LOG(ERROR) << __func__ << ": handle=" << handle << ", conn_id=" << conn_id
                 << ", status=" << loghex(static_cast<uint8_t>(status));
      return;
    }
    if (!instance) {
      LOG(ERROR) << __func__ << ": instance is null.";
      return;
    }
    instance->StartAudioCtrlCallback(conn_id);
  }

  void StartAudioCtrlCallback(uint16_t conn_id) {
    HearingDevice* hearingDevice = hearingDevices.FindByConnId(conn_id);
    if (!hearingDevice) {
      LOG(ERROR) << "Skipping unknown device, conn_id=" << loghex(conn_id);
      return;
    }
    LOG(INFO) << __func__ << ": device: " << hearingDevice->address;
    hearingDevice->playback_started = true;
  }

  void OnAudioDataReady(const std::vector<uint8_t>& data) {