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 more