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

Commit ed4b6a14 authored by Chris Manton's avatar Chris Manton Committed by Automerger Merge Worker
Browse files

Merge changes I9e87cca9,Ia1ed4072,I3108b5ec,I178a2c3a,Ie20a3097, ... into main am: e545ba38

parents 76ecb3ef e545ba38
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@
#include "hci/controller_interface.h"
#include "internal_include/stack_config.h"
#include "main/shim/entry.h"
#include "os/log.h"
#include "osi/include/properties.h"
#include "stack/include/bt_types.h"
#include "stack/include/btm_api_types.h"
@@ -1091,7 +1090,7 @@ public:
    }
  } state_machine_callbacks_;

  static class BroadcastAdvertisingCallbacks : public AdvertisingCallbacks {
  static class BroadcastAdvertisingCallbacks : public ::AdvertisingCallbacks {
    void OnAdvertisingSetStarted(int reg_id, uint8_t advertiser_id,
                                 int8_t tx_power, uint8_t status) {
      if (!instance) return;
+16 −15
Original line number Diff line number Diff line
@@ -425,63 +425,64 @@ class LeAdvertisingManagerFacadeService : public LeAdvertisingManagerFacade::Ser
    callback_events_.OnIncomingEvent(msg);
  };

  void OnAdvertisingEnabled(uint8_t advertiser_id, bool enable, uint8_t status) {
  void OnAdvertisingEnabled(uint8_t advertiser_id, bool enable, AdvertisingStatus status) {
    AdvertisingCallbackMsg msg;
    msg.set_message_type(AdvertisingCallbackMsgType::ADVERTISING_ENABLED);
    msg.set_advertiser_id(advertiser_id);
    msg.set_status(static_cast<facade::AdvertisingStatus>(status));
    msg.set_data(enable ? 1 : 0);
    callback_events_.OnIncomingEvent(msg);
  };
  }

  void OnAdvertisingDataSet(uint8_t advertiser_id, uint8_t status) {
  void OnAdvertisingDataSet(uint8_t advertiser_id, AdvertisingStatus status) {
    AdvertisingCallbackMsg msg;
    msg.set_message_type(AdvertisingCallbackMsgType::ADVERTISING_DATA_SET);
    msg.set_advertiser_id(advertiser_id);
    msg.set_status(static_cast<facade::AdvertisingStatus>(status));
    callback_events_.OnIncomingEvent(msg);
  };
  }

  void OnScanResponseDataSet(uint8_t advertiser_id, uint8_t status) {
  void OnScanResponseDataSet(uint8_t advertiser_id, AdvertisingStatus status) {
    AdvertisingCallbackMsg msg;
    msg.set_message_type(AdvertisingCallbackMsgType::SCAN_RESPONSE_DATA_SET);
    msg.set_advertiser_id(advertiser_id);
    msg.set_status(static_cast<facade::AdvertisingStatus>(status));
    callback_events_.OnIncomingEvent(msg);
  };
  }

  void OnAdvertisingParametersUpdated(
      uint8_t advertiser_id, int8_t /* tx_power */, uint8_t status) {
  void OnAdvertisingParametersUpdated(uint8_t advertiser_id, int8_t /* tx_power */,
                                      AdvertisingStatus status) {
    AdvertisingCallbackMsg msg;
    msg.set_message_type(AdvertisingCallbackMsgType::ADVERTISING_PARAMETERS_UPDATED);
    msg.set_advertiser_id(advertiser_id);
    msg.set_status(static_cast<facade::AdvertisingStatus>(status));
    callback_events_.OnIncomingEvent(msg);
  };
  }

  void OnPeriodicAdvertisingParametersUpdated(uint8_t advertiser_id, uint8_t status) {
  void OnPeriodicAdvertisingParametersUpdated(uint8_t advertiser_id, AdvertisingStatus status) {
    AdvertisingCallbackMsg msg;
    msg.set_message_type(AdvertisingCallbackMsgType::PERIODIC_ADVERTISING_PARAMETERS_UPDATED);
    msg.set_advertiser_id(advertiser_id);
    msg.set_status(static_cast<facade::AdvertisingStatus>(status));
    callback_events_.OnIncomingEvent(msg);
  };
  }

  void OnPeriodicAdvertisingDataSet(uint8_t advertiser_id, uint8_t status) {
  void OnPeriodicAdvertisingDataSet(uint8_t advertiser_id, AdvertisingStatus status) {
    AdvertisingCallbackMsg msg;
    msg.set_message_type(AdvertisingCallbackMsgType::PERIODIC_ADVERTISING_DATA_SET);
    msg.set_advertiser_id(advertiser_id);
    msg.set_status(static_cast<facade::AdvertisingStatus>(status));
    callback_events_.OnIncomingEvent(msg);
  };
  }

  void OnPeriodicAdvertisingEnabled(uint8_t advertiser_id, bool /* enable */, uint8_t status) {
  void OnPeriodicAdvertisingEnabled(uint8_t advertiser_id, bool /* enable */,
                                    AdvertisingStatus status) {
    AdvertisingCallbackMsg msg;
    msg.set_message_type(AdvertisingCallbackMsgType::PERIODIC_ADVERTISING_ENABLED);
    msg.set_advertiser_id(advertiser_id);
    msg.set_status(static_cast<facade::AdvertisingStatus>(status));
    callback_events_.OnIncomingEvent(msg);
  };
  }

  void OnOwnAddressRead(uint8_t advertiser_id, uint8_t address_type, Address address) {
    log::info("OnOwnAddressRead Address:{}, address_type:{}", address, address_type);
+7 −5
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@
#include <memory>
#include <mutex>

#include "common/init_flags.h"
#include "common/strings.h"
#include "hardware/ble_advertiser.h"
#include "hci/acl_manager.h"
@@ -33,7 +32,6 @@
#include "hci/le_advertising_interface.h"
#include "module.h"
#include "os/handler.h"
#include "os/log.h"
#include "os/system_properties.h"
#include "packet/fragmenting_inserter.h"

@@ -343,7 +341,13 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
          advertising_sets_[advertiser_id].timeout_callback.Reset();
        }
      } else {
        advertising_callbacks_->OnAdvertisingEnabled(advertiser_id, false, (uint8_t)status);
        if (status == ErrorCode::LIMIT_REACHED) {
          advertising_callbacks_->OnAdvertisingEnabled(advertiser_id, false,
                                                       AdvertisingCallback::TOO_MANY_ADVERTISERS);
        } else {
          advertising_callbacks_->OnAdvertisingEnabled(advertiser_id, false,
                                                       AdvertisingCallback::TIMEOUT);
        }
      }
      return;
    }
