2 releases

new 0.1.1 Dec 17, 2024
0.1.0 Dec 17, 2024

#445 in Procedural macros

Download history 177/week @ 2024-12-12

177 downloads per month
Used in 2 crates (via dot15d4-frame)

MIT/Apache

15KB
264 lines

dot15d4 codecov example workflow

dot15d4 is an IEEE 802.15.4 implementation written in Rust. The library is designed to be used in embedded systems, and is no_std by default.

The dot15d4-frame library is used to parse and emit IEEE 802.15.4 frames. It uses the same style of parsing and emitting as the smoltcp library.

Another library that is similar to dot15d4-frame is the ieee802154 library.

The dot15d4-macros library contains utility macros that are used in the dot15d4-frame library.

Usage

[!NOTE] This library is still in development and is not yet published to crates.io.

Add this to your Cargo.toml:

[dependencies]
dot15d4 = "0.1.0"

Configurable features

  • std: Enables std only features
  • log: Use the log crate for structured logging
  • defmt: Use the defmt crate for structured logging

Configurable environment variables

  • DOT15D4_MAC_MIN_BE (default: 0): Minimum backoff exponent used in CSMA
  • DOT15D4_MAC_MAX_BE (default: 8): Maximum backoff exponent used in CSMA
  • DOT15D4_MAC_UNIT_BACKOFF_DURATION (default: 320us): The time of one backoff period
  • DOT15D4_MAC_MAX_FRAME_RETRIES (default: 3): Maximum CCA/ACK rounds
  • DOT15D4_MAC_AIFS_PERIOD (default: 1ms): The minimal time for the receiving end to go from transmitting to receiving mode when sending an ACK
  • DOT15D4_MAC_SIFS_PERIOD (default: 1ms): The inter-frame spacing time for short frames
  • DOT15D4_MAC_LIFS_PERIOD (default: 10ms): The inter-frame spacing time for long frames

For more information, see the API documentation.

dot15d4 as a binary

This repository also contains a binary that can be used to parse IEEE 802.15.4 frames.

Usage

dot15d4 40ebcdabffff0100010001000100003f1188061a0e0000000000011c0001c800011b00

Output:

Frame Control
  frame type: Enhanced Beacon
  security: 0
  frame pending: 0
  ack request: 0
  pan id compression: 1
  sequence number suppression: 1
  information elements present: 1
  dst addressing mode: Short
  src addressing mode: Extended
  frame version: 2 (Ieee802154_2020)
Addressing
  dst pan id: abcd
  dst addr: ff:ff (broadcast)
  src addr: 00:01:00:01:00:01:00:01
Information Elements
  Header Information Elements
    HeaderTermination1
  Payload Information Elements
    MLME
      TschSynchronization
        ASN: 14, join metric: 0
      TschTimeslot
        slot ID: 0
      ChannelHopping
        sequence ID: 0
      TschSlotframeAndLink
        #slot frames: 0

Coverage

Coverage

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~240–690KB
~16K SLoC