Nol.A SDK Library 26.11.2
For IoT System Software Development
Loading...
Searching...
No Matches
LoRaMacUS902Hybrid Class Reference
Inheritance diagram for LoRaMacUS902Hybrid:
LoRaMacUS902 LoRaMac PacketRadio

Public Member Functions

 LoRaMacUS902Hybrid (LoRaRadioChip &radio, uint16_t radioWakeupTime=1)
error_t beginJoining (const uint8_t *devEui, const uint8_t *appEui, const uint8_t *appKey)
 Over-the-Air Activation (OTAA) 방식의 join을 시도합니다.
Public Member Functions inherited from LoRaMacUS902
 LoRaMacUS902 (LoRaRadioChip &radio, uint16_t radioWakeupTime=1)
error_t addChannel (uint8_t id, ChannelParams_t params)
 Add a channel.
error_t removeChannel (uint8_t id)
 LoRaMAC channel remove service.
const ChannelParams_t * getChannel (uint8_t index)
 채널 정보를 가져옵니다.
uint8_t getMaxPayload (uint8_t dr, bool repeater=false) override
 최대 application payload 길이(N)를 가져옵니다.
virtual uint32_t getRx1Frequency () override
 Rx1에서 사용할 주파수를 가져옵니다.
virtual uint8_t getRx1Datarate () override
 Rx1에 사용될, DR offset이 적용된 DR을 가져옵니다.
Public Member Functions inherited from LoRaMac
 LoRaMac (LoRaRadioChip &, int8_t defTxPower, int8_t defDatarate, bool dutyCycleOn, uint8_t numChannels, const DatarateParams_t *drTable, uint8_t maxDatarate, uint8_t minTxPower, uint8_t maxTxPower, uint8_t adrAckLimit, uint8_t adrAckDelay, uint32_t maxFCntGap, uint16_t radioWakeupTime=1)
virtual error_t begin (uint8_t(*getBatteryLevel)()=NULL)
 LoRaMAC layer initialization.
error_t linkMulticastChannel (MulticastParams_t *channelParam)
 LoRaMAC multicast channel link service.
error_t unlinkMulticastChannel (MulticastParams_t *channelParam)
 LoRaMAC multicast channel unlink service.
error_t beginJoining (const uint8_t *devEui, const uint8_t *appKey)
bool isJoining ()
 현재 OTAA Join 중인지 확인합니다.
void onJoin (void(*func)(LoRaMac &mac, bool result, const uint8_t *devEui, const uint8_t *appEui, const uint8_t *appKey, const uint8_t *nwkSKey, const uint8_t *appSKey, uint32_t devAddr, const RadioPacket &frame, uint32_t airTime))
 Join이 완료되었을 때 호출될 콜백함수를 지정합니다.
void onJoinRequested (void(*func)(LoRaMac &, uint32_t frequencyHz, const DatarateParams_t &))
 JoinRequest 메시지를 보낼 때 호출될 콜백함수를 지정합니다.
virtual void setABP (const uint8_t *nwkSKey, const uint8_t *appSKey, uint32_t devAddr)
 ABP를 사용하도록 설정합니다.
void setPublicNetwork (bool enable)
 공용 LoRaWAN 네트워크를 사용할지 설정합니다.
DeviceClass_t getDeviceClass ()
 Device class를 가져옵니다.
error_t setDeviceClass (DeviceClass_t c)
 Device class를 설정합니다.
error_t setDeviceClass (DeviceClass_t c, bool sendDeviceModeInd, void(*func)(LoRaMac &, DeviceClass_t))
const DatarateParams_t * getDatarate (uint8_t index) const
 Datarate 정보를 가져옵니다.
uint8_t getRx2Datarate ()
 Rx2에서 사용할 DR을 가져옵니다.
void setRx2Datarate (uint8_t dr)
 Rx2에서 사용할 DR을 임의로 설정합니다.
uint32_t getRx2Frequency ()
 Rx2에서 사용할 주파수를 가져옵니다.
void setRx2Frequency (uint32_t f)
 Rx2에서 사용할 주파수를 임의로 설정합니다.
uint8_t getRx1DrOffset ()
 Rx1에 적용될 DR offset을 가져옵니다.
int32_t getNetworkID ()
 Network ID를 가져옵니다.
uint32_t getDeviceAddress ()
 Device address를 가져옵니다.
uint16_t getRx1Delay ()
 Tx 종료 후 Rx1 window가 열릴 때까지의 지연 시간(단위: 밀리초)을 가져옵니다.
