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. |
||
|---|---|---|
| .github | ||
| TESTS | ||
| cmsis | ||
| drivers | ||
| events | ||
| features | ||
| hal | ||
| platform | ||
| rtos | ||
| targets | ||
| tools | ||
| .astyleignore | ||
| .astylerc | ||
| .coveragerc | ||
| .gitattributes | ||
| .gitignore | ||
| .pylintrc | ||
| .travis.yml | ||
| CONTRIBUTING.md | ||
| DOXYGEN_FRONTPAGE.md | ||
| Jenkinsfile | ||
| LICENSE | ||
| LICENSE-BSD-3-Clause | ||
| README.md | ||
| doxyfile_options | ||
| doxygen_options.json | ||
| logo.png | ||
| mbed.h | ||
| requirements.txt | ||
README.md
Arm Mbed OS is an open source embedded operating system designed specifically for the "things" in the Internet of Things. It includes all the features you need to develop a connected product based on an Arm Cortex-M microcontroller, including security, connectivity, an RTOS and drivers for sensors and I/O devices.
Mbed OS provides a platform that includes:
- Security foundations.
- Cloud management services.
- Drivers for sensors, I/O devices and connectivity.
Release notes
The release notes detail the current release. You can also find information about previous versions.
Getting started for developers
We have a developer website for asking questions, engaging with others, finding information on boards and components, using an online IDE and compiler, reading the documentation and learning about what's new and what's coming next in Mbed OS.
Getting started for contributors
We also have a contributing and publishing guide that covers licensing, contributor agreements and style guidelines.
