123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- /*
- * Copyright (c) 2016 Actions Semi Co., Inc.
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- /**
- * @file
- * @brief bt srv tws api interface
- */
- #define SYS_LOG_DOMAIN "btif_tws"
- #include "btsrv_os_common.h"
- #include "btsrv_inner.h"
- int btif_tws_register_processer(void)
- {
- #ifdef CONFIG_SUPPORT_TWS
- return btsrv_register_msg_processer(MSG_BTSRV_TWS, &btsrv_tws_process);
- #else
- return 0;
- #endif
- }
- int btif_tws_init(btsrv_tws_callback cb)
- {
- return btsrv_function_call(MSG_BTSRV_TWS, MSG_BTSRV_TWS_INIT, cb);
- }
- int btif_tws_wait_pair(int try_times)
- {
- return btsrv_function_call(MSG_BTSRV_TWS, MSG_BTSRV_TWS_WAIT_PAIR, (void *)try_times);
- }
- int btif_tws_cancel_wait_pair(void)
- {
- return btsrv_function_call(MSG_BTSRV_TWS, MSG_BTSRV_TWS_CANCEL_WAIT_PAIR, NULL);
- }
- int btif_tws_disconnect(bd_address_t *addr)
- {
- return btsrv_function_call_malloc(MSG_BTSRV_TWS, MSG_BTSRV_TWS_DISCONNECT, (void *)addr, sizeof(bd_address_t), 0);
- }
- int btif_tws_can_do_pair(void)
- {
- #ifdef CONFIG_SUPPORT_TWS
- int ret, flags;
- flags = btsrv_set_negative_prio();
- ret = btsrv_tws_can_do_pair();
- btsrv_revert_prio(flags);
- return ret;
- #else
- return 0;
- #endif
- }
- int btif_tws_is_in_connecting(void)
- {
- #ifdef CONFIG_SUPPORT_TWS
- int ret, flags;
- flags = btsrv_set_negative_prio();
- ret = btsrv_tws_is_in_connecting();
- btsrv_revert_prio(flags);
- return ret;
- #else
- return 0;
- #endif
- }
- int btif_tws_get_dev_role(void)
- {
- int ret, flags;
- flags = btsrv_set_negative_prio();
- ret = btsrv_rdm_get_dev_role();
- btsrv_revert_prio(flags);
- return ret;
- }
- int btif_tws_set_input_stream(io_stream_t stream)
- {
- #ifdef CONFIG_SUPPORT_TWS
- int flags;
- flags = btsrv_set_negative_prio();
- btsrv_tws_set_input_stream(stream, true);
- btsrv_revert_prio(flags);
- return 0;
- #endif
- return 0;
- }
- int btif_tws_set_sco_input_stream(io_stream_t stream)
- {
- #ifdef CONFIG_SUPPORT_TWS
- int flags;
- flags = btsrv_set_negative_prio();
- btsrv_tws_set_sco_input_stream(stream);
- btsrv_revert_prio(flags);
- return 0;
- #endif
- return 0;
- }
- tws_runtime_observer_t *btif_tws_get_tws_observer(void)
- {
- #ifdef CONFIG_SUPPORT_TWS
- int flags;
- tws_runtime_observer_t *observer;
- flags = btsrv_set_negative_prio();
- observer = btsrv_tws_monitor_get_observer();
- btsrv_revert_prio(flags);
- return observer;
- #else
- return NULL;
- #endif
- }
- int btif_tws_send_command(uint8_t *data, int len)
- {
- #ifdef CONFIG_SUPPORT_TWS
- int ret, flags;
- flags = btsrv_set_negative_prio();
- ret = bsrv_tws_send_user_command(data, len);
- btsrv_revert_prio(flags);
- return ret;
- #else
- return 0;
- #endif
- }
- int btif_tws_send_command_sync(uint8_t *data, int len)
- {
- #ifdef CONFIG_SUPPORT_TWS
- int ret, flags;
- flags = btsrv_set_negative_prio();
- ret = bsrv_tws_send_user_command_sync(data, len);
- btsrv_revert_prio(flags);
- return ret;
- #else
- return 0;
- #endif
- }
- uint32_t btif_tws_get_bt_clock(void)
- {
- #ifdef CONFIG_SUPPORT_TWS
- int flags;
- uint32_t clock;
- flags = btsrv_set_negative_prio();
- clock = btsrv_tws_get_bt_clock();
- btsrv_revert_prio(flags);
- return clock;
- #else
- return 0;
- #endif
- }
- int btif_tws_set_bt_local_play(bool bt_play, bool local_play)
- {
- #ifdef CONFIG_SUPPORT_TWS
- int ret, flags;
- flags = btsrv_set_negative_prio();
- ret = btsrv_tws_set_bt_local_play(bt_play, local_play);
- btsrv_revert_prio(flags);
- return ret;
- #endif
- return 0;
- }
- void btif_tws_update_tws_mode(uint8_t tws_mode, uint8_t drc_mode)
- {
- #ifdef CONFIG_SUPPORT_TWS
- int flags;
- flags = btsrv_set_negative_prio();
- btsrv_tws_updata_tws_mode(tws_mode, drc_mode);
- btsrv_revert_prio(flags);
- #endif
- }
- bool btif_tws_check_is_woodpecker(void)
- {
- #ifdef CONFIG_SUPPORT_TWS
- int flags;
- bool ret;
- flags = btsrv_set_negative_prio();
- ret = btsrv_tws_check_is_woodpecker();
- btsrv_revert_prio(flags);
- return ret;
- #else
- /* Not support tws, self as woodpecker */
- return true;
- #endif
- }
- bool btif_tws_check_support_feature(uint32_t feature)
- {
- #ifdef CONFIG_SUPPORT_TWS
- int flags;
- bool ret;
- flags = btsrv_set_negative_prio();
- ret = btsrv_tws_check_support_feature(feature);
- btsrv_revert_prio(flags);
- return ret;
- #else
- /* Not support tws,, self as support */
- return true;
- #endif
- }
- void btif_tws_set_codec(uint8_t codec)
- {
- #ifdef CONFIG_SUPPORT_TWS
- int flags;
- flags = btsrv_set_negative_prio();
- btsrv_tws_set_codec(codec);
- btsrv_revert_prio(flags);
- #endif
- }
|