Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dereg individual #226

Merged
merged 31 commits into from
Apr 17, 2023
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
b4a2912
interface for tokens
forwardpointer Apr 12, 2023
40fb085
register callback interface change
forwardpointer Apr 12, 2023
715b84b
callback storage definition
forwardpointer Apr 12, 2023
984a16b
tmp
forwardpointer Apr 12, 2023
b265323
token definitions
forwardpointer Apr 12, 2023
b7b7b55
register device callbacks
forwardpointer Apr 12, 2023
bcfcd51
don't add nullptrs to the device callbacks; CallbacksPresent
forwardpointer Apr 12, 2023
ae802f2
register session callbacks
forwardpointer Apr 13, 2023
e493eeb
dereg session callbacks
forwardpointer Apr 13, 2023
9c0a2a7
deregister event callback
forwardpointer Apr 13, 2023
7e32943
dispatch callbacks
forwardpointer Apr 13, 2023
ad91190
Formatting
forwardpointer Apr 13, 2023
94a88be
the struct holding the callbacks needs to hold the callbacks as share…
forwardpointer Apr 14, 2023
de022ef
fix compiler erros for UwbConnector
forwardpointer Apr 14, 2023
c368040
pass the args by reference
forwardpointer Apr 14, 2023
2aa184e
we need to grab the lock prior to invoking callbacks
forwardpointer Apr 14, 2023
6067018
make everything compile
forwardpointer Apr 14, 2023
7976d61
Merge branch 'develop' into dereg_individual
forwardpointer Apr 14, 2023
75b6230
the struct of callbacks should hold weak pointers because they are no…
forwardpointer Apr 14, 2023
519be51
UwbConnector.cxx works with the new interface
forwardpointer Apr 14, 2023
211198a
make UwbDevice and UwbSession work with the new interface
forwardpointer Apr 14, 2023
a4320a8
addressed some nits
forwardpointer Apr 14, 2023
60d56ed
return true when it is able to cast the token correctly
forwardpointer Apr 14, 2023
6d7df6b
use a simple OR instead of a ternary
forwardpointer Apr 14, 2023
bfe5989
rename all cb and cbs to their respective full names
forwardpointer Apr 14, 2023
1aaf8e0
update docs
forwardpointer Apr 14, 2023
a2691a9
Merge branch 'develop' into dereg_individual
forwardpointer Apr 14, 2023
8dbed35
actually start and stop the notification listener as appropriate
forwardpointer Apr 15, 2023
9171a22
only start listening if there are now callbacks
forwardpointer Apr 15, 2023
d0033fc
forward args
forwardpointer Apr 17, 2023
4951c09
Merge branch 'develop' into dereg_individual
forwardpointer Apr 17, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 53 additions & 13 deletions lib/uwb/include/uwb/UwbRegisteredCallbacks.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,21 @@

