Documentation ¶
Overview ¶
Package lora provides utilities to assess the signal quality of LoRa (Long Range) communication based on RSSI (Received Signal Strength Indicator) and SNR (Signal-to-Noise Ratio) values.
Package loraradio provides functionality to determine values for a LoRa radio link, including maximum data rate and link budget while accounting for receiver sensitivity.
Index ¶
- Variables
- func CalculateSensitivity(params SensitivityParams, spreadingFactors []SpreadingFactorData) (float64, error)
- func ExampleGetDiagnosticNotes()
- func ExampleGetSignalQuality()
- func GetDiagnosticNotes(rssi, snr float64) string
- func LinkBudget(rxSensitivity, transmitPower float64) float64
- func MaxDataRate(bandwidth, spreadingFactor, codeRate float64) float64
- func SNR(spreadingFactor int) float64
- type SensitivityParams
- type SignalQuality
- type SpreadingFactorData
Constants ¶
This section is empty.
Variables ¶
var SpreadingFactors = []SpreadingFactorData{
{SF: 5, ChipsPerSymbol: 32, DemodulatorSNR: -2.5},
{SF: 6, ChipsPerSymbol: 64, DemodulatorSNR: -5},
{SF: 7, ChipsPerSymbol: 128, DemodulatorSNR: -7.5},
{SF: 8, ChipsPerSymbol: 256, DemodulatorSNR: -10},
{SF: 9, ChipsPerSymbol: 512, DemodulatorSNR: -12.5},
{SF: 10, ChipsPerSymbol: 1024, DemodulatorSNR: -15},
{SF: 11, ChipsPerSymbol: 2048, DemodulatorSNR: -17.5},
{SF: 12, ChipsPerSymbol: 4096, DemodulatorSNR: -20},
}
Functions ¶
func CalculateSensitivity ¶
func CalculateSensitivity(params SensitivityParams, spreadingFactors []SpreadingFactorData) (float64, error)
CalculateSensitivity calculates the LoRa receiver sensitivity based on the provided parameters.
func ExampleGetDiagnosticNotes ¶
func ExampleGetDiagnosticNotes()
ExampleGetDiagnosticNotes demonstrates the usage of the GetDiagnosticNotes function.
func ExampleGetSignalQuality ¶
func ExampleGetSignalQuality()
ExampleGetSignalQuality demonstrates the usage of the GetSignalQuality function.
func GetDiagnosticNotes ¶
GetDiagnosticNotes provides recommendations based on RSSI and SNR values. It returns different notes depending on the quality of the RF level.
func LinkBudget ¶
Simplified link budget calculation per the Semtech calculator
func MaxDataRate ¶
MaxDataRate calculates the maximum data rate for a LoRa radio link based on the provided parameters.
Types ¶
type SensitivityParams ¶
type SensitivityParams struct { Bandwidth float64 // in Hz ImplementationL float64 // Implementation loss in dB, typically 1-3 dB SpreadingFactor int // LoRa Spreading Factor }
SensitivityParams holds the parameters used for sensitivity calculations.
type SignalQuality ¶
type SignalQuality string
SignalQuality defines a type for representing the quality of a signal.
const ( // SignalQualityGood indicates a good signal quality. SignalQualityGood SignalQuality = "GOOD" // SignalQualityFair indicates a fair signal quality. SignalQualityFair SignalQuality = "FAIR" // SignalQualityBad indicates a bad signal quality. SignalQualityBad SignalQuality = "BAD" )
func GetSignalQuality ¶
func GetSignalQuality(rssi, snr float64) SignalQuality
GetSignalQuality determines the signal quality based on RSSI and SNR. A GOOD signal is determined by SNR >= -7 and RSSI >= -115. A FAIR signal is determined by SNR >= -15 and RSSI >= -126. Any signal that does not meet the GOOD or FAIR criteria is considered BAD.
type SpreadingFactorData ¶
SpreadingFactorData holds the data for each spreading factor.