docs.rs failed to build lora-phy-3.0.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build:
lora-phy-2.1.2
LoRa physical layer (the rustaceous radio)
Why?
- provide one straight-forward LoRa physical layer API which supports both LoRaWAN and point-to-point (P2P) use cases;
- support a variety of microcontroller unit (MCU) and LoRa chip combinations behind one API;
- enable LoRa features for any embedded framework which supports embedded-hal-async for the desired MCU/LoRa chip combination.
How?
- separate out modulation parameters and packet parameters as separate concerns to address the nuances in LoRa chip support and to allow flexible specification of various LoRaWAN and P2P send/receive channels, even in the same use case;
- allow the user to specify a LoRa chip kind (for example, Sx1261/2) and specific LoRa board type (for example, Stm32wlSx1262) and hide the control of that LoRa board behind the LoRa physical layer API;
- provide a minimal trait which must be implemented for each desired embedded framework/MCU type/LoRa chip type to allow this crate to interface to the LoRa chip within the embedded framework.
Wheretofore?
- while the current examples use the Embassy embedded framework, nrf52840, rp pico, stm32l0, and stm32wl MCUs, and Sx127x/Sx126x chips, this crate provides a path forward for other embedded frameworks, MCU types, and LoRa chips in a Rust development environment.
Examples
Please see examples for usage.
Chat
A public chat on LoRa/LoRaWAN topics using Rust is here:
- Matrix room
LoRa physical layer API
For users wishing to implement a LoRaWAN or P2P solution, the following implementation files provide the necessary context for lora-phy version 2.
- the API itself;
- pertinent ancillary information.
Examples of API usage:
- stm32wl P2P send and sleep;
- stm32wl LoRaWAN using rust-lorawan;
- stm32l0 P2P receive continuous;
- nrf52840 duty cycle receive;
- nrf52840 channel activity detection;
- rp pico P2P send and sleep using the second core.
Embedded framework/MCU support
For embedded framework developers wishing to add LoRa support as a feature for one or more MCU/LoRa chip combinations:
- the InterfaceVariant trait, which enables this lora-phy crate to interface to a specific embedded framework/MCU/LoRa chip combination.
Example InterfaceVariant implementations:
- Implementations based on
embedded-hal
andembedded-hal-async
traits. These are usable with any HAL crate that implements theembedded-hal
traits. - STM32WL + Embassy implementation. STM32WL is special because LoRa uses an internal SPI, this implementation shows how to use it with
embassy-stm32
.
LoRa chip support
For developers wishing to add support for new LoRa chips or enhance support for existing chips:
- the RadioKind trait, which must be implemented for each kind of LoRa chip for access through the lora-phy crate API;
- the interface implementation, which captures the three key read/write operations allowing control of the LoRa chip from this crate through either opcode or register operations.
Example RadioKind implementations and ancillary information:
- the Sx1261/2 radio kind;
- the Sx1276/7/8/9 radio kind.
LoRa board-specific support
Board-specific configuration can be handled via the chip driver specific Config struct.