Sync subghz peripheral support with stm32wlxx-hal
This commit is contained in:
@ -52,7 +52,7 @@ impl FskBandwidth {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::FskBandwidth;
|
||||
/// use stm32wlxx_hal::subghz::FskBandwidth;
|
||||
///
|
||||
/// assert_eq!(FskBandwidth::Bw4.hertz(), 4_800);
|
||||
/// assert_eq!(FskBandwidth::Bw5.hertz(), 5_800);
|
||||
@ -109,7 +109,7 @@ impl FskBandwidth {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::FskBandwidth;
|
||||
/// use stm32wlxx_hal::subghz::FskBandwidth;
|
||||
///
|
||||
/// assert_eq!(FskBandwidth::from_bits(0x1F), Ok(FskBandwidth::Bw4));
|
||||
/// assert_eq!(FskBandwidth::from_bits(0x17), Ok(FskBandwidth::Bw5));
|
||||
@ -206,7 +206,7 @@ impl FskBitrate {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::FskBitrate;
|
||||
/// use stm32wlxx_hal::subghz::FskBitrate;
|
||||
///
|
||||
/// const BITRATE: FskBitrate = FskBitrate::from_bps(9600);
|
||||
/// assert_eq!(BITRATE.as_bps(), 9600);
|
||||
@ -235,7 +235,7 @@ impl FskBitrate {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::FskBitrate;
|
||||
/// use stm32wlxx_hal::subghz::FskBitrate;
|
||||
///
|
||||
/// const BITRATE: FskBitrate = FskBitrate::from_raw(0x7D00);
|
||||
/// assert_eq!(BITRATE.as_bps(), 32_000);
|
||||
@ -251,7 +251,7 @@ impl FskBitrate {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::FskBitrate;
|
||||
/// use stm32wlxx_hal::subghz::FskBitrate;
|
||||
///
|
||||
/// const BITS_PER_SEC: u32 = 9600;
|
||||
/// const BITRATE: FskBitrate = FskBitrate::from_bps(BITS_PER_SEC);
|
||||
@ -296,7 +296,7 @@ impl FskFdev {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::FskFdev;
|
||||
/// use stm32wlxx_hal::subghz::FskFdev;
|
||||
///
|
||||
/// const FDEV: FskFdev = FskFdev::from_hertz(31_250);
|
||||
/// assert_eq!(FDEV.as_hertz(), 31_250);
|
||||
@ -317,7 +317,7 @@ impl FskFdev {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::FskFdev;
|
||||
/// use stm32wlxx_hal::subghz::FskFdev;
|
||||
///
|
||||
/// const FDEV: FskFdev = FskFdev::from_raw(0x8000);
|
||||
/// assert_eq!(FDEV.as_hertz(), 31_250);
|
||||
@ -333,7 +333,7 @@ impl FskFdev {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::FskFdev;
|
||||
/// use stm32wlxx_hal::subghz::FskFdev;
|
||||
///
|
||||
/// const HERTZ: u32 = 31_250;
|
||||
/// const FDEV: FskFdev = FskFdev::from_hertz(HERTZ);
|
||||
@ -348,7 +348,7 @@ impl FskFdev {
|
||||
}
|
||||
}
|
||||
|
||||
/// (G)FSK modulation paramters.
|
||||
/// (G)FSK modulation parameters.
|
||||
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
|
||||
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
|
||||
pub struct FskModParams {
|
||||
@ -363,7 +363,7 @@ impl FskModParams {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::FskModParams;
|
||||
/// use stm32wlxx_hal::subghz::FskModParams;
|
||||
///
|
||||
/// const MOD_PARAMS: FskModParams = FskModParams::new();
|
||||
/// ```
|
||||
@ -394,7 +394,7 @@ impl FskModParams {
|
||||
/// Setting the bitrate to 32,000 bits per second.
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::{FskBitrate, FskModParams};
|
||||
/// use stm32wlxx_hal::subghz::{FskBitrate, FskModParams};
|
||||
///
|
||||
/// const BITRATE: FskBitrate = FskBitrate::from_bps(32_000);
|
||||
/// const MOD_PARAMS: FskModParams = FskModParams::new().set_bitrate(BITRATE);
|
||||
@ -412,7 +412,7 @@ impl FskModParams {
|
||||
/// Setting the bitrate to 32,000 bits per second.
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::{FskBitrate, FskModParams};
|
||||
/// use stm32wlxx_hal::subghz::{FskBitrate, FskModParams};
|
||||
///
|
||||
/// const BITRATE: FskBitrate = FskBitrate::from_bps(32_000);
|
||||
/// const MOD_PARAMS: FskModParams = FskModParams::new().set_bitrate(BITRATE);
|
||||
@ -434,7 +434,7 @@ impl FskModParams {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::{FskModParams, FskPulseShape};
|
||||
/// use stm32wlxx_hal::subghz::{FskModParams, FskPulseShape};
|
||||
///
|
||||
/// const MOD_PARAMS: FskModParams = FskModParams::new().set_pulse_shape(FskPulseShape::Bt03);
|
||||
/// # assert_eq!(MOD_PARAMS.as_slice()[4], 0x08);
|
||||
@ -453,7 +453,7 @@ impl FskModParams {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::{FskBandwidth, FskModParams};
|
||||
/// use stm32wlxx_hal::subghz::{FskBandwidth, FskModParams};
|
||||
///
|
||||
/// const MOD_PARAMS: FskModParams = FskModParams::new().set_bandwidth(FskBandwidth::Bw9);
|
||||
/// assert_eq!(MOD_PARAMS.bandwidth(), Ok(FskBandwidth::Bw9));
|
||||
@ -467,7 +467,7 @@ impl FskModParams {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::{FskBandwidth, FskModParams};
|
||||
/// use stm32wlxx_hal::subghz::{FskBandwidth, FskModParams};
|
||||
///
|
||||
/// const MOD_PARAMS: FskModParams = FskModParams::new().set_bandwidth(FskBandwidth::Bw9);
|
||||
/// # assert_eq!(MOD_PARAMS.as_slice()[5], 0x1E);
|
||||
@ -483,7 +483,7 @@ impl FskModParams {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::{FskFdev, FskModParams};
|
||||
/// use stm32wlxx_hal::subghz::{FskFdev, FskModParams};
|
||||
///
|
||||
/// const FDEV: FskFdev = FskFdev::from_hertz(31_250);
|
||||
/// const MOD_PARAMS: FskModParams = FskModParams::new().set_fdev(FDEV);
|
||||
@ -499,7 +499,7 @@ impl FskModParams {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::{FskFdev, FskModParams};
|
||||
/// use stm32wlxx_hal::subghz::{FskFdev, FskModParams};
|
||||
///
|
||||
/// const FDEV: FskFdev = FskFdev::from_hertz(31_250);
|
||||
/// const MOD_PARAMS: FskModParams = FskModParams::new().set_fdev(FDEV);
|
||||
@ -536,7 +536,7 @@ impl FskModParams {
|
||||
///
|
||||
/// ```
|
||||
/// extern crate static_assertions as sa;
|
||||
/// use stm32wl_hal::subghz::{FskBandwidth, FskBitrate, FskFdev, FskModParams, FskPulseShape};
|
||||
/// use stm32wlxx_hal::subghz::{FskBandwidth, FskBitrate, FskFdev, FskModParams, FskPulseShape};
|
||||
///
|
||||
/// const MOD_PARAMS: FskModParams = FskModParams::new()
|
||||
/// .set_bitrate(FskBitrate::from_bps(20_000))
|
||||
@ -576,7 +576,7 @@ impl FskModParams {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::{FskBandwidth, FskBitrate, FskFdev, FskModParams, FskPulseShape};
|
||||
/// use stm32wlxx_hal::subghz::{FskBandwidth, FskBitrate, FskFdev, FskModParams, FskPulseShape};
|
||||
///
|
||||
/// const BITRATE: FskBitrate = FskBitrate::from_bps(20_000);
|
||||
/// const PULSE_SHAPE: FskPulseShape = FskPulseShape::Bt03;
|
||||
@ -608,6 +608,9 @@ impl Default for FskModParams {
|
||||
/// LoRa spreading factor.
|
||||
///
|
||||
/// Argument of [`LoRaModParams::set_sf`].
|
||||
///
|
||||
/// Higher spreading factors improve receiver sensitivity, but reduce bit rate
|
||||
/// and increase power consumption.
|
||||
#[derive(Debug, PartialEq, Eq, Clone, Copy, PartialOrd, Ord)]
|
||||
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
|
||||
#[repr(u8)]
|
||||
@ -671,7 +674,7 @@ impl LoRaBandwidth {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::LoRaBandwidth;
|
||||
/// use stm32wlxx_hal::subghz::LoRaBandwidth;
|
||||
///
|
||||
/// assert_eq!(LoRaBandwidth::Bw7.hertz(), 7_810);
|
||||
/// assert_eq!(LoRaBandwidth::Bw10.hertz(), 10_420);
|
||||
@ -715,23 +718,38 @@ impl PartialOrd for LoRaBandwidth {
|
||||
/// LoRa forward error correction coding rate.
|
||||
///
|
||||
/// Argument of [`LoRaModParams::set_cr`].
|
||||
///
|
||||
/// A higher coding rate provides better immunity to interference at the expense
|
||||
/// of longer transmission time.
|
||||
/// In normal conditions [`CodingRate::Cr45`] provides the best trade off.
|
||||
/// In case of strong interference, a higher coding rate may be used.
|
||||
#[derive(Debug, PartialEq, Eq, Clone, Copy, PartialOrd, Ord)]
|
||||
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
|
||||
#[repr(u8)]
|
||||
pub enum CodingRate {
|
||||
/// No forward error correction coding rate 4/4
|
||||
///
|
||||
/// Overhead ratio of 1
|
||||
Cr44 = 0x00,
|
||||
/// Forward error correction coding rate 4/5
|
||||
///
|
||||
/// Overhead ratio of 1.25
|
||||
Cr45 = 0x1,
|
||||
/// Forward error correction coding rate 4/6
|
||||
///
|
||||
/// Overhead ratio of 1.5
|
||||
Cr46 = 0x2,
|
||||
/// Forward error correction coding rate 4/7
|
||||
///
|
||||
/// Overhead ratio of 1.75
|
||||
Cr47 = 0x3,
|
||||
/// Forward error correction coding rate 4/8
|
||||
///
|
||||
/// Overhead ratio of 2
|
||||
Cr48 = 0x4,
|
||||
}
|
||||
|
||||
/// LoRa modulation paramters.
|
||||
/// LoRa modulation parameters.
|
||||
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
|
||||
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
|
||||
|
||||
@ -747,7 +765,7 @@ impl LoRaModParams {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::LoRaModParams;
|
||||
/// use stm32wlxx_hal::subghz::LoRaModParams;
|
||||
///
|
||||
/// const MOD_PARAMS: LoRaModParams = LoRaModParams::new();
|
||||
/// assert_eq!(MOD_PARAMS, LoRaModParams::default());
|
||||
@ -769,7 +787,7 @@ impl LoRaModParams {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::{LoRaModParams, SpreadingFactor};
|
||||
/// use stm32wlxx_hal::subghz::{LoRaModParams, SpreadingFactor};
|
||||
///
|
||||
/// const MOD_PARAMS: LoRaModParams = LoRaModParams::new().set_sf(SpreadingFactor::Sf7);
|
||||
/// # assert_eq!(MOD_PARAMS.as_slice(), &[0x8B, 0x07, 0x00, 0x00, 0x00]);
|
||||
@ -785,7 +803,7 @@ impl LoRaModParams {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::{LoRaBandwidth, LoRaModParams};
|
||||
/// use stm32wlxx_hal::subghz::{LoRaBandwidth, LoRaModParams};
|
||||
///
|
||||
/// const MOD_PARAMS: LoRaModParams = LoRaModParams::new().set_bw(LoRaBandwidth::Bw125);
|
||||
/// # assert_eq!(MOD_PARAMS.as_slice(), &[0x8B, 0x05, 0x04, 0x00, 0x00]);
|
||||
@ -798,10 +816,12 @@ impl LoRaModParams {
|
||||
|
||||
/// Set the forward error correction coding rate.
|
||||
///
|
||||
/// See [`CodingRate`] for more information.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::{CodingRate, LoRaModParams};
|
||||
/// use stm32wlxx_hal::subghz::{CodingRate, LoRaModParams};
|
||||
///
|
||||
/// const MOD_PARAMS: LoRaModParams = LoRaModParams::new().set_cr(CodingRate::Cr45);
|
||||
/// # assert_eq!(MOD_PARAMS.as_slice(), &[0x8B, 0x05, 0x00, 0x01, 0x00]);
|
||||
@ -814,10 +834,29 @@ impl LoRaModParams {
|
||||
|
||||
/// Set low data rate optimization enable.
|
||||
///
|
||||
/// For low data rates (typically high SF or low BW) and very long payloads
|
||||
/// (may last several seconds), the low data rate optimization (LDRO) can be
|
||||
/// enabled.
|
||||
/// This reduces the number of bits per symbol to the given SF minus 2,
|
||||
/// to allow the receiver to have a better tracking of the LoRa receive
|
||||
/// signal.
|
||||
/// Depending on the payload length, the low data rate optimization is
|
||||
/// usually recommended when the LoRa symbol time is equal or above
|
||||
/// 16.38 ms.
|
||||
/// When using LoRa modulation, the total frequency drift over the packet
|
||||
/// time must be kept lower than Freq_drift_max:
|
||||
///
|
||||
/// Freq_drift_max = BW / (3 × 2SF)
|
||||
///
|
||||
/// When possible, enabling the low data rate optimization, relaxes the
|
||||
/// total frequency drift over the packet time by 16:
|
||||
///
|
||||
/// Freq_drift_optimise_max = 16 × Freq_drift_max
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::LoRaModParams;
|
||||
/// use stm32wlxx_hal::subghz::LoRaModParams;
|
||||
///
|
||||
/// const MOD_PARAMS: LoRaModParams = LoRaModParams::new().set_ldro_en(true);
|
||||
/// # assert_eq!(MOD_PARAMS.as_slice(), &[0x8B, 0x05, 0x00, 0x00, 0x01]);
|
||||
@ -833,7 +872,7 @@ impl LoRaModParams {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::{CodingRate, LoRaBandwidth, LoRaModParams, SpreadingFactor};
|
||||
/// use stm32wlxx_hal::subghz::{CodingRate, LoRaBandwidth, LoRaModParams, SpreadingFactor};
|
||||
///
|
||||
/// const MOD_PARAMS: LoRaModParams = LoRaModParams::new()
|
||||
/// .set_sf(SpreadingFactor::Sf7)
|
||||
@ -854,7 +893,7 @@ impl Default for LoRaModParams {
|
||||
}
|
||||
}
|
||||
|
||||
/// BPSK modulation paramters.
|
||||
/// BPSK modulation parameters.
|
||||
///
|
||||
/// **Note:** There is no method to set the pulse shape because there is only
|
||||
/// one valid pulse shape (Gaussian BT 0.5).
|
||||
@ -872,7 +911,7 @@ impl BpskModParams {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::BpskModParams;
|
||||
/// use stm32wlxx_hal::subghz::BpskModParams;
|
||||
///
|
||||
/// const MOD_PARAMS: BpskModParams = BpskModParams::new();
|
||||
/// assert_eq!(MOD_PARAMS, BpskModParams::default());
|
||||
@ -891,7 +930,7 @@ impl BpskModParams {
|
||||
/// Setting the bitrate to 600 bits per second.
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::{BpskModParams, FskBitrate};
|
||||
/// use stm32wlxx_hal::subghz::{BpskModParams, FskBitrate};
|
||||
///
|
||||
/// const BITRATE: FskBitrate = FskBitrate::from_bps(600);
|
||||
/// const MOD_PARAMS: BpskModParams = BpskModParams::new().set_bitrate(BITRATE);
|
||||
@ -913,7 +952,7 @@ impl BpskModParams {
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// use stm32wl_hal::subghz::{BpskModParams, FskBitrate};
|
||||
/// use stm32wlxx_hal::subghz::{BpskModParams, FskBitrate};
|
||||
///
|
||||
/// const BITRATE: FskBitrate = FskBitrate::from_bps(100);
|
||||
/// const MOD_PARAMS: BpskModParams = BpskModParams::new().set_bitrate(BITRATE);
|
||||
|
Reference in New Issue
Block a user