@@ -1092,7 +1096,6 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
          send_data_fragment(advertiser_id, set_scan_rsp, data, Operation::COMPLETE_ADVERTISEMENT);
        } else {
          std::vector<GapData> sub_data;
          uint16_t sub_data_len = 0;
          Operation operation = Operation::FIRST_FRAGMENT;

          std::vector<std::unique_ptr<packet::RawBuilder>> fragments;
@@ -1289,7 +1292,6 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
      send_periodic_data_fragment(advertiser_id, data, Operation::COMPLETE_ADVERTISEMENT);
    } else {
      std::vector<GapData> sub_data;
      uint16_t sub_data_len = 0;
      Operation operation = Operation::FIRST_FRAGMENT;

      std::vector<std::unique_ptr<packet::RawBuilder>> fragments;
+25 −21
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@
#include <vector>

#include "common/callback.h"
#include "hci/address_with_type.h"
#include "hci/hci_packets.h"
#include "module.h"

@@ -85,19 +84,24 @@ class AdvertisingCallback {
     TOO_MANY_ADVERTISERS,
     ALREADY_STARTED,
     INTERNAL_ERROR,
    FEATURE_UNSUPPORTED
     FEATURE_UNSUPPORTED,
     TIMEOUT
   };

   virtual ~AdvertisingCallback() = default;
  virtual void OnAdvertisingSetStarted(
      int reg_id, uint8_t advertiser_id, int8_t tx_power, AdvertisingStatus status) = 0;
  virtual void OnAdvertisingEnabled(uint8_t advertiser_id, bool enable, uint8_t status) = 0;
  virtual void OnAdvertisingDataSet(uint8_t advertiser_id, uint8_t status) = 0;
  virtual void OnScanResponseDataSet(uint8_t advertiser_id, uint8_t status) = 0;
  virtual void OnAdvertisingParametersUpdated(uint8_t advertiser_id, int8_t tx_power, uint8_t status) = 0;
  virtual void OnPeriodicAdvertisingParametersUpdated(uint8_t advertiser_id, uint8_t status) = 0;
  virtual void OnPeriodicAdvertisingDataSet(uint8_t advertiser_id, uint8_t status) = 0;
  virtual void OnPeriodicAdvertisingEnabled(uint8_t advertiser_id, bool enable, uint8_t status) = 0;
   virtual void OnAdvertisingSetStarted(int reg_id, uint8_t advertiser_id, int8_t tx_power,
                                        AdvertisingStatus status) = 0;
   virtual void OnAdvertisingEnabled(uint8_t advertiser_id, bool enable,
                                     AdvertisingStatus status) = 0;
   virtual void OnAdvertisingDataSet(uint8_t advertiser_id, AdvertisingStatus status) = 0;
   virtual void OnScanResponseDataSet(uint8_t advertiser_id, AdvertisingStatus status) = 0;
   virtual void OnAdvertisingParametersUpdated(uint8_t advertiser_id, int8_t tx_power,
                                               AdvertisingStatus status) = 0;
   virtual void OnPeriodicAdvertisingParametersUpdated(uint8_t advertiser_id,
                                                       AdvertisingStatus status) = 0;
   virtual void OnPeriodicAdvertisingDataSet(uint8_t advertiser_id, AdvertisingStatus status) = 0;
   virtual void OnPeriodicAdvertisingEnabled(uint8_t advertiser_id, bool enable,
                                             AdvertisingStatus status) = 0;
   virtual void OnOwnAddressRead(uint8_t advertiser_id, uint8_t address_type, Address address) = 0;
};

