LoRaMAC
4.4.6
Documentation of the API
LoRaMacHeaderTypes.h
Go to the documentation of this file.
1
37
#ifndef __LORAMAC_HEADER_TYPES_H__
38
#define __LORAMAC_HEADER_TYPES_H__
39
40
#ifdef __cplusplus
41
extern
"C"
42
{
43
#endif
44
45
#include <stdint.h>
46
48
#define LORAMAC_MHDR_FIELD_SIZE 1
49
51
#define LORAMAC_JOIN_TYPE_FIELD_SIZE 1
52
54
#define LORAMAC_JOIN_EUI_FIELD_SIZE 8
55
57
#define LORAMAC_DEV_EUI_FIELD_SIZE 8
58
60
#define LORAMAC_DEV_NONCE_FIELD_SIZE 2
61
63
#define LORAMAC_JOIN_NONCE_FIELD_SIZE 3
64
66
#define LORAMAC_RJCOUNT_0_FIELD_SIZE 2
67
69
#define LORAMAC_RJCOUNT_1_FIELD_SIZE 2
70
72
#define LORAMAC_NET_ID_FIELD_SIZE 3
73
75
#define LORAMAC_DEV_ADDR_FIELD_SIZE 4
76
78
#define LORAMAC_DL_SETTINGS_FIELD_SIZE 1
79
81
#define LORAMAC_RX_DELAY_FIELD_SIZE 1
82
84
#define LORAMAC_CF_LIST_FIELD_SIZE 16
85
87
#define LORAMAC_FHDR_DEV_ADDR_FIELD_SIZE LORAMAC_DEV_ADDR_FIELD_SIZE
88
90
#define LORAMAC_FHDR_F_CTRL_FIELD_SIZE 1
91
93
#define LORAMAC_FHDR_F_CNT_FIELD_SIZE 2
94
96
#define LORAMAC_FHDR_F_OPTS_MAX_FIELD_SIZE 15
97
99
#define LORAMAC_F_PORT_FIELD_SIZE 1
100
102
#define LORAMAC_MAC_PAYLOAD_FIELD_MAX_SIZE 242
103
105
#define LORAMAC_MIC_FIELD_SIZE 4
106
112
#define LORAMAC_JOIN_REQ_MSG_SIZE ( LORAMAC_MHDR_FIELD_SIZE + LORAMAC_JOIN_EUI_FIELD_SIZE + \
113
LORAMAC_DEV_EUI_FIELD_SIZE + LORAMAC_DEV_NONCE_FIELD_SIZE + \
114
LORAMAC_MIC_FIELD_SIZE )
115
121
#define LORAMAC_RE_JOIN_1_MSG_SIZE ( LORAMAC_MHDR_FIELD_SIZE + LORAMAC_JOIN_TYPE_FIELD_SIZE + \
122
LORAMAC_JOIN_EUI_FIELD_SIZE + LORAMAC_DEV_EUI_FIELD_SIZE + \
123
LORAMAC_RJCOUNT_1_FIELD_SIZE + \
124
LORAMAC_MIC_FIELD_SIZE )
125
131
#define LORAMAC_RE_JOIN_0_2_MSG_SIZE ( LORAMAC_MHDR_FIELD_SIZE + LORAMAC_JOIN_TYPE_FIELD_SIZE + \
132
LORAMAC_NET_ID_FIELD_SIZE + LORAMAC_DEV_EUI_FIELD_SIZE + \
133
LORAMAC_RJCOUNT_0_FIELD_SIZE + \
134
LORAMAC_MIC_FIELD_SIZE )
135
141
#define LORAMAC_JOIN_ACCEPT_FRAME_MIN_SIZE ( LORAMAC_MHDR_FIELD_SIZE + LORAMAC_JOIN_NONCE_FIELD_SIZE + \
142
LORAMAC_NET_ID_FIELD_SIZE + LORAMAC_DEV_ADDR_FIELD_SIZE + \
143
LORAMAC_DL_SETTINGS_FIELD_SIZE + LORAMAC_RX_DELAY_FIELD_SIZE + \
144
LORAMAC_MIC_FIELD_SIZE )
145
151
#define LORAMAC_JOIN_ACCEPT_FRAME_MAX_SIZE ( LORAMAC_MHDR_FIELD_SIZE + LORAMAC_JOIN_NONCE_FIELD_SIZE + \
152
LORAMAC_NET_ID_FIELD_SIZE + LORAMAC_DEV_ADDR_FIELD_SIZE + \
153
LORAMAC_DL_SETTINGS_FIELD_SIZE + LORAMAC_RX_DELAY_FIELD_SIZE + \
154
LORAMAC_CF_LIST_FIELD_SIZE + LORAMAC_MIC_FIELD_SIZE )
155
160
#define JOIN_ACCEPT_MIC_COMPUTATION_OFFSET \
161
( LORAMAC_MHDR_FIELD_SIZE + LORAMAC_JOIN_TYPE_FIELD_SIZE + LORAMAC_JOIN_EUI_FIELD_SIZE + \
162
LORAMAC_DEV_NONCE_FIELD_SIZE )
163
173
#define LORAMAC_FRAME_PAYLOAD_OVERHEAD_SIZE ( LORAMAC_MHDR_FIELD_SIZE + ( LORAMAC_FHDR_DEV_ADDR_FIELD_SIZE + \
174
LORAMAC_FHDR_F_CTRL_FIELD_SIZE + LORAMAC_FHDR_F_CNT_FIELD_SIZE ) + \
175
LORAMAC_F_PORT_FIELD_SIZE + LORAMAC_MIC_FIELD_SIZE )
176
182
#define LORAMAC_FRAME_PAYLOAD_MIN_SIZE ( LORAMAC_MHDR_FIELD_SIZE + ( LORAMAC_FHDR_DEV_ADDR_FIELD_SIZE + \
183
LORAMAC_FHDR_F_CTRL_FIELD_SIZE + LORAMAC_FHDR_F_CNT_FIELD_SIZE ) + \
184
LORAMAC_MIC_FIELD_SIZE )
185
190
#define LORAMAC_FRAME_PAYLOAD_MAX_SIZE ( LORAMAC_MHDR_FIELD_SIZE + ( LORAMAC_FHDR_DEV_ADDR_FIELD_SIZE + \
191
LORAMAC_FHDR_F_CTRL_FIELD_SIZE + LORAMAC_FHDR_F_CNT_FIELD_SIZE ) + \
192
LORAMAC_F_PORT_FIELD_SIZE + LORAMAC_MAC_PAYLOAD_FIELD_MAX_SIZE + \
193
LORAMAC_MIC_FIELD_SIZE )
194
200
typedef
union
uLoRaMacDLSettings
201
{
205
uint8_t
Value
;
209
struct
sDLSettingsBits
210
{
214
uint8_t
RX2DataRate
: 4;
218
uint8_t
RX1DRoffset
: 3;
222
uint8_t
OptNeg
: 1;
223
}Bits;
224
}
LoRaMacDLSettings_t
;
225
231
typedef
union
uLoRaMacHeader
232
{
236
uint8_t
Value
;
240
struct
sMacHeaderBits
241
{
245
uint8_t
Major
: 2;
249
uint8_t
RFU
: 3;
253
uint8_t
MType
: 3;
254
}Bits;
255
}
LoRaMacHeader_t
;
256
262
typedef
union
uLoRaMacFrameCtrl
263
{
267
uint8_t
Value
;
271
struct
sCtrlBits
272
{
276
uint8_t
FOptsLen
: 4;
280
uint8_t
FPending
: 1;
284
uint8_t
Ack
: 1;
288
uint8_t
AdrAckReq
: 1;
292
uint8_t
Adr
: 1;
293
}Bits;
294
}
LoRaMacFrameCtrl_t
;
295
301
typedef
struct
sLoRaMacFrameHeader
302
{
306
uint32_t
DevAddr
;
310
LoRaMacFrameCtrl_t
FCtrl
;
314
uint16_t
FCnt
;
318
uint8_t FOpts[
LORAMAC_FHDR_F_OPTS_MAX_FIELD_SIZE
];
319
}
LoRaMacFrameHeader_t
;
320
323
#ifdef __cplusplus
324
}
325
#endif
326
327
#endif // __LORAMAC_HEADER_TYPES_H__
LoRaMacDLSettings_t::sDLSettingsBits::RX2DataRate
uint8_t RX2DataRate
Definition:
LoRaMacHeaderTypes.h:214
LoRaMacHeader_t::sMacHeaderBits::RFU
uint8_t RFU
Definition:
LoRaMacHeaderTypes.h:249
LoRaMacFrameCtrl_t::sCtrlBits::FOptsLen
uint8_t FOptsLen
Definition:
LoRaMacHeaderTypes.h:276
LoRaMacHeader_t::sMacHeaderBits::Major
uint8_t Major
Definition:
LoRaMacHeaderTypes.h:245
LoRaMacFrameCtrl_t::sCtrlBits::Ack
uint8_t Ack
Definition:
LoRaMacHeaderTypes.h:284
LoRaMacDLSettings_t
Definition:
LoRaMacHeaderTypes.h:200
LoRaMacFrameHeader_t::FCnt
uint16_t FCnt
Definition:
LoRaMacHeaderTypes.h:314
LoRaMacFrameCtrl_t
Definition:
LoRaMacHeaderTypes.h:262
LoRaMacHeader_t::sMacHeaderBits
Definition:
LoRaMacHeaderTypes.h:240
LoRaMacDLSettings_t::Value
uint8_t Value
Definition:
LoRaMacHeaderTypes.h:205
LoRaMacDLSettings_t::sDLSettingsBits::OptNeg
uint8_t OptNeg
Definition:
LoRaMacHeaderTypes.h:222
LoRaMacFrameHeader_t
Definition:
LoRaMacHeaderTypes.h:301
LoRaMacFrameCtrl_t::sCtrlBits::AdrAckReq
uint8_t AdrAckReq
Definition:
LoRaMacHeaderTypes.h:288
LoRaMacFrameCtrl_t::sCtrlBits::FPending
uint8_t FPending
Definition:
LoRaMacHeaderTypes.h:280
LoRaMacHeader_t
Definition:
LoRaMacHeaderTypes.h:231
LoRaMacFrameHeader_t::DevAddr
uint32_t DevAddr
Definition:
LoRaMacHeaderTypes.h:306
LoRaMacDLSettings_t::sDLSettingsBits::RX1DRoffset
uint8_t RX1DRoffset
Definition:
LoRaMacHeaderTypes.h:218
LoRaMacDLSettings_t::sDLSettingsBits
Definition:
LoRaMacHeaderTypes.h:209
LoRaMacFrameCtrl_t::sCtrlBits::Adr
uint8_t Adr
Definition:
LoRaMacHeaderTypes.h:292
LoRaMacFrameCtrl_t::sCtrlBits
Definition:
LoRaMacHeaderTypes.h:271
LoRaMacHeader_t::sMacHeaderBits::MType
uint8_t MType
Definition:
LoRaMacHeaderTypes.h:253
LORAMAC_FHDR_F_OPTS_MAX_FIELD_SIZE
#define LORAMAC_FHDR_F_OPTS_MAX_FIELD_SIZE
Definition:
LoRaMacHeaderTypes.h:96
LoRaMacFrameHeader_t::FCtrl
LoRaMacFrameCtrl_t FCtrl
Definition:
LoRaMacHeaderTypes.h:310
src
semtech-gitlab-loramac-node
src
mac
LoRaMacHeaderTypes.h
Generated on Tue Jan 19 2021 11:41:40 for LoRaMAC by
1.8.16