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

Commit 47815ed8 authored by Jakub Pawlowski's avatar Jakub Pawlowski Committed by Stanley Tng
Browse files

LE Read Maximum Data Length during startup

Test: verified in sl4a test for LE CoC throughput
Bug: 68359837
Change-Id: Ie424fef50f6f355d2919d9304bd062e4604c3341
parent 835f0092
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -72,6 +72,7 @@ typedef struct controller_t {
  uint16_t (*get_acl_packet_size_ble)(void);
  uint16_t (*get_acl_packet_size_ble)(void);


  uint16_t (*get_ble_default_data_packet_length)(void);
  uint16_t (*get_ble_default_data_packet_length)(void);
  uint16_t (*get_ble_maximum_tx_data_length)(void);
  uint16_t (*get_ble_maxium_advertising_data_length)(void);
  uint16_t (*get_ble_maxium_advertising_data_length)(void);
  uint8_t (*get_ble_number_of_supported_advertising_sets)(void);
  uint8_t (*get_ble_number_of_supported_advertising_sets)(void);


+18 −0
Original line number Original line Diff line number Diff line
@@ -65,6 +65,11 @@ static uint8_t ble_resolving_list_max_size;
static uint8_t ble_supported_states[BLE_SUPPORTED_STATES_SIZE];
static uint8_t ble_supported_states[BLE_SUPPORTED_STATES_SIZE];
static bt_device_features_t features_ble;
static bt_device_features_t features_ble;
static uint16_t ble_suggested_default_data_length;
static uint16_t ble_suggested_default_data_length;
static uint16_t ble_supported_max_tx_octets;
static uint16_t ble_supported_max_tx_time;
static uint16_t ble_supported_max_rx_octets;
static uint16_t ble_supported_max_rx_time;

static uint16_t ble_maxium_advertising_data_length;
static uint16_t ble_maxium_advertising_data_length;
static uint8_t ble_number_of_supported_advertising_sets;
static uint8_t ble_number_of_supported_advertising_sets;
static uint8_t local_supported_codecs[MAX_LOCAL_SUPPORTED_CODECS_SIZE];
static uint8_t local_supported_codecs[MAX_LOCAL_SUPPORTED_CODECS_SIZE];
@@ -212,6 +217,12 @@ static future_t* start_up(void) {
    }
    }


    if (HCI_LE_DATA_LEN_EXT_SUPPORTED(features_ble.as_array)) {
    if (HCI_LE_DATA_LEN_EXT_SUPPORTED(features_ble.as_array)) {
      response =
          AWAIT_COMMAND(packet_factory->make_ble_read_maximum_data_length());
      packet_parser->parse_ble_read_maximum_data_length_response(
          response, &ble_supported_max_tx_octets, &ble_supported_max_tx_time,
          &ble_supported_max_rx_octets, &ble_supported_max_rx_time);

      response = AWAIT_COMMAND(
      response = AWAIT_COMMAND(
          packet_factory->make_ble_read_suggested_default_data_length());
          packet_factory->make_ble_read_suggested_default_data_length());
      packet_parser->parse_ble_read_suggested_default_data_length_response(
      packet_parser->parse_ble_read_suggested_default_data_length_response(
@@ -448,6 +459,12 @@ static uint16_t get_ble_suggested_default_data_length(void) {
  return ble_suggested_default_data_length;
  return ble_suggested_default_data_length;
}
}


static uint16_t get_ble_maximum_tx_data_length(void) {
  CHECK(readable);
  CHECK(ble_supported);
  return ble_supported_max_tx_octets;
}

static uint16_t get_ble_maxium_advertising_data_length(void) {
static uint16_t get_ble_maxium_advertising_data_length(void) {
  CHECK(readable);
  CHECK(readable);
  CHECK(ble_supported);
  CHECK(ble_supported);
@@ -540,6 +557,7 @@ static const controller_t interface = {
    get_acl_packet_size_classic,
    get_acl_packet_size_classic,
    get_acl_packet_size_ble,
    get_acl_packet_size_ble,
    get_ble_suggested_default_data_length,
    get_ble_suggested_default_data_length,
    get_ble_maximum_tx_data_length,
    get_ble_maxium_advertising_data_length,
    get_ble_maxium_advertising_data_length,
    get_ble_number_of_supported_advertising_sets,
    get_ble_number_of_supported_advertising_sets,


+1 −0
Original line number Original line Diff line number Diff line
@@ -41,6 +41,7 @@ typedef struct {
  BT_HDR* (*make_ble_read_local_supported_features)(void);
  BT_HDR* (*make_ble_read_local_supported_features)(void);
  BT_HDR* (*make_ble_read_resolving_list_size)(void);
  BT_HDR* (*make_ble_read_resolving_list_size)(void);
  BT_HDR* (*make_ble_read_suggested_default_data_length)(void);
  BT_HDR* (*make_ble_read_suggested_default_data_length)(void);
  BT_HDR* (*make_ble_read_maximum_data_length)(void);
  BT_HDR* (*make_ble_read_maximum_advertising_data_length)(void);
  BT_HDR* (*make_ble_read_maximum_advertising_data_length)(void);
  BT_HDR* (*make_ble_read_number_of_supported_advertising_sets)(void);
  BT_HDR* (*make_ble_read_number_of_supported_advertising_sets)(void);
  BT_HDR* (*make_ble_set_event_mask)(const bt_event_mask_t* event_mask);
  BT_HDR* (*make_ble_set_event_mask)(const bt_event_mask_t* event_mask);
+6 −0
Original line number Original line Diff line number Diff line
@@ -67,6 +67,12 @@ typedef struct {
  void (*parse_ble_read_suggested_default_data_length_response)(
  void (*parse_ble_read_suggested_default_data_length_response)(
      BT_HDR* response, uint16_t* ble_default_packet_length_ptr);
      BT_HDR* response, uint16_t* ble_default_packet_length_ptr);


  void (*parse_ble_read_maximum_data_length_response)(
      BT_HDR* response, uint16_t* ble_supported_max_tx_octets,
      uint16_t* ble_supported_max_tx_time,
      uint16_t* ble_supported_max_rx_octets,
      uint16_t* ble_supported_max_rx_time);

  void (*parse_ble_read_maximum_advertising_data_length)(
  void (*parse_ble_read_maximum_advertising_data_length)(
      BT_HDR* response, uint16_t* ble_maximum_advertising_data_length_ptr);
      BT_HDR* response, uint16_t* ble_maximum_advertising_data_length_ptr);


+5 −0
Original line number Original line Diff line number Diff line
@@ -142,6 +142,10 @@ static BT_HDR* make_ble_read_suggested_default_data_length(void) {
  return make_command_no_params(HCI_BLE_READ_DEFAULT_DATA_LENGTH);
  return make_command_no_params(HCI_BLE_READ_DEFAULT_DATA_LENGTH);
}
}


static BT_HDR* make_ble_read_maximum_data_length(void) {
  return make_command_no_params(HCI_BLE_READ_MAXIMUM_DATA_LENGTH);
}

static BT_HDR* make_ble_read_maximum_advertising_data_length(void) {
static BT_HDR* make_ble_read_maximum_advertising_data_length(void) {
  return make_command_no_params(HCI_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH);
  return make_command_no_params(HCI_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH);
}
}
@@ -212,6 +216,7 @@ static const hci_packet_factory_t interface = {
    make_ble_read_local_supported_features,
    make_ble_read_local_supported_features,
    make_ble_read_resolving_list_size,
    make_ble_read_resolving_list_size,
    make_ble_read_suggested_default_data_length,
    make_ble_read_suggested_default_data_length,
    make_ble_read_maximum_data_length,
    make_ble_read_maximum_advertising_data_length,
    make_ble_read_maximum_advertising_data_length,
    make_ble_read_number_of_supported_advertising_sets,
    make_ble_read_number_of_supported_advertising_sets,
    make_ble_set_event_mask,
    make_ble_set_event_mask,
Loading