uint16_t getRx2Delay ()
 Tx 종료 후 Rx2 window가 열릴 때까지의 지연 시간(단위: 밀리초)을 가져옵니다.
uint16_t getJoinAcceptDelay1 ()
 JoinRequest 송신 후 Rx1 window가 열릴 때까지의 지연 시간(단위: 밀리초)을 가져옵니다.
uint16_t getJoinAcceptDelay2 ()
 JoinRequest 송신 후 Rx2 window가 열릴 때까지의 지연 시간(단위: 밀리초)을 가져옵니다.
uint8_t getCurrentDatarateIndex ()
 현재 설정된 기본 datarate 인덱스를 가져옵니다.
error_t setCurrentDatarateIndex (uint8_t index)
 기본 datarate를 설정합니다.
uint8_t getCurrentTxPowerIndex ()
 기본 Tx power index를 가져옵니다.
error_t setCurrentTxPowerIndex (uint8_t index)
 기본 Tx power를 설정합니다.
uint32_t getUpLinkCounter ()
 Uplink용 frame counter (fCntUp) 를 가져옵니다.
virtual void setUpLinkCounter (uint32_t)
 Uplink용 frame counter (fCntUp) 를 설정합니다.
uint32_t getDownLinkCounter ()
 Downlink용 frame counter (fCntDown) 를 가져옵니다.
virtual void setDownLinkCounter (uint32_t)
 Downlink용 frame counter (fCntDown) 를 설정합니다.
uint8_t getNumRepetitions ()
 현재 설정된 unconfirmed uplink frame에 적용되는 반복 전송 횟수를 가져옵니다.
uint8_t getMaxDutyCycle ()
 현재의 최대 duty cycle을 가져옵니다.
error_t send (LoRaMacFrame *frame)
 frame 을 전송합니다.
error_t cancelSend (LoRaMacFrame *frame)
 frame 전송을 취소합니다.
void onSendDone (void(*sendDoneHandler)(LoRaMac &, LoRaMacFrame *))
 전송이 완료될 때 호출될 함수를 지정합니다.
void onReceive (void(*receiveHandler)(LoRaMac &radio, const LoRaMacFrame *frame))
 수신이 완료될 때 호출될 함수를 지정합니다.
void onReceiveErrorFrame (void(*receiveHandler)(LoRaMac &radio, const RadioPacket &frame))
 비정상 프레임 수신시 호출될 함수를 지정합니다.
uint8_t getPendingMacCommandsLength ()
 현재 송신 대기 중인 MAC commands의 길이를 가져옵니다.
std::array< uint8_t, 8 > getDevEui ()
 Device EUI를 가져옵니다.
std::array< uint8_t, 8 > getAppEui ()
 Application EUI를 가져옵니다.
std::array< uint8_t, 16 > getAppKey ()
 AppKey를 가져옵니다.
std::array< uint8_t, 16 > getNwkSKey ()
 NwkSKey를 가져옵니다.
std::array< uint8_t, 16 > getAppSKey ()
 AppSKey를 가져옵니다.
virtual error_t requestLinkCheck ()
 LinkCheckReq MAC command를 요청합니다.
error_t requestLinkCheck (void(*func)(LoRaMac &))
 LinkCheckReq MAC command를 요청합니다.
void onLinkChecked (void(*func)(LoRaMac &, uint8_t demodMargin, uint8_t numGateways))
 LinkCheckReq MAC command에 대한 응답(LinkCheckAns)이 올 경우 호출될 콜백함수를 지정합니다.
error_t requestDeviceTime (RTCCalendar *rtc)
 DeviceTimeReq MAC command를 요청합니다.
error_t requestDeviceTime (RTCCalendar *rtc, void(*func)(LoRaMac &))
 DeviceTimeReq MAC command를 요청합니다.
error_t requestDeviceTime (void(*func)(LoRaMac &)=nullptr)
 DeviceTimeReq MAC command를 요청합니다.
void onDeviceTimeAnswered (void(*func)(LoRaMac &, bool success, uint32_t tSeconds, uint8_t tFracSeconds), RTCCalendar *rtc)
 DeviceTimeReq MAC command에 대한 응답(DeviceTimeAns)이 올 경우 호출될 콜백함수와 RTCCalendar 를 지정합니다.
void onLinkADRReqReceived (void(*func)(LoRaMac &, const uint8_t *))
 LinkADRReq MAC command를 수신시 호출될 콜백함수를 지정합니다.
