Nol.A SDK Library 26.11.2
For IoT System Software Development
Loading...
Searching...
No Matches
LoRaMacKR920 Class Reference

대한민국 920~923MHz 대역을 사용하는 LoRaMac More...

#include <LoRaMacKR920.hpp>

Inheritance diagram for LoRaMacKR920:
LoRaMac PacketRadio LoRaMacKR920SKT

Public Member Functions

 LoRaMacKR920 (LoRaRadioChip &radio, uint16_t radioWakeupTime=1, uint32_t maxFCntGap=16384, const DatarateParams_t *drTable=nullptr, uint8_t maxDr=13)
 대한민국 920~923MHz 대역을 사용하는 LoRaMac instance를 생성합니다.
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)
 채널 정보를 가져옵니다.
virtual uint8_t getMaxPayload (uint8_t dr, bool repeater=false) override
 최대 application payload 길이(N)를 가져옵니다.
virtual uint8_t getRx1Datarate () override
 Rx1에 사용될, DR offset이 적용된 DR을 가져옵니다.
virtual uint32_t getRx1Frequency () override
 Rx1에서 사용할 주파수를 가져옵니다.
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.
virtual error_t beginJoining (const uint8_t *devEui, const uint8_t *appEui, const uint8_t *appKey)
 Over-the-Air Activation (OTAA) 방식의 join을 시도합니다.
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
bool channelSupportsDR (const ChannelParams_t &channel, uint8_t dr) const override
 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.
virtual error_t ScheduleTx ()
Protected Member Functions inherited from LoRaMac
void resetSessionState ()
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 ()
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)

Protected Attributes

Band_t Bands [16]
ChannelParams_t Channels [16]
uint16_t ChannelsMask
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

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)

Detailed Description

대한민국 920~923MHz 대역을 사용하는 LoRaMac

관련 표준

  • LoRaWANTM Regional Parameters RP002-1.0.5 KR920-923

KCC 규정에 따라 모든 송신 전에 Listen-Before-Talk 를 합니다. 생성자에 전달한 무선 칩을 LBTRadio 로 감싸서 사용하므로, 별도로 LBT 를 설정할 필요가 없습니다.

Examples
feather-m0/AMG88xx_IoT.own/main.cpp, feather-m0/LoRaWAN/main.cpp, feather-m0/TFMini-I2C/main.cpp, feather-m0/UltimateGPS+OLED/main.cpp, plm100s/IPv6overLoRaWAN/main.cpp, plm100s/PLS100W_AM1005-P-485/main.cpp, plm100s/PLS100W_HRXL-MaxSonar-WR/main.cpp, plm100s/PLS100W_SSD1306-I2C/main.cpp, plm100s/PLS100W_T9602-I2C/main.cpp, plm100s/PLS100W_TFmini-UART/main.cpp, plm100s/veml6030/main.cpp, and plm150/PLS100W_RD-WSD-M-02/main.cpp.

Constructor & Destructor Documentation

◆ LoRaMacKR920()

LoRaMacKR920::LoRaMacKR920 ( LoRaRadioChip & radio,
uint16_t radioWakeupTime = 1,
uint32_t maxFCntGap = 16384,
const DatarateParams_t * drTable = nullptr,
uint8_t maxDr = 13 )

대한민국 920~923MHz 대역을 사용하는 LoRaMac instance를 생성합니다.

Parameters
radioLoRaMac을 구동할 LoRa 무선 칩
radioWakeupTime무선이 wakeup 후 Rx window 설정까지 걸리는 동안의 시간을 밀리초 단위로 설정합니다.
maxFCntGapMAX_FCNT_GAP (기본값: 16384)
drTable사용자 정의 DR 테이블. NULL이면 내장 KR920 테이블을 사용합니다.
maxDr사용자 지정 최대 DR 인덱스 (기본값: 13). 이 상한 안에서도 칩이 지원하지 않는 SF는 사용할 수 없습니다. 사용자 정의 테이블에서는 테이블 길이에 맞게 명시해야 합니다.

Member Function Documentation

◆ addChannel()

