Skip to content

Commit 32e95f0

Browse files
author
Hasnain Virk
committed
State Machine rework
There had been essentially two state machines running in our stack which was too cumbersome and was not alligned in any symmetry. In this work we make sure that: * There are no callbacks from the MAC layer to Stack controller layer. * Primitives are made local to the mac layer and are presented as read-only to the stack controller layer. * Interrupt handling and processing is moved to the stack controller layer. * Reception is divided into smaller units, seperating handling of Join Accept and normal data frames. MIC gets its own unit. * Extraction of data and MAC commands from the payload is also being done now in its own method. * To ensure integrity of the stack, and sanctity of the radio payload, we copy the radio payload buffer immediately in the rx interrupt and hoist a flag that prevents another interrupt from happening for a short while when we are processing the previous packet. * If an automatic uplink is on going, we do not send a TX_DONE event to application anymore as that is logically incorrect. * state_controller() is the central engine for the state machine. To save code space and memory, we are not handling each and every state in the state_controller(). Some of the states which have no processing to be done, are explicitely set. * For all the states who need special processing, seperate methods are added. * Class A always run to completion to IDLE and CLass C always runs to completion as RECEIVING.
1 parent 50c39ce commit 32e95f0

File tree

5 files changed

+1616
-1637
lines changed

5 files changed

+1616
-1637
lines changed

0 commit comments

Comments
 (0)