Nol.A SDK Library 26.11.2
For IoT System Software Development
Loading...
Searching...
No Matches
LBTRadio Class Reference
Inheritance diagram for LBTRadio:
LoRaRadioChip PacketRadioChip

Public Member Functions

 LBTRadio (LoRaRadioChip &chip, uint16_t senseTimeMs=5, uint16_t busyIdleTimeMs=50)
virtual error_t begin () override
virtual error_t transmit (RadioPacket *p) override
 채널을 들은 뒤 비어 있으면 패킷을 전송합니다.
virtual void doCAD () override
 CAD (Carrier Activity Detection) 검사를 수행합니다. (LoRa 전용).
virtual error_t readFrame (RadioPacket *frame) override
 수신 버퍼에서 프레임을 읽습니다.
virtual bool bufferIsEmpty () override
virtual void flushBuffer () override
virtual void sleep () override
virtual void wakeup () override
virtual void setChannel (uint32_t channel) override
 채널을 설정합니다.
virtual uint32_t getChannel () override
 현재 설정된 채널을 반환합니다.
virtual State_t getStatus () override
virtual int16_t getRssi () override
 RSSI를 dB 단위로 읽습니다.
virtual void setStandby () override
virtual void setPublicNetwork (bool enable) override
 Syncword를 설정합니다.
bool supportsLoRaSpreadingFactor (Radio::LoRaSF_t sf) const override
 Returns whether this driver supports the given LoRa spreading factor.
virtual void transmitCW () override
 Continuous Wave (CW) 신호를 송출합니다. (LoRa 전용).
virtual void setRadio (Radio::LoRaSF_t sf, Radio::LoRaBW_t bw, Radio::LoRaCR_t cr, bool crcOn=true, bool iqInverted=false, uint16_t symbTimeout=0, uint16_t preambleLen=8, uint8_t payloadLen=0, bool freqHopOn=false, uint8_t hopPeriod=0) override
virtual void setRadio (uint32_t datarate, uint32_t bandwidth, uint32_t bandwidthAfc, uint32_t fDev, bool crcOn=true, uint16_t symbTimeout=0, uint16_t preambleLen=5, uint8_t payloadLen=0) override
virtual void setTxPower (int8_t dBm) override
 송신 출력을 설정합니다.
virtual int8_t getTxPower () override
 현재 설정된 송신 출력을 반환합니다.
virtual bool cca () override
 채널이 혼잡한지 아닌지 검사합니다.
virtual void setFreqOffset (int32_t offsetHz) override
 중심 주파수 오차를 제거하기 위한 offset을 설정합니다.
virtual int32_t getFreqOffset () override
 중심 주파수 오차를 제거하기 위한 offset을 가져옵니다.
Public Member Functions inherited from LoRaRadioChip
uint32_t getTimeOnAir (uint8_t payloadLen)
Public Member Functions inherited from PacketRadioChip
void setCcaThreshold (int16_t dBthreshold)
virtual int64_t getDeviceTimestamp ()
 장치 내부의 timestamp 값을 읽습니다.

Additional Inherited Members

Public Types inherited from LoRaRadioChip
enum  State_t { RF_IDLE = 0 , RF_RX_RUNNING = 1 , RF_TX_RUNNING = 2 , RF_CAD = 3 }
Static Public Member Functions inherited from LoRaRadioChip
static uint32_t TimeOnAir (Radio::LoRaSF_t, Radio::LoRaBW_t, Radio::LoRaCR_t, uint16_t preambleLen, bool fixLen, uint8_t payloadLen, bool crcOn)
static uint32_t TimeOnAir (uint32_t datarate, uint32_t bandwidth, uint16_t preambleLen, bool fixLen, uint8_t payloadLen, bool crcOn)
Public Attributes inherited from LoRaRadioChip
void(* onCADCompleted )(void *ctx, bool) = nullptr
 LoRa CAD (Carrier Activity Detection) 검사가 완료되면 호출될 콜백함수 포인터
void * ctxOnCADCompleted
 onCADCompleted 가 호출될 때 함께 전달될 context
int8_t antennaGain = 0
 Antenna gain을 고려한 송신 출력(EIRP)을 사용하기 위한 antenna gain (단위: dBi).
void(* onRxTimeout )(void *, GPIOInterruptInfo_t *) = nullptr
void * ctxOnRxTimeout
Public Attributes inherited from PacketRadioChip
void(* onRxStarted )(void *, GPIOInterruptInfo_t *)
 수신이 시작될 때 호출될 콜백함수 포인터
void * ctxOnRxStarted
 onRxStarted 가 호출될 때 함께 전달될 context
void(* onRxDone )(void *, GPIOInterruptInfo_t *)
 수신이 완료될 때 호출될 콜백함수 포인터
void * ctxOnRxDone
 onRxDone 이 호출될 때 함께 전달될 context
void(* onTxDone )(void *, bool, GPIOInterruptInfo_t *)
 transmit() 후, 송신이 완료될 때 호출될 콜백함수 포인터
void * ctxOnTxDone
 onTxDone 이 호출될 때 함께 전달될 context