void onLinkADRAnsSent (void(*func)(LoRaMac &, uint8_t status))
 LinkADRAns MAC command를 송신시 호출될 콜백함수를 지정합니다.
void onDutyCycleReqReceived (void(*func)(LoRaMac &, const uint8_t *))
 DutyCycleReq MAC command를 수신시 호출될 콜백함수를 지정합니다.
void onDutyCycleAnsSent (void(*func)(LoRaMac &))
 DutyCycleAns MAC command를 송신시 호출될 콜백함수를 지정합니다.
void onRxParamSetupReqReceived (void(*func)(LoRaMac &, const uint8_t *))
 RxParamSetupReq MAC command를 수신시 호출될 콜백함수를 지정합니다.
void onRxParamSetupAnsSent (void(*func)(LoRaMac &, uint8_t status))
 RxParamSetupAns MAC command를 송신시 호출될 콜백함수를 지정합니다.
void onDevStatusReqReceived (void(*func)(LoRaMac &))
 DevStatusReq MAC command를 수신시 호출될 콜백함수를 지정합니다.
void onDevStatusAnsSent (void(*func)(LoRaMac &, uint8_t bat, uint8_t margin))
 DevStatusAns MAC command를 송신시 호출될 콜백함수를 지정합니다.
void onNewChannelReqReceived (void(*func)(LoRaMac &, const uint8_t *))
 NewChannelReq MAC command를 수신시 호출될 콜백함수를 지정합니다.
void onNewChannelAnsSent (void(*func)(LoRaMac &, uint8_t status))
 NewChannelAns MAC command를 송신시 호출될 콜백함수를 지정합니다.
void onRxTimingSetupReqReceived (void(*func)(LoRaMac &, const uint8_t *))
 RxTimingSetupReq MAC command를 수신시 호출될 콜백함수를 지정합니다.
void onRxTimingSetupAnsSent (void(*func)(LoRaMac &))
 RxTimingSetupReq MAC command를 수신시 호출될 콜백함수를 지정합니다.
Public Member Functions inherited from PacketRadio
error_t send (RadioPacket *frame)
 frame 을 전송합니다.
error_t cancelSend (RadioPacket *frame)
 frame 전송을 취소합니다.
void onSendDone (void(*sendDoneHandler)(PacketRadio &, RadioPacket *))
 전송이 완료될 때 호출될 함수를 지정합니다.
uint8_t getNumPendingSendFrames ()
 전송 대기 중인 프레임 갯수를 구합니다.
void onReceive (void(*receiveHandler)(PacketRadio &, const RadioPacket *))
 수신이 완료될 때 호출될 함수를 지정합니다.
void setEventListener (PacketRadioEventListener &)
 전송 완료 및 수신 이벤트에 대해 PacketRadioEventListener 를 구현한 클래스로 콜백합니다.

Protected Member Functions

void resetRegionState () override
Protected Member Functions inherited from LoRaMac
void resetSessionState ()
virtual int8_t applyDlChannel (const uint8_t *payload)
virtual void applyTxParamSetup (uint8_t payload)
virtual bool checkTxFrame (LoRaMacFrame *frame)
virtual void sendDone (RadioPacket *frame, RadioPacket::Result_t)
virtual void receive (LoRaMacFrame *frame)
virtual void notifyJoin ()
int8_t getChannelIndex (uint32_t frequency)
int8_t getDatarateIndex (DatarateParams_t &dr)
int8_t getDatarateIndex (LoRaMacFrame &f)
int8_t getDatarateIndex (LoRaMacFrame *f)
bool checkTxFrame (RadioPacket *frame)
void handleRxFrame (RadioPacket *frame)
void log (const char *name, const char *msg)
void logTx (const char *name, uint32_t freq, uint8_t drIndex, int8_t power)
void logRx (const char *name, uint32_t freq, uint8_t drIndex, uint8_t window)
error_t setupRxWindow (uint8_t slot)
void onRxWindow2TimerEvent ()
void closeRxWindow ()
virtual FCntDownStatus_t getFCntDown (uint16_t fCntFHDR, uint32_t &newFCnt)
bool requestsAck ()
virtual void eventTxDelayed ()
virtual bool channelSupportsDR (const ChannelParams_t &channel, uint8_t dr) const
 Checks whether a channel's DRRange includes the given datarate. Override to interpret region-specific non-contiguous ranges. Radio capability and datarate validity are checked separately.
