btcontroller_modules.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. /*********************************************************************************************
  2. * Filename : btcontroller_modules.h
  3. * Description : Lto 优化Macro 定义
  4. * Author : Bingquan
  5. * Email : bingquan_cai@zh-jieli.com
  6. * Last modifiled : 2018-12-19 16:38
  7. * Copyright:(c)JIELI 2011-2017 @ , All Rights Reserved.
  8. *********************************************************************************************/
  9. #ifndef _BTCONTROLLER_H_
  10. #define _BTCONTROLLER_H_
  11. #include "hci_transport.h"
  12. #include "btcontroller_mode.h"
  13. #include "ble/hci_ll.h"
  14. #include "classic/hci_lmp.h"
  15. /* app 层修改蓝牙版本,可在BT_STATUS_INIT_OK case
  16. 调用 set_bt_version 函数更改蓝牙版本号
  17. */
  18. #define BLUETOOTH_CORE_SPEC_42 0x08
  19. #define BLUETOOTH_CORE_SPEC_50 0x09
  20. #define BLUETOOTH_CORE_SPEC_51 0x0a
  21. #define BLUETOOTH_CORE_SPEC_52 0x0b
  22. extern void set_bt_version(u8 version);
  23. /*
  24. *-------------------Module SUPPORT
  25. * brief : 运行时优化(LTO)下,代码空间优化;
  26. */
  27. #define BT_MODULE_CLASSIC BIT(0)
  28. #define BT_MODULE_LE BIT(1)
  29. extern const int config_btctler_modules;
  30. #define BT_MODULES_IS_SUPPORT(x) (config_btctler_modules & (x))
  31. /*-----------------------------------------------------------*/
  32. extern const int config_stack_modules;
  33. #define STACK_MODULES_IS_SUPPORT(x) (config_stack_modules & (x))
  34. /*
  35. *-------------------Mode SELECT
  36. * brief : 运行时优化(LTO)下,代码空间优化;
  37. */
  38. extern const int config_btctler_mode;
  39. #define BT_MODE_IS(x) (config_btctler_mode & (x))
  40. /*-----------------------------------------------------------*/
  41. extern const int config_btctler_hci_standard;
  42. #define BT_HCI_STANDARD_IS_SUPPORT(x) (config_btctler_hci_standard)
  43. extern const int config_bt_function ;
  44. #define BT_ENCTRY_TASK BIT(0)
  45. #define BT_MASTER_AFH BIT(1)
  46. #define BT_MASTER_QOS BIT(2)
  47. #define BT_FUNCTION_IS(x) (config_bt_function & (x))
  48. extern const int CONFIG_TEST_DUT_CODE;
  49. extern const int CONFIG_TEST_FCC_CODE;
  50. extern const int CONFIG_TEST_DUT_ONLY_BOX_CODE;
  51. extern const int CONFIG_BREDR_INQUIRY;
  52. extern const int CONFIG_INQUIRY_PAGE_OFFSET_ADJUST ;
  53. extern const int CONFIG_LMP_NAME_REQ_ENABLE ;
  54. extern const int CONFIG_LMP_PASSKEY_ENABLE ;
  55. extern const int CONFIG_LMP_MASTER_ESCO_ENABLE ;
  56. extern const int config_btctler_bredr_master ;
  57. extern const int config_bredr_afh_user ;
  58. extern const int config_bredr_master_afh ;
  59. extern const int CONFIG_ESCO_MUX_RX_BULK_ENABLE ;
  60. extern const int config_bt_temperature_pll_trim ;
  61. extern const int CONFIG_WIFI_DETECT_ENABLE;
  62. extern const int ESCO_FORWARD_ENABLE;
  63. /********************************************************************************/
  64. /*
  65. * API
  66. *
  67. */
  68. /* --------------------------------------------------------------------------*/
  69. /**
  70. * @brief rf_set_24g_hackable_coded
  71. *
  72. * \param [in] coded 设置coded码,输入32bits,0101分布需要相对均匀.
  73. * \return [out] 设置是否正常:1->fail;0->succ;
  74. */
  75. /* ----------------------------------------------------------------------------*/
  76. u8 rf_set_24g_hackable_coded(u32 coded);
  77. /* --------------------------------------------------------------------------*/
  78. /**
  79. * @brief rf_set_adv_24g_hackable_coded
  80. *
  81. * \param [in] coded 设置coded码,输入32bits,0101分布需要相对均匀.
  82. * \return [out] 设置是否正常:1->fail;0->succ;
  83. */
  84. /* ----------------------------------------------------------------------------*/
  85. u8 rf_set_adv_24g_hackable_coded(u32 coded);
  86. /* --------------------------------------------------------------------------*/
  87. /**
  88. * @brief rf_set_scan_24g_hackable_coded
  89. *
  90. * \param [in] coded 设置coded码,输入32bits,0101分布需要相对均匀.
  91. * \return [out] 设置是否正常:1->fail;0->succ;
  92. */
  93. /* ----------------------------------------------------------------------------*/
  94. u8 rf_set_scan_24g_hackable_coded(u32 coded);
  95. /* --------------------------------------------------------------------------*/
  96. /**
  97. * @brief bt_pll_para
  98. *
  99. * @param osc
  100. * @param sys
  101. * @param low_power
  102. * @param xosc
  103. */
  104. /* ----------------------------------------------------------------------------*/
  105. void bt_pll_para(u32 osc, u32 sys, u8 low_power, u8 xosc);
  106. /* --------------------------------------------------------------------------*/
  107. /**
  108. * @brief bt_production_test
  109. *
  110. * @param en
  111. */
  112. /* ----------------------------------------------------------------------------*/
  113. void bt_production_test(u8 en);
  114. /* --------------------------------------------------------------------------*/
  115. /**
  116. * @brief bt_set_rxtx_status_enable
  117. *
  118. * @param en
  119. *
  120. *
  121. TX RX
  122. AI800x PA13 PA12
  123. AC692x PA13 PA12
  124. AC693x PA8 PA9
  125. AC695x,AC635x PA9 PA10
  126. AC696x,AC636x PC1 PC2
  127. AC694x PB1 PB2
  128. AC697x,AC637x PC2 PC3
  129. AC698x,AC638x PC2 PC3
  130. AC631x PA7 PA8
  131. AC632x PA7 PA8
  132. */
  133. /* ----------------------------------------------------------------------------*/
  134. void bt_set_rxtx_status_enable(u8 en);
  135. /* --------------------------------------------------------------------------*/
  136. /**
  137. * @brief bt_osc_offset_ext_save
  138. *
  139. * @param offset
  140. *
  141. * 更新并且保存频偏
  142. */
  143. /* ----------------------------------------------------------------------------*/
  144. void bt_osc_offset_ext_save(s32 offset);
  145. /* --------------------------------------------------------------------------*/
  146. /**
  147. * @brief bt_osc_offset_ext_updata
  148. *
  149. * @param offset
  150. *
  151. * 更新频偏
  152. */
  153. /* ----------------------------------------------------------------------------*/
  154. void bt_osc_offset_ext_updata(s32 offset);
  155. /* --------------------------------------------------------------------------*/
  156. /**
  157. * @brief 初始化配置蓝牙发射功率最大值范围
  158. *
  159. * @param pwr edr 连接后发射功率(range:0~9)
  160. * @param pg_pwr edr page 可连接状态发射功率
  161. * @param iq_pwr edr inquiry 可发现状态发射功率
  162. * @param ble_pwr ble 发射功率
  163. */
  164. /* ----------------------------------------------------------------------------*/
  165. /*
  166. 蓝牙TX发射功率档位, 参考功率值(dbm) ,超过等级范围默认设置为最高档
  167. BD29: rang(0~8) {-18.3, -14.6, -12.1, -8.5, -6.0, -4.1, -1.1, +1.1, +4.0, +6.1}
  168. BD19: rang(0~10) {-17.6, -14.0, -11.5, -9.6, -6.6, -4.4, -0.79, +1.12, +3.8, +5.65, +8.04}
  169. BR23: rang(0~9) {-15.7, -12.5, -10.0, -6.6, -4.4, -2.5, -0.1, +2.1, +4.6, +6.4}
  170. BR25: rang(0~9) {-15.7, -12.5, -10.0, -6.6, -4.4, -2.5, -0.1, +2.1, +4.6, +6.4}
  171. BR30: rang(0~8) {-17.48, -11.46, -7.96, -3.59, -0.79, +1.12, +3.8, +6.5, +8.44}
  172. BR34: rang(0~10) {-17.6, -14.0, -11.5, -9.6, -6.6, -4.4, -1.8, 0, +2.1, +4, +6.3}
  173. */
  174. void bt_max_pwr_set(u8 pwr, u8 pg_pwr, u8 iq_pwr, u8 ble_pwr);
  175. /* --------------------------------------------------------------------------*/
  176. /**
  177. * @brief bt_set_ldos
  178. *
  179. * @param mode
  180. */
  181. /* ----------------------------------------------------------------------------*/
  182. void bt_set_ldos(u8 mode);
  183. /* --------------------------------------------------------------------------*/
  184. /**
  185. * @brief ble_set_fix_pwr
  186. *
  187. * @param fix (0~max)
  188. * 动态调整BLE的发射功率
  189. */
  190. /* ----------------------------------------------------------------------------*/
  191. void ble_set_fix_pwr(u8 fix);
  192. /* --------------------------------------------------------------------------*/
  193. /**
  194. * @brief bredr_set_fix_pwr
  195. *
  196. * @param fix (0~max)
  197. * 动态调整EDR的发射功率
  198. */
  199. /* ----------------------------------------------------------------------------*/
  200. void bredr_set_fix_pwr(u8 fix);
  201. /* --------------------------------------------------------------------------*/
  202. /**
  203. * @brief ble_rf_vendor_fixed_channel
  204. *
  205. * @param channel_index: 指定信道定频: range 0~39 fixed freq, or 0xff --close fixed,default 37、38、39
  206. * @param pktcnt: adv方式,1次发包的个数,range 1~3; 做scan,init的时候该参数noused
  207. * 配置ble 的 adv、scan、init 状态定频
  208. */
  209. /* ----------------------------------------------------------------------------*/
  210. bool ble_rf_vendor_fixed_channel(u8 channel_index, u8 pktcnt);
  211. /* --------------------------------------------------------------------------*/
  212. /**
  213. * @brief ble_adv_rf_vendor_fixed_channel
  214. *
  215. * @param channel_index: adv指定信道定频: range 0~39 fixed freq, or 0xff --close fixed,default 37、38、39
  216. * @param pktcnt: 1次发包的个数,range 1~3
  217. * 配置ble 的adv状态定频
  218. */
  219. /* ----------------------------------------------------------------------------*/
  220. bool ble_adv_rf_vendor_fixed_channel(u8 channel_index, u8 pktcnt);
  221. /* --------------------------------------------------------------------------*/
  222. /**
  223. * @brief ble_scan_rf_vendor_fixed_channel
  224. *
  225. * @param channel_index: scan指定信道定频: range 0~39 fixed freq, or 0xff --close fixed,default 37、38、39
  226. * @param pktcnt: scan,init的时候该参数noused
  227. * 配置ble 的scan、init 状态定频
  228. */
  229. /* ----------------------------------------------------------------------------*/
  230. bool ble_scan_rf_vendor_fixed_channel(u8 channel_index, u8 pktcnt);
  231. /* --------------------------------------------------------------------------*/
  232. /**
  233. * @brief bredr_get_rssi_for_address
  234. * 获取已连接设备的rssi
  235. *
  236. * @param address 对方mac地址
  237. * @return rssi 值,range(-127 ~ +127)
  238. */
  239. /* ----------------------------------------------------------------------------*/
  240. s8 bredr_get_rssi_for_address(u8 *address);
  241. /* --------------------------------------------------------------------------*/
  242. /**
  243. * @brief 配置tx 是否支持包类型, (sdk默认支持)
  244. *
  245. * @param packet_type
  246. * @param support_en 0 or 1
  247. * @return true or false
  248. */
  249. /* ----------------------------------------------------------------------------*/
  250. typedef enum {
  251. PKT_TYPE_2DH5_EU = 0,
  252. } pkt_type_eu;
  253. bool bredr_link_vendor_support_packet_enable(pkt_type_eu packet_type, u8 support_en);
  254. /* --------------------------------------------------------------------------*/
  255. /**
  256. * @brief 配置ble 优先级锁定不低压ACL, (sdk 默认自动调节)
  257. *
  258. * @param role:0--master,1--slave
  259. * @param enalbe 0 or 1
  260. * @return null
  261. */
  262. /* ----------------------------------------------------------------------------*/
  263. void ble_vendor_set_hold_prio(u8 role, u8 enable);
  264. void set_bt_afh_classs_enc(u8 afh_class);
  265. void set_bt_enhanced_power_control(u8 en);
  266. void set_bt_data_rate_acl_3mbs_mode(u8 en);
  267. void set_bt_full_name_event(u8 en);
  268. /* coexist between bt chips */
  269. void bt_wl_coex_init(uint8_t state);
  270. void bt_wl_coex_enable(bool enable);
  271. #endif