void(* onChannelBusy )(void *, GPIOInterruptInfo_t *)
 cca() 시 채널이 혼잡할 때 호출될 콜백함수 포인터
void * ctxOnChannelBusy
 onChannelBusy 가 호출될 때 함께 전달될 context
int16_t dBccaThreshold = -65
 cca() 시 채널이 혼잡하다고 판단하기 위한 에너지 레벨을 설정합니다. (단위: dB, 기본값: -65)
Protected Member Functions inherited from LoRaRadioChip
virtual void ccaTask ()
Static Protected Member Functions inherited from LoRaRadioChip
static void CCATask (void *)
Protected Attributes inherited from LoRaRadioChip
struct { 
   uint32_t   channel 
   Radio::Modulation_t   modulation 
   int8_t   txPower 
   uint32_t   txTimeout 
   union { 
      struct { 
         uint32_t   drHz 
         uint32_t   bwHz 
         uint32_t   afcBwHz 
         uint32_t   fDevHz 
         uint16_t   symbTimeout 
         bool   addCrc 
         uint16_t   preambleLength 
         uint8_t   fixedPayloadLength 
      }   FSK
      struct { 
         Radio::LoRaSF_t   sf 
         Radio::LoRaCR_t   cr 
         Radio::LoRaBW_t   bw 
         uint16_t   preambleLength 
         uint8_t   fixedPayloadLength 
         bool   iqInverted 
         bool   addCrc 
         uint16_t   symbTimeout 
      }   LoRa
   } 
} defaultSetting
volatile bool inCca = false
bool inChannelBusyHandler = false
int32_t freqOffset

Constructor & Destructor Documentation

◆ LBTRadio()

LBTRadio::LBTRadio ( LoRaRadioChip & chip,
uint16_t senseTimeMs = 5,
uint16_t busyIdleTimeMs = 50 )
inline
Parameters
chip감쌀 LoRa 무선 칩
senseTimeMs감지 시간 (밀리초)
busyIdleTimeMs채널이 사용 중일 때 결과를 알리기 전까지 기다리는 시간 (밀리초)
80 : chip(chip), senseTimeMs(senseTimeMs), busyIdleTimeMs(busyIdleTimeMs) {
81 }

Member Function Documentation

◆ begin()

virtual error_t LBTRadio::begin ( )
overridevirtual

Implements PacketRadioChip.

◆ bufferIsEmpty()

virtual bool LBTRadio::bufferIsEmpty ( )
inlineoverridevirtual

Implements PacketRadioChip.

104 {
105 return this->chip.bufferIsEmpty();
106 }

◆ cca()

virtual bool LBTRadio::cca ( )
inlineoverridevirtual

채널이 혼잡한지 아닌지 검사합니다.

채널이 혼잡하다고 감지되는 순간, onChannelBusy 가 가리키는 콜백함수가 호출됩니다.

Reimplemented from LoRaRadioChip.

186 {
187 return this->chip.cca();
188 }

◆ doCAD()

virtual void LBTRadio::doCAD ( )
inlineoverridevirtual

CAD (Carrier Activity Detection) 검사를 수행합니다. (LoRa 전용).

Implements LoRaRadioChip.

96 {
97 this->chip.doCAD();
98 }

◆ flushBuffer()

virtual void LBTRadio::flushBuffer ( )
inlineoverridevirtual

Implements PacketRadioChip.

108 {
109 this->chip.flushBuffer();
110 }

◆ getChannel()

virtual uint32_t LBTRadio::getChannel ( )
inlineoverridevirtual

현재 설정된 채널을 반환합니다.

Implements PacketRadioChip.

124 {
125 return this->chip.getChannel();
126 }

◆ getFreqOffset()

virtual int32_t LBTRadio::getFreqOffset ( )
inlineoverridevirtual

중심 주파수 오차를 제거하기 위한 offset을 가져옵니다.

Reimplemented from LoRaRadioChip.

194 {
195 return this->chip.getFreqOffset();
196 }

◆ getRssi()

virtual int16_t LBTRadio::getRssi ( )
inlineoverridevirtual

RSSI를 dB 단위로 읽습니다.

Implements LoRaRadioChip.

132 {
133 return this->chip.getRssi();
134 }

◆ getStatus()

virtual State_t LBTRadio::getStatus ( )
inlineoverridevirtual

Implements LoRaRadioChip.

128 {
129 return this->chip.getStatus();
130 }

◆ getTxPower()

virtual int8_t LBTRadio::getTxPower ( )
inlineoverridevirtual

현재 설정된 송신 출력을 반환합니다.

Returns
송신 출력 (단위: dBm)

Reimplemented from LoRaRadioChip.

182 {
183 return this->chip.getTxPower();
184 }

◆ readFrame()

virtual error_t LBTRadio::readFrame ( RadioPacket * frame)
inlineoverridevirtual

수신 버퍼에서 프레임을 읽습니다.

Returns
  • ERROR_SUCCESS : 성공
  • ERROR_FAIL : 실패 (수신한 프레임이 없음)
  • ERROR_INVALID_ARGS : frame 이 NULL 이거나, frame 내부 버퍼가 충분히 크지 않아서 실패

