LoRaMAC  4.5.2
Documentation of the API
LoRaMacTypes.h
Go to the documentation of this file.
1 
35 #ifndef __LORAMAC_TYPES_H__
36 #define __LORAMAC_TYPES_H__
37 
38 #ifdef __cplusplus
39 extern "C"
40 {
41 #endif
42 
43 #include <stdint.h>
44 #include <stdbool.h>
45 #include "timer.h"
46 #include "systime.h"
47 
51 #define LORAMAC_CRYPTO_UNICAST_KEYS 0
52 
56 #define LORAMAC_CRYPTO_MULTICAST_KEYS 127
57 
61 #define LORAMAC_MAX_MC_CTX 4
62 
77 #define DR_0 0
78 
93 #define DR_1 1
94 
109 #define DR_2 2
110 
125 #define DR_3 3
126 
141 #define DR_4 4
142 
157 #define DR_5 5
158 
173 #define DR_6 6
174 
189 #define DR_7 7
190 
205 #define DR_8 8
206 
221 #define DR_9 9
222 
237 #define DR_10 10
238 
253 #define DR_11 11
254 
269 #define DR_12 12
270 
285 #define DR_13 13
286 
301 #define DR_14 14
302 
317 #define DR_15 15
318 
319 
320 
335 #define TX_POWER_0 0
336 
351 #define TX_POWER_1 1
352 
367 #define TX_POWER_2 2
368 
383 #define TX_POWER_3 3
384 
399 #define TX_POWER_4 4
400 
415 #define TX_POWER_5 5
416 
431 #define TX_POWER_6 6
432 
447 #define TX_POWER_7 7
448 
463 #define TX_POWER_8 8
464 
479 #define TX_POWER_9 9
480 
495 #define TX_POWER_10 10
496 
511 #define TX_POWER_11 11
512 
527 #define TX_POWER_12 12
528 
543 #define TX_POWER_13 13
544 
559 #define TX_POWER_14 14
560 
564 #define TX_POWER_15 15
565 
571 typedef enum DeviceClass_e
572 {
578  CLASS_A = 0x00,
584  CLASS_B = 0x01,
590  CLASS_C = 0x02,
592 
599 typedef enum eFType
600 {
625 }FType_t;
626 
630 typedef enum eFCntIdentifier
631 {
635  FCNT_UP = 0,
668 
672 typedef enum eKeyIdentifier
673 {
677  APP_KEY = 0,
771 
775 typedef enum eAddressIdentifier
776 {
798 
799 /*
800  * Multicast Rx window parameters
801  */
802 typedef union uMcRxParams
803 {
804  struct
805  {
809  uint32_t Frequency;
813  int8_t Datarate;
818  uint16_t Periodicity;
819  }ClassB;
820  struct
821  {
825  uint32_t Frequency;
829  int8_t Datarate;
830  }ClassC;
831 }McRxParams_t;
832 
836 typedef struct sMcChannelParams
837 {
850  bool IsEnabled;
851  /*
852  * Address identifier
853  */
854  AddressIdentifier_t GroupID;
858  uint32_t Address;
862  union uMcKeys
863  {
868  uint8_t *McKeyE;
872  struct
873  {
877  uint8_t *McAppSKey;
881  uint8_t *McNwkSKey;
882  }Session;
883  }McKeys;
887  uint32_t FCountMin;
891  uint32_t FCountMax;
897 
901 typedef struct sMulticastCtx
902 {
910  uint32_t* DownLinkCounter;
911  /*
912  * Following parameters are only used for ClassB multicast channels
913  */
920  uint8_t PingNb;
926  uint16_t PingPeriod;
930  uint16_t PingOffset;
934  uint8_t FPendingSet;
936 
940 typedef enum eJoinReqIdentifier
941 {
945  REJOIN_REQ_0 = 0x00,
949  REJOIN_REQ_1 = 0x01,
953  REJOIN_REQ_2 = 0x02,
957  JOIN_REQ = 0xFF,
959 
965 typedef enum eLoRaMacMoteCmd
966 {
1024 
1030 typedef enum eLoRaMacSrvCmd
1031 {
1093 
1097 typedef struct sBand
1098 {
1102  uint16_t DCycle;
1106  int8_t TxMaxPower;
1111  TimerTime_t LastBandUpdateTime;
1121  TimerTime_t TimeCredits;
1126  TimerTime_t MaxTimeCredits;
1131 }Band_t;
1132 
1136 typedef union uDrRange
1137 {
1141  int8_t Value;
1145  struct sFields
1146  {
1154  int8_t Min : 4;
1162  int8_t Max : 4;
1163  }Fields;
1164 }DrRange_t;
1165 
1169 typedef struct sChannelParams
1170 {
1174  uint32_t Frequency;
1178  uint32_t Rx1Frequency;
1186  uint8_t Band;
1188 
1194 typedef enum eLoRaMacFrameType
1195 {
1225 
1229 typedef enum eLoRaMacBatteryLevel
1230 {
1248 
1249 #ifdef __cplusplus
1250 }
1251 #endif
1252 
1253 #endif // __LORAMAC_TYPES_H__
1254 
FRAME_TYPE_DATA_CONFIRMED_DOWN
Definition: LoRaMacTypes.h:1219
Band_t::TxMaxPower
int8_t TxMaxPower
Definition: LoRaMacTypes.h:1106
SRV_MAC_PING_SLOT_CHANNEL_REQ
Definition: LoRaMacTypes.h:1083
BAT_LEVEL_EXT_SRC
Definition: LoRaMacTypes.h:1234
MC_KEY_2
Definition: LoRaMacTypes.h:741
LoRaMacMoteCmd_t
LoRaMacMoteCmd_t
Definition: LoRaMacTypes.h:965
CLASS_B
Definition: LoRaMacTypes.h:584
MulticastCtx_t::ChannelParams
McChannelParams_t ChannelParams
Definition: LoRaMacTypes.h:906
MC_NWK_S_KEY_3
Definition: LoRaMacTypes.h:761
MC_APP_S_KEY_2
Definition: LoRaMacTypes.h:745
MulticastCtx_t::PingOffset
uint16_t PingOffset
Definition: LoRaMacTypes.h:930
FCNT_DOWN
Definition: LoRaMacTypes.h:650
MC_APP_S_KEY_0
Definition: LoRaMacTypes.h:721
MC_KE_KEY
Definition: LoRaMacTypes.h:713
McChannelParams_t::IsEnabled
bool IsEnabled
Definition: LoRaMacTypes.h:850
JOIN_REQ
Definition: LoRaMacTypes.h:957
FCNT_UP
Definition: LoRaMacTypes.h:635
McChannelParams_t::Address
uint32_t Address
Definition: LoRaMacTypes.h:858
DeviceClass_t
DeviceClass_t
Definition: LoRaMacTypes.h:571
SRV_MAC_DUTY_CYCLE_REQ
Definition: LoRaMacTypes.h:1047
MC_NWK_S_KEY_2
Definition: LoRaMacTypes.h:749
MC_APP_S_KEY_1
Definition: LoRaMacTypes.h:733
MOTE_MAC_RX_TIMING_SETUP_ANS
Definition: LoRaMacTypes.h:994
MC_NWK_S_KEY_0
Definition: LoRaMacTypes.h:725
J_S_INT_KEY
Definition: LoRaMacTypes.h:685
MulticastCtx_t::PingPeriod
uint16_t PingPeriod
Definition: LoRaMacTypes.h:926
MC_FCNT_DOWN_0
Definition: LoRaMacTypes.h:654
MOTE_MAC_NEW_CHANNEL_ANS
Definition: LoRaMacTypes.h:990
REJOIN_REQ_1
Definition: LoRaMacTypes.h:949
MOTE_MAC_TX_PARAM_SETUP_ANS
Definition: LoRaMacTypes.h:998
J_S_ENC_KEY
Definition: LoRaMacTypes.h:689
MC_NWK_S_KEY_1
Definition: LoRaMacTypes.h:737
FRAME_TYPE_B
Definition: LoRaMacTypes.h:612
JoinReqIdentifier_t
JoinReqIdentifier_t
Definition: LoRaMacTypes.h:940
MulticastCtx_t::DownLinkCounter
uint32_t * DownLinkCounter
Definition: LoRaMacTypes.h:910
SRV_MAC_BEACON_TIMING_ANS
Definition: LoRaMacTypes.h:1087
FRAME_TYPE_DATA_UNCONFIRMED_DOWN
Definition: LoRaMacTypes.h:1211
MC_KEY_0
Definition: LoRaMacTypes.h:717
NWK_KEY
Definition: LoRaMacTypes.h:681
MOTE_MAC_DL_CHANNEL_ANS
Definition: LoRaMacTypes.h:1002
NO_KEY
Definition: LoRaMacTypes.h:769
REJOIN_REQ_2
Definition: LoRaMacTypes.h:953
ChannelParams_t::DrRange
DrRange_t DrRange
Definition: LoRaMacTypes.h:1182
BAT_LEVEL_FULL
Definition: LoRaMacTypes.h:1242
SRV_MAC_TX_PARAM_SETUP_REQ
Definition: LoRaMacTypes.h:1067
Band_t::DCycle
uint16_t DCycle
Definition: LoRaMacTypes.h:1102
ChannelParams_t::Rx1Frequency
uint32_t Rx1Frequency
Definition: LoRaMacTypes.h:1178
SRV_MAC_PING_SLOT_INFO_ANS
Definition: LoRaMacTypes.h:1079
BAT_LEVEL_EMPTY
Definition: LoRaMacTypes.h:1238
BAT_LEVEL_NO_MEASURE
Definition: LoRaMacTypes.h:1246
McChannelParams_t::IsRemotelySetup
bool IsRemotelySetup
Definition: LoRaMacTypes.h:842
SRV_MAC_RX_PARAM_SETUP_REQ
Definition: LoRaMacTypes.h:1051
MC_FCNT_DOWN_1
Definition: LoRaMacTypes.h:658
APP_KEY
Definition: LoRaMacTypes.h:677
FRAME_TYPE_C
Definition: LoRaMacTypes.h:618
Band_t
Definition: LoRaMacTypes.h:1097
NWK_S_ENC_KEY
Definition: LoRaMacTypes.h:701
MOTE_MAC_PING_SLOT_CHANNEL_ANS
Definition: LoRaMacTypes.h:1014
FType_t
FType_t
Definition: LoRaMacTypes.h:599
FRAME_TYPE_A
Definition: LoRaMacTypes.h:606
ChannelParams_t::Frequency
uint32_t Frequency
Definition: LoRaMacTypes.h:1174
F_NWK_S_INT_KEY
Definition: LoRaMacTypes.h:693
CLASS_C
Definition: LoRaMacTypes.h:590
McRxParams_t
Definition: LoRaMacTypes.h:802
McChannelParams_t::uMcKeys
Definition: LoRaMacTypes.h:862
MOTE_MAC_BEACON_FREQ_ANS
Definition: LoRaMacTypes.h:1022
Band_t::LastBandUpdateTime
TimerTime_t LastBandUpdateTime
Definition: LoRaMacTypes.h:1111
SRV_MAC_DEVICE_TIME_ANS
Definition: LoRaMacTypes.h:1075
S_NWK_S_INT_KEY
Definition: LoRaMacTypes.h:697
FRAME_TYPE_D
Definition: LoRaMacTypes.h:624
MulticastCtx_t
Definition: LoRaMacTypes.h:901
DrRange_t::sFields
Definition: LoRaMacTypes.h:1145
MOTE_MAC_PING_SLOT_INFO_REQ
Definition: LoRaMacTypes.h:1010
MC_ROOT_KEY
Definition: LoRaMacTypes.h:709
SRV_MAC_RX_TIMING_SETUP_REQ
Definition: LoRaMacTypes.h:1063
MulticastCtx_t::FPendingSet
uint8_t FPendingSet
Definition: LoRaMacTypes.h:934
MULTICAST_1_ADDR
Definition: LoRaMacTypes.h:784
ChannelParams_t
Definition: LoRaMacTypes.h:1169
SLOT_RAND_ZERO_KEY
Definition: LoRaMacTypes.h:765
SRV_MAC_NEW_CHANNEL_REQ
Definition: LoRaMacTypes.h:1059
UNICAST_DEV_ADDR
Definition: LoRaMacTypes.h:796
SRV_MAC_LINK_ADR_REQ
Definition: LoRaMacTypes.h:1043
McChannelParams_t::FCountMin
uint32_t FCountMin
Definition: LoRaMacTypes.h:887
MULTICAST_2_ADDR
Definition: LoRaMacTypes.h:788
FRAME_TYPE_DATA_CONFIRMED_UP
Definition: LoRaMacTypes.h:1215
AddressIdentifier_t
AddressIdentifier_t
Definition: LoRaMacTypes.h:775
McChannelParams_t::FCountMax
uint32_t FCountMax
Definition: LoRaMacTypes.h:891
FRAME_TYPE_JOIN_REQ
Definition: LoRaMacTypes.h:1199
MOTE_MAC_RX_PARAM_SETUP_ANS
Definition: LoRaMacTypes.h:982
Band_t::ReadyForTransmission
bool ReadyForTransmission
Definition: LoRaMacTypes.h:1130
McChannelParams_t::Class
DeviceClass_t Class
Definition: LoRaMacTypes.h:846
Band_t::MaxTimeCredits
TimerTime_t MaxTimeCredits
Definition: LoRaMacTypes.h:1126
MOTE_MAC_DEVICE_TIME_REQ
Definition: LoRaMacTypes.h:1006
MC_APP_S_KEY_3
Definition: LoRaMacTypes.h:757
APP_S_KEY
Definition: LoRaMacTypes.h:705
LoRaMacBatteryLevel_t
LoRaMacBatteryLevel_t
Definition: LoRaMacTypes.h:1229
SRV_MAC_DL_CHANNEL_REQ
Definition: LoRaMacTypes.h:1071
DrRange_t::sFields::Max
int8_t Max
Definition: LoRaMacTypes.h:1162
MC_KEY_3
Definition: LoRaMacTypes.h:753
MOTE_MAC_DEV_STATUS_ANS
Definition: LoRaMacTypes.h:986
FCntIdentifier_t
FCntIdentifier_t
Definition: LoRaMacTypes.h:630
McChannelParams_t::uMcKeys::McKeyE
uint8_t * McKeyE
Definition: LoRaMacTypes.h:868
KeyIdentifier_t
KeyIdentifier_t
Definition: LoRaMacTypes.h:672
SRV_MAC_LINK_CHECK_ANS
Definition: LoRaMacTypes.h:1039
SRV_MAC_RESET_CONF
Definition: LoRaMacTypes.h:1035
LoRaMacSrvCmd_t
LoRaMacSrvCmd_t
Definition: LoRaMacTypes.h:1030
N_FCNT_DOWN
Definition: LoRaMacTypes.h:640
LORAMAC_CRYPTO_MULTICAST_KEYS
#define LORAMAC_CRYPTO_MULTICAST_KEYS
Definition: LoRaMacTypes.h:56
Band_t::LastMaxCreditAssignTime
TimerTime_t LastMaxCreditAssignTime
Definition: LoRaMacTypes.h:1116
ChannelParams_t::Band
uint8_t Band
Definition: LoRaMacTypes.h:1186
CLASS_A
Definition: LoRaMacTypes.h:578
Band_t::TimeCredits
TimerTime_t TimeCredits
Definition: LoRaMacTypes.h:1121
DrRange_t::Value
int8_t Value
Definition: LoRaMacTypes.h:1141
LoRaMacFrameType_t
LoRaMacFrameType_t
Definition: LoRaMacTypes.h:1194
MULTICAST_0_ADDR
Definition: LoRaMacTypes.h:780
FRAME_TYPE_PROPRIETARY
Definition: LoRaMacTypes.h:1223
McChannelParams_t::RxParams
McRxParams_t RxParams
Definition: LoRaMacTypes.h:895
MC_FCNT_DOWN_3
Definition: LoRaMacTypes.h:666
MOTE_MAC_LINK_ADR_ANS
Definition: LoRaMacTypes.h:974
SRV_MAC_DEV_STATUS_REQ
Definition: LoRaMacTypes.h:1055
FRAME_TYPE_DATA_UNCONFIRMED_UP
Definition: LoRaMacTypes.h:1207
DrRange_t::sFields::Min
int8_t Min
Definition: LoRaMacTypes.h:1154
MC_FCNT_DOWN_2
Definition: LoRaMacTypes.h:662
A_FCNT_DOWN
Definition: LoRaMacTypes.h:645
SRV_MAC_BEACON_FREQ_REQ
Definition: LoRaMacTypes.h:1091
MULTICAST_3_ADDR
Definition: LoRaMacTypes.h:792
MulticastCtx_t::PingNb
uint8_t PingNb
Definition: LoRaMacTypes.h:920
McChannelParams_t
Definition: LoRaMacTypes.h:836
FRAME_TYPE_JOIN_ACCEPT
Definition: LoRaMacTypes.h:1203
REJOIN_REQ_0
Definition: LoRaMacTypes.h:945
MOTE_MAC_DUTY_CYCLE_ANS
Definition: LoRaMacTypes.h:978
MC_KEY_1
Definition: LoRaMacTypes.h:729
DrRange_t
Definition: LoRaMacTypes.h:1136
MOTE_MAC_LINK_CHECK_REQ
Definition: LoRaMacTypes.h:970
MOTE_MAC_BEACON_TIMING_REQ
Definition: LoRaMacTypes.h:1018