OpenThread  1.05.03.02
Data Structures | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes
Notifier Class Reference

#include <notifier.hpp>

+ Inheritance diagram for Notifier:
+ Collaboration diagram for Notifier:

Data Structures

struct  ExternalCallback
 

Public Member Functions

bool HasSignaled (Event aEvent) const
 
bool IsPending (void) const
 
 Notifier (Instance &aInstance)
 
Error RegisterCallback (otStateChangedCallback aCallback, void *aContext)
 
void RemoveCallback (otStateChangedCallback aCallback, void *aContext)
 
void Signal (Event aEvent)
 
void SignalIfFirst (Event aEvent)
 
template<typename Type >
Error Update (Type &aVariable, const Type &aNewValue, Event aEvent)
 
- Public Member Functions inherited from InstanceLocator
InstanceGetInstance (void) const
 
- Public Member Functions inherited from GetProvider< InstanceLocator >
Type & Get (void) const
 

Private Member Functions

void EmitEvents (void)
 
const char * EventToString (Event aEvent) const
 
void LogEvents (Events aEvents) const
 
- Private Member Functions inherited from NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable (void)=default
 

Static Private Member Functions

static void EmitEvents (Tasklet &aTasklet)
 

Private Attributes

Events mEventsToSignal
 
ExternalCallback mExternalCallbacks [kMaxExternalHandlers]
 
Events mSignaledEvents
 
Tasklet mTask
 

Static Private Attributes

static constexpr uint16_t kFlagsStringBufferSize = kFlagsStringLineLimit + kMaxFlagNameLength
 
static constexpr uint16_t kFlagsStringLineLimit = 70
 
static constexpr uint16_t kMaxExternalHandlers = OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS
 
static constexpr uint8_t kMaxFlagNameLength = 25
 

Additional Inherited Members

- Protected Member Functions inherited from InstanceLocator
 InstanceLocator (Instance &aInstance)
 
- Protected Member Functions inherited from GetProvider< InstanceLocator >
 GetProvider (void)=default
 

Detailed Description

This class implements the OpenThread Notifier.

For core internal modules, Notifier class emits events directly to them by invoking method HandleNotifierEvents() on the module instance.

A otStateChangedCallback callback can be explicitly registered with the Notifier. This is mainly intended for use by external users (i.e.provided as an OpenThread public API). Max number of such callbacks that can be registered at the same time is specified by OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS configuration parameter.

Constructor & Destructor Documentation

§ Notifier()

Notifier ( Instance aInstance)
explicit

This constructor initializes a Notifier instance.

Parameters
[in]aInstanceA reference to OpenThread instance.

References Notifier::mExternalCallbacks.

Member Function Documentation

§ RegisterCallback()

Error RegisterCallback ( otStateChangedCallback  aCallback,
void *  aContext 
)

This method registers an otStateChangedCallback handler.

Parameters
[in]aCallbackA pointer to the handler function that is called to notify of the changes.
[in]aContextA pointer to arbitrary context information.
Return values
kErrorNoneSuccessfully registered the callback.
kErrorAlreadyThe callback was already registered.
kErrorNoBufsCould not add the callback due to resource constraints.

References ot::kErrorAlready, ot::kErrorNoBufs, ot::kErrorNone, Notifier::ExternalCallback::mContext, Notifier::mExternalCallbacks, Notifier::ExternalCallback::mHandler, and VerifyOrExit.

§ RemoveCallback()

void RemoveCallback ( otStateChangedCallback  aCallback,
void *  aContext 
)

This method removes/unregisters a previously registered otStateChangedCallback handler.

Parameters
[in]aCallbackA pointer to the callback function pointer.
[in]aContextA pointer to arbitrary context information.

References Notifier::mExternalCallbacks, and VerifyOrExit.

§ Signal()

void Signal ( Event  aEvent)

This method schedules signaling of an event.

Parameters
[in]aEventThe event to signal.

References Events::Add(), Notifier::mEventsToSignal, Notifier::mSignaledEvents, Notifier::mTask, and Tasklet::Post().

Referenced by Notifier::SignalIfFirst().

§ SignalIfFirst()

void SignalIfFirst ( Event  aEvent)

This method schedules signaling of am event only if the event has not been signaled before (first time signal).

Parameters
[in]aEventThe event to signal.

References Notifier::HasSignaled(), and Notifier::Signal().

§ IsPending()

bool IsPending ( void  ) const
inline

This method indicates whether or not an event signal callback is pending/scheduled.

Returns
TRUE if a callback is pending, FALSE otherwise.

§ HasSignaled()

bool HasSignaled ( Event  aEvent) const
inline

This method indicates whether or not an event has been signaled before.

Parameters
[in]aEventThe event to check.
Return values
TRUEThe event aEvent have been signaled before.
FALSEThe event aEvent has not been signaled before.

Referenced by Notifier::SignalIfFirst().

§ Update()

Error Update ( Type &  aVariable,
const Type &  aNewValue,
Event  aEvent 
)
inline

This template method updates a variable of a type Type with a new value and signals the given event.

If the variable is already set to the same value, this method returns kErrorAlready and the event is signaled using SignalIfFirst() (i.e., signal is scheduled only if event has not been signaled before).

The template Type should support comparison operator == and assignment operator =.

Parameters
[in,out]aVariableA reference to the variable to update.
[in]aNewValueThe new value.
[in]aEventThe event to signal.
Return values
kErrorNoneThe variable was update successfully and aEvent was signaled.
kErrorAlreadyThe variable was already set to the same value.

References ot::kErrorAlready, and ot::kErrorNone.

§ EmitEvents() [1/2]

void EmitEvents ( Tasklet aTasklet)
staticprivate

§ EmitEvents() [2/2]

void EmitEvents ( void  )
private

§ LogEvents()

void LogEvents ( Events  aEvents) const
private

Referenced by Notifier::EmitEvents().

§ EventToString()

const char * EventToString ( Event  aEvent) const
private

Referenced by Notifier::EmitEvents().

Field Documentation

§ kMaxExternalHandlers

constexpr uint16_t kMaxExternalHandlers = OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS
staticprivate

§ kFlagsStringLineLimit

constexpr uint16_t kFlagsStringLineLimit = 70
staticprivate

Referenced by Notifier::EmitEvents().

§ kMaxFlagNameLength

constexpr uint8_t kMaxFlagNameLength = 25
staticprivate

§ kFlagsStringBufferSize

constexpr uint16_t kFlagsStringBufferSize = kFlagsStringLineLimit + kMaxFlagNameLength
staticprivate

§ mEventsToSignal

Events mEventsToSignal
private

§ mSignaledEvents

Events mSignaledEvents
private

Referenced by Notifier::Signal().

§ mTask

Tasklet mTask
private

Referenced by Notifier::Signal().

§ mExternalCallbacks

ExternalCallback mExternalCallbacks[kMaxExternalHandlers]
private

The documentation for this class was generated from the following files:
© Copyright 1995-2022, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale