sx1276.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. /*
  2. * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND
  3. * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER.
  4. * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR
  5. * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
  6. * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
  7. * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  8. *
  9. * Copyright (C) SEMTECH S.A.
  10. */
  11. /*!
  12. * \file sx1276.h
  13. * \brief SX1276 RF chip driver
  14. *
  15. * \version 2.0.B2
  16. * \date May 6 2013
  17. * \author Gregory Cristian
  18. *
  19. * Last modified by Miguel Luis on Jun 19 2013
  20. */
  21. #ifndef __SX1276_H__
  22. #define __SX1276_H__
  23. #include <stdint.h>
  24. /*!
  25. * \brief SX1276 registers array
  26. */
  27. extern uint8_t SX1276Regs[0x70];
  28. /*!
  29. * \brief Enables LoRa modem or FSK modem
  30. *
  31. * \param [IN] opMode New operating mode
  32. */
  33. void SX1276SetLoRaOn( bool enable );
  34. /*!
  35. * \brief Gets the LoRa modem state
  36. *
  37. * \retval LoraOn Current LoRa modem mode
  38. */
  39. bool SX1276GetLoRaOn( void );
  40. /*!
  41. * \brief Initializes the SX1276
  42. */
  43. void SX1276Init( void );
  44. /*!
  45. * \brief Resets the SX1276
  46. */
  47. void SX1276Reset( void );
  48. /*!
  49. * \brief Sets the SX1276 operating mode
  50. *
  51. * \param [IN] opMode New operating mode
  52. */
  53. void SX1276SetOpMode( uint8_t opMode );
  54. /*!
  55. * \brief Gets the SX1276 operating mode
  56. *
  57. * \retval opMode Current operating mode
  58. */
  59. uint8_t SX1276GetOpMode( void );
  60. /*!
  61. * \brief Reads the current Rx gain setting
  62. *
  63. * \retval rxGain Current gain setting
  64. */
  65. uint8_t SX1276ReadRxGain( void );
  66. /*!
  67. * \brief Trigs and reads the current RSSI value
  68. *
  69. * \retval rssiValue Current RSSI value in [dBm]
  70. */
  71. double SX1276ReadRssi( void );
  72. /*!
  73. * \brief Gets the Rx gain value measured while receiving the packet
  74. *
  75. * \retval rxGainValue Current Rx gain value
  76. */
  77. uint8_t SX1276GetPacketRxGain( void );
  78. /*!
  79. * \brief Gets the SNR value measured while receiving the packet
  80. *
  81. * \retval snrValue Current SNR value in [dB]
  82. */
  83. int8_t SX1276GetPacketSnr( void );
  84. /*!
  85. * \brief Gets the RSSI value measured while receiving the packet
  86. *
  87. * \retval rssiValue Current RSSI value in [dBm]
  88. */
  89. double SX1276GetPacketRssi( void );
  90. /*!
  91. * \brief Gets the AFC value measured while receiving the packet
  92. *
  93. * \retval afcValue Current AFC value in [Hz]
  94. */
  95. uint32_t SX1276GetPacketAfc( void );
  96. /*!
  97. * \brief Sets the radio in Rx mode. Waiting for a packet
  98. */
  99. void SX1276StartRx( void );
  100. /*!
  101. * \brief Sets the radio in Tx mode. Sending a packet
  102. */
  103. void SX1276StartTx( void );
  104. /*!
  105. * \brief Gets a copy of the current received buffer
  106. *
  107. * \param [IN]: buffer Buffer pointer
  108. * \param [IN]: size Buffer size
  109. */
  110. void SX1276GetRxPacket( void *buffer, uint16_t *size );
  111. /*!
  112. * \brief Sets a copy of the buffer to be transmitted and starts the
  113. * transmission
  114. *
  115. * \param [IN]: buffer Buffer pointer
  116. * \param [IN]: size Buffer size
  117. */
  118. void SX1276SetTxPacket( const void *buffer, uint16_t size );
  119. /*!
  120. * \brief Gets the current RFState
  121. *
  122. * \retval rfState Current RF state [RF_IDLE, RF_BUSY,
  123. * RF_RX_DONE, RF_RX_TIMEOUT,
  124. * RF_TX_DONE, RF_TX_TIMEOUT]
  125. */
  126. uint8_t SX1276GetRFState( void );
  127. /*!
  128. * \brief Sets the new state of the RF state machine
  129. *
  130. * \param [IN]: state New RF state machine state
  131. */
  132. void SX1276SetRFState( uint8_t state );
  133. /*!
  134. * \brief Process the Rx and Tx state machines depending on the
  135. * SX1276 operating mode.
  136. *
  137. * \retval rfState Current RF state [RF_IDLE, RF_BUSY,
  138. * RF_RX_DONE, RF_RX_TIMEOUT,
  139. * RF_TX_DONE, RF_TX_TIMEOUT]
  140. */
  141. uint32_t SX1276Process( void );
  142. void EnterTestMode(void);
  143. void EnterRxTestMode(void);
  144. void testSPI(void);
  145. void SX1276setLoRaSta( bool sta );
  146. #endif //__SX1276_H__