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

Commit 9cea4fdd authored by Pavlin Radoslavov's avatar Pavlin Radoslavov Committed by android-build-merger
Browse files

Add BT_HCI_UNKNOWN_MESSAGE_TYPE log event

am: db3ce3ba

Change-Id: Ie4625f75dcfd71ae9740af80721a53be19045055
parents d2d957a1 db3ce3ba
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -35,3 +35,4 @@

1010000 bt_hci_timeout (opcode|1)
1010001 bt_config_source (opcode|1)
1010002 bt_hci_unknown_type (hci_type|1)
+6 −1
Original line number Diff line number Diff line
@@ -38,6 +38,8 @@
// when streaming time sensitive data (A2DP).
#define HCI_THREAD_PRIORITY -19

#define BT_HCI_UNKNOWN_MESSAGE_TYPE_NUM 1010002

// Our interface and modules we import
static const hci_hal_t interface;
static const hci_hal_callbacks_t *callbacks;
@@ -233,7 +235,10 @@ static void event_uart_has_bytes(eager_reader_t *reader, UNUSED_ATTR void *conte
      return;

    if (type_byte < DATA_TYPE_ACL || type_byte > DATA_TYPE_EVENT) {
      LOG_ERROR(LOG_TAG, "%s Unknown HCI message type. Dropping this byte 0x%x, min %x, max %x", __func__, type_byte, DATA_TYPE_ACL, DATA_TYPE_EVENT);
      LOG_ERROR(LOG_TAG, "%s Unknown HCI message type 0x%x (min=0x%x max=0x%x). Aborting...",
                __func__, type_byte, DATA_TYPE_ACL, DATA_TYPE_EVENT);
      LOG_EVENT_INT(BT_HCI_UNKNOWN_MESSAGE_TYPE_NUM, type_byte);
      assert(false && "Unknown HCI message type");
      return;
    }

+14 −11
Original line number Diff line number Diff line
@@ -192,17 +192,18 @@ static void expect_socket_data(int fd, char first_byte, char *data) {
  }
}

static void write_packet(int fd, char first_byte, char *data) {
static void write_packet(int fd, char first_byte, const void *data,
                         size_t datalen) {
  write(fd, &first_byte, 1);
  write(fd, data, strlen(data));
  write(fd, data, datalen);
}

static void write_packet_reentry(int fd, char first_byte, char *data) {
static void write_packet_reentry(int fd, char first_byte, const void *data,
                                 size_t datalen) {
  write(fd, &first_byte, 1);

  int length = strlen(data);
  for (int i = 0; i < length; i++) {
    write(fd, &data[i], 1);
  for (size_t i = 0; i < datalen; i++) {
    write(fd, static_cast<const uint8_t *>(data) + i, 1);
    semaphore_wait(reentry_semaphore);
  }
}
@@ -226,10 +227,11 @@ TEST_F(HciHalH4Test, test_transmit) {
TEST_F(HciHalH4Test, test_read_synchronous) {
  reset_for(read_synchronous);

  write_packet(sockfd[1], DATA_TYPE_ACL, acl_data);
  write_packet(sockfd[1], HCI_BLE_EVENT, corrupted_data);
  write_packet(sockfd[1], DATA_TYPE_SCO, sco_data);
  write_packet(sockfd[1], DATA_TYPE_EVENT, event_data);
  write_packet(sockfd[1], DATA_TYPE_ACL, acl_data, strlen(acl_data));
  write_packet(sockfd[1], HCI_BLE_EVENT, corrupted_data,
               sizeof(corrupted_data));
  write_packet(sockfd[1], DATA_TYPE_SCO, sco_data, strlen(sco_data));
  write_packet(sockfd[1], DATA_TYPE_EVENT, event_data, strlen(event_data));

  // Wait for all data to be received before calling the test good
  semaphore_wait(done);
@@ -242,7 +244,8 @@ TEST_F(HciHalH4Test, test_read_async_reentry) {
  reentry_semaphore = semaphore_new(0);
  reentry_i = 0;

  write_packet_reentry(sockfd[1], DATA_TYPE_ACL, sample_data3);
  write_packet_reentry(sockfd[1], DATA_TYPE_ACL, sample_data3,
                       strlen(sample_data3));

  // write_packet_reentry ensures the data has been received
  semaphore_free(reentry_semaphore);