8 releases (5 breaking)
0.12.2 | Aug 12, 2024 |
---|---|
0.12.1 | May 16, 2024 |
0.12.0 | Jan 20, 2024 |
0.11.0 | Sep 25, 2023 |
0.7.1 | Apr 26, 2022 |
#668 in Embedded development
Used in lora-phy
350KB
7.5K
SLoC
lorawan-device
This is an experimental LoRaWAN device stack with both non-blocking (nb_device
) and async (async_device
)
implementations. Both implementations have their respective radio::PhyRxTx
traits that describe the radio interface
required.
Note: The lorawan-radio
feature in the lora-phy
crate provides LorawanRadio
as an async implementation of
radio::PhyRxTx
.
Both stacks share a dependency on the internal module, mac
where LoRaWAN 1.0.x is approximately implemented:
- Class A device behavior
- Class C device behavior (async only)
- Over-the-Air Activation (OTAA) and Activation by Personalization (ABP)
- CFList is supported for fixed and dynamic channel plans
- Regional support for AS923_1, AS923_2, AS923_3, AS923_4, AU915, EU868, EU433, IN865, US915 (note: regional power limits are not enforced (#168)
Currently, MAC commands are minimally mocked. For example, an ADRReq is responded with an ADRResp, but not much is actually done with the payload.
Furthermore, both async and non-blocking implementation do not implement any retries for failed joins or failed confirmed uplinks. It is up to the client to implement retry behavior; see the examples for more.
Please see examples for usage.
A public chat on LoRa/LoRaWAN topics using Rust is here.
Dependencies
~1.6–2.3MB
~45K SLoC