+12 −8
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@
#include <algorithm>
#include <chrono>
#include <future>
#include <map>

#include "common/bind.h"
#include "hardware/ble_advertiser.h"
@@ -240,13 +239,18 @@ class LeAdvertisingManagerTest : public ::testing::Test {
   public:
    MOCK_METHOD4(
        OnAdvertisingSetStarted, void(int reg_id, uint8_t advertiser_id, int8_t tx_power, AdvertisingStatus status));
    MOCK_METHOD3(OnAdvertisingEnabled, void(uint8_t advertiser_id, bool enable, uint8_t status));
    MOCK_METHOD2(OnAdvertisingDataSet, void(uint8_t advertiser_id, uint8_t status));
    MOCK_METHOD2(OnScanResponseDataSet, void(uint8_t advertiser_id, uint8_t status));
    MOCK_METHOD3(OnAdvertisingParametersUpdated, void(uint8_t advertiser_id, int8_t tx_power, uint8_t status));
    MOCK_METHOD2(OnPeriodicAdvertisingParametersUpdated, void(uint8_t advertiser_id, uint8_t status));
    MOCK_METHOD2(OnPeriodicAdvertisingDataSet, void(uint8_t advertiser_id, uint8_t status));
    MOCK_METHOD3(OnPeriodicAdvertisingEnabled, void(uint8_t advertiser_id, bool enable, uint8_t status));
    MOCK_METHOD3(OnAdvertisingEnabled,
                 void(uint8_t advertiser_id, bool enable, AdvertisingStatus status));
    MOCK_METHOD2(OnAdvertisingDataSet, void(uint8_t advertiser_id, AdvertisingStatus status));
    MOCK_METHOD2(OnScanResponseDataSet, void(uint8_t advertiser_id, AdvertisingStatus status));
    MOCK_METHOD3(OnAdvertisingParametersUpdated,
                 void(uint8_t advertiser_id, int8_t tx_power, AdvertisingStatus status));
    MOCK_METHOD2(OnPeriodicAdvertisingParametersUpdated,
                 void(uint8_t advertiser_id, AdvertisingStatus status));
    MOCK_METHOD2(OnPeriodicAdvertisingDataSet,
                 void(uint8_t advertiser_id, AdvertisingStatus status));
    MOCK_METHOD3(OnPeriodicAdvertisingEnabled,
                 void(uint8_t advertiser_id, bool enable, AdvertisingStatus status));
    MOCK_METHOD3(OnOwnAddressRead, void(uint8_t advertiser_id, uint8_t address_type, Address address));
  } mock_advertising_callback_;
};
Loading