/* / _____) _ | | ( (____ _____ ____ _| |_ _____ ____| |__ \____ \| ___ | (_ _) ___ |/ ___) _ \ _____) ) ____| | | || |_| ____( (___| | | | (______/|_____)_|_|_| \__)_____)\____)_| |_| (C)2013 Semtech Description: SX1276 driver specific target board functions implementation License: Revised BSD License, see LICENSE.TXT file include in the project Maintainer: Miguel Luis and Gregory Cristian */ #ifndef __SX1276_ARCH_H__ #define __SX1276_ARCH_H__ #include "stdbool.h" #include "stdint.h" #include "sx1276.h" /*! * \brief Radio hardware registers initialization definition * * \remark Can be automatically generated by the SX1276 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_PAYLOADMAXLENGTH, 0x40 },\ } \ #define RF_MID_BAND_THRESH 525000000 /*! * \brief Initializes the radio I/Os pins interface */ void SX1276IoInit( void ); /*! * \brief Initializes DIO IRQ handlers * * \param [IN] irqHandlers Array containing the IRQ callback functions */ void SX1276IoIrqInit( DioIrqHandler **irqHandlers ); /*! * \brief De-initializes the radio I/Os pins interface. * * \remark Useful when going in MCU lowpower modes */ void SX1276IoDeInit( void ); /*! * \brief Gets the board PA selection configuration * * \param [IN] channel Channel frequency in Hz * \retval PaSelect RegPaConfig PaSelect value */ uint8_t SX1276GetPaSelect( uint32_t channel ); /*! * \brief Initializes the RF Switch I/Os pins interface */ void SX1276AntSwInit( void ); /*! * \brief De-initializes the RF Switch I/Os pins interface * * \remark Needed to decrease the power consumption in MCU lowpower modes */ void SX1276AntSwDeInit( void ); /*! * \brief Controls the antena switch if necessary. * * \remark see errata note * * \param [IN] rxTx [1: Tx, 0: Rx] */ void SX1276SetAntSw( uint8_t rxTx ); /*! * \brief Checks if the given RF frequency is supported by the hardware * * \param [IN] frequency RF frequency to be checked * \retval isSupported [true: supported, false: unsupported] */ bool SX1276CheckRfFrequency( uint32_t frequency ); void Sx1276SetNSS(bool enable ); uint8_t Sx1276SpiInOut(uint16_t data ); void SX1276TimerInit(void); void SX1276TxTimeoutTimerStart( uint32_t timeoutMs ); void SX1276TxTimeoutTimerStop(void); void SX1276RxTimeoutTimerStart( uint32_t timeoutMs ); void SX1276RxTimeoutTimerStop(void); void SX1276SyncWordTimeoutTimerStart( uint32_t timeoutMs ); void SX1276SyncWordTimeoutTimerStop(void); void SX1276Reset( void ); void SX1276DelayMs(uint32_t delayMs); /*! * Radio hardware and global parameters */ extern SX1276_t SX1276; #endif // __SX1276_ARCH_H__