|
Nol.A SDK Library
25.8.1
For IoT System Software Development
|
Listen-Before-Talk을 지원하는 LoRaWAN MAC 프로토콜 More...
#include <LoRaMacLBT.hpp>
Public Member Functions | |
| LoRaMacLBT (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. More... | |
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 | addChannel (uint8_t id, ChannelParams_t params)=0 |
| Add a channel. More... | |
| virtual error_t | removeChannel (uint8_t id)=0 |
| LoRaMAC channel remove service. More... | |
| error_t | linkMulticastChannel (MulticastParams_t *channelParam) |
| LoRaMAC multicast channel link service. More... | |
| error_t | unlinkMulticastChannel (MulticastParams_t *channelParam) |
| LoRaMAC multicast channel unlink service. More... | |
| virtual error_t | beginJoining (const uint8_t *devEui, const uint8_t *appEui, const uint8_t *appKey) |
| Over-the-Air Activation (OTAA) 방식의 join을 시도합니다. More... | |
| error_t | beginJoining (const uint8_t *devEui, const uint8_t *appKey) |
| bool | isJoining () |
| 현재 OTAA Join 중인지 확인합니다. More... | |
| 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이 완료되었을 때 호출될 콜백함수를 지정합니다. More... | |
| void | onJoinRequested (void(*func)(LoRaMac &, uint32_t frequencyHz, const DatarateParams_t &)) |
| JoinRequest 메시지를 보낼 때 호출될 콜백함수를 지정합니다. More... | |
| virtual void | setABP (const uint8_t *nwkSKey, const uint8_t *appSKey, uint32_t devAddr) |
| ABP를 사용하도록 설정합니다. More... | |
| void | setPublicNetwork (bool enable) |
| 공용 LoRaWAN 네트워크를 사용할지 설정합니다. More... | |
| DeviceClass_t | getDeviceClass () |
| Device class를 가져옵니다. More... | |
| error_t | setDeviceClass (DeviceClass_t c) |
| Device class를 설정합니다. More... | |
| error_t | setDeviceClass (DeviceClass_t c, bool sendDeviceModeInd, void(*func)(LoRaMac &, DeviceClass_t)) |
| virtual const ChannelParams_t * | getChannel (uint8_t index)=0 |
| 채널 정보를 가져옵니다. More... | |
| const DatarateParams_t * | getDatarate (uint8_t index) |
| Datarate 정보를 가져옵니다. More... | |
| 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을 가져옵니다. | |
| virtual uint8_t | getRx1Datarate () |
| Rx1에 사용될, DR offset이 적용된 DR을 가져옵니다. More... | |
| virtual uint32_t | getRx1Frequency ()=0 |
| Rx1에서 사용할 주파수를 가져옵니다. | |
| int32_t | getNetworkID () |
| Network ID를 가져옵니다. More... | |
| 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 인덱스를 가져옵니다. More... | |
| error_t | setCurrentDatarateIndex (uint8_t index) |
| 기본 datarate를 설정합니다. More... | |
| uint8_t | getCurrentTxPowerIndex () |
| 기본 Tx power index를 가져옵니다. More... | |
| error_t | setCurrentTxPowerIndex (uint8_t index) |
| 기본 Tx power를 설정합니다. More... | |
| uint32_t | getUpLinkCounter () |
| Uplink용 frame counter (fCntUp) 를 가져옵니다. More... | |
| virtual void | setUpLinkCounter (uint32_t) |
| Uplink용 frame counter (fCntUp) 를 설정합니다. More... | |
| uint32_t | getDownLinkCounter () |
| Downlink용 frame counter (fCntDown) 를 가져옵니다. More... | |
| virtual void | setDownLinkCounter (uint32_t) |
| Downlink용 frame counter (fCntDown) 를 설정합니다. More... | |
| uint8_t | getNumRepetitions () |
| 현재 설정된 unconfirmed uplink frame에 적용되는 반복 전송 횟수를 가져옵니다. | |
| uint8_t | getMaxDutyCycle () |
| 현재의 최대 duty cycle을 가져옵니다. | |
| error_t | send (LoRaMacFrame *frame) |
frame 을 전송합니다. More... | |
| error_t | cancelSend (LoRaMacFrame *frame) |
frame 전송을 취소합니다. More... | |
| void | onSendDone (void(*sendDoneHandler)(LoRaMac &, LoRaMacFrame *)) |
| 전송이 완료될 때 호출될 함수를 지정합니다. More... | |
| void | onReceive (void(*receiveHandler)(LoRaMac &radio, const LoRaMacFrame *frame)) |
| 수신이 완료될 때 호출될 함수를 지정합니다. More... | |
| void | onReceiveErrorFrame (void(*receiveHandler)(LoRaMac &radio, const RadioPacket &frame)) |
| 비정상 프레임 수신시 호출될 함수를 지정합니다. More... | |
| virtual uint8_t | getMaxPayload (uint8_t dr, bool repeater=false)=0 |
| 최대 application payload 길이(N)를 가져옵니다. More... | |
| uint8_t | getPendingMacCommandsLength () |
| 현재 송신 대기 중인 MAC commands의 길이를 가져옵니다. More... | |
| std::array< uint8_t, 8 > | getDevEui () |
| Device EUI를 가져옵니다. More... | |
| std::array< uint8_t, 8 > | getAppEui () |
| Application EUI를 가져옵니다. More... | |
| std::array< uint8_t, 16 > | getAppKey () |
| AppKey를 가져옵니다. More... | |
| std::array< uint8_t, 16 > | getNwkSKey () |
| NwkSKey를 가져옵니다. More... | |
| std::array< uint8_t, 16 > | getAppSKey () |
| AppSKey를 가져옵니다. More... | |
| virtual error_t | requestLinkCheck () |
| LinkCheckReq MAC command를 요청합니다. More... | |
| error_t | requestLinkCheck (void(*func)(LoRaMac &)) |
| LinkCheckReq MAC command를 요청합니다. More... | |
| void | onLinkChecked (void(*func)(LoRaMac &, uint8_t demodMargin, uint8_t numGateways)) |
| LinkCheckReq MAC command에 대한 응답(LinkCheckAns)이 올 경우 호출될 콜백함수를 지정합니다. More... | |
| error_t | requestDeviceTime (RTCCalendar *rtc) |
| DeviceTimeReq MAC command를 요청합니다. More... | |
| error_t | requestDeviceTime (RTCCalendar *rtc, void(*func)(LoRaMac &)) |
| DeviceTimeReq MAC command를 요청합니다. More... | |
| error_t | requestDeviceTime (void(*func)(LoRaMac &)=nullptr) |
| DeviceTimeReq MAC command를 요청합니다. More... | |
| void | onDeviceTimeAnswered (void(*func)(LoRaMac &, bool success, uint32_t tSeconds, uint8_t tFracSeconds), RTCCalendar *rtc) |
| DeviceTimeReq MAC command에 대한 응답(DeviceTimeAns)이 올 경우 호출될 콜백함수와 RTCCalendar 를 지정합니다. More... | |
| void | onLinkADRReqReceived (void(*func)(LoRaMac &, const uint8_t *)) |
| LinkADRReq MAC command를 수신시 호출될 콜백함수를 지정합니다. More... | |
| void | onLinkADRAnsSent (void(*func)(LoRaMac &, uint8_t status)) |
| LinkADRAns MAC command를 송신시 호출될 콜백함수를 지정합니다. More... | |
| void | onDutyCycleReqReceived (void(*func)(LoRaMac &, const uint8_t *)) |
| DutyCycleReq MAC command를 수신시 호출될 콜백함수를 지정합니다. More... | |
| void | onDutyCycleAnsSent (void(*func)(LoRaMac &)) |
| DutyCycleAns MAC command를 송신시 호출될 콜백함수를 지정합니다. More... | |
| void | onRxParamSetupReqReceived (void(*func)(LoRaMac &, const uint8_t *)) |
| RxParamSetupReq MAC command를 수신시 호출될 콜백함수를 지정합니다. More... | |
| void | onRxParamSetupAnsSent (void(*func)(LoRaMac &, uint8_t status)) |
| RxParamSetupAns MAC command를 송신시 호출될 콜백함수를 지정합니다. More... | |
| void | onDevStatusReqReceived (void(*func)(LoRaMac &)) |
| DevStatusReq MAC command를 수신시 호출될 콜백함수를 지정합니다. More... | |
| void | onDevStatusAnsSent (void(*func)(LoRaMac &, uint8_t bat, uint8_t margin)) |
| DevStatusAns MAC command를 송신시 호출될 콜백함수를 지정합니다. More... | |
| void | onNewChannelReqReceived (void(*func)(LoRaMac &, const uint8_t *)) |
| NewChannelReq MAC command를 수신시 호출될 콜백함수를 지정합니다. More... | |
| void | onNewChannelAnsSent (void(*func)(LoRaMac &, uint8_t status)) |
| NewChannelAns MAC command를 송신시 호출될 콜백함수를 지정합니다. More... | |
| void | onRxTimingSetupReqReceived (void(*func)(LoRaMac &, const uint8_t *)) |
| RxTimingSetupReq MAC command를 수신시 호출될 콜백함수를 지정합니다. More... | |
| void | onRxTimingSetupAnsSent (void(*func)(LoRaMac &)) |
| RxTimingSetupReq MAC command를 수신시 호출될 콜백함수를 지정합니다. More... | |
Public Member Functions inherited from PacketRadio | |
| error_t | send (RadioPacket *frame) |
frame 을 전송합니다. More... | |
| error_t | cancelSend (RadioPacket *frame) |
frame 전송을 취소합니다. More... | |
| void | onSendDone (void(*sendDoneHandler)(PacketRadio &, RadioPacket *)) |
| 전송이 완료될 때 호출될 함수를 지정합니다. More... | |
| uint8_t | getNumPendingSendFrames () |
| 전송 대기 중인 프레임 갯수를 구합니다. More... | |
| void | onReceive (void(*receiveHandler)(PacketRadio &, const RadioPacket *)) |
| 수신이 완료될 때 호출될 함수를 지정합니다. More... | |
| void | setEventListener (PacketRadioEventListener &) |
| 전송 완료 및 수신 이벤트에 대해 PacketRadioEventListener 를 구현한 클래스로 콜백합니다. More... | |
Static Protected Member Functions | |
| static void | OnCCATimeoutEvent (void *) |
Static Protected Member Functions inherited from LoRaMac | |
| static void | OnTxDelayedTimerEvent (void *) |
| static void | OnMacStateCheckTimerEvent (void *) |
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 | |
| 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 사용여부를 설정합니다. More... | |
| bool | receivesDuplicate = false |
| 중복 프레임을 수신 여부를 설정합니다. More... | |
| bool | framePending = false |
| Frame pending. More... | |
| void(* | onUplinkDone )(LoRaMac &, LoRaMacFrame *) = nullptr |
| Uplink (Tx) 전송이 완료될 때 호출될 함수를 지정합니다. More... | |
| void(* | onMACCommandReceived )(LoRaMac &mac, MacCmd_t cid, const uint8_t *reqData, int16_t reqLen, const uint8_t *ansData, int16_t ansLen) = nullptr |
| MAC command 수신시 호출될 함수 포인터 More... | |
| void(* | onMACCommandSend )(LoRaMac &mac, MacCmd_t cid, const uint8_t *data, uint8_t len) = nullptr |
| MAC command 송신시 호출될 함수 포인터 More... | |
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 } |
Protected Member Functions inherited from LoRaMac | |
| virtual void | updateTxTime (uint32_t now)=0 |
| virtual void | updateChannels (const uint8_t *CFList, uint8_t CFListLen)=0 |
| virtual void | enableDefaultChannels ()=0 |
| virtual uint8_t | applyADRConfig (uint16_t chMask, uint8_t chMaskCntl, int8_t txPower, int8_t datarate, uint8_t nbRep)=0 |
| virtual void | applyRxParamConfig (uint8_t &status, int8_t datarate, int8_t drOffset, uint32_t freq)=0 |
| virtual uint8_t | applyNewChannelConfig (const uint8_t *payload)=0 |
| 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 () |
| virtual error_t | SendFrameOnChannel (const ChannelParams_t &channel) |
| 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 () |
| virtual FCntDownStatus_t | getFCntDown (uint16_t fCntFHDR, uint32_t &newFCnt) |
| bool | requestsAck () |
| virtual void | eventTxDelayed () |
| virtual bool | isAvailableDR (uint8_t drIndex, void *chMask=nullptr)=0 |
| 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. More... | |
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) |
Protected Attributes inherited from LoRaMac | |
| bool | PublicNetwork = true |
| bool | RepeaterSupport = false |
| bool | joining = false |
| bool | isLinkCheckRequested = false |
| bool | isDeviceTimeRequested = 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 | 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 |
| 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 |
Listen-Before-Talk을 지원하는 LoRaWAN MAC 프로토콜
|
virtual |
LoRaMAC layer initialization.
| getBatteryLevel | Pointer to a function returning the device's battery level. Refer to the LoRaWAN Specification 5.5. |
Reimplemented from LoRaMac.