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

Classes

union  CalibrationParams_t
 Represents a calibration configuration. More...

Public Types

enum  DeviceId_t { SX1261 = 1 , SX1262 = 2 }
Public Types inherited from LoRaRadioChip
enum  State_t { RF_IDLE = 0 , RF_RX_RUNNING = 1 , RF_TX_RUNNING = 2 , RF_CAD = 3 }

Public Member Functions

 SX126xChip (SPI &s, int8_t pinReset, int8_t pinCs, int8_t pinBusy, int8_t pinDio1)
virtual DeviceId_t SX126xGetDeviceId ()
virtual void SX126xAntSwOn ()=0
virtual void SX126xAntSwOff ()=0
error_t begin () override
error_t readFrame (RadioPacket *) override
 수신 버퍼에서 프레임을 읽습니다.
bool bufferIsEmpty () override
void flushBuffer () override
virtual void sleep () override
virtual void wakeup () override
error_t transmit (RadioPacket *frame) override
void setChannel (uint32_t) override
 채널을 설정합니다.
uint32_t getChannel () override
 현재 설정된 채널을 반환합니다.
State_t getStatus () override
bool supportsLoRaSpreadingFactor (Radio::LoRaSF_t sf) const override
 Returns whether this driver supports the given LoRa spreading factor.
int16_t getRssi () override
 RSSI를 dB 단위로 읽습니다.
void doCAD () override
 CAD (Carrier Activity Detection) 검사를 수행합니다. (LoRa 전용).
void setStandby () override
void setPublicNetwork (bool) override
 Syncword를 설정합니다.
void transmitCW () override
 Continuous Wave (CW) 신호를 송출합니다. (LoRa 전용).
Public Member Functions inherited from LoRaRadioChip
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)
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)
uint32_t getTimeOnAir (uint8_t payloadLen)
virtual void setTxPower (int8_t dBm) override
 송신 출력을 설정합니다.
virtual int8_t getTxPower () override
 현재 설정된 송신 출력을 반환합니다.
virtual bool cca () override
 채널이 혼잡한지 아닌지 검사합니다.
virtual void setFreqOffset (int32_t offsetHz)
 중심 주파수 오차를 제거하기 위한 offset을 설정합니다.
virtual int32_t getFreqOffset ()
 중심 주파수 오차를 제거하기 위한 offset을 가져옵니다.
Public Member Functions inherited from PacketRadioChip
void setCcaThreshold (int16_t dBthreshold)
virtual int64_t getDeviceTimestamp ()
 장치 내부의 timestamp 값을 읽습니다.

Protected Types

enum  { SPI_CLOCK_HZ = 16000000 }
enum  RadioTcxoCtrlVoltage_t {
  TCXO_CTRL_1_6V = 0x00 , TCXO_CTRL_1_7V = 0x01 , TCXO_CTRL_1_8V = 0x02 , TCXO_CTRL_2_2V = 0x03 ,
  TCXO_CTRL_2_4V = 0x04 , TCXO_CTRL_2_7V = 0x05 , TCXO_CTRL_3_0V = 0x06 , TCXO_CTRL_3_3V = 0x07
}
 Represents the voltage used to control the TCXO on/off from DIO3. More...

Protected Member Functions

virtual void beginTransaction ()
virtual void endTransaction ()
void SX126xWakeupCore ()
virtual void SX126xWakeup ()
void SX126xSetDio2AsRfSwitchCtrl (uint8_t enable)
 Indicates if DIO2 is used to control an RF Switch.
virtual void SX126xIoRfSwitchInit ()
void SX126xSetDio3AsTcxoCtrl (RadioTcxoCtrlVoltage_t tcxoVoltage, uint32_t timeout)
 Indicates if the Radio main clock is supplied from a tcxo.
virtual void SX126xIoTcxoInit ()
virtual uint32_t SX126xGetBoardTcxoWakeupTime ()
Protected Member Functions inherited from LoRaRadioChip
virtual void ccaTask ()

Additional Inherited Members

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)
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

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
89{ SPI_CLOCK_HZ = 16000000 };

◆ DeviceId_t

enum SX126xChip::DeviceId_t
58 { SX1261 = 1,
59 SX1262 = 2,
60 } DeviceId_t;

◆ RadioTcxoCtrlVoltage_t

Represents the voltage used to control the TCXO on/off from DIO3.

