/* * Copyright (c) 2018 Actions Semiconductor Co., Ltd * * SPDX-License-Identifier: Apache-2.0 */ /** * @file bluetooth tws observer interface */ #ifndef __BLUETOOTH_TWS_OBSERVER_H__ #define __BLUETOOTH_TWS_OBSERVER_H__ #include #ifdef __cplusplus extern "C" { #endif typedef struct { uint16_t pkt_num; /* 包号 */ uint16_t pkt_len; /* 包的数据长度 */ uint16_t samples; /* 当前帧pcm样点数 */ uint64_t pkt_bttime_us; /* 蓝牙时钟 us */ } __attribute__((packed)) tws_pkt_info_t; typedef int32_t (*media_set_start_pkt_num)(void *handle, uint16_t pkt_num); typedef int32_t (*media_start_playback)(void *handle); //level==0xFF: set default aps level typedef int32_t (*media_set_base_aps_level)(void *handle, uint8_t level); typedef int32_t (*media_notify_time_diff)(void *handle, int32_t diff_time); typedef struct { void *media_handle; void *tws_observer; media_set_start_pkt_num set_start_pkt_num; media_start_playback start_playback; media_set_base_aps_level set_base_aps_level; media_notify_time_diff notify_time_diff; } media_observer_t; typedef uint64_t (*bt_tws_get_bt_clk_us)(void); typedef uint8_t (*bt_tws_get_role)(void); typedef int32_t (*bt_tws_set_stream_info)(uint8_t format, uint16_t first_pktnum, uint16_t sample_rate); typedef int32_t (*bt_tws_aps_change_request)(uint8_t level); typedef int32_t (*bt_tws_set_pkt_info)(tws_pkt_info_t *info); typedef struct { bt_tws_get_bt_clk_us get_bt_clk_us; bt_tws_get_role get_role; bt_tws_set_stream_info set_stream_info; bt_tws_aps_change_request aps_change_request; bt_tws_set_pkt_info set_pkt_info; } bt_tws_observer_t; bt_tws_observer_t* bluetooth_tws_observer_init(media_observer_t *media_observer); void bluetooth_tws_observer_deinit(bt_tws_observer_t *tws_observer); #ifdef __cplusplus } #endif #endif //END OF __BLUETOOTH_TWS_OBSERVER_H__