void computeRxWindowParameters (uint8_t drIndex, uint16_t *timeout, int16_t *offset, uint8_t minRxSymbols=6, uint32_t systemMaxRxError=10)
virtual uint8_t parseDevTimeAns (const uint8_t *payload, uint8_t len, struct timeval *t)
 DevTimeAns에 대한 parser.
Protected Member Functions inherited from PacketRadio
virtual void receive (RadioPacket *frame)
RadioPacket * getNextTxFrame ()
error_t enqueueTxFrame (RadioPacket *frame)
virtual void notifySendDone (RadioPacket *frame)
virtual void notifyReceive (RadioPacket *frame)

Additional Inherited Members

Public Types inherited from LoRaMac
enum  DeviceClass_t { CLASS_A = 0 , CLASS_B = 1 , CLASS_C = 2 }
enum  BatteryLevel_t { BAT_LEVEL_EXT_SRC = 0x00 , BAT_LEVEL_EMPTY = 0x01 , BAT_LEVEL_FULL = 0xFE , BAT_LEVEL_NO_MEASURE = 0xFF }
enum  { ERROR_INVALID_FREQUENCY = -100 , ERROR_INVALID_DATARATE = -101 , ERROR_INVALID_FREQ_AND_DR = -102 }
enum  MacCmd_t {
  MAC_CMD_LINK_CHECK = 0x02 , MAC_CMD_LINK_ADR = 0x03 , MAC_CMD_DUTY_CYCLE = 0x04 , MAC_CMD_RX_PARAM_SETUP = 0x05 ,
  MAC_CMD_DEV_STATUS = 0x06 , MAC_CMD_NEW_CHANNEL = 0x07 , MAC_CMD_RX_TIMING_SETUP = 0x08 , MAC_CMD_TX_PARAM_SETUP = 0x09 ,
  MAC_CMD_DL_CHANNEL = 0x0A , MAC_CMD_DEV_TIME = 0x0D
}
Public Types inherited from PacketRadio
enum  { TX_FIFO_SIZE = 10 , RX_FIFO_SIZE = 10 , TX_DONE_FIFO_SIZE = 10 }
Static Public Member Functions inherited from LoRaMac
static void ComputeMic (const uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t address, uint8_t dir, uint32_t sequenceCounter, uint32_t *mic)
static void PayloadEncrypt (const uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t address, uint8_t dir, uint32_t sequenceCounter, uint8_t *encBuffer)
static void PayloadDecrypt (const uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t address, uint8_t dir, uint32_t sequenceCounter, uint8_t *decBuffer)
static void JoinComputeMic (const uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t *mic)
static void JoinDecrypt (const uint8_t *buffer, uint16_t size, const uint8_t *key, uint8_t *decBuffer)
static void JoinComputeSKeys (const uint8_t *key, const uint8_t *appNonce, uint16_t devNonce, uint8_t *nwkSKey, uint8_t *appSKey)
Public Attributes inherited from LoRaMac
uint8_t const MaxNumChannels
 최대 채널 수
const DatarateParams_t * DR_TABLE
uint8_t const MaxDatarate
 지정된 최대 datarate index. 칩이 지원하지 않는 SF는 별도로 제외합니다.
uint8_t const MinTxPower
 Minimum Tx power index.
uint8_t const MaxTxPower
 Maximum Tx power index.
uint8_t const AdrAckLimit
 ADR_ACK_LIMIT.
uint8_t const AdrAckDelay
 ADR_ACK_DELAY.
uint32_t const MAX_FCNT_GAP
uint16_t const RadioWakeupTime
bool useADR = true
 ADR 사용여부를 설정합니다.
bool receivesDuplicate = false
 중복 프레임을 수신 여부를 설정합니다.
bool framePending = false
 Frame pending.
void(* onUplinkDone )(LoRaMac &, LoRaMacFrame *) = nullptr
 Uplink (Tx) 전송이 완료될 때 호출될 함수를 지정합니다.
void(* onRxWindowClosed )(LoRaMac &mac, uint8_t window, struct timeval nextWindowAt) = nullptr
 Class A RX1 또는 RX2 수신 창이 닫힌 뒤 작업 문맥에서 호출됩니다.
void(* onMACCommandReceived )(LoRaMac &mac, MacCmd_t cid, const uint8_t *reqData, int16_t reqLen, const uint8_t *ansData, int16_t ansLen) = nullptr
 MAC command 수신시 호출될 함수 포인터
