radio.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /*******************************************************************************
  2. * @note Copyright (C) 2023 Shanghai Panchip Microelectronics Co., Ltd. All rights reserved.
  3. *
  4. * @file radio.h
  5. * @brief
  6. *
  7. * @history - V0.7, 2024-3
  8. *******************************************************************************/
  9. #ifndef __RADIO_H_
  10. #define __RADIO_H_
  11. #include "pan3029_port.h"
  12. #include "pan3029.h"
  13. #define DEFAULT_PWR 22
  14. #define DEFAULT_FREQ (433920000)
  15. #define DEFAULT_SF SF_9
  16. #define DEFAULT_BW BW_125K
  17. #define DEFAULT_CR CODE_RATE_47
  18. #define RADIO_FLAG_IDLE 0
  19. #define RADIO_FLAG_TXDONE 1
  20. #define RADIO_FLAG_RXDONE 2
  21. #define RADIO_FLAG_RXTIMEOUT 3
  22. #define RADIO_FLAG_RXERR 4
  23. #define RADIO_FLAG_PLHDRXDONE 5
  24. #define RADIO_FLAG_MAPM 6
  25. #define LEVEL_INACTIVE 6
  26. #define LEVEL_ACTIVE 7
  27. #define GPIO_PIN_CAD Pin09
  28. #define GPIO_PORT_CAD PortA
  29. #define CHECK_CAD() 0//PORT_GetBit(GPIO_PORT_CAD, GPIO_PIN_CAD)
  30. #define SET_TIMER_MS(time) //timer6_open_ms(time)
  31. #define MAC_EVT_TX_CAD_NONE 0x00
  32. #define MAC_EVT_TX_CAD_TIMEOUT 0x01
  33. #define MAC_EVT_TX_CAD_ACTIVE 0x02
  34. #define TEST_MODE_BUFFER_LEN 10
  35. #pragma pack(1)
  36. struct RxDoneMsg
  37. {
  38. uint8_t Payload[255];
  39. uint8_t PlhdPayload[16];
  40. uint8_t TestModePayload[TEST_MODE_BUFFER_LEN];
  41. uint16_t PlhdSize;
  42. uint16_t Size;
  43. uint16_t mpam_recv_index;
  44. uint8_t mpam_recv_buf[1024]; //set buf size based on actual application
  45. int8_t Rssi;
  46. float Snr;
  47. };
  48. #pragma pack ()
  49. typedef enum {
  50. RF_PARA_TYPE_FREQ,
  51. RF_PARA_TYPE_CR,
  52. RF_PARA_TYPE_BW,
  53. RF_PARA_TYPE_SF,
  54. RF_PARA_TYPE_TXPOWER,
  55. RF_PARA_TYPE_LDRO,
  56. RF_PARA_TYPE_CRC,
  57. } rf_para_type_t;
  58. uint32_t rf_get_recv_flag(void);
  59. void rf_set_recv_flag(int status);
  60. uint32_t rf_get_transmit_flag(void);
  61. void rf_set_transmit_flag(int status);
  62. uint32_t rf_init(void);
  63. uint32_t rf_deepsleep_wakeup(void);
  64. uint32_t rf_deepsleep(void);
  65. uint32_t rf_sleep_wakeup(void);
  66. uint32_t rf_sleep(void);
  67. uint32_t rf_get_tx_time(uint8_t size);
  68. uint32_t rf_set_mode(uint8_t mode);
  69. uint8_t rf_get_mode(void);
  70. uint32_t rf_set_tx_mode(uint8_t mode);
  71. uint32_t rf_set_rx_mode(uint8_t mode);
  72. uint32_t rf_set_rx_single_timeout(uint32_t timeout);
  73. float rf_get_snr(void);
  74. int8_t rf_get_rssi(void);
  75. int8_t rf_get_channel_rssi(void);
  76. uint8_t rf_get_irq(void);
  77. uint8_t rf_clr_irq(void);
  78. uint32_t rf_set_refresh(void);
  79. uint32_t rf_set_preamble(uint16_t pream);
  80. uint32_t rf_get_preamble(void);
  81. uint32_t rf_set_cad(uint8_t threshold, uint8_t chirps);
  82. uint32_t rf_set_cad_off(void);
  83. uint32_t rf_set_syncword(uint8_t sync);
  84. uint8_t rf_get_syncword(void);
  85. void rf_irq_handler(void);
  86. void rf_set_plhd_rx_on(uint8_t addr,uint8_t len);
  87. void rf_set_plhd_rx_off(void);
  88. uint8_t rf_get_plhd_len(void);
  89. uint32_t rf_receive(uint8_t *buf);
  90. uint32_t rf_plhd_receive(uint8_t *buf,uint8_t len);
  91. uint32_t rf_enter_continous_rx(void);
  92. uint32_t rf_enter_single_timeout_rx(uint32_t timeout);
  93. uint32_t rf_enter_single_rx(void);
  94. uint32_t rf_single_tx_data(uint8_t *buf, uint8_t size, uint32_t *tx_time);
  95. uint32_t rf_enter_continous_tx(void);
  96. uint32_t rf_continous_tx_send_data(uint8_t *buf, uint8_t size);
  97. uint32_t rf_set_agc(uint32_t state);
  98. uint32_t rf_set_para(rf_para_type_t para_type, uint32_t para_val);
  99. uint32_t rf_get_para(rf_para_type_t para_type, uint32_t *para_val);
  100. void rf_set_default_para(void);
  101. uint32_t rf_set_modem_mode(uint8_t mode);
  102. uint32_t rf_set_dcdc_mode(uint32_t dcdc_val);
  103. uint32_t rf_set_ldr(uint32_t mode);
  104. uint32_t rf_get_ldr(void);
  105. uint32_t rf_set_all_sf_preamble(uint32_t sf);
  106. uint32_t rf_set_all_sf_search(void);
  107. uint32_t rf_set_all_sf_search_off(void);
  108. void rf_irq_process(void);
  109. uint32_t get_chirp_time(uint32_t bw,uint32_t sf);
  110. uint32_t check_cad_rx_inactive(uint32_t one_chirp_time);
  111. uint32_t check_cad_tx_inactive(void);
  112. void rf_set_mapm_on(void);
  113. void rf_set_mapm_off(void);
  114. void rf_set_mapm_para(stc_mapm_cfg_t *p_mapm_cfg);
  115. uint32_t rf_set_dcdc_calibr_on(void);
  116. #endif