High-level driver for the RN2483/RN2903 LoRa modules. More...
High-level driver for the RN2483/RN2903 LoRa modules.
Definition in file rn2xx3.h.
#include <stdint.h>#include "ztimer.h"#include "periph/uart.h"#include "periph/gpio.h"#include "net/netdev.h"#include "net/loramac.h"
Include dependency graph for rn2xx3.h:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Data Structures | |
| struct | loramac_settings_t |
| LoRaMAC communication settings. More... | |
| struct | rn2xx3_params_t |
| Configuration parameters for RN2483/RN2903 devices. More... | |
| struct | rn2xx3_t |
| RN2483/RN2903 device descriptor. More... | |
Macros | |
| #define | RN2XX3_MAX_BUF (40U) |
| Maximum length of an exchanged messages with commands. | |
| #define | RN2XX3_RX_MAX_BUF (250U) |
| Maximum length of an RX message. More... | |
| #define | RN2XX3_REPLY_DELAY_TIMEOUT (60U) |
| Maximum delay in second to receive a reply from server. | |
| #define | RN2XX3_SLEEP_MIN (100U) |
| Minimum sleep duration (in ms) | |
| #define | CONFIG_RN2XX3_DEFAULT_SLEEP (5000U) |
| Default sleep duration (in ms) | |
| #define | CONFIG_RN2XX3_DEFAULT_AR |
| Default automatic reply status. More... | |
Enumerations | |
| enum | { RN2XX3_OK , RN2XX3_DATA , RN2XX3_TIMEOUT , RN2XX3_ERR_MAC_INIT , RN2XX3_ERR_INVALID_PARAM , RN2XX3_ERR_NOT_JOINED , RN2XX3_ERR_NO_FREE_CH , RN2XX3_ERR_SILENT , RN2XX3_ERR_FR_CNT_REJOIN_NEEDED , RN2XX3_ERR_BUSY , RN2XX3_ERR_MAC_PAUSED , RN2XX3_ERR_INVALID_DATA_LENGTH , RN2XX3_ERR_KEYS_NOT_INIT , RN2XX3_ERR_SLEEP_MODE , RN2XX3_REPLY_TX_MAC_OK , RN2XX3_REPLY_TX_MAC_ERR , RN2XX3_REPLY_TX_INVALID_DATA_LEN , RN2XX3_REPLY_TX_MAC_RX , RN2XX3_REPLY_JOIN_ACCEPTED , RN2XX3_REPLY_JOIN_DENIED , RN2XX3_REPLY_TIMEOUT , RN2XX3_REPLY_OTHER } |
| Command responses and server replies status codes. More... | |
| enum | { RN2XX3_INT_STATE_RESET , RN2XX3_INT_STATE_CMD , RN2XX3_INT_STATE_IDLE , RN2XX3_INT_STATE_SLEEP , RN2XX3_INT_STATE_MAC_JOIN , RN2XX3_INT_STATE_MAC_TX , RN2XX3_INT_STATE_MAC_RX_PORT , RN2XX3_INT_STATE_MAC_RX_MESSAGE } |
| Internal states of the device. More... | |
Functions | |
| void | rn2xx3_setup (rn2xx3_t *dev, const rn2xx3_params_t *params) |
| Prepares the given RN2XX3 device. More... | |
| int | rn2xx3_init (rn2xx3_t *dev) |
| Initializes the RN2XX3 device. More... | |
| int | rn2xx3_sys_reset (rn2xx3_t *dev) |
| Restarts the RN2XX2 device. More... | |
| int | rn2xx3_sys_factory_reset (rn2xx3_t *dev) |
| Performs a factory reset of the module. More... | |
| int | rn2xx3_sys_sleep (rn2xx3_t *dev) |
| Puts the RN2XX2 device in sleep mode. More... | |
| int | rn2xx3_mac_init (rn2xx3_t *dev) |
| Initializes the RN2XX3 device MAC layer. More... | |
| int | rn2xx3_write_cmd (rn2xx3_t *dev) |
| Writes a command to the RN2XX3 device. More... | |
| int | rn2xx3_write_cmd_no_wait (rn2xx3_t *dev) |
| Writes a command to the RN2XX3 device but don't wait for timeout or response. More... | |
| int | rn2xx3_wait_response (rn2xx3_t *dev) |
| Waits for a response to a command from the device. More... | |
| int | rn2xx3_wait_reply (rn2xx3_t *dev, uint8_t timeout) |
| Waits for a reply from the LoRaWAN network. More... | |
| int | rn2xx3_mac_tx (rn2xx3_t *dev, uint8_t *payload, uint8_t payload_len) |
| Sends data to LoRaWAN server. More... | |
| int | rn2xx3_mac_join_network (rn2xx3_t *dev, loramac_join_mode_t mode) |
| Starts network activation procedure. More... | |
| int | rn2xx3_mac_save (rn2xx3_t *dev) |
| Saves current LoRaMAC configuration to internal EEPROM. More... | |
| void | rn2xx3_mac_get_deveui (rn2xx3_t *dev, uint8_t *eui) |
| Gets the rn2xx3 LoRaMAC device EUI. More... | |
| void | rn2xx3_mac_set_deveui (rn2xx3_t *dev, const uint8_t *eui) |
| Sets the rn2xx3 LoRaMAC device EUI. More... | |
| void | rn2xx3_mac_get_appeui (rn2xx3_t *dev, uint8_t *eui) |
| Gets the rn2xx3 LoRaMAC application EUI. More... | |
| void | rn2xx3_mac_set_appeui (rn2xx3_t *dev, const uint8_t *eui) |
| Sets the rn2xx3 LoRaMAC application EUI. More... | |
| void | rn2xx3_mac_set_appkey (rn2xx3_t *dev, const uint8_t *key) |
| Sets the rn2xx3 LoRaMAC application key. More... | |
| void | rn2xx3_mac_set_appskey (rn2xx3_t *dev, const uint8_t *key) |
| Sets the rn2xx3 LoRaMAC application session key. More... | |
| void | rn2xx3_mac_set_nwkskey (rn2xx3_t *dev, const uint8_t *key) |
| Sets the rn2xx3 LoRaMAC network session key. More... | |
| void | rn2xx3_mac_get_devaddr (rn2xx3_t *dev, uint8_t *addr) |
| Gets the rn2xx3 LoRaMAC device address. More... | |
| void | rn2xx3_mac_set_devaddr (rn2xx3_t *dev, const uint8_t *addr) |
| Sets the rn2xx3 LoRaMAC device address. More... | |
| loramac_tx_pwr_idx_t | rn2xx3_mac_get_tx_power (rn2xx3_t *dev) |
| Gets the rn2xx3 LoRaMAC TX radio power index. More... | |
| void | rn2xx3_mac_set_tx_power (rn2xx3_t *dev, loramac_tx_pwr_idx_t power) |
| Sets the rn2xx3 LoRaMAC transmission power index. More... | |
| loramac_dr_idx_t | rn2xx3_mac_get_dr (rn2xx3_t *dev) |
| Gets the rn2xx3 LoRaMAC datarate. More... | |
| void | rn2xx3_mac_set_dr (rn2xx3_t *dev, loramac_dr_idx_t dr) |
| Sets the rn2xx3 LoRaMAC datarate. More... | |
| uint16_t | rn2xx3_mac_get_band (rn2xx3_t *dev) |
| Gets the rn2xx3 LoRaMAC frequency band in operation. More... | |
| bool | rn2xx3_mac_get_adr (rn2xx3_t *dev) |
| Checks if the rn2xx3 LoRaMAC adaptive datarate is enabled/disabled. More... | |
| void | rn2xx3_mac_set_adr (rn2xx3_t *dev, bool adr) |
| Enables/disables the rn2xx3 LoRaMAC adaptive datarate. More... | |
| void | rn2xx3_mac_set_battery (rn2xx3_t *dev, uint8_t battery) |
| Sets the rn2xx3 battery level measured by the end device. More... | |
| uint8_t | rn2xx3_mac_get_retx (rn2xx3_t *dev) |
| Gets the rn2xx3 LoRaMAC uplink retransmission retries number. More... | |
| void | rn2xx3_mac_set_retx (rn2xx3_t *dev, uint8_t retx) |
| Sets the rn2xx3 LoRaMAC uplink retransmission retries number. More... | |
| void | rn2xx3_mac_set_linkchk_interval (rn2xx3_t *dev, uint16_t linkchk) |
| Sets the rn2xx3 LoRaMAC link check interval (in seconds) More... | |
| uint16_t | rn2xx3_mac_get_rx1_delay (rn2xx3_t *dev) |
| Gets the rn2xx3 LoRaMAC interval delay before the first reception window (in ms) More... | |
| void | rn2xx3_mac_set_rx1_delay (rn2xx3_t *dev, uint16_t rx1) |
| Sets the rn2xx3 LoRaMAC interval delay before the first reception window (in ms) More... | |
| uint16_t | rn2xx3_mac_get_rx2_delay (rn2xx3_t *dev) |
| Gets the rn2xx3 LoRaMAC interval delay before the second reception window (in ms) More... | |
| bool | rn2xx3_mac_get_ar (rn2xx3_t *dev) |
| Checks the rn2xx3 LoRaMAC automatic reply state. More... | |
| void | rn2xx3_mac_set_ar (rn2xx3_t *dev, bool ar) |
| Enables/disables LoRaMAC rn2xx3 MAC automatic reply state. More... | |
| loramac_dr_idx_t | rn2xx3_mac_get_rx2_dr (rn2xx3_t *dev) |
| Gets the rn2xx3 LoRaMAC datarate used for second receive window. More... | |
| void | rn2xx3_mac_set_rx2_dr (rn2xx3_t *dev, loramac_dr_idx_t dr) |
| Sets the rn2xx3 LoRaMAC datarate used for second receive window. More... | |
| uint32_t | rn2xx3_mac_get_rx2_freq (rn2xx3_t *dev) |
| Gets the rn2xx3 LoRaMAC frequency used during second receive window (in Hz) More... | |
| void | rn2xx3_mac_set_rx2_freq (rn2xx3_t *dev, uint32_t freq) |
| Sets the rn2xx3 LoRaMAC frequency used during second receive window (in Hz) More... | |
| uint8_t | rn2xx3_mac_get_tx_port (rn2xx3_t *dev) |
| Gets the rn2xx3 LoRaMAC TX port. More... | |
| void | rn2xx3_mac_set_tx_port (rn2xx3_t *dev, uint8_t port) |
| Sets the rn2xx3 LoRaMAC TX port. More... | |
| loramac_tx_mode_t | rn2xx3_mac_get_tx_mode (rn2xx3_t *dev) |
| Gets the rn2xx3 LoRaMAC TX mode. More... | |
| void | rn2xx3_mac_set_tx_mode (rn2xx3_t *dev, loramac_tx_mode_t mode) |
| Sets the rn2xx3 LoRaMAC TX mode. More... | |
| uint8_t | rn2xx3_mac_get_rx_port (rn2xx3_t *dev) |
| Parses the response buffer to get the LoRaWAN RX port. More... | |
| void | rn2xx3_sys_set_sleep_duration (rn2xx3_t *dev, uint32_t sleep) |
| Sets the rn2xx3 sleep mode duration (in ms) More... | |