Current section
Files
Jump to
Current section
Files
lib/parameters.ex
defmodule LoRa.Parameters do
# REG
@reg %{
fifo: 0x00,
op_mode: 0x01,
frf_msb: 0x06,
frf_mid: 0x07,
frf_lsb: 0x08,
pa_config: 0x09,
ocp: 0x0B,
lna: 0x0C,
fifo_addr_ptr: 0x0D,
fifo_tx_base_addr: 0x0E,
fifo_rx_base_addr: 0x0F,
fifo_rx_current_addr: 0x10,
irq_flags: 0x12,
rx_nb_bytes: 0x13,
pkt_snr_value: 0x19,
pkt_rssi_value: 0x1A,
modem_config_1: 0x1D,
modem_config_2: 0x1E,
preamble_msb: 0x20,
preamble_lsb: 0x21,
payload_length: 0x22,
modem_config_3: 0x26,
freq_error_msb: 0x28,
freq_error_mid: 0x29,
freq_error_lsb: 0x2A,
rssi_wideband: 0x2C,
detection_optimize: 0x31,
invertiq: 0x33,
detection_threshold: 0x37,
sync_word: 0x39,
invertiq2: 0x3B,
dio_mapping_1: 0x40,
version: 0x42,
pa_dac: 0x4D
}
# modes
@mode %{
long_range_mode: 0x80,
sleep: 0x00,
stdby: 0x01,
tx: 0x03,
rx_continuous: 0x05,
rx_single: 0x06
}
# pa config
@pa %{
boost: 0x80,
output_rfo_pin: 0
}
# irq masks
@irq %{
tx_done_mask: 0x08,
payload_crc_error_mask: 0x20,
rx_done_mask: 0x40
}
@max %{
pkt_length: 255,
end_packet_cycles: 2_000
}
@bw_freqs %{
0 => 7.8e3,
1 => 10.4e3,
2 => 15.6e3,
3 => 20.8e3,
4 => 31.25e3,
5 => 41.7e3,
6 => 62.5e3,
7 => 125.0e3,
8 => 250.0e3,
9 => 250.0e3
}
def register, do: @reg
def mode, do: @mode
def pa, do: @pa
def irq, do: @irq
def bw_freqs, do: @bw_freqs
def max, do: @max
def header(set), do: if(set, do: 0xFE, else: 0x01)
end