pub struct LoraModulation {
pub spreading_factor: u8,
pub bandwidth: LoraBandwidth,
pub coding_rate_denominator: u8,
pub explicit_header: bool,
pub crc: bool,
pub low_data_rate_optimization: bool,
}Expand description
The LoRa modem settings of a link, as RegModemConfig1 to 3 and the SF6 detection registers carry them.
§Examples
use pamoja_lora::LinkSettings;
use pamoja_radios::sx127x::config::LoraModulation;
// SF7 at 125 kHz, coding rate 4/5, an explicit header, and a CRC.
let modulation = LoraModulation::from_link(&LinkSettings::new(7, 125_000)).unwrap();
assert_eq!(modulation.modem_config_1(), 0x72);
assert_eq!(modulation.modem_config_2(0), 0x74);
assert_eq!(modulation.modem_config_3(), 0x04);Fields§
§spreading_factor: u8The spreading factor, 6 to 12.
bandwidth: LoraBandwidthThe signal bandwidth.
coding_rate_denominator: u8The coding rate denominator, 5 to 8 for 4/5 to 4/8.
explicit_header: boolWhether packets carry an explicit header.
crc: boolWhether packets carry a payload CRC.
low_data_rate_optimization: boolWhether low data rate optimization is on.
Implementations§
Source§impl LoraModulation
impl LoraModulation
Sourcepub fn from_link(link: &LinkSettings) -> Result<LoraModulation, ModulationError>
pub fn from_link(link: &LinkSettings) -> Result<LoraModulation, ModulationError>
Builds the modem settings of a link.
§Arguments
link- the link settings, whose spreading factor, bandwidth, coding rate, header, CRC, and low data rate optimization the radio must match.
§Returns
The settings.
§Errors
Returns ModulationError::Bandwidth for a bandwidth the SX127x does not offer,
ModulationError::SpreadingFactor below SF6, and
ModulationError::ExplicitHeaderAtSf6 for SF6 with an explicit header.
Sourcepub const fn modem_config_1(&self) -> u8
pub const fn modem_config_1(&self) -> u8
Returns RegModemConfig1: the bandwidth in bits 7 to 4, the coding rate in bits 3 to 1, and ImplicitHeaderModeOn in bit 0.
§Returns
The register value.
Sourcepub const fn modem_config_2(&self, symbol_timeout: u16) -> u8
pub const fn modem_config_2(&self, symbol_timeout: u16) -> u8
Returns RegModemConfig2: the spreading factor in bits 7 to 4, RxPayloadCrcOn in bit 2, and the top two bits of the symbol timeout in bits 1 and 0.
§Arguments
symbol_timeout- the single reception timeout in symbols, fromsymbol_timeout.
§Returns
The register value; TxContinuousMode is off.
Sourcepub const fn modem_config_3(&self) -> u8
pub const fn modem_config_3(&self) -> u8
Returns RegModemConfig3: LowDataRateOptimize in bit 3, and AgcAutoOn in bit 2 so the automatic gain control sets the LNA gain.
§Returns
The register value.
Sourcepub const fn detect_optimize(&self, current: u8) -> u8
pub const fn detect_optimize(&self, current: u8) -> u8
Sourcepub const fn detection_threshold(&self) -> u8
pub const fn detection_threshold(&self) -> u8
Returns RegDetectionThreshold for the spreading factor: 0x0C for SF6 and 0x0A for SF7 to SF12.
§Returns
The register value.
Trait Implementations§
Source§impl Clone for LoraModulation
impl Clone for LoraModulation
Source§fn clone(&self) -> LoraModulation
fn clone(&self) -> LoraModulation
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for LoraModulation
Source§impl Debug for LoraModulation
impl Debug for LoraModulation
impl Eq for LoraModulation
Source§impl Hash for LoraModulation
impl Hash for LoraModulation
Source§impl PartialEq for LoraModulation
impl PartialEq for LoraModulation
Source§fn eq(&self, other: &LoraModulation) -> bool
fn eq(&self, other: &LoraModulation) -> bool
self and other values to be equal, and is used by ==.