error_t LoRaMacKR920::addChannel ( uint8_t id,
ChannelParams_t params )
virtual

Add a channel.

Adds a new channel to the channel list and activates the id in the channel mask. The frequency and DR specified in the params MUST be valid values for each regional parameters specification.

Parameters
[IN]id - Id of the channel.
[IN]params - Channel parameters to set.
Returns

Implements LoRaMac.

◆ channelSupportsDR()

bool LoRaMacKR920::channelSupportsDR ( const ChannelParams_t & channel,
uint8_t dr ) const
overrideprotectedvirtual

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.

Reimplemented from LoRaMac.

◆ getChannel()

const ChannelParams_t * LoRaMacKR920::getChannel ( uint8_t index)
virtual

채널 정보를 가져옵니다.

Parameters
index채널 번호 (0 ~ MaxNumChannels)
Returns
  • Non-NULL: 유효한 채널 정보
  • NULL: 유효하지 않은 index, 또는 비활성화된 채널

    다음 예제와 같이 현재 설정된 채널 정보들을 출력할 수 있습니다.

static void printChannelInformation(LoRaMac &lw) {
for (uint8_t i = 0; i < lw.MaxNumChannels; i++) {
if (p) {
printf(" - [%u] Frequency:%lu Hz\n", i, p->Frequency);
} else {
printf(" - [%u] disabled\n", i);
}
}
printf(" - Default DR%u:", lw.getCurrentDatarateIndex());
if (dr->mod == Radio::MOD_LORA) {
printf("LoRa(SF%u BW:", dr->param.LoRa.sf);
switch (dr->param.LoRa.bw) {
case Radio::BW_125kHz: printf("125kHz\n"); break;
case Radio::BW_250kHz: printf("250kHz\n"); break;
case Radio::BW_500kHz: printf("500kHz\n"); break;
default: printf("(unexpected:%u)\n", dr->param.LoRa.bw); break;
}
} else if (dr->mod == Radio::MOD_FSK) {
printf("FSK\n");
} else {
printf("Unknown modulation\n");
}
printf(" - Default Tx index: %d\n", lw.getCurrentTxPowerIndex());
printf(
" - # of repetitions of unconfirmed uplink frames: %u\n",
);
}

Implements LoRaMac.

◆ getMaxPayload()

virtual uint8_t LoRaMacKR920::getMaxPayload ( uint8_t dr,
bool repeater = false )
overridevirtual

최대 application payload 길이(N)를 가져옵니다.

Parameters
drDR index
repeaterRepeater mode 사용 여부
Returns
  • 0이 아닌 값: 최대 application payload 길이
  • 0: 잘못된 DR

최대 application payload 길이(N)는 최대 payload 길이(M)에서 FOpt 길이를 뺀 값입니다. FOpt의 길이는 최소 8-byte 이며 더 커질 수도 있습니다.

Implements LoRaMac.

Reimplemented in LoRaMacKR920SKT.

◆ getRx1Datarate()

virtual uint8_t LoRaMacKR920::getRx1Datarate ( )
overridevirtual

Rx1에 사용될, DR offset이 적용된 DR을 가져옵니다.

일반적으로 Rx1의 DR은 uplink의 DR에서 DR offset이 감소한 값을 사용되나, 대역별로 달라질 수 있습니다.

Reimplemented from LoRaMac.

◆ getRx1Frequency()

virtual uint32_t LoRaMacKR920::getRx1Frequency ( )
overridevirtual

Rx1에서 사용할 주파수를 가져옵니다.

Implements LoRaMac.

◆ removeChannel()

error_t LoRaMacKR920::removeChannel ( uint8_t id)
virtual

LoRaMAC channel remove service.

Deactivates the id in the channel mask.

Parameters
[IN]id - Id of the channel.
Returns

Implements LoRaMac.

◆ resetRegionState()

void LoRaMacKR920::resetRegionState ( )
overrideprotectedvirtual

Reimplemented from LoRaMac.

◆ ScheduleTx()

virtual error_t LoRaMacKR920::ScheduleTx ( )
protectedvirtual

Implements LoRaMac.


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