void(* onMACCommandSend )(LoRaMac &mac, MacCmd_t cid, const uint8_t *data, uint8_t len) = nullptr
 MAC command 송신시 호출될 함수 포인터
Protected Types inherited from LoRaMac
enum  FrameType_t {
  FRAME_TYPE_JOIN_REQ = 0x00 , FRAME_TYPE_JOIN_ACCEPT = 0x01 , FRAME_TYPE_DATA_UNCONFIRMED_UP = 0x02 , FRAME_TYPE_DATA_UNCONFIRMED_DOWN = 0x03 ,
  FRAME_TYPE_DATA_CONFIRMED_UP = 0x04 , FRAME_TYPE_DATA_CONFIRMED_DOWN = 0x05 , FRAME_TYPE_RFU = 0x06 , FRAME_TYPE_PROPRIETARY = 0x07
}
enum  {
  ADR_ACK_LIMIT = 64 , ADR_ACK_DELAY = 32 , PHY_PAYLOAD_MAX_LENGTH = 255 , MAC_COMMAND_MAX_LENGTH = 15 ,
  FRM_PAYLOAD_MAX_LENGTH = 242
}
enum  EventInfoStatus_t {
  EVENT_INFO_STATUS_OK = 0 , EVENT_INFO_STATUS_ERROR , EVENT_INFO_STATUS_TX_TIMEOUT , EVENT_INFO_STATUS_RX1_TIMEOUT ,
  EVENT_INFO_STATUS_RX2_TIMEOUT , EVENT_INFO_STATUS_JOIN_FAIL , EVENT_INFO_STATUS_DOWNLINK_REPEATED , EVENT_INFO_STATUS_ADDRESS_FAIL ,
  EVENT_INFO_STATUS_MIC_FAIL , EVENT_INFO_STATUS_CHANNEL_BUSY
}
enum  {
  MAC_IDLE = 0x00000000ul , MAC_TX_RUNNING = 0x00000001ul , MAC_RX = 0x00000002ul , MAC_ACK_REQ = 0x00000004ul ,
  MAC_ACK_RETRY = 0x00000008ul , MAC_TX_DELAYED = 0x00000010ul , MAC_TX_CONFIG = 0x00000020ul
}
enum  FCntDownStatus_t { NEW_FCNT_OK = 0 , NEW_FCNT_DUPLICATE , NEW_FCNT_MAX_GAP_EXCEEDED }
Static Protected Member Functions inherited from LoRaMac
static void resetChannels (ChannelParams_t *channels, uint8_t count, const ChannelParams_t *defaults=nullptr, uint8_t defaultCount=0)
static void resetChannelMask (uint16_t *mask, uint8_t words, uint8_t enabledCount)
static void OnTxDelayedTimerEvent (void *)
static void OnMacStateCheckTimerEvent (void *)
static void dispatchRxWindowClosedEvents (void *ctx)
Protected Attributes inherited from LoRaMacUS902
uint16_t ChannelsMaskRemaining [6]
uint16_t ChannelsMask [6]
Protected Attributes inherited from LoRaMac
bool PublicNetwork = true
bool RepeaterSupport = false
bool joining = false
bool isLinkCheckRequested = false
bool isDeviceTimeRequested = false
bool isLinkCheckSent = false
bool isDeviceTimeSent = false
bool serverAckRequested = false
bool DutyCycleOn
bool ackTimeoutRetry = false
bool stateCheckerPosted = false
bool isOptNegSet = false
LoRaRadioChip & Radio
std::array< uint8_t, 8 > devEui
std::array< uint8_t, 8 > appEui
std::array< uint8_t, 16 > appKey
std::array< uint8_t, 16 > nwkSKey
std::array< uint8_t, 16 > appSKey
uint16_t LoRaMacDevNonce
int32_t netID = -1
uint32_t LoRaMacDevAddr
MulticastParams_t * MulticastChannels = NULL
DeviceClass_t deviceClass = CLASS_A
uint8_t Buffer [PHY_PAYLOAD_MAX_LENGTH]
uint16_t BufferPktLen = 0
uint8_t LoRaMacPayload [PHY_PAYLOAD_MAX_LENGTH]
uint32_t UpLinkCounter = 1
uint32_t DownLinkCounter = 0
uint32_t AdrAckCounter = 0
uint8_t MacCommandsBufferIndex = 0
uint8_t MacCommandsBuffer [MAC_COMMAND_MAX_LENGTH]
struct { 
   uint32_t   Frequency 
   uint8_t   Datarate 
} Rx2Channel
uint8_t Rx1DrOffset = 0
int8_t ChannelsTxPower
int8_t ChannelsDefaultTxPower
int8_t ChannelsDatarate
int8_t ChannelsDefaultDatarate
uint8_t ChannelsNbRepDefault = 1
uint8_t ChannelsNbRep
uint8_t ChannelsNbRepCounter = 0
uint8_t MaxDCycle = 0
uint16_t AggregatedDCycle = 1
uint32_t AggregatedLastTxDoneTime = 0
uint32_t AggregatedTimeOff = 0
uint8_t currentCH
uint32_t LoRaMacState = MAC_IDLE
Timer MacStateCheckTimer
uint8_t(* getBatteryLevel )()
Timer TxDelayedTimer
Timer RxWindowTimer1
Timer RxWindowTimer2
bool rxWindowActive = false
struct timeval rxWindow2At = {}
Timer TxTimeoutTimer
uint16_t ReceiveDelay1
uint16_t ReceiveDelay2
uint16_t JoinAcceptDelay1
uint16_t JoinAcceptDelay2
uint16_t rxWindow1Delay
uint16_t rxWindow2Delay
uint16_t rxWindow1Timeout
uint16_t rxWindow2Timeout
int16_t rxWindow1Offset
int16_t rxWindow2Offset
Timer AckTimeoutTimer
uint8_t AckTimeoutRetries = 1
uint8_t AckTimeoutRetriesCounter = 1
uint32_t TxTimeOnAir
struct { 
   EventInfoStatus_t   Status 
} McpsIndication
struct { 
   EventInfoStatus_t   Status 
   bool   AckReceived 
   uint32_t   UpLinkCounter 
} McpsConfirm
struct timeval tDevTimeRequested
RTCCalendar * rtc = NULL
uint8_t RxSlot = 0
bool isMcpsReq = false
bool isMcpsInd = false
bool isMacDone = false
LoRaMacFrame * txFrame = NULL
LoRaMacFrame * rxFrame = NULL
void(* joinHandler )(LoRaMac &, bool result, const uint8_t *devEui, const uint8_t *appEui, const uint8_t *appKey, const uint8_t *nwkSKey, const uint8_t *appSKey, uint32_t devAddr, const RadioPacket &frame, uint32_t airTime) = NULL
void(* receiveErrorFrameHandler )(LoRaMac &, const RadioPacket &frame) = nullptr
Protected Attributes inherited from PacketRadio
Queue< RadioPacket * > txFifo
Queue< RadioPacket * > rxFifo
Queue< RadioPacket * > txDoneFifo
void(* callbackSendDone )(PacketRadio &, RadioPacket *)
void(* callbackReceive )(PacketRadio &, const RadioPacket *)
PacketRadioEventListener * eventListener

