api_btstack.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544
  1. #ifndef _API_BTSTACK_H
  2. #define _API_BTSTACK_H
  3. //工作模式
  4. #define MODE_NORMAL 0 //正常连接模式,关闭DUT测试
  5. #define MODE_NORMAL_DUT 1 //正常连接模式,使能DUT测试
  6. #define MODE_FCC_TEST 2 //FCC测试模式,通过串口通信
  7. #define MODE_BQB_RF_BREDR 3 //BR/EDR DUT测试模式,通过蓝牙通信
  8. #define MODE_BQB_RF_BLE 4 //BLE DUT测试模式,通过串口通信
  9. #define MODE_IODM_TEST 5 //IODM测试模式,通过串口通信
  10. //蓝牙功能
  11. #define PROF_A2DP 0x0007 //蓝牙音乐功能
  12. #define PROF_HID 0x0018 //蓝牙键盘功能
  13. #define PROF_HFP 0x0060 //蓝牙通话功能
  14. #define PROF_SPP 0x0080 //蓝牙串口功能
  15. #define PROF_PBAP 0x0100 //蓝牙电话本功能
  16. #define PROF_HSP 0x0200
  17. #define PROF_MAP 0x0400 //蓝牙短息功能
  18. #define PROF_TWS 0x8000 //TWS功能
  19. #define PROF_AVDTP_SIGNAL 0x0001
  20. #define PROF_AVDTP_MEDIA 0x0002
  21. #define PROF_AVCTP 0x0004
  22. #define PROF_AVDTP (PROF_AVDTP_SIGNAL|PROF_AVDTP_MEDIA)
  23. //蓝牙特性
  24. #define HFP_BAT_REPORT 0x01 //是否支持手机电量显示
  25. #define HFP_3WAY_CALL 0x02 //是否支持三通电话
  26. #define HFP_INBAND_RING_TONE 0x04 //是否支持IOS来电铃声
  27. #define HFP_CALL_PRIVATE 0x08 //是否打开强制私密接听
  28. #define HFP_SIRI_CMD 0x10 //是否打开siri控制命令
  29. #define HFP_EC_AND_NR 0x20 //是否打开手机端回音和降噪
  30. #define HFP_RING_NUMBER_EN 0x40 //是否支持来电报号
  31. #define A2DP_AVRCP_VOL_CTRL 0x01 //是否支持手机音量控制同步
  32. #define A2DP_RECON_CTRL 0x02 //是否打开A2DP控制键回连
  33. #define A2DP_AVRCP_PLAY_STATUS 0x04 //是否支持手机播放状态同步,可加快播放暂停响应速度,蓝牙后台建议打开
  34. #define A2DP_RESTORE_PLAYING 0x08 //是否支持掉线回连后恢复播放
  35. #define A2DP_AVDTP_DELAY_REPORT 0x10 //是否支持AVDTP delay report功能
  36. #define A2DP_IOS_FLAG 0x80 //是否iso系统
  37. #define HID_CONN_IOS_ONLY 0x01 //是否支持HID只连接IOS系统的功能
  38. //扩展标志
  39. #define BT_FLAG0_TWS_SCAN 0x01
  40. #define BT_FLAG0_CLK_ADVANCE 0x02
  41. #define BT_FLAG0_TWS_M_RECON 0x04
  42. #define BT_FLAG0_TWS_FAST_RECON 0x08 //快速版TWS回连
  43. #define BT_FLAG0_TWS_MENU_PAIR 0x10 //手动控制tws连接
  44. #define BT_FLAG0_TWS_FAST_PAIR 0x20 //开机TWS不回连直接进入搜索配对
  45. #define BT_FLAG0_POPUP_3BAT 0x40
  46. #define BT_FLAG0_NAME_MENU 0x80
  47. #define BT_TWS_SYNC_TO 50 //BT同步等待,对齐到一个50ms,250ms超时
  48. //AVRCP消息
  49. #define AVC_VOLUME_UP 0x41
  50. #define AVC_VOLUME_DOWN 0x42
  51. #define AVC_MUTE 0x43
  52. #define AVC_PLAY 0x44
  53. #define AVC_STOP 0x45
  54. #define AVC_PAUSE 0x46
  55. #define AVC_RECORD 0x47
  56. #define AVC_REWIND 0x48
  57. #define AVC_FAST_FORWARD 0x49
  58. #define AVC_EJECT 0x4a
  59. #define AVC_FORWARD 0x4b
  60. #define AVC_BACKWARD 0x4c
  61. #define AVC_SPEED_DOUBLE 0x4d
  62. #define AVC_SPEED_HALF 0x4e
  63. //自定义的USER KEY
  64. #define TWS_USER_KEY_RING_STOP 0x101
  65. #define TWS_USER_KEY_ATMOS 0x102
  66. #define TWS_USER_KEY_DOUYIN_CTRL 0x110 //0x110~0x120, 抖音控制
  67. #define TWS_USER_KEY_DOUYIN_DOWN 0x110
  68. #define TWS_USER_KEY_DOUYIN_UP 0x111
  69. #define TWS_USER_KEY_DOUYIN_PP 0x112
  70. #define TWS_USER_KEY_DOUYIN_P 0x113
  71. #if TRY_SYNC_KL_4S_FACTORY_SWITCH
  72. #define TWS_USER_KEY_SYNC_KL_L 0x114
  73. #define TWS_USER_KEY_SYNC_KL_R 0x115
  74. #endif // TRY_SYNC_KL_4S_FACTORY_SWITCH
  75. #if TRY_TWS_USER_KEY_SWITCH
  76. #define TWS_USER_KEY_CONNECTED 0x116
  77. #define TWS_USER_KEY_DISCONNECT 0x117
  78. #endif // TRY_TWS_USER_KEY_SWITCH
  79. //TWS FEAT
  80. #define BT_FEAT_NEGO_TSCO 0x0001
  81. #define BT_FEAT_NEGO_RING 0x0002
  82. #define BT_FEAT_NEGO_MSBC 0x0004
  83. #define BT_FEAT_NEGO_AAC 0x0008
  84. #define BT_FEAT_NEGO_SW 0x0010
  85. #define BT_FEAT_NEGO_WARNING 0x0020
  86. #define BT_FEAT_NEGO_LINK_TICKS 0x0040 //建立snoop link时同步ticks。增加一个feat, 兼容之前旧版本TWS组队。
  87. #define BT_FEAT_NEGO_TICKS 0x0080
  88. #define BT_FEAT_NEGO_PUBLIC_ADDR 0x0100 //TWS连接后主耳使用公共地址连接手机
  89. #define BT_FEAT_NEGO_CHK1 0x0200 //res
  90. #define BT_FEAT_NEGO_CHK2 0x0400 //res
  91. #define BT_FEAT_NEGO_CHK3 0x0800 //res
  92. #define BT_FEAT_NEGO_RECONNECT 0x4000 //是否在发起回连手机
  93. typedef struct {
  94. u8 pwrup_connect_times; //单耳(无TWS功能)上电回连手机次数
  95. u8 sup_to_connect_times; //远距离掉线回连次数
  96. u8 nor_connect_times; //对耳回连手机次数
  97. u8 tws_connect_times; //对耳TWS回连次数
  98. u8 tws_sup_to_connect_times; //TWS远距离掉线回连次数
  99. u16 profile;
  100. u8 max_acl_link;
  101. u8 max_nor_link;
  102. u8 a2dp_feature;
  103. u8 hfp_feature;
  104. u8 vx_set;
  105. u8 max_nr_link_key;
  106. u16 scan_timeout;
  107. u16 supervision_to_dft; //SUPERVISION_TO_DFT
  108. u8 new_conn_timeout_add;
  109. u8 res[2];
  110. u16 dual_mode : 1;
  111. u16 tws_mode : 1;
  112. u16 simple_pair_mode : 1;
  113. u16 scan_ctrl : 1;
  114. u16 sco_plc_en : 1;
  115. u16 sco_msbc_en : 1;
  116. u16 tws_fast_con_en : 1; //TWS快速配对连接
  117. u16 remote_name_req_en : 1;
  118. u16 sdp_client_avrcp_en : 1;
  119. //#if BT_QUICK_TEST_EN
  120. u16 bt_quick_test : 1;
  121. //#endif
  122. } bt_cfg_t;
  123. extern bt_cfg_t bt_cfg;
  124. //蓝牙状态
  125. enum {
  126. BT_STA_OFF, //蓝牙模块已关闭
  127. BT_STA_INITING, //初始化中
  128. BT_STA_IDLE, //蓝牙模块打开,未连接
  129. BT_STA_SCANNING, //扫描中
  130. BT_STA_DISCONNECTING, //断开中
  131. BT_STA_CONNECTING, //连接中
  132. BT_STA_CONNECTED, //已连接
  133. BT_STA_PLAYING, //播放
  134. BT_STA_INCOMING, //来电响铃
  135. BT_STA_OUTGOING, //正在呼出
  136. BT_STA_INCALL, //通话中
  137. };
  138. //通话状态
  139. enum {
  140. BT_CALL_IDLE, //
  141. BT_CALL_INCOMING, //来电响铃
  142. BT_CALL_OUTGOING, //正在呼出
  143. BT_CALL_ACTIVE, //通话中
  144. BT_CALL_3WAY_CALL, //三通电话或两部手机通话
  145. };
  146. //蓝牙通知
  147. enum {
  148. BT_NOTICE_INIT_FINISH, //蓝牙初始化完成
  149. BT_NOTICE_CONNECT_START, //开始回连手机, param[0]=nouse, param[6:1]=bd_addr
  150. BT_NOTICE_CONNECT_FAIL, //回连手机失败, param[0]=reason, param[6:1]=bd_addr
  151. BT_NOTICE_DISCONNECT, //蓝牙断开, param[0]=reason, param[6:1]=bd_addr
  152. BT_NOTICE_LOSTCONNECT, //蓝牙连接丢失, param[0]=nouse, param[6:1]=bd_addr
  153. BT_NOTICE_CONNECTED, //蓝牙连接成功, param[0]=feat,index, param[6:1]=bd_addr
  154. BT_NOTICE_CONNECT_STATUS,
  155. BT_NOTICE_DISCONNECT_STATUS,
  156. BT_NOTICE_RECON_FINISH, //蓝牙回连结束
  157. BT_NOTICE_SCO_SETUP,
  158. BT_NOTICE_SCO_KILL,
  159. BT_NOTICE_INCOMING, //来电
  160. BT_NOTICE_RING, //来电响铃
  161. BT_NOTICE_OUTGOING, //去电
  162. BT_NOTICE_CALL, //建立通话
  163. BT_NOTICE_SET_SPK_GAIN, //设置通话音量
  164. BT_NOTICE_MUSIC_PLAY, //蓝牙音乐开始播放
  165. BT_NOTICE_MUSIC_STOP, //蓝牙音乐停止播放
  166. BT_NOTICE_MUSIC_CHANGE_VOL, //改变蓝牙音乐音量
  167. BT_NOTICE_MUSIC_SET_VOL, //设置蓝牙音乐音量
  168. BT_NOTICE_HID_CONN_EVT, //HID服务连接事件
  169. BT_NOTICE_SET_QTEST_CH,
  170. BT_NOTICE_FIRST_CONNECT, //第一次连接手机, param[5:0]=bd_addr
  171. BT_NOTICE_A2DP_VOL_CTRL,
  172. BT_NOTICE_TWS_SEARCH_TIMEOUT = 0x40, //搜索TWS超时
  173. BT_NOTICE_TWS_CONNECT_START, //开始回连TWS, param[0]=nouse, param[6:1]=bd_addr
  174. BT_NOTICE_TWS_CONNECT_FAIL, //TWS回连失败, param[0]=reason, param[6:1]=bd_addr
  175. BT_NOTICE_TWS_DISCONNECT, //TWS牙断开, param[0]=reason, param[6:1]=bd_addr
  176. BT_NOTICE_TWS_LOSTCONNECT, //TWS连接丢失, param[0]=nouse, param[6:1]=bd_addr
  177. BT_NOTICE_TWS_CONNECTED, //TWS连接成功, param[0]=feat,index, param[6:1]=bd_addr
  178. BT_NOTICE_TWS_SET_VOL, //设置TWS音乐音量
  179. BT_NOTICE_TWS_HID_SHUTTER, //远端TWS拍照键
  180. BT_NOTICE_TWS_INFO, //TWS同步信息
  181. BT_NOTICE_TWS_USER_KEY, //TWS自定义按键
  182. BT_NOTICE_TWS_SEARCH_STATUS,
  183. BT_NOTICE_TWS_TO_STATUS,
  184. BT_NOTICE_TWS_GET_MAP_TIME,
  185. BT_NOTICE_TWS_SET_OPERATION,
  186. BT_NOTICE_TWS_RES_PLAY,
  187. BT_NOTICE_TWS_PLAY_STA_SYNC,
  188. BT_NOTICE_TWS_EQ_SYNC,
  189. BT_NOTICE_TWS_RES7,
  190. };
  191. //控制消息
  192. enum bt_msg_t {
  193. BT_MSG_OFF = 0, //关闭蓝牙
  194. BT_MSG_ON, //打开蓝牙
  195. BT_MSG_RES0,
  196. BT_MSG_RES1,
  197. BT_MSG_CONNECT, //连接蓝牙
  198. BT_MSG_DISCONNECT, //断开蓝牙
  199. BT_MSG_PLAY_PAUSE, //切换播放、暂停
  200. BT_MSG_VOL_CHANGE, //音量调整
  201. BT_MSG_CALL_REDIAL, //回拨电话(最后一次通话)
  202. BT_MSG_CALL_ANSWER_INCOM, //接听来电
  203. BT_MSG_CALL_TERMINATE, //挂断通话或来电
  204. BT_MSG_CALL_SWAP, //切换三通电话
  205. BT_MSG_HFP_REPORT_BAT, //报告电池电量
  206. BT_MSG_HFP_SPK_GAIN, //设置通话扬声器音量
  207. BT_MSG_HFP_MIC_GAIN, //设置通话麦克风音量
  208. BT_MSG_HFP_PRIVATE_SWITCH, //切换私密通话
  209. BT_MSG_HID_CONNECT, //连接HID
  210. BT_MSG_HID_DISCONNECT, //断开HID
  211. BT_MSG_AUDIO_BYPASS, //忽略蓝牙SBC/SCO AUDIO
  212. BT_MSG_AUDIO_ENABLE, //使能蓝牙SBC/SCO AUDIO
  213. BT_MSG_LOW_LATENCY_EN,
  214. BT_MSG_LOW_LATENCY_DIS,
  215. BT_MSG_TWS_DISCONNECT, //断开TWS连接
  216. BT_MSG_TWS_CONNECT, //建立TWS连接
  217. BT_MSG_TWS_SEARCH_SLAVE, //搜索并建立TWS连接
  218. BT_MSG_TWS_NOTICE_RING,
  219. BT_MSG_SWITCH_SIRI,
  220. BT_MSG_EAR_STA_CHANGE,
  221. BT_MSG_NR_STA_CHANGE,
  222. BT_MSG_TWS_NOTICE_INCOME_NUMBER,
  223. BT_MSG_HFP_AT_CMD, //回拨电话(从hfp_get_outgoing_number获取号码)
  224. BT_MSG_SIRI_ON,
  225. BT_MSG_CALL_ANSWER_INCOM_REJ_OTHER, //接听来电,三通时挂断当前通话
  226. BT_MSG_CONNECT_ADDRESS,
  227. BT_MSG_FCC_TEST_FUNC,
  228. BT_MSG_PLAY_PRIVATE_SWITCH, //切换手机播放/蓝牙播放
  229. BT_MSG_TWS_SYNC_INFO,
  230. BT_MSG_NOR_CONNECT,
  231. BT_MSG_NOR_DISCONNECT,
  232. BT_MSG_2ACL_PALY_SWITCH, //一拖二播放切换
  233. BT_MSG_TWS_SET_BYPASS,
  234. BT_MSG_RESET_BT_NAME,
  235. BT_MSG_TWS_SWITCH, //主从切换
  236. BT_MSG_CALL_REDIAL_NUMBER,
  237. BT_MSG_MAX,
  238. BT_MSG_HID_KEY = 0x30, //HID按键
  239. BT_MSG_HID_CONSUMER, //CONSUMER按键
  240. BT_MSG_TWS_USER_KEY, //TWS用户自定义消息
  241. BT_MSG_HID_TOUCH_SCREEN, //触摸屏
  242. BT_MSG_PBAP,
  243. BT_MSG_BAT_HOUSE_CTRL,
  244. BT_MSG_HSP_SEND,
  245. BT_MSG_SYNC_INFO, //主副耳同步一些状态消息
  246. BT_MSG_TWS_SET_SCAN,
  247. BT_MSG_SET_SCAN,
  248. BT_MSG_START_WORK,
  249. BT_MSG_ATT_VA,
  250. BT_MSG_STORE_A2DP_VOLUME, //保存连接的同步音量
  251. BT_MSG_MAP,
  252. BT_MSG_PARAM_MAX,
  253. BT_MSG_PLAY = AVC_PLAY, //播放
  254. BT_MSG_PAUSE = AVC_PAUSE, //暂停
  255. BT_MSG_STOP = AVC_STOP, //停止
  256. BT_MSG_PREV = AVC_BACKWARD, //上一曲
  257. BT_MSG_NEXT = AVC_FORWARD, //下一曲
  258. BT_MSG_REWIND = AVC_REWIND, //开始快退
  259. BT_MSG_FAST_FORWARD = AVC_FAST_FORWARD, //开始快进
  260. BT_MSG_REWIND_END = AVC_REWIND|0x80, //结束快退
  261. BT_MSG_FAST_FORWARD_END = AVC_FAST_FORWARD|0x80, //结束快进
  262. BT_MSG_SPEED_DOUBLE = AVC_SPEED_DOUBLE|0x80, //快播*2
  263. BT_MSG_SPEED_HALF = AVC_SPEED_HALF|0x80, //慢放1/2
  264. BT_MSG_NO = 0xff,
  265. };
  266. enum sync_info_enum {
  267. TWS_SYNC_INFO_LEDCNT, //同步 led cnt
  268. TWS_SYNC_INFO_EQ,
  269. TWS_SYNC_TWS_RES0 = 0x40, //0x40~0x7f for tws_res
  270. TWS_SYNC_TWS_RES_MAX = 0x7f,
  271. TWS_SYNC_RUN = 0x80, //同步运行
  272. };
  273. //control
  274. void bt_init(void); //初始化蓝牙变量
  275. int bt_setup(void); //打开蓝牙模块
  276. void bt_off(void); //关闭蓝牙模块
  277. void bt_wakeup(void); //唤醒蓝牙模块
  278. void bt_start_work(uint8_t opcode, uint8_t scan_en); //蓝牙开始工作,opcode: 0=回连, 1=不回连, 2=tws不回连,直接自动配对
  279. void bt_send_msg(uint msg); //蓝牙控制消息,参数详见bt_msg_t
  280. void bt_audio_bypass(void); //蓝牙SBC/SCO通路关闭
  281. void bt_audio_enable(void); //蓝牙SBC/SCO通路使能
  282. void bt_connect_address(void); //蓝牙根据地址链接 需要把 uint8_t bt_get_connect_addr(uint8_t *bd_addr);函数打开
  283. void bt_set_sco_far_delay(void *buf, uint size, uint delay);
  284. void bt_set_scan(uint8_t scan_en); //打开/关闭可被发现和可被连接, bit0=可被发现, bit1=可被连接
  285. void bt_connect(void); //蓝牙设备回连
  286. void bt_disconnect(void); //蓝牙设备断开
  287. void bt_hid_connect(void); //蓝牙HID服务回连
  288. void bt_hid_disconnect(void); //蓝牙HID服务断开
  289. int bt_hid_is_connected(void);
  290. bool bt_hid_is_ready_to_discon(void);
  291. void ble_popup_ctrl(uint opcode);
  292. bool sco_is_connected(void);
  293. bool bt_sco_is_msbc(void);
  294. //status
  295. uint bt_get_disp_status(void); //获取蓝牙的当前显示状态, V060
  296. uint bt_get_status(void); //获取蓝牙的当前状态
  297. uint8_t bt_get_scan(void); //判断当前可被连接可被扫描状态
  298. uint bt_get_call_indicate(void); //获取通话的当前状态
  299. uint bt_get_siri_status(void); //获取SIRI当前状态, 0=SIRI已退出, 1=SIRI已唤出
  300. bool bt_is_calling(void); //判断是否正在通话
  301. bool bt_is_playing(void); //判断是否正在播放
  302. bool bt_is_ring(void); //判断是否正在响铃
  303. bool bt_is_testmode(void); //判断当前蓝牙是否处于测试模式
  304. bool bt_is_sleep(void); //判断蓝牙是否进入休眠状态
  305. bool bt_is_connected(void); //判断蓝牙是否已连接(TWS副耳被连接,或主耳与手机已连接)
  306. bool bt_is_ios_device(void); //判断当前播放的是否ios设备
  307. uint32_t bt_sleep_proc(void);
  308. void bt_enter_sleep(void);
  309. void bt_exit_sleep(void);
  310. bool bt_is_silence(void);
  311. bool bt_cur_dev_is_silence(void);
  312. void bt_other_dev_silence_reset(void);
  313. bool bt_sync_tick(void); //根据蓝牙时钟同步到50ms,误差为5ms
  314. //tws
  315. bool bt_tws_is_connected(void); //tws设备是否已连接
  316. bool bt_tws_is_slave(void); //tws主从判断,注意要先判断tws是否已连接
  317. uint8_t bt_tws_get_scan(void); //tws是否已打开可被搜索与连接
  318. void bt_tws_set_scan(uint8_t scan_en); //打开/关闭tws可被搜索与连接, bit0=可被发现, bit1=可被连接
  319. void bt_tws_disconnect(void); //断开tws设备
  320. void bt_tws_connect(void); //回连tws设备
  321. void bt_tws_search_slave(void); //搜索tws设备,并建立连接
  322. uint bt_tws_get_link_info(uint8_t *bd_addr); //获取tws配对信息,可作为是否配对过TWS的判断
  323. bool bt_tws_user_key(uint keycode); //发送tws自定义按键, 10bit有效
  324. bool bt_tws_sync_ring_tone(void); //同步等tws来电号码
  325. void bt_tws_clr_ring_tone(void); //
  326. bool bt_tws_need_ring_sync(void);
  327. void bt_tws_switch(void); //主从切换,例如通话时切主副MIC
  328. bool tws_switch_is_need(void); //查看是否需要切换
  329. void bt_tws_sync(uint sync_info); //同步状态信息 sync_info_enum
  330. void bt_tws_sync_run(uint ntick); //同步到ntick * 50ms
  331. bool bt_nor_is_connected(void); //是否已连接手机
  332. void bt_nor_connect(void); //回连手机
  333. void bt_nor_disconnect(void); //断开手机
  334. bool bt_nor_get_link_info(uint8_t *bd_addr); //获取手机配对信息,bd_addr=NULL时仅查询是否存在回连信息
  335. uint8_t bt_connect_for_the_first_time(uint8_t *bd_addr);//检查给定的蓝牙地址是否为第一次连接。0:first_time, 1:not_first_time, 255:no record for given bd_addr
  336. bool bt_nor_get_link_info_addr(uint8_t *bd_addr, uint8_t order); //获取第n个手机配对信息,bd_addr=NULL时仅查询是否存在回连信息
  337. bool bt_tws_is_auto_switch(void);
  338. bool bt_tws_get_auto_channel(void);
  339. bool btstack_tws_atmos_led(void);
  340. bool btstack_tws_qtest_channel(uint8_t ch);
  341. void lm_set_name_buf(const char *bt_name, uint max_len);
  342. bool bt_tws_get_link_rssi(int8_t *buffer, bool left_channel);
  343. void bt_clr_all_link_info(u8 flag); //删除全部配对信息
  344. void bt_nor_clr_link_info(u8 flag); //删除手机配对信息
  345. void bt_tws_clr_link_info(u8 flag); //删除tws配对信息
  346. enum {
  347. TWS_RES_NUM_0,
  348. TWS_RES_NUM_1,
  349. TWS_RES_NUM_2,
  350. TWS_RES_NUM_3,
  351. TWS_RES_NUM_4,
  352. TWS_RES_NUM_5,
  353. TWS_RES_NUM_6,
  354. TWS_RES_NUM_7,
  355. TWS_RES_NUM_8,
  356. TWS_RES_NUM_9,
  357. TWS_RES_RING,
  358. TWS_RES_LANGUAGE,
  359. TWS_RES_LOW_BATTERY,
  360. TWS_RES_NOR_CONNECTED,
  361. TWS_RES_CONNECTED,
  362. TWS_RES_DISCONNECT,
  363. TWS_RES_PAIRING,
  364. TWS_RES_CALL_HANGUP,
  365. TWS_RES_CALL_REJECT,
  366. TWS_RES_REDIALING,
  367. TWS_RES_MAX_VOL,
  368. TWS_RES_MIN_VOL,
  369. TWS_RES_MUSIC_MODE,
  370. TWS_RES_GAME_MODE,
  371. TWS_RES_NR_DISABLE,
  372. TWS_RES_ANC,
  373. TWS_RES_TRANSPARENCY,
  374. TWS_RES_TONE,
  375. TWS_RES_WAV_TEST,
  376. #if TRY_WARNING_SWITCH
  377. TWS_RES_SIRI,
  378. #endif // TRY_WARNING_SWITCH
  379. TWS_RES_MAX,
  380. //下面MSG不打断当前播放的提示音
  381. TWS_RES_RING_STOP = 50,
  382. TWS_BRE_LED_START,
  383. TWS_BRE_LED_START1,
  384. TWS_BRE_LED_STOP,
  385. TWS_ATMOS_LED_ON,
  386. TWS_ATMOS_LED_OFF,
  387. #if TRY_SYNC_KL_4S_FACTORY_SWITCH
  388. TWS_SYNC_FACTORY,
  389. #endif // TRY_SYNC_KL_4S_FACTORY_SWITCH
  390. #if TRY_KSE_SYNC_DUT_SWITCH
  391. TWS_SYNC_DUT,
  392. #endif // TRY_KSE_SYNC_DUT_SWITCH
  393. //最大只能63
  394. };
  395. void tws_res_init(void); //api
  396. void tws_res_play(uint8_t index); //api
  397. void tws_mp3_res_play_kick(u32 addr, u32 len); //tws_res开始播放
  398. u32 tws_res_sync(u32 limit); //tws_res同步
  399. void tws_res_add(u8 index, u32 ticks); //tws_res加入列表
  400. void tws_res_proc(void); //tws_res流程处理
  401. bool tws_res_play_sync(u32 flag);
  402. void tws_res_done(void);
  403. void tws_res_reset(void);
  404. u32 tws_res_get_ticks(u8 index);
  405. bool tws_res_hssi_sync_wait(isr_t isr_callback);
  406. bool tws_res_is_busy(void);
  407. //蓝牙连接
  408. #define bt_scan_enable() bt_set_scan(0x03) //打开扫描
  409. #define bt_scan_disable() bt_set_scan(0x00)
  410. #define bt_fcc_test_start() bt_send_msg(BT_MSG_FCC_TEST_FUNC) //fcc kick
  411. //蓝牙音乐
  412. #define bt_music_play() bt_send_msg(BT_MSG_PLAY) //播放
  413. #define bt_music_pause() bt_send_msg(BT_MSG_PAUSE) //暂停
  414. #define bt_music_play_pause() bt_send_msg(BT_MSG_PLAY_PAUSE) //切换播放/暂停
  415. #define bt_music_stop() bt_send_msg(BT_MSG_STOP) //停止
  416. #define bt_music_prev() bt_send_msg(BT_MSG_PREV) //上一曲
  417. #define bt_music_next() bt_send_msg(BT_MSG_NEXT) //下一曲
  418. #define bt_music_rewind() bt_send_msg(BT_MSG_REWIND) //开始快退
  419. #define bt_music_rewind_end() bt_send_msg(BT_MSG_REWIND_END) //结束快退
  420. #define bt_music_fast_forward() bt_send_msg(BT_MSG_FAST_FORWARD) //开始快进
  421. #define bt_music_fast_forward_end() bt_send_msg(BT_MSG_FAST_FORWARD_END)//结束快进
  422. #define bt_low_latency_enble() bt_send_msg(BT_MSG_LOW_LATENCY_EN) //蓝牙使能低延时
  423. #define bt_low_latency_disable() bt_send_msg(BT_MSG_LOW_LATENCY_DIS) //蓝牙关闭低延时
  424. #define bt_music_play_switch() bt_send_msg(BT_MSG_2ACL_PALY_SWITCH)
  425. #define bt_music_play_private_switch() bt_send_msg(BT_MSG_PLAY_PRIVATE_SWITCH) //切换手机播放/蓝牙播放音乐
  426. bool bt_is_low_latency(void);
  427. //蓝牙通话
  428. #define bt_call_redial_last_number() bt_send_msg(BT_MSG_CALL_REDIAL) //电话回拨(最后一次通话)
  429. #define bt_call_answer_incoming() bt_send_msg(BT_MSG_CALL_ANSWER_INCOM) //接听电话,三通时挂起当前通话
  430. #define bt_call_answer_incom_rej_other() bt_send_msg(BT_MSG_CALL_ANSWER_INCOM_REJ_OTHER) //接听电话,三通时挂断当前通话
  431. #define bt_call_terminate() bt_send_msg(BT_MSG_CALL_TERMINATE) //挂断电话
  432. #define bt_call_swap() bt_send_msg(BT_MSG_CALL_SWAP) //切换三通电话
  433. #define bt_call_private_switch() bt_send_msg(BT_MSG_HFP_PRIVATE_SWITCH) //切换三通电话
  434. #define bt_siri_switch() bt_send_msg(BT_MSG_SWITCH_SIRI) //开关SIRI, android需要在语音助手中打开“蓝牙耳机按键启动”, ios需要打开siri功能
  435. #define bt_siri_on() bt_send_msg(BT_MSG_SIRI_ON) //打开语音助手
  436. #define bt_ctl_ear_sta_change() bt_send_msg(BT_MSG_EAR_STA_CHANGE)
  437. #define bt_ctl_nr_sta_change() bt_send_msg(BT_MSG_NR_STA_CHANGE)
  438. enum {
  439. VA_STA_IDLE = 0,
  440. VA_STA_CONNECT,
  441. VA_STA_STOP,
  442. VA_STA_START,
  443. VA_STA_END,
  444. };
  445. void bt_va_operate(u8 enble);
  446. u8 bt_va_is_connect(void);
  447. extern uint8_t cfg_bt_work_mode;
  448. extern uint8_t cfg_bt_sw_ver_major;
  449. extern uint8_t cfg_bt_tws_slot_inc;
  450. extern uint8_t cfg_bt_tws_limit_pair_time;
  451. extern uint8_t cfg_bt_a2dp_media_discard;
  452. extern uint32_t cfg_a2dp_aac_max_bitrate;
  453. extern uint16_t cfg_bt_tws_sniff_interval;
  454. extern uint16_t cfg_bt_tws_feat;
  455. extern uint8_t cfg_bt_hci_disc_only_spp;
  456. extern uint8_t cfg_bt_hid_feature;
  457. uint bt_get_hfp_feature(void);
  458. int bt_spp_tx(uint8_t *packet, uint16_t len); //发送SPP命令
  459. bool bt_spp_tx_ex(u8 idx, const char * cmd, u8 len); //带长度的发送SPP命令
  460. //hid
  461. bool bt_hid_send_key(uint msg, uint keycode);
  462. #define bt_hid_key(keycode) bt_hid_send_key(BT_MSG_HID_KEY, keycode) //标准HID键, 如Enter
  463. #define bt_hid_consumer(keycode) bt_hid_send_key(BT_MSG_HID_CONSUMER, keycode) //自定义HID键, 如VOL+ VOL-
  464. /**
  465. * @brief 模拟触点函数
  466. 注意:IOS 范围是-2047-2048 ,安卓是0-4096;
  467. IOS设备,x,y是相对位置,比如10,10是相对当前位置移动10,10;
  468. 安卓设备,x,y是绝对位置,10,10是在手机10,10的位置上;
  469. * @param is_press 1按下,0抬起
  470. * @param x 模拟触点横坐标
  471. * @param y 模拟触点纵坐标
  472. **/
  473. void bt_hid_point_pos(bool is_press, s16 x, s16 y);
  474. #define bt_hid_finger_select_ios() bt_send_msg(BT_MSG_HID_TOUCH_SCREEN | 1 << 8) //抖音视频选择IOS系统, 需要在bt连接前调用区分
  475. #define bt_hid_finger_select_andriod() bt_send_msg(BT_MSG_HID_TOUCH_SCREEN | 2 << 8) //抖音视频选择andriod系统, 需要在bt连接前调用区分
  476. //抖音神器
  477. void bt_hid_douyin_down(void);
  478. void bt_hid_douyin_up(void);
  479. void bt_hid_douyin_p(void);
  480. void bt_hid_douyin_pp(void);
  481. void bt_hid_douyin_ctrl(u8 ctrl);
  482. /*****************************************************************************
  483. * BLE API函数接口
  484. *****************************************************************************/
  485. void le_set_adv_interval(u16 interval);
  486. #endif //_API_BTSTACK_H