radio.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifndef __RADIO_H
  2. #define __RADIO_H
  3. #include "sx126x_driver.h"
  4. extern const double RadioLoRaSymbTime[3][8];
  5. /*!
  6. * Radio driver supported modems
  7. */
  8. typedef enum
  9. {
  10. MODEM_FSK = 0,
  11. MODEM_LORA,
  12. }RadioModems_t;
  13. /*!
  14. * Radio driver internal state machine states definition
  15. */
  16. typedef enum
  17. {
  18. RF_IDLE = 0, //!< The radio is idle
  19. RF_RX_RUNNING, //!< The radio is in reception state
  20. RF_TX_RUNNING, //!< The radio is in transmission state
  21. RF_CAD, //!< The radio is doing channel activity detection
  22. }RadioState_t;
  23. void RadioIoDeInit(void);
  24. void RadioRecoverIoInit(void);
  25. void RadioInit(void);
  26. RadioState_t RadioGetStatus( void );
  27. void RadioSetModem( RadioModems_t modem );
  28. void RadioSetTxPower(uint8_t power);
  29. void RadioSetChannel( uint32_t freq );
  30. uint8_t RadioIsChannelFree( RadioPacketTypes_t modem, uint32_t freq, int16_t rssiThresh, uint32_t maxCarrierSenseTime );
  31. uint32_t RadioRandom( void );
  32. void RadioSetRxConfig( RadioModems_t modem, uint32_t bandwidth,
  33. uint32_t datarate, uint8_t coderate,
  34. uint32_t bandwidthAfc, uint16_t preambleLen,
  35. uint16_t symbTimeout, uint8_t fixLen,
  36. uint8_t payloadLen,
  37. uint8_t crcOn, uint8_t freqHopOn, uint8_t hopPeriod,
  38. uint8_t iqInverted, uint8_t rxContinuous );
  39. void RadioSetTxConfig( RadioModems_t modem, int8_t power, uint32_t fdev,
  40. uint32_t bandwidth, uint32_t datarate,
  41. uint8_t coderate, uint16_t preambleLen,
  42. uint8_t fixLen, uint8_t crcOn, uint8_t freqHopOn,
  43. uint8_t hopPeriod, uint8_t iqInverted, uint32_t timeout );
  44. uint32_t RadioTimeOnAir( RadioModems_t modem, uint8_t pktLen );
  45. void RadioSend( uint8_t *buffer, uint8_t size,uint32_t time_out );
  46. void RadioGetBuffer( uint8_t *buffer, uint8_t *size, uint8_t maxSize );
  47. void RadioSleep( void );
  48. void RadioStandby( void );
  49. void RadioRx( uint32_t timeout );
  50. void RadioRxBoosted( uint32_t timeout );
  51. void RadioSetRxDutyCycle( uint32_t rxTime, uint32_t sleepTime );
  52. void RadioStartCad( void );
  53. void RadioSetCadParams( RadioLoRaCadSymbols_t cadSymbolNum, uint8_t cadDetPeak, uint8_t cadDetMin, RadioCadExitModes_t cadExitMode, uint32_t cadTimeout );
  54. void RadioTx( uint32_t timeout );
  55. void RadioSetTxContinuousWave( uint32_t freq, int8_t power, uint16_t time );
  56. int8_t RadioRssi(void );
  57. void RadioSetMaxPayloadLength( RadioModems_t modem, uint8_t max );
  58. void RadioSetPublicNetwork( uint8_t enable );
  59. uint16_t RadioGetIrqStatus(void);
  60. void RadioGetPacketStatus( PacketStatus_t *pktStatus );
  61. RadioError_t RadioGetDeviceErrors( void );
  62. void RadioClearDeviceErrors( void );
  63. void RadioClearIrqStatus( uint16_t irq );
  64. void RadioOnDioIrq( void );
  65. void RadioIrqProcess( void );
  66. void RadioSetPreamble(uint16_t preamble_len);
  67. uint32_t RadioTimeOnAirAndPreamble( RadioModems_t modem, uint8_t pktLen,uint16_t preLen );
  68. extern SX126x_t SX126x;
  69. extern uint16_t lora_preamble_len;
  70. #endif