There are two logical sets of changes presented here:
* core/thread/mle: Follow remove/change/add pattern for unicast addresses
The goal here is to avoid modifying an address after it has been added to
the netif. That way we get reliable removal/insertion eventing. This
pattern has other advantages which will likely become apparent later.
* openthread-types: Add `OT_IP6_ML_ADDR_CHANGED` flag
This allows us to know precisely when the mesh local address has changed
its value.
Example state changes that will cause a notification:
- IPv6 address added/removed
- Device state (offline, detached, attached)
- Device role (disabled, detached, child, router, leader)
- Partition ID
- Key Sequence
- Child added/removed
* add mac layer counter
* add more counters and Doxygen for MAC counters
* have a seperate counter for acked data transmission and refine the code based on the comments
* refine counters for acked and unacked transmissions
* fix check test error
* refine code style and use VerifyOrExit to exit
* move all events tracker to tx/rx done task, and add more counters
* fix other error counter
* refine counters structure to be clearer
* add Doxygen for the added thread errors
* fix conflicts
* Added platform/toolchain.h toolchain abstraction layer via macros:
OT_TOOL_PACKED_BEGIN
OT_TOOL_PACKED_END
OT_TOOL_DEPRECATED(symbol)
* Make pretty. Rekick travis-ci.
* Added doxygen. Resolved review comments.
* Fixed doxygen sample for OT_TOOL_PACKED to include type name.
* Renamed OT_TOOL_PACKED_FIELD to simplify code searches for usage. Fixed all nested instances to use new naming.
* Fixed OT_TOOL_PACKED_FIELD renaming in doxygen.
* Make pretty.
* Documentation clarifications.
* Moved example into overview section.
* Fixed sdcc comment.
* Revised sdcc comment.
* Fix code style in toolchain packed doxygen example.
* Fixed example. Moved toolchain test to better match code style.
* Added test for OT_TOOL_PACKED_FIELD.
* Added support for clang. Just routes to gcc __attributes__. Verified by running unit test through clang on macos.
Some radio chips have memory-mapped regions for transmit and receive buffers.
This change allows the radio driver to pass those buffers, when available,
directly to upper layers and avoid unnecessary copies.
* Add an LQI field to the radio packet structure.
* Add an LQI field to the ThreadMessageInfo.
* Add an LQI field to the scan result.
* Print LQI value in CLI scan result.
The following checks were added:
1) Any unsecure 6LoWPAN Mesh frames are dropped.
2) Any unsecure 6LoWPAN Fragment frames are only added to unsecure reassembly buffers.
3) Any unsecure MAC Data Poll frames are dropped.
4) Any unsecure IPv6 datagrams must have:
a) Destination with link-local scope,
b) Next Header set to UDP,
c) UDP Destination Port set to MLE,
d) Length long enough to carry IPv6 and UDP headers.
* Add 'pretty' target to reformat sources to be compliant with code style.
* Add 'pretty-check' target to check if sources are compliant with code style.
* Update travis-ci script to use 'pretty-check' and enforce code style.
* The 'pretty' and 'pretty-check' targets rely on the 'astyle' tool.