You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
524 lines
18 KiB
524 lines
18 KiB
7 years ago
|
/*
|
||
|
/ _____) _ | |
|
||
|
( (____ _____ ____ _| |_ _____ ____| |__
|
||
|
\____ \| ___ | (_ _) ___ |/ ___) _ \
|
||
|
_____) ) ____| | | || |_| ____( (___| | | |
|
||
|
(______/|_____)_|_|_| \__)_____)\____)_| |_|
|
||
|
(C)2013 Semtech
|
||
|
|
||
|
Description: Generic SX1272 driver implementation
|
||
|
|
||
|
License: Revised BSD License, see LICENSE.TXT file include in the project
|
||
|
|
||
|
Maintainer: Miguel Luis and Gregory Cristian
|
||
|
*/
|
||
|
/*******************************************************************************
|
||
|
* @file sx1272.h
|
||
|
* @author MCD Application Team
|
||
|
* @version V1.0.1
|
||
|
* @date 08-September-2017
|
||
|
* @brief Header for driver sx1272.c
|
||
|
******************************************************************************
|
||
|
* @attention
|
||
|
*
|
||
|
* <h2><center>© COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
|
||
|
*
|
||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||
|
* are permitted provided that the following conditions are met:
|
||
|
* 1. Redistributions of source code must retain the above copyright notice,
|
||
|
* this list of conditions and the following disclaimer.
|
||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||
|
* this list of conditions and the following disclaimer in the documentation
|
||
|
* and/or other materials provided with the distribution.
|
||
|
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||
|
* may be used to endorse or promote products derived from this software
|
||
|
* without specific prior written permission.
|
||
|
*
|
||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
*
|
||
|
******************************************************************************
|
||
|
*/
|
||
|
|
||
|
#ifndef __SX1272_H__
|
||
|
#define __SX1272_H__
|
||
|
|
||
|
#include "sx1272Regs-Fsk.h"
|
||
|
#include "sx1272Regs-LoRa.h"
|
||
|
|
||
|
/*!
|
||
|
* Radio wake-up time from sleep
|
||
|
*/
|
||
|
#define RADIO_WAKEUP_TIME 2 // [ms]
|
||
|
|
||
|
/*!
|
||
|
* Sync word for Private LoRa networks
|
||
|
*/
|
||
|
#define LORA_MAC_PRIVATE_SYNCWORD 0x12
|
||
|
|
||
|
/*!
|
||
|
* Sync word for Public LoRa networks
|
||
|
*/
|
||
|
#define LORA_MAC_PUBLIC_SYNCWORD 0x34
|
||
|
|
||
|
/*!
|
||
|
* Radio FSK modem parameters
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
int8_t Power;
|
||
|
uint32_t Fdev;
|
||
|
uint32_t Bandwidth;
|
||
|
uint32_t BandwidthAfc;
|
||
|
uint32_t Datarate;
|
||
|
uint16_t PreambleLen;
|
||
|
bool FixLen;
|
||
|
uint8_t PayloadLen;
|
||
|
bool CrcOn;
|
||
|
bool IqInverted;
|
||
|
bool RxContinuous;
|
||
|
uint32_t TxTimeout;
|
||
|
uint32_t RxSingleTimeout;
|
||
|
}RadioFskSettings_t;
|
||
|
|
||
|
/*!
|
||
|
* Radio FSK packet handler state
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
uint8_t PreambleDetected;
|
||
|
uint8_t SyncWordDetected;
|
||
|
int8_t RssiValue;
|
||
|
int32_t AfcValue;
|
||
|
uint8_t RxGain;
|
||
|
uint16_t Size;
|
||
|
uint16_t NbBytes;
|
||
|
uint8_t FifoThresh;
|
||
|
uint8_t ChunkSize;
|
||
|
}RadioFskPacketHandler_t;
|
||
|
|
||
|
/*!
|
||
|
* Radio LoRa modem parameters
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
int8_t Power;
|
||
|
uint32_t Bandwidth;
|
||
|
uint32_t Datarate;
|
||
|
bool LowDatarateOptimize;
|
||
|
uint8_t Coderate;
|
||
|
uint16_t PreambleLen;
|
||
|
bool FixLen;
|
||
|
uint8_t PayloadLen;
|
||
|
bool CrcOn;
|
||
|
bool FreqHopOn;
|
||
|
uint8_t HopPeriod;
|
||
|
bool IqInverted;
|
||
|
bool RxContinuous;
|
||
|
uint32_t TxTimeout;
|
||
|
bool PublicNetwork;
|
||
|
}RadioLoRaSettings_t;
|
||
|
|
||
|
/*!
|
||
|
* Radio LoRa packet handler state
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
int8_t SnrValue;
|
||
|
int16_t RssiValue;
|
||
|
uint8_t Size;
|
||
|
}RadioLoRaPacketHandler_t;
|
||
|
|
||
|
/*!
|
||
|
* Radio Settings
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
RadioState_t State;
|
||
|
RadioModems_t Modem;
|
||
|
uint32_t Channel;
|
||
|
RadioFskSettings_t Fsk;
|
||
|
RadioFskPacketHandler_t FskPacketHandler;
|
||
|
RadioLoRaSettings_t LoRa;
|
||
|
RadioLoRaPacketHandler_t LoRaPacketHandler;
|
||
|
}RadioSettings_t;
|
||
|
|
||
|
/*!
|
||
|
* Radio hardware and global parameters
|
||
|
*/
|
||
|
typedef struct SX1272_s
|
||
|
{
|
||
|
uint8_t RxTx;
|
||
|
RadioSettings_t Settings;
|
||
|
}SX1272_t;
|
||
|
|
||
|
extern SX1272_t SX1272;
|
||
|
/*!
|
||
|
* Hardware IO IRQ callback function definition
|
||
|
*/
|
||
|
typedef void ( DioIrqHandler )( void );
|
||
|
|
||
|
/*!
|
||
|
* SX1272 definitions
|
||
|
*/
|
||
|
#define XTAL_FREQ 32000000
|
||
|
#define FREQ_STEP 61.03515625
|
||
|
#define FREQ_STEP_8 15625 /* FREQ_STEP<<8 */
|
||
|
|
||
|
/*!
|
||
|
* \brief Radio hardware registers initialization definition
|
||
|
*
|
||
|
* \remark Can be automatically generated by the SX1272 GUI (not yet implemented)
|
||
|
*/
|
||
|
#define RADIO_INIT_REGISTERS_VALUE \
|
||
|
{ \
|
||
|
{ MODEM_FSK , REG_LNA , 0x23 },\
|
||
|
{ MODEM_FSK , REG_RXCONFIG , 0x1E },\
|
||
|
{ MODEM_FSK , REG_RSSICONFIG , 0xD2 },\
|
||
|
{ MODEM_FSK , REG_AFCFEI , 0x01 },\
|
||
|
{ MODEM_FSK , REG_PREAMBLEDETECT , 0xAA },\
|
||
|
{ MODEM_FSK , REG_OSC , 0x07 },\
|
||
|
{ MODEM_FSK , REG_SYNCCONFIG , 0x12 },\
|
||
|
{ MODEM_FSK , REG_SYNCVALUE1 , 0xC1 },\
|
||
|
{ MODEM_FSK , REG_SYNCVALUE2 , 0x94 },\
|
||
|
{ MODEM_FSK , REG_SYNCVALUE3 , 0xC1 },\
|
||
|
{ MODEM_FSK , REG_PACKETCONFIG1 , 0xD8 },\
|
||
|
{ MODEM_FSK , REG_FIFOTHRESH , 0x8F },\
|
||
|
{ MODEM_FSK , REG_IMAGECAL , 0x02 },\
|
||
|
{ MODEM_FSK , REG_DIOMAPPING1 , 0x00 },\
|
||
|
{ MODEM_FSK , REG_DIOMAPPING2 , 0x30 },\
|
||
|
{ MODEM_LORA, REG_LR_DETECTOPTIMIZE , 0x43 },\
|
||
|
{ MODEM_LORA, REG_LR_PAYLOADMAXLENGTH, 0x40 },\
|
||
|
} \
|
||
|
|
||
|
/* Freq = channel * FREQ_STEP */
|
||
|
#define SX_CHANNEL_TO_FREQ( channel, freq ) \
|
||
|
do \
|
||
|
{ \
|
||
|
uint32_t initialChanInt, initialChanFrac; \
|
||
|
initialChanInt = channel >> 8; \
|
||
|
initialChanFrac = channel - ( initialChanInt << 8 ); \
|
||
|
freq = initialChanInt * FREQ_STEP_8 + ( ( initialChanFrac * FREQ_STEP_8 + ( 128 ) ) >> 8 ); \
|
||
|
}while( 0 )
|
||
|
|
||
|
/* channel = Freq / FREQ_STEP */
|
||
|
#define SX_FREQ_TO_CHANNEL( channel, freq ) \
|
||
|
do \
|
||
|
{ \
|
||
|
uint32_t initialFreqInt, initialFreqFrac; \
|
||
|
initialFreqInt = freq / FREQ_STEP_8; \
|
||
|
initialFreqFrac = freq - ( initialFreqInt * FREQ_STEP_8 ); \
|
||
|
channel = ( initialFreqInt << 8 ) + ( ( ( initialFreqFrac << 8 ) + ( FREQ_STEP_8 / 2 ) ) / FREQ_STEP_8 ); \
|
||
|
}while( 0 )
|
||
|
|
||
|
#define RX_BUFFER_SIZE 256
|
||
|
|
||
|
typedef struct sBoardCallback
|
||
|
{
|
||
|
/*!
|
||
|
* \brief Set XO state on the board
|
||
|
*/
|
||
|
void ( *SX1272BoardSetXO )( uint8_t state );
|
||
|
/*!
|
||
|
* \brief Get Board Wake Up time
|
||
|
*/
|
||
|
uint32_t ( *SX1272BoardGetWakeTime )( void );
|
||
|
/*!
|
||
|
* \brief Initializes the radio I/Os Irq
|
||
|
*/
|
||
|
void ( *SX1272BoardIoIrqInit )( DioIrqHandler **irqHandlers );
|
||
|
/*!
|
||
|
* \brief Sets the radio output power.
|
||
|
*
|
||
|
* \param [IN] power Sets the RF output power
|
||
|
*/
|
||
|
void ( *SX1272BoardSetRfTxPower )( int8_t power );
|
||
|
/*!
|
||
|
* \brief Set the RF Switch I/Os pins in Low Power mode
|
||
|
*
|
||
|
* \param [IN] status enable or disable
|
||
|
*/
|
||
|
void ( *SX1272BoardSetAntSwLowPower )( bool status );
|
||
|
/*!
|
||
|
* \brief Controls the antena switch if necessary.
|
||
|
*
|
||
|
* \remark see errata note
|
||
|
*
|
||
|
* \param [IN] opMode Current radio operating mode
|
||
|
*/
|
||
|
void ( *SX1272BoardSetAntSw )( uint8_t opMode );
|
||
|
}LoRaBoardCallback_t;
|
||
|
|
||
|
/*!
|
||
|
* ============================================================================
|
||
|
* Public functions prototypes
|
||
|
* ============================================================================
|
||
|
*/
|
||
|
void SX1272BoardInit( LoRaBoardCallback_t *callbacks );
|
||
|
/*!
|
||
|
* \brief Initializes the radio
|
||
|
*
|
||
|
* \param [IN] events Structure containing the driver callback functions
|
||
|
* \param [OUT] returns the wake up time of the radio and associated board
|
||
|
*/
|
||
|
uint32_t SX1272Init( RadioEvents_t *events );
|
||
|
|
||
|
/*!
|
||
|
* Return current radio status
|
||
|
*
|
||
|
* \param status Radio status.[RF_IDLE, RF_RX_RUNNING, RF_TX_RUNNING]
|
||
|
*/
|
||
|
RadioState_t SX1272GetStatus( void );
|
||
|
|
||
|
/*!
|
||
|
* \brief Configures the radio with the given modem
|
||
|
*
|
||
|
* \param [IN] modem Modem to be used [0: FSK, 1: LoRa]
|
||
|
*/
|
||
|
void SX1272SetModem( RadioModems_t modem );
|
||
|
|
||
|
/*!
|
||
|
* \brief Sets the channel configuration
|
||
|
*
|
||
|
* \param [IN] freq Channel RF frequency
|
||
|
*/
|
||
|
void SX1272SetChannel( uint32_t freq );
|
||
|
|
||
|
/*!
|
||
|
* \brief Checks if the channel is free for the given time
|
||
|
*
|
||
|
* \param [IN] modem Radio modem to be used [0: FSK, 1: LoRa]
|
||
|
* \param [IN] freq Channel RF frequency
|
||
|
* \param [IN] rssiThresh RSSI threshold
|
||
|
* \param [IN] maxCarrierSenseTime Max time while the RSSI is measured
|
||
|
*
|
||
|
* \retval isFree [true: Channel is free, false: Channel is not free]
|
||
|
*/
|
||
|
bool SX1272IsChannelFree( RadioModems_t modem, uint32_t freq, int16_t rssiThresh, uint32_t maxCarrierSenseTime );
|
||
|
|
||
|
/*!
|
||
|
* \brief Generates a 32 bits random value based on the RSSI readings
|
||
|
*
|
||
|
* \remark This function sets the radio in LoRa modem mode and disables
|
||
|
* all interrupts.
|
||
|
* After calling this function either SX1272SetRxConfig or
|
||
|
* SX1272SetTxConfig functions must be called.
|
||
|
*
|
||
|
* \retval randomValue 32 bits random value
|
||
|
*/
|
||
|
uint32_t SX1272Random( void );
|
||
|
|
||
|
/*!
|
||
|
* \brief Sets the reception parameters
|
||
|
*
|
||
|
* \param [IN] modem Radio modem to be used [0: FSK, 1: LoRa]
|
||
|
* \param [IN] bandwidth Sets the bandwidth
|
||
|
* FSK : >= 2600 and <= 250000 Hz
|
||
|
* LoRa: [0: 125 kHz, 1: 250 kHz,
|
||
|
* 2: 500 kHz, 3: Reserved]
|
||
|
* \param [IN] datarate Sets the Datarate
|
||
|
* FSK : 600..300000 bits/s
|
||
|
* LoRa: [6: 64, 7: 128, 8: 256, 9: 512,
|
||
|
* 10: 1024, 11: 2048, 12: 4096 chips]
|
||
|
* \param [IN] coderate Sets the coding rate (LoRa only)
|
||
|
* FSK : N/A ( set to 0 )
|
||
|
* LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
|
||
|
* \param [IN] bandwidthAfc Sets the AFC Bandwidth (FSK only)
|
||
|
* FSK : >= 2600 and <= 250000 Hz
|
||
|
* LoRa: N/A ( set to 0 )
|
||
|
* \param [IN] preambleLen Sets the Preamble length
|
||
|
* FSK : Number of bytes
|
||
|
* LoRa: Length in symbols (the hardware adds 4 more symbols)
|
||
|
* \param [IN] symbTimeout Sets the RxSingle timeout value
|
||
|
* FSK : timeout number of bytes
|
||
|
* LoRa: timeout in symbols
|
||
|
* \param [IN] fixLen Fixed length packets [0: variable, 1: fixed]
|
||
|
* \param [IN] payloadLen Sets payload length when fixed length is used
|
||
|
* \param [IN] crcOn Enables/Disables the CRC [0: OFF, 1: ON]
|
||
|
* \param [IN] freqHopOn Enables disables the intra-packet frequency hopping
|
||
|
* FSK : N/A ( set to 0 )
|
||
|
* LoRa: [0: OFF, 1: ON]
|
||
|
* \param [IN] hopPeriod Number of symbols between each hop
|
||
|
* FSK : N/A ( set to 0 )
|
||
|
* LoRa: Number of symbols
|
||
|
* \param [IN] iqInverted Inverts IQ signals (LoRa only)
|
||
|
* FSK : N/A ( set to 0 )
|
||
|
* LoRa: [0: not inverted, 1: inverted]
|
||
|
* \param [IN] rxContinuous Sets the reception in continuous mode
|
||
|
* [false: single mode, true: continuous mode]
|
||
|
*/
|
||
|
void SX1272SetRxConfig( RadioModems_t modem, uint32_t bandwidth,
|
||
|
uint32_t datarate, uint8_t coderate,
|
||
|
uint32_t bandwidthAfc, uint16_t preambleLen,
|
||
|
uint16_t symbTimeout, bool fixLen,
|
||
|
uint8_t payloadLen,
|
||
|
bool crcOn, bool freqHopOn, uint8_t hopPeriod,
|
||
|
bool iqInverted, bool rxContinuous );
|
||
|
|
||
|
/*!
|
||
|
* \brief Sets the transmission parameters
|
||
|
*
|
||
|
* \param [IN] modem Radio modem to be used [0: FSK, 1: LoRa]
|
||
|
* \param [IN] power Sets the output power [dBm]
|
||
|
* \param [IN] fdev Sets the frequency deviation (FSK only)
|
||
|
* FSK : [Hz]
|
||
|
* LoRa: 0
|
||
|
* \param [IN] bandwidth Sets the bandwidth (LoRa only)
|
||
|
* FSK : 0
|
||
|
* LoRa: [0: 125 kHz, 1: 250 kHz,
|
||
|
* 2: 500 kHz, 3: Reserved]
|
||
|
* \param [IN] datarate Sets the Datarate
|
||
|
* FSK : 600..300000 bits/s
|
||
|
* LoRa: [6: 64, 7: 128, 8: 256, 9: 512,
|
||
|
* 10: 1024, 11: 2048, 12: 4096 chips]
|
||
|
* \param [IN] coderate Sets the coding rate (LoRa only)
|
||
|
* FSK : N/A ( set to 0 )
|
||
|
* LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
|
||
|
* \param [IN] preambleLen Sets the preamble length
|
||
|
* FSK : Number of bytes
|
||
|
* LoRa: Length in symbols (the hardware adds 4 more symbols)
|
||
|
* \param [IN] fixLen Fixed length packets [0: variable, 1: fixed]
|
||
|
* \param [IN] crcOn Enables disables the CRC [0: OFF, 1: ON]
|
||
|
* \param [IN] freqHopOn Enables disables the intra-packet frequency hopping
|
||
|
* FSK : N/A ( set to 0 )
|
||
|
* LoRa: [0: OFF, 1: ON]
|
||
|
* \param [IN] hopPeriod Number of symbols between each hop
|
||
|
* FSK : N/A ( set to 0 )
|
||
|
* LoRa: Number of symbols
|
||
|
* \param [IN] iqInverted Inverts IQ signals (LoRa only)
|
||
|
* FSK : N/A ( set to 0 )
|
||
|
* LoRa: [0: not inverted, 1: inverted]
|
||
|
* \param [IN] timeout Transmission timeout [ms]
|
||
|
*/
|
||
|
void SX1272SetTxConfig( RadioModems_t modem, int8_t power, uint32_t fdev,
|
||
|
uint32_t bandwidth, uint32_t datarate,
|
||
|
uint8_t coderate, uint16_t preambleLen,
|
||
|
bool fixLen, bool crcOn, bool freqHopOn,
|
||
|
uint8_t hopPeriod, bool iqInverted, uint32_t timeout );
|
||
|
|
||
|
/*!
|
||
|
* \brief Computes the packet time on air in ms for the given payload
|
||
|
*
|
||
|
* \Remark Can only be called once SetRxConfig or SetTxConfig have been called
|
||
|
*
|
||
|
* \param [IN] modem Radio modem to be used [0: FSK, 1: LoRa]
|
||
|
* \param [IN] pktLen Packet payload length
|
||
|
*
|
||
|
* \retval airTime Computed airTime (ms) for the given packet payload length
|
||
|
*/
|
||
|
uint32_t SX1272GetTimeOnAir( RadioModems_t modem, uint8_t pktLen );
|
||
|
|
||
|
/*!
|
||
|
* \brief Sends the buffer of size. Prepares the packet to be sent and sets
|
||
|
* the radio in transmission
|
||
|
*
|
||
|
* \param [IN]: buffer Buffer pointer
|
||
|
* \param [IN]: size Buffer size
|
||
|
*/
|
||
|
void SX1272Send( uint8_t *buffer, uint8_t size );
|
||
|
|
||
|
/*!
|
||
|
* \brief Sets the radio in sleep mode
|
||
|
*/
|
||
|
void SX1272SetSleep( void );
|
||
|
|
||
|
/*!
|
||
|
* \brief Sets the radio in standby mode
|
||
|
*/
|
||
|
void SX1272SetStby( void );
|
||
|
|
||
|
/*!
|
||
|
* \brief Sets the radio in reception mode for the given time
|
||
|
* \param [IN] timeout Reception timeout [ms] [0: continuous, others timeout]
|
||
|
*/
|
||
|
void SX1272SetRx( uint32_t timeout );
|
||
|
|
||
|
/*!
|
||
|
* \brief Start a Channel Activity Detection
|
||
|
*/
|
||
|
void SX1272StartCad( void );
|
||
|
|
||
|
/*!
|
||
|
* \brief Sets the radio in continuous wave transmission mode
|
||
|
*
|
||
|
* \param [IN]: freq Channel RF frequency
|
||
|
* \param [IN]: power Sets the output power [dBm]
|
||
|
* \param [IN]: time Transmission mode timeout [s]
|
||
|
*/
|
||
|
void SX1272SetTxContinuousWave( uint32_t freq, int8_t power, uint16_t time );
|
||
|
|
||
|
/*!
|
||
|
* \brief Reads the current RSSI value
|
||
|
*
|
||
|
* \retval rssiValue Current RSSI value in [dBm]
|
||
|
*/
|
||
|
int16_t SX1272ReadRssi( RadioModems_t modem );
|
||
|
|
||
|
/*!
|
||
|
* \brief Writes the radio register at the specified address
|
||
|
*
|
||
|
* \param [IN]: addr Register address
|
||
|
* \param [IN]: data New register value
|
||
|
*/
|
||
|
void SX1272Write( uint8_t addr, uint8_t data );
|
||
|
|
||
|
/*!
|
||
|
* \brief Reads the radio register at the specified address
|
||
|
*
|
||
|
* \param [IN]: addr Register address
|
||
|
* \retval data Register value
|
||
|
*/
|
||
|
uint8_t SX1272Read( uint8_t addr );
|
||
|
|
||
|
/*!
|
||
|
* \brief Writes multiple radio registers starting at address
|
||
|
*
|
||
|
* \param [IN] addr First Radio register address
|
||
|
* \param [IN] buffer Buffer containing the new register's values
|
||
|
* \param [IN] size Number of registers to be written
|
||
|
*/
|
||
|
void SX1272WriteBuffer( uint8_t addr, uint8_t *buffer, uint8_t size );
|
||
|
|
||
|
/*!
|
||
|
* \brief Reads multiple radio registers starting at address
|
||
|
*
|
||
|
* \param [IN] addr First Radio register address
|
||
|
* \param [OUT] buffer Buffer where to copy the registers data
|
||
|
* \param [IN] size Number of registers to be read
|
||
|
*/
|
||
|
void SX1272ReadBuffer( uint8_t addr, uint8_t *buffer, uint8_t size );
|
||
|
|
||
|
/*!
|
||
|
* \brief Sets the maximum payload length.
|
||
|
*
|
||
|
* \param [IN] modem Radio modem to be used [0: FSK, 1: LoRa]
|
||
|
* \param [IN] max Maximum payload length in bytes
|
||
|
*/
|
||
|
void SX1272SetMaxPayloadLength( RadioModems_t modem, uint8_t max );
|
||
|
|
||
|
/*!
|
||
|
* \brief Sets the network to public or private. Updates the sync byte.
|
||
|
*
|
||
|
* \remark Applies to LoRa modem only
|
||
|
*
|
||
|
* \param [IN] enable if true, it enables a public network
|
||
|
*/
|
||
|
void SX1272SetPublicNetwork( bool enable );
|
||
|
|
||
|
/*!
|
||
|
* \brief Service to get the radio wake-up time.
|
||
|
*
|
||
|
* \retval Value of the radio wake-up time.
|
||
|
*/
|
||
|
uint32_t SX1272GetRadioWakeUpTime( void );
|
||
|
|
||
|
#endif /* __SX1272_H__ */
|