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

Commit 29ef3cfa authored by Chris Manton's avatar Chris Manton Committed by android-build-merger
Browse files

L2CAP classic fixed service manager am: d9392165 am: 913a8ac0

am: f207bf98

Change-Id: I49f0ac617b5038aa8a2d1e5f7b3259a1fb1b45ea
parents 8bdcbb1e f207bf98
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
filegroup {
    name: "BluetoothL2capSources",
    srcs: [
        "fcs.cc",
        "l2cap_layer.cc",
        "classic_fixed_channel.cc",
        "classic_fixed_channel_manager.cc",
        "classic_fixed_channel_service.cc",
        "internal/classic_fixed_channel_service_manager_impl.cc",
    ],
}

@@ -12,7 +14,7 @@ filegroup {
    name: "BluetoothL2capTestSources",
    srcs: [
        "l2cap_packet_test.cc",
        "fcs.cc",
        "internal/classic_fixed_channel_service_manager_test.cc",
        "signal_id_test.cc",
    ],
}
+9 −0
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@
 */

#include "l2cap/classic_fixed_channel_manager.h"
#include "l2cap/internal/classic_fixed_channel_service.h"
#include "l2cap/internal/classic_fixed_channel_service_manager_impl.h"

namespace bluetooth {
namespace l2cap {
@@ -28,6 +30,13 @@ bool ClassicFixedChannelManager::ConnectServices(common::Address device,
bool ClassicFixedChannelManager::RegisterService(Cid cid, const SecurityPolicy& security_policy,
                                                 OnRegistrationCompleteCallback on_registration_complete,
                                                 OnConnectionOpenCallback on_connection_open, os::Handler* handler) {
  internal::ClassicFixedChannelServiceImpl::Builder builder;
  builder.SetUserHandler(handler)
      .SetOnRegister(std::move(on_registration_complete))
      .SetOnChannelOpen(std::move(on_connection_open));

  l2cap_layer_handler_->Post(common::BindOnce(&internal::ClassicFixedChannelServiceManagerImpl::Register,
                                              common::Unretained(manager_), cid, std::move(builder)));
  return true;
}

+16 −3
Original line number Diff line number Diff line
@@ -27,18 +27,23 @@
namespace bluetooth {
namespace l2cap {

namespace internal {
class ClassicFixedChannelServiceManagerImpl;
}

class ClassicFixedChannelManager {
 public:
  /**
   * OnConnectionFailureCallback(std::string failure_reason);
   */
  using OnConnectionFailureCallback = common::OnceCallback<void(std::string)>;
  using OnConnectionFailureCallback = common::Callback<void(std::string)>;

  /**
   * OnConnectionOpenCallback(ClassicFixedChannel channel);
   */
  using OnConnectionOpenCallback = common::OnceCallback<void(ClassicFixedChannel)>;
  using OnConnectionOpenCallback = common::Callback<void(ClassicFixedChannel)>;

  enum RegistrationResult { SUCCESS, FAIL };
  enum class RegistrationResult { SUCCESS, FAIL };

  /**
   * OnRegistrationFailureCallback(RegistrationResult result, ClassicFixedChannelService service);
@@ -97,6 +102,14 @@ class ClassicFixedChannelManager {
  bool RegisterService(Cid cid, const SecurityPolicy& security_policy,
                       OnRegistrationCompleteCallback on_registration_complete,
                       OnConnectionOpenCallback on_connection_open, os::Handler* handler);

  // The constructor is not to be used by user code
  ClassicFixedChannelManager(internal::ClassicFixedChannelServiceManagerImpl* manager, os::Handler* l2cap_layer_handler)
      : manager_(manager), l2cap_layer_handler_(l2cap_layer_handler) {}

 private:
  internal::ClassicFixedChannelServiceManagerImpl* manager_ = nullptr;
  os::Handler* l2cap_layer_handler_ = nullptr;
};

}  // namespace l2cap
+8 −1
Original line number Diff line number Diff line
@@ -15,11 +15,18 @@
 */

#include "l2cap/classic_fixed_channel_service.h"
#include "l2cap/internal/classic_fixed_channel_service_manager_impl.h"

namespace bluetooth {
namespace l2cap {

void ClassicFixedChannelService::Unregister(OnUnregisteredCallback on_unregistered) {}
void ClassicFixedChannelService::Unregister(OnUnregisteredCallback on_unregistered,
                                            os::Handler* on_unregistered_handler) {
  ASSERT_LOG(manager_ != nullptr, "this service is invalid");
  l2cap_layer_handler_->Post(common::BindOnce(&internal::ClassicFixedChannelServiceManagerImpl::Unregister,
                                              common::Unretained(manager_), cid_, std::move(on_unregistered),
                                              on_unregistered_handler));
}

}  // namespace l2cap
}  // namespace bluetooth
 No newline at end of file
+18 −1
Original line number Diff line number Diff line
@@ -18,12 +18,20 @@

#include "common/address.h"
#include "common/callback.h"
#include "l2cap/cid.h"
#include "os/handler.h"

namespace bluetooth {
namespace l2cap {

namespace internal {
class ClassicFixedChannelServiceManagerImpl;
}

class ClassicFixedChannelService {
 public:
  ClassicFixedChannelService() = default;

  using OnUnregisteredCallback = common::OnceCallback<void()>;

  /**
@@ -32,7 +40,16 @@ class ClassicFixedChannelService {
   *
   * @param on_unregistered will be triggered when unregistration is complete
   */
  void Unregister(OnUnregisteredCallback on_unregistered);
  void Unregister(OnUnregisteredCallback on_unregistered, os::Handler* on_unregistered_handler);

  friend internal::ClassicFixedChannelServiceManagerImpl;

 private:
  ClassicFixedChannelService(Cid cid, internal::ClassicFixedChannelServiceManagerImpl* manager, os::Handler* handler)
      : cid_(cid), manager_(manager), l2cap_layer_handler_(handler) {}
  Cid cid_ = kInvalidCid;
  internal::ClassicFixedChannelServiceManagerImpl* manager_ = nullptr;
  os::Handler* l2cap_layer_handler_;
};

}  // namespace l2cap
Loading