Loading system/gd/l2cap/Android.bp +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", ], } Loading @@ -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", ], } Loading system/gd/l2cap/classic_fixed_channel_manager.cc +9 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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; } Loading system/gd/l2cap/classic_fixed_channel_manager.h +16 −3 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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 Loading system/gd/l2cap/classic_fixed_channel_service.cc +8 −1 Original line number Diff line number Diff line Loading @@ -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 system/gd/l2cap/classic_fixed_channel_service.h +18 −1 Original line number Diff line number Diff line Loading @@ -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()>; /** Loading @@ -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 Loading
system/gd/l2cap/Android.bp +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", ], } Loading @@ -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", ], } Loading
system/gd/l2cap/classic_fixed_channel_manager.cc +9 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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; } Loading
system/gd/l2cap/classic_fixed_channel_manager.h +16 −3 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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 Loading
system/gd/l2cap/classic_fixed_channel_service.cc +8 −1 Original line number Diff line number Diff line Loading @@ -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
system/gd/l2cap/classic_fixed_channel_service.h +18 −1 Original line number Diff line number Diff line Loading @@ -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()>; /** Loading @@ -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