mirror of
https://github.com/espressif/openthread.git
synced 2026-07-09 05:40:27 +00:00
[locator] adding Get<Type> to InstanceLocator (#3714)
This commit changes how the objects in OpenThread access each other. It adds a template `Get<Type>()` method in `InstanceLocator`. This method returns a reference to a given `Type` object belonging to the OpenThread instance (e.g. `Get<MeshForwarder>()` returns a reference to `MeshForwarder` object on the OpenThread instance). The `InstanceLocator` is used as base class of all OpenThread classes so every class can easily access any other object. This commit also changes how the main instance is retrieved in `InstanceLocator` for the single-instance case. The method `GetInstance()` directly uses the raw buffer `gInstanceRaw`. This change helps make the `GetInstance()` and in turn all `Get<Type>()` methods in-line. This commit also removes the existing getters across all classes to use the new `Get<Type>()` model.
This commit is contained in:
committed by
Jonathan Hui
parent
9dfa4e2b31
commit
8f112eeb5a
@@ -40,6 +40,7 @@
|
||||
#include <openthread/platform/radio.h>
|
||||
|
||||
#include "common/instance.hpp"
|
||||
#include "common/locator-getters.hpp"
|
||||
#include "common/logging.hpp"
|
||||
#include "common/new.hpp"
|
||||
|
||||
@@ -92,14 +93,14 @@ otError otSetStateChangedCallback(otInstance *aInstance, otStateChangedCallback
|
||||
{
|
||||
Instance &instance = *static_cast<Instance *>(aInstance);
|
||||
|
||||
return instance.GetNotifier().RegisterCallback(aCallback, aContext);
|
||||
return instance.Get<Notifier>().RegisterCallback(aCallback, aContext);
|
||||
}
|
||||
|
||||
void otRemoveStateChangeCallback(otInstance *aInstance, otStateChangedCallback aCallback, void *aContext)
|
||||
{
|
||||
Instance &instance = *static_cast<Instance *>(aInstance);
|
||||
|
||||
instance.GetNotifier().RemoveCallback(aCallback, aContext);
|
||||
instance.Get<Notifier>().RemoveCallback(aCallback, aContext);
|
||||
}
|
||||
|
||||
void otInstanceFactoryReset(otInstance *aInstance)
|
||||
|
||||
Reference in New Issue
Block a user