| /* |
| / _____) _ | | |
| ( (____ _____ ____ _| |_ _____ ____| |__ |
| \____ \| ___ | (_ _) ___ |/ ___) _ \ |
| _____) ) ____| | | || |_| ____( (___| | | | |
| (______/|_____)_|_|_| \__)_____)\____)_| |_| |
| (C)2013 Semtech |
| |
| Description: SX1272 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 __SX1272_ARCH_H__ |
| #define __SX1272_ARCH_H__ |
| |
| #define RADIO_SPI_IDX MYNEWT_VAL(SX1272_SPI_IDX) |
| #if RADIO_SPI_IDX != 0 |
| #error "Invalid SX1272_SPI_IDX value. Must be zero" |
| #endif |
| |
| #if MYNEWT_VAL(SX1272_SPI_CS_PIN) == -1 |
| #error "Must set SX1272_SPI_CS_PIN pin (spi slave select)" |
| #else |
| #define RADIO_NSS MYNEWT_VAL(SX1272_SPI_CS_PIN) |
| #endif |
| |
| #define SX1272_DIO0 MYNEWT_VAL(SX1272_DIO0_PIN) |
| #define SX1272_DIO1 MYNEWT_VAL(SX1272_DIO1_PIN) |
| #define SX1272_DIO2 MYNEWT_VAL(SX1272_DIO2_PIN) |
| #define SX1272_DIO3 MYNEWT_VAL(SX1272_DIO3_PIN) |
| #define SX1272_DIO4 MYNEWT_VAL(SX1272_DIO4_PIN) |
| #define SX1272_DIO5 MYNEWT_VAL(SX1272_DIO5_PIN) |
| |
| #if MYNEWT_VAL(SX1272_RESET_PIN) == -1 |
| #error "Must set SX1272_RESET_PIN pin (spi slave select)" |
| #else |
| #define SX1272_NRESET MYNEWT_VAL(SX1272_RESET_PIN) |
| #endif |
| |
| #if MYNEWT_VAL(SX1272_HAS_ANT_SW) |
| #define SX1272_RXTX MYNEWT_VAL(SX1272_RXTX_PIN) |
| #endif |
| |
| #if MYNEWT_VAL(SX1272_HAS_COMP_ANT_SW) |
| #define SX1272_RXTX MYNEWT_VAL(SX1272_RXTX_PIN) |
| #define SX1272_N_RXTX MYNEWT_VAL(SX1272_N_RXTX_PIN) |
| #endif |
| |
| /*! |
| * \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 },\ |
| } \ |
| |
| /*! |
| * \brief Initializes the radio I/Os pins interface |
| */ |
| void SX1272IoInit(void); |
| |
| /*! |
| * \brief Initializes DIO IRQ handlers |
| * |
| * \param [IN] irqHandlers Array containing the IRQ callback functions |
| */ |
| void SX1272IoIrqInit(DioIrqHandler **irqHandlers); |
| |
| /*! |
| * \brief De-initializes the radio I/Os pins interface. |
| * |
| * \remark Useful when going in MCU low power modes |
| */ |
| void SX1272IoDeInit(void); |
| |
| /*! |
| * \brief Sets the radio output power. |
| * |
| * \param [IN] power Sets the RF output power |
| */ |
| void SX1272SetRfTxPower(int8_t power); |
| |
| /*! |
| * \brief Gets the board PA selection configuration |
| * |
| * \param [IN] channel Channel frequency in Hz |
| * \retval PaSelect RegPaConfig PaSelect value |
| */ |
| uint8_t SX1272GetPaSelect(uint32_t channel); |
| |
| /*! |
| * \brief Set the RF Switch I/Os pins in Low Power mode |
| * |
| * \param [IN] status enable or disable |
| */ |
| void SX1272SetAntSwLowPower(bool status); |
| |
| /*! |
| * \brief Initializes the RF Switch I/Os pins interface |
| */ |
| void SX1272AntSwInit(void); |
| |
| /*! |
| * \brief De-initializes the RF Switch I/Os pins interface |
| * |
| * \remark Needed to decrease the power consumption in MCU low power modes |
| */ |
| void SX1272AntSwDeInit(void); |
| |
| /*! |
| * \brief Controls the antenna switch if necessary. |
| * |
| * \remark see errata note |
| * |
| * \param [IN] opMode Current radio operating mode |
| */ |
| void SX1272SetAntSw(uint8_t opMode); |
| |
| /*! |
| * \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 SX1272CheckRfFrequency(uint32_t frequency); |
| |
| /*! |
| * \brief Gets the Defines the time required for the TCXO to wakeup [ms]. |
| * |
| * \retval time Board TCXO wakeup time in ms. |
| */ |
| uint32_t SX1272GetBoardTcxoWakeupTime( void ); |
| |
| /*! |
| * \brief Disables all receive related IO Irqs |
| */ |
| void SX1272RxIoIrqDisable( void ); |
| |
| /*! |
| * \brief Enables all receive related IO Irqs |
| */ |
| void SX1272RxIoIrqEnable( void ); |
| |
| |
| /*! |
| * Radio hardware and global parameters |
| */ |
| extern SX1272_t SX1272; |
| |
| #endif // __SX1272_ARCH_H__ |