Member Function Documentation

◆ beginJoining()

error_t LoRaMacUS902Hybrid::beginJoining ( const uint8_t * devEui,
const uint8_t * appEui,
const uint8_t * appKey )
virtual

Over-the-Air Activation (OTAA) 방식의 join을 시도합니다.

Parameters
devEuiDevice EUI (MSB first)
appEuiApplication EUI (MSB first)
appKeyApplication Key
static void eventLoRaWANJoin(
bool joined,
const uint8_t *joinedDevEui,
const uint8_t *joinedAppEui,
const uint8_t *joinedAppKey,
const uint8_t *joinedNwkSKey,
const uint8_t *joinedAppSKey,
uint32_t joinedDevAddr,
const RadioPacket &frame,
uint32_t airTime
) {
#if (OVER_THE_AIR_ACTIVATION == 1)
if (joined) {
if (joinedNwkSKey && joinedAppSKey) {
// Status is OK, node has joined the network
printf("* Joined to the network!\n");
postTask(taskPeriodicSend, NULL);
} else {
printf("* PseudoAppKey joining done!\n");
}
} else {
printf("* Join failed. Retry to join\n");
LoRaWAN.beginJoining(devEui, appEui, appKey);
}
#endif
}

Join은 1회만 시도하므로, 계속 join을 시도해야 할 경우 이 함수를 다시 호출하여야 합니다.

Reimplemented from LoRaMacUS902.

◆ resetRegionState()

void LoRaMacUS902Hybrid::resetRegionState ( )
overrideprotectedvirtual

Reimplemented from LoRaMacUS902.


The documentation for this class was generated from the following file: