myRadio.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. #ifndef __MY_RADIO_H
  2. #define __MY_RADIO_H
  3. /* Includes ------------------------------------------------------------------*/
  4. #include <stdio.h>
  5. #include <stdbool.h>
  6. #include <stdint.h>
  7. #include <string.h>
  8. #define MAX_RF_PACKET_LEN 128
  9. /*!
  10. * Select mode of operation for the Ping Ping application
  11. */
  12. #ifndef MODE_BLE || MODE_LORA || MODE_GFSK || MODE_FLRC
  13. //#define MODE_BLE
  14. // #define MODE_LORA
  15. // #define MODE_GFSK
  16. #define MODE_FLRC
  17. #endif
  18. typedef enum
  19. {
  20. RF_BAUDRATE_GF_0_125M,
  21. RF_BAUDRATE_GF_0_250M,
  22. RF_BAUDRATE_GF_0_250M_,
  23. RF_BAUDRATE_GF_0_400M,
  24. RF_BAUDRATE_GF_0_400M_,
  25. RF_BAUDRATE_GF_0_500M,
  26. RF_BAUDRATE_GF_0_500M_,
  27. RF_BAUDRATE_GF_0_800M,
  28. RF_BAUDRATE_GF_0_800M_,
  29. RF_BAUDRATE_GF_1_000M,
  30. RF_BAUDRATE_GF_1_000M_,
  31. RF_BAUDRATE_GF_1_600M,
  32. RF_BAUDRATE_GF_2_000M,
  33. MAX_RF_BAUDRATE_GF_COUNT, //
  34. }rfBaudrate_gf_te;
  35. typedef enum
  36. {
  37. RF_BAUDRATE_LR_216B,
  38. RF_BAUDRATE_LR_001K,
  39. RF_BAUDRATE_LR_005K,
  40. RF_BAUDRATE_LR_010K,
  41. RF_BAUDRATE_LR_020K,
  42. RF_BAUDRATE_LR_061K,
  43. RF_BAUDRATE_LR_127K,
  44. RF_BAUDRATE_LR_203K,
  45. MAX_RF_BAUDRATE_LR_COUNT, //
  46. }rfBaudrate_lora_te;
  47. typedef enum
  48. {
  49. RF_BAUDRATE_FLR_0_13M,
  50. RF_BAUDRATE_FLR_0_26M,
  51. RF_BAUDRATE_FLR_0_52M,
  52. RF_BAUDRATE_FLR_1_04M,
  53. MAX_RF_BAUDRATE_FLR_COUNT, //
  54. }rfBaudrate_fastLora_te;
  55. typedef enum
  56. {
  57. RF_TX_PWR_N_18,
  58. RF_TX_PWR_N_17,
  59. RF_TX_PWR_N_16,
  60. RF_TX_PWR_N_15,
  61. RF_TX_PWR_N_14,
  62. RF_TX_PWR_N_13,
  63. RF_TX_PWR_N_12,
  64. RF_TX_PWR_N_11,
  65. RF_TX_PWR_N_10,
  66. RF_TX_PWR_N_9,
  67. RF_TX_PWR_N_8,
  68. RF_TX_PWR_N_7,
  69. RF_TX_PWR_N_6,
  70. RF_TX_PWR_N_5,
  71. RF_TX_PWR_N_4,
  72. RF_TX_PWR_N_3,
  73. RF_TX_PWR_N_2,
  74. RF_TX_PWR_N_1,
  75. RF_TX_PWR_N_0,
  76. RF_TX_PWR_P_1,
  77. RF_TX_PWR_P_2,
  78. RF_TX_PWR_P_3,
  79. RF_TX_PWR_P_4,
  80. RF_TX_PWR_P_5,
  81. RF_TX_PWR_P_6,
  82. RF_TX_PWR_P_7,
  83. RF_TX_PWR_P_8,
  84. RF_TX_PWR_P_9,
  85. RF_TX_PWR_P_10,
  86. RF_TX_PWR_P_11,
  87. RF_TX_PWR_P_12,
  88. RF_TX_PWR_P_13,
  89. RF_TX_PWR_MAX_COUNT,
  90. }rf_txPwr_te;
  91. typedef enum
  92. {
  93. DVTP_VG2391S240N0M1,
  94. DVTP_VG2392S240N0M1,
  95. DVTP_VG2392S240X0M1,
  96. DVTP_VG2392S240X0M2,
  97. #ifdef MODULE_IS_1W
  98. DVTP_VG2392S240X0M3,
  99. #endif
  100. DVTP_MAX_COUNT,
  101. }deviceType_te;
  102. typedef enum
  103. {
  104. FREQ_BAND_315,
  105. FREQ_BAND_433,
  106. FREQ_BAND_490,
  107. FREQ_BAND_868,
  108. FREQ_BAND_915,
  109. MAX_FREQ_BAND_COUNT,
  110. }freqBand_te;
  111. typedef enum
  112. {
  113. RF_MM_MODE_BLE,
  114. RF_MM_MODE_LORA,
  115. RF_MM_MODE_GFSK,
  116. RF_MM_MODE_FLRC,
  117. MAX_RF_MM_MODE_COUNT,
  118. }rfModuleMode_te;
  119. //! \brief Structure for the TX Packet
  120. typedef struct
  121. {
  122. uint8_t rmvAddr[8]; //
  123. uint32_t absTime; //
  124. uint8_t len; //
  125. uint8_t payload[MAX_RF_PACKET_LEN]; //
  126. } rfTxPacket_ts;
  127. typedef struct
  128. {
  129. uint8_t rmvAddr[8]; //
  130. int16_t rssi; //
  131. uint32_t absTime; //
  132. uint32_t rxTimeout; //
  133. uint8_t len; //
  134. uint8_t payload[MAX_RF_PACKET_LEN];
  135. } rfRxPacket_ts;
  136. typedef struct
  137. {
  138. uint8_t SignalBw; // LORA_BW_0200, LORA_BW_0400, LORA_BW_0800, LORA_BW_1600,
  139. uint8_t SpreadingFactor; // LORA_SF5~LORA_SF12
  140. uint8_t ErrorCoding; // 1-LORA_CR_4_5, 2-LORA_CR_4_6, 3-LORA_CR_4_7 , 4-LORA_CR_4_8 , 5-LORA_CR_LI_4_5, 6-LORA_CR_LI_4_6, 7-LORA_CR_LI_4_7,
  141. }loraBaudrateFrame_ts;
  142. typedef struct
  143. {
  144. uint8_t BitrateBandwidth; //@RadioFlrcBitrates_t !< FLRC 调制的带宽和比特率值
  145. uint8_t CodingRate; //@RadioFlrcCodingRates_t !< FLRC调制的编码速率
  146. uint8_t ModulationShaping; //@RadioModShapings_t !< FLRC调制的调制整形
  147. }fastloraBaudrateFrame_ts;
  148. typedef enum
  149. {
  150. RADIO_EXT_CONTROL_TX_UNMODULATED, //单载波功率测试
  151. RADIO_EXT_CONTROL_RX_SENSITIVITY, //接收灵敏度测试
  152. RADIO_EXT_CONTROL_TX_MODULATED, //连续调制测试
  153. }controlMode_te;
  154. typedef enum
  155. {
  156. RX_STA_SECCESS,
  157. RX_STA_TIMEOUT,
  158. RX_STA_PAYLOAD_ERROR,
  159. TX_STA_SECCESS,
  160. TX_STA_ERROR,
  161. }rxStatus_te;
  162. typedef void (*rfRxCallBack)(uint8_t status, rfRxPacket_ts packet);
  163. void myRadio_setRfModuleMode(uint8_t mode);
  164. void myRadio_init(int agr0, void *agr1_ptr);
  165. void myRadio_abort(void);
  166. uint32_t myRadio_getFrequency(void);
  167. void myRadio_setFrequency(uint32_t freq);
  168. int8_t myRadio_getTxPower(void);
  169. void myRadio_setTxPower(int8_t power);
  170. uint32_t myRadio_getBaudrate(void);
  171. void myRadio_setBaudrate(uint32_t br);
  172. void myRadio_setChipType(uint8_t type);
  173. uint8_t myRadio_getChipType(void);
  174. int16_t myRadio_getRssi(void);
  175. void myRadio_transmit(rfTxPacket_ts *packet);
  176. void myRadio_receiver(void);
  177. void myRadio_setCtrl(controlMode_te mode, uint32_t value);
  178. #endif