Loading...
Searching...
No Matches
lorawan.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2017 Fundación Inria Chile
3 * SPDX-FileCopyrightText: 2019 HAW Hamburg
4 * SPDX-License-Identifier: LGPL-2.1-only
5 */
6
7#pragma once
8
22
23#include "compiler_hints.h"
25#include "assert.h"
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
39#ifndef CONFIG_GNRC_LORAWAN_MIN_SYMBOLS_TIMEOUT
40#define CONFIG_GNRC_LORAWAN_MIN_SYMBOLS_TIMEOUT 30
41#endif
43
44#define GNRC_LORAWAN_REQ_STATUS_SUCCESS (0)
45#define GNRC_LORAWAN_REQ_STATUS_DEFERRED (1)
46
54
63
72
84
92
96typedef struct {
98 union {
100 void *dev_addr;
101 uint8_t rx2_dr;
102 };
103} mlme_mib_t;
104
115
119typedef struct {
120 union {
122 };
125
137
146
150typedef struct {
152 union {
154 };
156
160typedef struct {
163
170
177
184{
185 /* The failed reception is seen by the MAC layer as an RX timeout */
187}
188
195
203void gnrc_lorawan_init(gnrc_lorawan_t *mac, uint8_t *joineui, const gnrc_lorawan_key_ctx_t *ctx);
204
216 const mlme_request_t *mlme_request,
217 mlme_confirm_t *mlme_confirm);
218
230 const mcps_request_t *mcps_request,
231 mcps_confirm_t *mcps_confirm);
232
244ACCESS(read_write, 2, 3)
246 size_t size);
247
256
265
274
283
293
304int gnrc_lorawan_phy_set_channel_mask(gnrc_lorawan_t *mac, uint16_t channel_mask);
305
314
322
332 uint8_t redundancy)
333{
334 assert(redundancy <= (0xF - 1));
335 mac->mcps.redundancy = redundancy;
336}
337
338#ifdef __cplusplus
339}
340#endif
341
POSIX.1-2008 compliant version of the assert macro.
#define assert(cond)
abort the program if assertion is false
Definition assert.h:143
Common macros and compiler attributes/pragmas configuration.
#define ACCESS(mode, ptr_idx, size_idx)
Emit an attribute (if supported by the compiler) that declares how a function will access its paramet...
GNRC LoRaWAN internal header.
struct netdev netdev_t
Forward declaration for netdev struct.
Definition netdev.h:285
void gnrc_lorawan_timeout_cb(gnrc_lorawan_t *mac)
Indicate the MAC layer that the timer was fired.
void gnrc_lorawan_mlme_indication(gnrc_lorawan_t *mac, mlme_indication_t *ind)
MLME indication callback.
mcps_event_t
MCPS events.
Definition lorawan.h:50
mlme_activation_t
LoRaWAN activation mechanism.
Definition lorawan.h:58
static void gnrc_lorawan_radio_rx_error_cb(gnrc_lorawan_t *mac)
Indicate the MAC layer reception of a frame went wrong.
Definition lorawan.h:183
mlme_type_t
MLME primitive types.
Definition lorawan.h:76
void gnrc_lorawan_mlme_request(gnrc_lorawan_t *mac, const mlme_request_t *mlme_request, mlme_confirm_t *mlme_confirm)
Perform a MLME request.
void gnrc_lorawan_mcps_confirm(gnrc_lorawan_t *mac, mcps_confirm_t *confirm)
MCPS Confirm callback.
static void gnrc_lorawan_set_uncnf_redundancy(gnrc_lorawan_t *mac, uint8_t redundancy)
Set unconfirmed uplink redundancy.
Definition lorawan.h:331
void gnrc_lorawan_set_timer(gnrc_lorawan_t *mac, uint32_t us)
Set a timer with the given time.
void gnrc_lorawan_mcps_request(gnrc_lorawan_t *mac, const mcps_request_t *mcps_request, mcps_confirm_t *mcps_confirm)
Perform a MCPS request.
void gnrc_lorawan_mcps_indication(gnrc_lorawan_t *mac, mcps_indication_t *ind)
MCPS indication callback.
void gnrc_lorawan_radio_rx_timeout_cb(gnrc_lorawan_t *mac)
Indicate the MAC layer there was a timeout event.
mcps_type_t
MCPS primitive types.
Definition lorawan.h:88
netdev_t * gnrc_lorawan_get_netdev(gnrc_lorawan_t *mac)
Get netdev pointer from mac descriptor.
void gnrc_lorawan_mlme_confirm(gnrc_lorawan_t *mac, mlme_confirm_t *confirm)
MLME confirm callback.
void gnrc_lorawan_radio_tx_done_cb(gnrc_lorawan_t *mac)
Indicate the MAC layer when the transmission finished.
void gnrc_lorawan_remove_timer(gnrc_lorawan_t *mac)
Remove the current timer.
int gnrc_lorawan_phy_set_channel_mask(gnrc_lorawan_t *mac, uint16_t channel_mask)
Set the channel mask in order to enable or disable LoRaWAN channels.
mlme_mib_type_t
MAC Information Base attributes.
Definition lorawan.h:67
void gnrc_lorawan_radio_rx_done_cb(gnrc_lorawan_t *mac, uint8_t *data, size_t size)
Fetch a LoRaWAN packet from the radio.
void gnrc_lorawan_init(gnrc_lorawan_t *mac, uint8_t *joineui, const gnrc_lorawan_key_ctx_t *ctx)
Init GNRC LoRaWAN.
@ MCPS_EVENT_RX
MCPS RX event.
Definition lorawan.h:51
@ MCPS_EVENT_NO_RX
MCPS no RX event.
Definition lorawan.h:52
@ MLME_ACTIVATION_NONE
MAC layer is not activated.
Definition lorawan.h:59
@ MLME_ACTIVATION_ABP
MAC layer activated by ABP.
Definition lorawan.h:60
@ MLME_ACTIVATION_OTAA
MAC layer activated by OTAA.
Definition lorawan.h:61
@ MLME_GET
get the MIB
Definition lorawan.h:81
@ MLME_JOIN
join a LoRaWAN network
Definition lorawan.h:77
@ MLME_LINK_CHECK
perform a Link Check
Definition lorawan.h:78
@ MLME_SET
set the MIB
Definition lorawan.h:80
@ MLME_RESET
reset the MAC layer
Definition lorawan.h:79
@ MLME_SCHEDULE_UPLINK
schedule uplink indication
Definition lorawan.h:82
@ MCPS_UNCONFIRMED
unconfirmed data
Definition lorawan.h:90
@ MCPS_CONFIRMED
confirmed data
Definition lorawan.h:89
@ MIB_ACTIVATION_METHOD
type is activation method
Definition lorawan.h:68
@ MIB_RX2_DR
type is rx2 DR
Definition lorawan.h:70
@ MIB_DEV_ADDR
type is dev addr
Definition lorawan.h:69
struct iolist iolist_t
iolist forward declaration
Definition iolist.h:30
GNRC LoRaWAN key context struct.
GNRC LoRaWAN mac descriptor.
Mac Common Part Sublayer (MCPS) confirm representation.
Definition lorawan.h:141
int16_t status
status of the MCPS confirm
Definition lorawan.h:142
iolist_t * msdu
pointer to the msdu
Definition lorawan.h:144
mcps_type_t type
type of the MCPS confirm
Definition lorawan.h:143
Mac Common Part Sublayer (MCPS) indication representation.
Definition lorawan.h:150
mcps_data_t data
MCPS Data holder.
Definition lorawan.h:153
mcps_type_t type
type of the MCPS indication
Definition lorawan.h:151
Mac Common Part Sublayer (MCPS) request representation.
Definition lorawan.h:119
mcps_data_t data
MCPS data holder.
Definition lorawan.h:121
mcps_type_t type
type of the MCPS request
Definition lorawan.h:123
MAC (sub) Layer Management Entity (MLME) confirm representation.
Definition lorawan.h:129
mlme_type_t type
type of the MLME confirm
Definition lorawan.h:131
mlme_mib_t mib
MIB confirmation data.
Definition lorawan.h:134
int16_t status
status of the MLME confirm
Definition lorawan.h:130
mlme_link_req_confirm_t link_req
Link Check confirmation data.
Definition lorawan.h:133
MAC (sub) Layer Management Entity (MLME) indication representation.
Definition lorawan.h:160
mlme_type_t type
type of the MLME indication
Definition lorawan.h:161
MLME Join Request data.
MAC Information Base descriptor for MLME Request-Confirm.
Definition lorawan.h:96
mlme_mib_type_t type
MIB attribute identifier.
Definition lorawan.h:97
void * dev_addr
pointer to the dev_addr
Definition lorawan.h:100
mlme_activation_t activation
holds activation mechanism
Definition lorawan.h:99
MAC (sub) Layer Management Entity (MLME) request representation.
Definition lorawan.h:108
mlme_mib_t mib
MIB holder.
Definition lorawan.h:111
mlme_lorawan_join_t join
Join Data holder.
Definition lorawan.h:110
mlme_type_t type
type of the MLME request
Definition lorawan.h:113