namespace uwb
{
/**
* @brief Opaque class forward declaration to help with the deregistration
*
*/
class RegisteredCallbackToken;
namespace UwbRegisteredSessionEventCallbackTypes
{
using OnSessionEnded = std::function<void(::uwb::UwbSessionEndReason reason)>;
using OnRangingStarted = std::function<void()>;
using OnRangingStopped = std::function<void()>;
using OnPeerPropertiesChanged = std::function<void(const std::vector<UwbPeer> peersChanged)>;
using OnSessionMembershipChanged = std::function<void(const std::vector<UwbPeer> peersAdded, const std::vector<UwbPeer> peersRemoved)>;
forwardpointer marked this conversation as resolved.
Show resolved Hide resolved
}; // namespace UwbRegisteredSessionEventCallbackTypes

namespace UwbRegisteredDeviceEventCallbackTypes
{
using OnStatusChanged = std::function<void(::uwb::protocol::fira::UwbStatus)>;
using OnDeviceStatusChanged = std::function<void(::uwb::protocol::fira::UwbStatusDevice)>;
using OnSessionStatusChanged = std::function<void(::uwb::protocol::fira::UwbSessionStatus)>;
}; // namespace UwbRegisteredDeviceEventCallbackTypes

/**
* @brief Interface for receiving events from a UwbSession. This is the primary
Expand All @@ -30,21 +40,21 @@ struct UwbRegisteredSessionEventCallbacks
* @param session The session for which the event occurred.
* @param reason The reason the session ended.
forwardpointer marked this conversation as resolved.
Show resolved Hide resolved
*/
std::function<void(UwbSessionEndReason reason)> OnSessionEnded;
std::weak_ptr<UwbRegisteredSessionEventCallbackTypes::OnSessionEnded> OnSessionEnded;
forwardpointer marked this conversation as resolved.
Show resolved Hide resolved

/**
* @brief Invoked when active ranging starts.
*
* @param session The session for which the event occurred.
*/
std::function<void()> OnRangingStarted;
std::weak_ptr<UwbRegisteredSessionEventCallbackTypes::OnRangingStarted> OnRangingStarted;

/**
* @brief Invoked when active ranging stops.
*
* @param session The session for which the event occurred.
*/
std::function<void()> OnRangingStopped;
std::weak_ptr<UwbRegisteredSessionEventCallbackTypes::OnRangingStopped> OnRangingStopped;

/**
* @brief Invoked when the properties of a peer involved in the session
Expand All @@ -53,7 +63,7 @@ struct UwbRegisteredSessionEventCallbacks
* @param session The session for which the event occurred.
* @param peersChanged A list of peers whose properties changed.
*/
std::function<void(const std::vector<UwbPeer> peersChanged)> OnPeerPropertiesChanged;
std::weak_ptr<UwbRegisteredSessionEventCallbackTypes::OnPeerPropertiesChanged> OnPeerPropertiesChanged;

/**
* @brief Invoked when membership of one or more near peers involved in
Expand All @@ -64,7 +74,7 @@ struct UwbRegisteredSessionEventCallbacks
* @param peersAdded A list of peers that were added to the session.
* @param peersRemoved A list of peers that were removed from the session.
*/
std::function<void(const std::vector<UwbPeer> peersAdded, const std::vector<UwbPeer> peersRemoved)> OnSessionMembershipChanged;
std::weak_ptr<UwbRegisteredSessionEventCallbackTypes::OnSessionMembershipChanged> OnSessionMembershipChanged;
};

/**
Expand All @@ -78,21 +88,51 @@ struct UwbRegisteredDeviceEventCallbacks
*
* @param status The generic error that occurred.
*/
std::function<void(::uwb::protocol::fira::UwbStatus)> OnStatusChanged;
std::weak_ptr<UwbRegisteredDeviceEventCallbackTypes::OnStatusChanged> OnStatusChanged;

/**
* @brief Invoked when the device status changes.
*
* @param statusDevice
*/
std::function<void(::uwb::protocol::fira::UwbStatusDevice)> OnDeviceStatusChanged;
std::weak_ptr<UwbRegisteredDeviceEventCallbackTypes::OnDeviceStatusChanged> OnDeviceStatusChanged;

/**
* @brief Invoked when the status of a session changes.
*
* @param statusSession The new status of the session.
*/
std::function<void(::uwb::protocol::fira::UwbSessionStatus)> OnSessionStatusChanged;
std::weak_ptr<UwbRegisteredDeviceEventCallbackTypes::OnSessionStatusChanged> OnSessionStatusChanged;
};

/**
* @brief Opaque class forward declaration to help with the deregistration
*
*/
class RegisteredCallbackToken;

/**
* @brief structure containing the tokens corresponding to the callbacks you register
*
*/
struct UwbRegisteredSessionEventCallbackTokens
{
std::weak_ptr<RegisteredCallbackToken> OnSessionEndedToken;
std::weak_ptr<RegisteredCallbackToken> OnRangingStartedToken;
std::weak_ptr<RegisteredCallbackToken> OnRangingStoppedToken;
std::weak_ptr<RegisteredCallbackToken> OnPeerPropertiesChangedToken;
std::weak_ptr<RegisteredCallbackToken> OnSessionMembershipChangedToken;
};

/**
* @brief structure containing the tokens corresponding to the callbacks you register
*
*/
struct UwbRegisteredDeviceEventCallbackTokens
{
std::weak_ptr<RegisteredCallbackToken> OnStatusChangedToken;
std::weak_ptr<RegisteredCallbackToken> OnDeviceStatusChangedToken;
std::weak_ptr<RegisteredCallbackToken> OnSessionStatusChangedToken;
};

} // namespace uwb
Expand Down
Loading