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

Commit 2b1413fd authored by Peng Qi's avatar Peng Qi Committed by android-build-merger
Browse files

BT HAL H4 write flow

am: 92afd74a

Change-Id: Ie8231290c6aa5600c3e9c355b04fe494aa64d190
parents 69dc5c83 92afd74a
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -18,8 +18,10 @@

#define LOG_TAG "android.hardware.bluetooth-hci-h4"
#include <android-base/logging.h>
#include <assert.h>
#include <errno.h>
#include <fcntl.h>
#include <log/log.h>
#include <sys/uio.h>

namespace android {
namespace hardware {
@@ -27,11 +29,20 @@ namespace bluetooth {
namespace hci {

size_t H4Protocol::Send(uint8_t type, const uint8_t* data, size_t length) {
  int rv = WriteSafely(uart_fd_, &type, sizeof(type));
  if (rv == sizeof(type)) {
    rv = WriteSafely(uart_fd_, data, length);
  struct iovec iov[] = {{&type, sizeof(type)},
                        {const_cast<uint8_t*>(data), length}};
  ssize_t ret = 0;
  do {
    ret = TEMP_FAILURE_RETRY(writev(uart_fd_, iov, sizeof(iov) / sizeof(iov[0])));
  } while (-1 == ret && EAGAIN == errno);

  if (ret == -1) {
    ALOGE("%s error writing to UART (%s)", __func__, strerror(errno));
  } else if (ret == 0) {
    // Nothing written :(
    ALOGE("%s zero bytes written - something went wrong...", __func__);
  }
  return rv;
  return ret;
}

void H4Protocol::OnPacketReady() {