Implements PacketRadioChip.

100 {
101 return this->chip.readFrame(frame);
102 }

◆ setChannel()

virtual void LBTRadio::setChannel ( uint32_t channel)
inlineoverridevirtual

채널을 설정합니다.

Implements PacketRadioChip.

120 {
121 this->chip.setChannel(channel);
122 }

◆ setFreqOffset()

virtual void LBTRadio::setFreqOffset ( int32_t offsetHz)
inlineoverridevirtual

중심 주파수 오차를 제거하기 위한 offset을 설정합니다.

실제 사용되는 중심 주파수는 setChannel() 로 설정한 주파수에 offset을 더한 값이 됩니다. 기본 offset은 하드웨어마다 다릅니다. 설정된 offset을 구하기 위해서는 getFreqOffset() 을 사용하십시오.

Reimplemented from LoRaRadioChip.

190 {
191 this->chip.setFreqOffset(offsetHz);
192 }

◆ setPublicNetwork()

virtual void LBTRadio::setPublicNetwork ( bool enable)
inlineoverridevirtual

Syncword를 설정합니다.

Parameters
valueenable (true: LoRaWAN, false: non-LoRaWAN)

Implements LoRaRadioChip.

140 {
141 this->chip.setPublicNetwork(enable);
142 }

◆ setRadio() [1/2]

virtual void LBTRadio::setRadio ( Radio::LoRaSF_t sf,
Radio::LoRaBW_t bw,
Radio::LoRaCR_t cr,
bool crcOn = true,
bool iqInverted = false,
uint16_t symbTimeout = 0,
uint16_t preambleLen = 8,
uint8_t payloadLen = 0,
bool freqHopOn = false,
uint8_t hopPeriod = 0 )
inlineoverridevirtual

Reimplemented from LoRaRadioChip.

161 {
162 LoRaRadioChip::setRadio(sf, bw, cr, crcOn, iqInverted, symbTimeout, preambleLen, payloadLen, freqHopOn, hopPeriod);
163 this->chip.setRadio(sf, bw, cr, crcOn, iqInverted, symbTimeout, preambleLen, payloadLen, freqHopOn, hopPeriod);
164 }

◆ setRadio() [2/2]

virtual void LBTRadio::setRadio ( uint32_t datarate,
uint32_t bandwidth,
uint32_t bandwidthAfc,
uint32_t fDev,
bool crcOn = true,
uint16_t symbTimeout = 0,
uint16_t preambleLen = 5,
uint8_t payloadLen = 0 )
inlineoverridevirtual

Reimplemented from LoRaRadioChip.

173 {
174 LoRaRadioChip::setRadio(datarate, bandwidth, bandwidthAfc, fDev, crcOn, symbTimeout, preambleLen, payloadLen);
175 this->chip.setRadio(datarate, bandwidth, bandwidthAfc, fDev, crcOn, symbTimeout, preambleLen, payloadLen);
176 }

◆ setStandby()

virtual void LBTRadio::setStandby ( )
inlineoverridevirtual

Implements LoRaRadioChip.

136 {
137 this->chip.setStandby();
138 }

◆ setTxPower()

virtual void LBTRadio::setTxPower ( int8_t dBm)
inlineoverridevirtual

송신 출력을 설정합니다.

Parameters
dBm송신 출력 세기 (단위: dBm)

Reimplemented from LoRaRadioChip.

178 {
179 this->chip.setTxPower(dBm);
180 }

◆ sleep()

virtual void LBTRadio::sleep ( )
inlineoverridevirtual

Implements PacketRadioChip.

112 {
113 this->chip.sleep();
114 }

◆ supportsLoRaSpreadingFactor()

bool LBTRadio::supportsLoRaSpreadingFactor ( Radio::LoRaSF_t sf) const
inlineoverridevirtual

Returns whether this driver supports the given LoRa spreading factor.

Parameters
sfLoRa spreading factor; unknown values must return false.

Implements LoRaRadioChip.

144 {
145 return this->chip.supportsLoRaSpreadingFactor(sf);
146 }

◆ transmit()

virtual error_t LBTRadio::transmit ( RadioPacket * p)
overridevirtual

채널을 들은 뒤 비어 있으면 패킷을 전송합니다.

채널이 사용 중이면 ERROR_SUCCESS 를 반환하고, 대기 시간 뒤 전송 완료 콜백으로 실패를 알립니다. 이때 RadioPacket::result 는 RadioPacket::CHANNEL_BUSY 입니다.

이전 패킷의 결과를 아직 알리지 않은 경우 ERROR_FAIL 을 반환합니다.

Reimplemented from LoRaRadioChip.

◆ transmitCW()

virtual void LBTRadio::transmitCW ( )
inlineoverridevirtual

Continuous Wave (CW) 신호를 송출합니다. (LoRa 전용).

Implements LoRaRadioChip.

148 {
149 this->chip.transmitCW();
150 }

◆ wakeup()

virtual void LBTRadio::wakeup ( )
inlineoverridevirtual

Implements PacketRadioChip.

116 {
117 this->chip.wakeup();
118 }

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