uORB: add Subscription method to change instance

This commit is contained in:
Daniel Agar
2020-09-01 13:53:15 -04:00
parent 787f9c1213
commit 94f7b50970
3 changed files with 62 additions and 0 deletions

View File

@@ -98,6 +98,37 @@ public:
_registered = false;
}
/**
* Change subscription instance
* @param instance The new multi-Subscription instance
*/
bool ChangeInstance(uint8_t instance)
{
bool ret = false;
if (instance != get_instance()) {
const bool registered = _registered;
if (registered) {
unregisterCallback();
}
if (_subscription.ChangeInstance(instance)) {
ret = true;
}
if (registered) {
registerCallback();
}
} else {
// already on desired index
return true;
}
return ret;
}
virtual void call() = 0;
protected: