radio.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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 radio.c
  13. * \brief Generic radio driver ( radio abstraction )
  14. *
  15. * \version 2.0.B2
  16. * \date Nov 21 2012
  17. * \author Miguel Luis
  18. *
  19. * Last modified by Gregory Cristian on Apr 25 2013
  20. */
  21. #include "radio.h"
  22. #include "stdio.h"
  23. #if defined( USE_SX1232_RADIO )
  24. #include "sx1232.h"
  25. #elif defined( USE_SX1272_RADIO )
  26. #include "sx1272.h"
  27. #include "sx1272-LoRaMisc.h"
  28. #include "sx1272-LoRa.h"
  29. #include "sx1272-Hal.h"
  30. #elif defined( USE_SX1276_RADIO )
  31. #include "sx1276.h"
  32. #include "sx1276-LoRaMisc.h"
  33. #include "sx1276-LoRa.h"
  34. #include "sx1276-Hal.h"
  35. #else
  36. // #error "Missing define: USE_XXXXXX_RADIO (ie. USE_SX1272_RADIO)"
  37. #endif
  38. tRadioDriver RadioDriver;
  39. tRadioDriver *Radio = NULL; //¶¨ÒåRF¹¦ÄÜÖ¸Õë
  40. tRadioDriver* RadioDriverInit( void )
  41. {
  42. #if defined( USE_SX1276_RADIO )
  43. RadioDriver.Init = SX1276Init;
  44. RadioDriver.Reset = SX1276Reset;
  45. RadioDriver.StartCad = SX1276StartCad;
  46. RadioDriver.StartRx = SX1276StartRx;
  47. RadioDriver.GetRxPacket = SX1276GetRxPacket;
  48. RadioDriver.SetTxPacket = SX1276SetTxPacket;
  49. RadioDriver.Process = SX1276Process;
  50. RadioDriver.LoRaSetRFFrequency = SX1276LoRaSetRFFrequency;
  51. RadioDriver.LoRaGetRFFrequency = SX1276LoRaGetRFFrequency;
  52. RadioDriver.LoRaSetRFPower = SX1276LoRaSetRFPower;
  53. RadioDriver.LoRaGetRFPower = SX1276LoRaGetRFPower;
  54. RadioDriver.LoRaSetSignalBandwidth = SX1276LoRaSetSignalBandwidth;
  55. RadioDriver.LoRaGetSignalBandwidth = SX1276LoRaGetSignalBandwidth;
  56. RadioDriver.LoRaSetSpreadingFactor = SX1276LoRaSetSpreadingFactor;
  57. RadioDriver.LoRaGetSpreadingFactor = SX1276LoRaGetSpreadingFactor;
  58. RadioDriver.LoRaSetErrorCoding = SX1276LoRaSetErrorCoding;
  59. RadioDriver.LoRaGetErrorCoding = SX1276LoRaGetErrorCoding;
  60. RadioDriver.LoRaSetPacketCrcOn = SX1276LoRaSetPacketCrcOn;
  61. RadioDriver.LoRaGetPacketCrcOn = SX1276LoRaGetPacketCrcOn;
  62. RadioDriver.LoRaSetImplicitHeaderOn = SX1276LoRaSetImplicitHeaderOn;
  63. RadioDriver.LoRaGetImplicitHeaderOn = SX1276LoRaGetImplicitHeaderOn;
  64. RadioDriver.LoRaSetRxSingleOn = SX1276LoRaSetRxSingleOn;
  65. RadioDriver.LoRaGetRxSingleOn = SX1276LoRaGetRxSingleOn;
  66. RadioDriver.LoRaSetFreqHopOn = SX1276LoRaSetFreqHopOn;
  67. RadioDriver.LoRaGetFreqHopOn = SX1276LoRaGetFreqHopOn;
  68. RadioDriver.LoRaSetHopPeriod = SX1276LoRaSetHopPeriod;
  69. RadioDriver.LoRaGetHopPeriod = SX1276LoRaGetHopPeriod;
  70. RadioDriver.LoRaSetTxPacketTimeout = SX1276LoRaSetTxPacketTimeout;
  71. RadioDriver.LoRaGetTxPacketTimeout = SX1276LoRaGetTxPacketTimeout;
  72. RadioDriver.LoRaSetRxPacketTimeout = SX1276LoRaSetRxPacketTimeout;
  73. RadioDriver.LoRaGetRxPacketTimeout = SX1276LoRaGetRxPacketTimeout;
  74. RadioDriver.LoRaSetPayloadLength = SX1276LoRaSetPayloadLength;
  75. RadioDriver.LoRaGetPayloadLength = SX1276LoRaGetPayloadLength;
  76. RadioDriver.LoRaSetPa20dBm = SX1276LoRaSetPa20dBm;
  77. RadioDriver.LoRaGetPa20dBm = SX1276LoRaGetPa20dBm;
  78. RadioDriver.LoRaSetPaRamp = SX1276LoRaSetPaRamp;
  79. RadioDriver.LoRaGetPaRamp = SX1276LoRaGetPaRamp;
  80. RadioDriver.LoRaSetSymbTimeout = SX1276LoRaSetSymbTimeout;
  81. RadioDriver.LoRaGetSymbTimeout = SX1276LoRaGetSymbTimeout;
  82. RadioDriver.LoRaSetLowDatarateOptimize = SX1276LoRaSetLowDatarateOptimize;
  83. RadioDriver.LoRaGetLowDatarateOptimize = SX1276LoRaGetLowDatarateOptimize;
  84. RadioDriver.LoRaGetPreambleLength = SX1276LoRaGetPreambleLength;
  85. RadioDriver.LoRaSetPreambleLength = SX1276LoRaSetPreambleLength;
  86. RadioDriver.LoRaSetNbTrigPeaks = SX1276LoRaSetNbTrigPeaks;
  87. RadioDriver.LoRaSetOpMode = SX1276LoRaSetOpMode;
  88. RadioDriver.LoRaGetOpMode = SX1276LoRaGetOpMode;
  89. RadioDriver.Read = SX1276Read;
  90. RadioDriver.Write = SX1276Write;
  91. #else
  92. // #error "Missing define: USE_XXXXXX_RADIO (ie. USE_SX1272_RADIO)"
  93. #endif
  94. return &RadioDriver;
  95. }