ot::DataPollHandler::RequestFrameChange() method
Requests a frame change for a given child. Two types of frame change requests are supported: 1) "Purge Frame" which indicates that the previous frame should be purged and any ongoing indirect tx aborted. 2) "Replace Frame" which indicates that the previous frame needs to be replaced with a new higher priority one. If there is no ongoing indirect frame transmission to the child, the request will be handled immediately and the callback `HandleFrameChangeDone()` is called directly from this method itself. This callback notifies the next layer that the indirect frame/message for the child can be safely updated. If there is an ongoing indirect frame transmission to this child, the request can not be handled immediately. The following options can happen based on the request type: 1) In case of "purge" request, the ongoing indirect transmission is aborted and upon completion of the abort the callback `HandleFrameChangeDone()` is invoked. 2) In case of "replace" request, the ongoing indirect transmission is allowed to finish (current tx attempt). 2.a) If the tx attempt is successful, the `Callbacks::HandleSentFrameToChild()` in invoked which indicates the "replace" could not happen (in this case the `HandleFrameChangeDone()` is no longer called). 2.b) If the ongoing tx attempt is unsuccessful, then callback `HandleFrameChangeDone()` is invoked to allow the next layer to update the frame/message for the child. If there is a pending request, a subsequent call to this method is ignored except for the case where pending request is for "replace frame" and new one is for "purge frame" where the "purge" overrides the "replace" request.
Arguments
aChange
The frame change type.
aChild
The child to process its frame change.
ot::DataPollHandler::RequestFrameChange() is called by 3 functions and calls 2 functions:
![]()
ot::DataPollHandler::RequestFrameChange()
ot::DataPollHandler::RequestFrameChange() reads 6 variables:
![]()
ot::DataPollHandler::RequestFrameChange()