116 { TCXO_CTRL_1_6V = 0x00,
117 TCXO_CTRL_1_7V = 0x01,
118 TCXO_CTRL_1_8V = 0x02,
119 TCXO_CTRL_2_2V = 0x03,
120 TCXO_CTRL_2_4V = 0x04,
121 TCXO_CTRL_2_7V = 0x05,
122 TCXO_CTRL_3_0V = 0x06,
123 TCXO_CTRL_3_3V = 0x07,
RadioTcxoCtrlVoltage_t
Represents the voltage used to control the TCXO on/off from DIO3.
Definition SX126xChip.hpp:116

Member Function Documentation

◆ begin()

error_t SX126xChip::begin ( )
overridevirtual

Implements PacketRadioChip.

◆ bufferIsEmpty()

bool SX126xChip::bufferIsEmpty ( )
overridevirtual

Implements PacketRadioChip.

◆ doCAD()

void SX126xChip::doCAD ( )
overridevirtual

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

Implements LoRaRadioChip.

◆ flushBuffer()

void SX126xChip::flushBuffer ( )
overridevirtual

Implements PacketRadioChip.

◆ getChannel()

uint32_t SX126xChip::getChannel ( )
overridevirtual

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

Implements PacketRadioChip.

◆ getRssi()

int16_t SX126xChip::getRssi ( )
overridevirtual

RSSI를 dB 단위로 읽습니다.

Implements LoRaRadioChip.

◆ getStatus()

State_t SX126xChip::getStatus ( )
overridevirtual

Implements LoRaRadioChip.

◆ readFrame()

error_t SX126xChip::readFrame ( RadioPacket * frame)
overridevirtual

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

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

Implements PacketRadioChip.

◆ setChannel()

void SX126xChip::setChannel ( uint32_t channel)
overridevirtual

채널을 설정합니다.

Implements PacketRadioChip.

◆ setPublicNetwork()

void SX126xChip::setPublicNetwork ( bool enable)
overridevirtual

Syncword를 설정합니다.

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

Implements LoRaRadioChip.

◆ setStandby()

void SX126xChip::setStandby ( )
overridevirtual

Implements LoRaRadioChip.

◆ sleep()

virtual void SX126xChip::sleep ( )
overridevirtual

Implements PacketRadioChip.

◆ supportsLoRaSpreadingFactor()

bool SX126xChip::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.

79 {
80 return sf >= Radio::SF5 && sf <= Radio::SF12;
81 }
@ SF12
Definition Radio.hpp:87
@ SF5
Definition Radio.hpp:80

◆ SX126xGetBoardTcxoWakeupTime()

virtual uint32_t SX126xChip::SX126xGetBoardTcxoWakeupTime ( )
inlineprotectedvirtual
160 {
161 return 5; // in unit of ms, for SX1262MBXDAS
162 }

◆ SX126xGetDeviceId()

virtual DeviceId_t SX126xChip::SX126xGetDeviceId ( )
inlinevirtual
62 {
63 return SX1261;
64 };

◆ SX126xIoRfSwitchInit()

virtual void SX126xChip::SX126xIoRfSwitchInit ( )
inlineprotectedvirtual
109 {
111 }
void SX126xSetDio2AsRfSwitchCtrl(uint8_t enable)
Indicates if DIO2 is used to control an RF Switch.

◆ SX126xIoTcxoInit()

virtual void SX126xChip::SX126xIoTcxoInit ( )
inlineprotectedvirtual
151 {
152 CalibrationParams_t calibParam;
153
154 SX126xSetDio3AsTcxoCtrl(TCXO_CTRL_1_7V,
155 SX126xGetBoardTcxoWakeupTime() << 6); // convert from ms to SX126x time base
156 calibParam.Value = 0x7F;
157 SX126xCalibrate(calibParam);
158 }
void SX126xSetDio3AsTcxoCtrl(RadioTcxoCtrlVoltage_t tcxoVoltage, uint32_t timeout)
Indicates if the Radio main clock is supplied from a tcxo.
Represents a calibration configuration.
Definition SX126xChip.hpp:137

◆ SX126xSetDio2AsRfSwitchCtrl()

void SX126xChip::SX126xSetDio2AsRfSwitchCtrl ( uint8_t enable)
protected

Indicates if DIO2 is used to control an RF Switch.

Parameters
[in]enabletrue of false

◆ SX126xSetDio3AsTcxoCtrl()

void SX126xChip::SX126xSetDio3AsTcxoCtrl ( RadioTcxoCtrlVoltage_t tcxoVoltage,
uint32_t timeout )
protected

Indicates if the Radio main clock is supplied from a tcxo.

Parameters
[in]tcxoVoltagevoltage used to control the TCXO
[in]timeouttime given to the TCXO to go to 32MHz

◆ SX126xWakeup()

virtual void SX126xChip::SX126xWakeup ( )
inlineprotectedvirtual
96 {
98 SX126xWakeupCore();
99 interrupts();
100 }
void noInterrupts()
interrupts() 가 호출될 때까지 인터럽트를 비활성화합니다. 부득이 원자적(atomic) 실행을 요구하는 곳에서 가능한 짧게 사용합니다.
void interrupts()
noInterrupts()로 비활성화된 인터럽트를 다시 활성화합니다.

◆ transmit()

error_t SX126xChip::transmit ( RadioPacket * frame)
overridevirtual

Reimplemented from LoRaRadioChip.

◆ transmitCW()

void SX126xChip::transmitCW ( )
overridevirtual

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

Implements LoRaRadioChip.

◆ wakeup()

virtual void SX126xChip::wakeup ( )
overridevirtual

Implements PacketRadioChip.


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