LoRaMAC  4.4.7
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;
932 
936 typedef enum eJoinReqIdentifier
937 {
941  REJOIN_REQ_0 = 0x00,
945  REJOIN_REQ_1 = 0x01,
949  REJOIN_REQ_2 = 0x02,
953  JOIN_REQ = 0xFF,
955 
961 typedef enum eLoRaMacMoteCmd
962 {
1020 
1026 typedef enum eLoRaMacSrvCmd
1027 {
1089 
1093 typedef struct sBand
1094 {
1098  uint16_t DCycle;
1102  int8_t TxMaxPower;
1107  TimerTime_t LastBandUpdateTime;
1117  TimerTime_t TimeCredits;
1122  TimerTime_t MaxTimeCredits;
1127 }Band_t;
1128 
1132 typedef union uDrRange
1133 {
1137  int8_t Value;
1141  struct sFields
1142  {
1150  int8_t Min : 4;
1158  int8_t Max : 4;
1159  }Fields;
1160 }DrRange_t;
1161 
1165 typedef struct sChannelParams
1166 {
1170  uint32_t Frequency;
1174  uint32_t Rx1Frequency;
1182  uint8_t Band;
1184 
1190 typedef enum eLoRaMacFrameType
1191 {
1221 
1225 typedef enum eLoRaMacBatteryLevel
1226 {
1244 
1245 #ifdef __cplusplus
1246 }
1247 #endif
1248 
1249 #endif // __LORAMAC_TYPES_H__
1250 
FRAME_TYPE_DATA_CONFIRMED_DOWN
Definition: LoRaMacTypes.h:1215
Band_t::TxMaxPower
int8_t TxMaxPower
Definition: LoRaMacTypes.h:1102
SRV_MAC_PING_SLOT_CHANNEL_REQ
Definition: LoRaMacTypes.h:1079
BAT_LEVEL_EXT_SRC
Definition: LoRaMacTypes.h:1230
MC_KEY_2
Definition: LoRaMacTypes.h:741
LoRaMacMoteCmd_t
LoRaMacMoteCmd_t
Definition: LoRaMacTypes.h:961
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:953
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:1043
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:990
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:986
REJOIN_REQ_1
Definition: LoRaMacTypes.h:945
MOTE_MAC_TX_PARAM_SETUP_ANS
Definition: LoRaMacTypes.h:994
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:936
MulticastCtx_t::DownLinkCounter
uint32_t * DownLinkCounter
Definition: LoRaMacTypes.h:910
SRV_MAC_BEACON_TIMING_ANS
Definition: LoRaMacTypes.h:1083
FRAME_TYPE_DATA_UNCONFIRMED_DOWN
Definition: LoRaMacTypes.h:1207
MC_KEY_0
Definition: LoRaMacTypes.h:717
NWK_KEY
Definition: LoRaMacTypes.h:681
MOTE_MAC_DL_CHANNEL_ANS
Definition: LoRaMacTypes.h:998
NO_KEY
Definition: LoRaMacTypes.h:769
REJOIN_REQ_2
Definition: LoRaMacTypes.h:949
ChannelParams_t::DrRange
DrRange_t DrRange
Definition: LoRaMacTypes.h:1178
MOTE_MAC_PING_SLOT_FREQ_ANS
Definition: LoRaMacTypes.h:1010
BAT_LEVEL_FULL
Definition: LoRaMacTypes.h:1238
SRV_MAC_TX_PARAM_SETUP_REQ
Definition: LoRaMacTypes.h:1063
Band_t::DCycle
uint16_t DCycle
Definition: LoRaMacTypes.h:1098
ChannelParams_t::Rx1Frequency
uint32_t Rx1Frequency
Definition: LoRaMacTypes.h:1174
SRV_MAC_PING_SLOT_INFO_ANS
Definition: LoRaMacTypes.h:1075
BAT_LEVEL_EMPTY
Definition: LoRaMacTypes.h:1234
BAT_LEVEL_NO_MEASURE
Definition: LoRaMacTypes.h:1242
McChannelParams_t::IsRemotelySetup
bool IsRemotelySetup
Definition: LoRaMacTypes.h:842
SRV_MAC_RX_PARAM_SETUP_REQ
Definition: LoRaMacTypes.h:1047
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:1093
NWK_S_ENC_KEY
Definition: LoRaMacTypes.h:701
FType_t
FType_t
Definition: LoRaMacTypes.h:599
FRAME_TYPE_A
Definition: LoRaMacTypes.h:606
ChannelParams_t::Frequency
uint32_t Frequency
Definition: LoRaMacTypes.h:1170
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:1018
Band_t::LastBandUpdateTime
TimerTime_t LastBandUpdateTime
Definition: LoRaMacTypes.h:1107
SRV_MAC_DEVICE_TIME_ANS
Definition: LoRaMacTypes.h:1071
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:1141
MOTE_MAC_PING_SLOT_INFO_REQ
Definition: LoRaMacTypes.h:1006
MC_ROOT_KEY
Definition: LoRaMacTypes.h:709
SRV_MAC_RX_TIMING_SETUP_REQ
Definition: LoRaMacTypes.h:1059
MULTICAST_1_ADDR
Definition: LoRaMacTypes.h:784
ChannelParams_t
Definition: LoRaMacTypes.h:1165
SLOT_RAND_ZERO_KEY
Definition: LoRaMacTypes.h:765
SRV_MAC_NEW_CHANNEL_REQ
Definition: LoRaMacTypes.h:1055
UNICAST_DEV_ADDR
Definition: LoRaMacTypes.h:796
SRV_MAC_LINK_ADR_REQ
Definition: LoRaMacTypes.h:1039
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:1211
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:1195
MOTE_MAC_RX_PARAM_SETUP_ANS
Definition: LoRaMacTypes.h:978
Band_t::ReadyForTransmission
bool ReadyForTransmission
Definition: LoRaMacTypes.h:1126
McChannelParams_t::Class
DeviceClass_t Class
Definition: LoRaMacTypes.h:846
Band_t::MaxTimeCredits
TimerTime_t MaxTimeCredits
Definition: LoRaMacTypes.h:1122
MOTE_MAC_DEVICE_TIME_REQ
Definition: LoRaMacTypes.h:1002
MC_APP_S_KEY_3
Definition: LoRaMacTypes.h:757
APP_S_KEY
Definition: LoRaMacTypes.h:705
LoRaMacBatteryLevel_t
LoRaMacBatteryLevel_t
Definition: LoRaMacTypes.h:1225
SRV_MAC_DL_CHANNEL_REQ
Definition: LoRaMacTypes.h:1067
DrRange_t::sFields::Max
int8_t Max
Definition: LoRaMacTypes.h:1158
MC_KEY_3
Definition: LoRaMacTypes.h:753
MOTE_MAC_DEV_STATUS_ANS
Definition: LoRaMacTypes.h:982
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:1035
SRV_MAC_RESET_CONF
Definition: LoRaMacTypes.h:1031
LoRaMacSrvCmd_t
LoRaMacSrvCmd_t
Definition: LoRaMacTypes.h:1026
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:1112
ChannelParams_t::Band
uint8_t Band
Definition: LoRaMacTypes.h:1182
CLASS_A
Definition: LoRaMacTypes.h:578
Band_t::TimeCredits
TimerTime_t TimeCredits
Definition: LoRaMacTypes.h:1117
DrRange_t::Value
int8_t Value
Definition: LoRaMacTypes.h:1137
LoRaMacFrameType_t
LoRaMacFrameType_t
Definition: LoRaMacTypes.h:1190
MULTICAST_0_ADDR
Definition: LoRaMacTypes.h:780
FRAME_TYPE_PROPRIETARY
Definition: LoRaMacTypes.h:1219
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:970
SRV_MAC_DEV_STATUS_REQ
Definition: LoRaMacTypes.h:1051
FRAME_TYPE_DATA_UNCONFIRMED_UP
Definition: LoRaMacTypes.h:1203
DrRange_t::sFields::Min
int8_t Min
Definition: LoRaMacTypes.h:1150
MC_FCNT_DOWN_2
Definition: LoRaMacTypes.h:662
A_FCNT_DOWN
Definition: LoRaMacTypes.h:645
SRV_MAC_BEACON_FREQ_REQ
Definition: LoRaMacTypes.h:1087
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:1199
REJOIN_REQ_0
Definition: LoRaMacTypes.h:941
MOTE_MAC_DUTY_CYCLE_ANS
Definition: LoRaMacTypes.h:974
MC_KEY_1
Definition: LoRaMacTypes.h:729
DrRange_t
Definition: LoRaMacTypes.h:1132
MOTE_MAC_LINK_CHECK_REQ
Definition: LoRaMacTypes.h:966
MOTE_MAC_BEACON_TIMING_REQ
Definition: LoRaMacTypes.h:1014