pinebuds/services/app_ibrt/inc/app_ibrt_if.h
2022-08-15 17:20:27 +08:00

190 lines
8.3 KiB
C

/***************************************************************************
*
* Copyright 2015-2019 BES.
* All rights reserved. All unpublished rights reserved.
*
* No part of this work may be used or reproduced in any form or by any
* means, or stored in a database or retrieval system, without prior written
* permission of BES.
*
* Use of this work is governed by a license granted by BES.
* This work contains confidential and proprietary information of
* BES. which is protected by copyright, trade secret,
* trademark and other intellectual property rights.
*
****************************************************************************/
#ifndef __APP_IBRT_IF__
#define __APP_IBRT_IF__
#include "cmsis_os.h"
#include "app_tws_ibrt.h"
#include "app_ibrt_ui.h"
#include "app_key.h"
typedef enum {
APP_IBRT_IF_STATUS_SUCCESS = 0,
APP_IBRT_IF_STATUS_PENDING = 1,
APP_IBRT_IF_STATUS_ERROR_INVALID_PARAMETERS = 2,
APP_IBRT_IF_STATUS_ERROR_NO_CONNECTION = 3,
APP_IBRT_IF_STATUS_ERROR_CONNECTION_EXISTS = 4,
APP_IBRT_IF_STATUS_IN_PROGRESS = 5,
APP_IBRT_IF_STATUS_ERROR_DUPLICATE_REQUEST = 6,
APP_IBRT_IF_STATUS_ERROR_INVALID_STATE = 7,
APP_IBRT_IF_STATUS_ERROR_TIMEOUT = 8,
APP_IBRT_IF_STATUS_ERROR_ROLE_SWITCH_FAILED = 9,
APP_IBRT_IF_STATUS_ERROR_UNEXPECTED_VALUE = 10,
APP_IBRT_IF_STATUS_ERROR_OP_NOT_ALLOWED = 11,
} AppIbrtStatus;
typedef enum {
APP_IBRT_IF_A2DP_IDLE = 0,
APP_IBRT_IF_A2DP_CODEC_CONFIGURED = 1,
APP_IBRT_IF_A2DP_OPEN = 2,
APP_IBRT_IF_A2DP_STREAMING = 3,
APP_IBRT_IF_A2DP_CLOSED = 4,
}AppIbrtA2dpState;
typedef enum {
APP_IBRT_IF_AVRCP_DISCONNECTED = 0,
APP_IBRT_IF_AVRCP_CONNECTED = 1,
APP_IBRT_IF_AVRCP_PLAYING = 2,
APP_IBRT_IF_AVRCP_PAUSED = 3,
APP_IBRT_IF_AVRCP_VOLUME_UPDATED = 4,
}AppIbrtAvrcpState;
typedef enum {
APP_IBRT_IF_HFP_SLC_DISCONNECTED = 0,
APP_IBRT_IF_HFP_CLOSED = 1,
APP_IBRT_IF_HFP_SCO_CLOSED = 2,
APP_IBRT_IF_HFP_PENDING = 3,
APP_IBRT_IF_HFP_SLC_OPEN = 4,
APP_IBRT_IF_HFP_NEGOTIATE = 5,
APP_IBRT_IF_HFP_CODEC_CONFIGURED = 6,
APP_IBRT_IF_HFP_SCO_OPEN = 7,
APP_IBRT_IF_HFP_INCOMING_CALL = 8,
APP_IBRT_IF_HFP_OUTGOING_CALL = 9,
APP_IBRT_IF_HFP_RING_INDICATION = 10,
} AppIbrtHfpState;
typedef enum {
APP_IBRT_IF_NO_CALL = 0,
APP_IBRT_IF_CALL_ACTIVE = 1,
APP_IBRT_IF_HOLD = 2,
APP_IBRT_IF_SETUP_INCOMMING = 3,
APP_IBRT_IF_SETUP_OUTGOING = 4,
APP_IBRT_IF_SETUP_ALERT = 5,
} AppIbrtCallStatus;
#ifdef __cplusplus
extern "C" {
#endif
typedef APP_IBRT_UI_VENDER_EVENT_HANDLER_IND APP_IBRT_IF_VENDER_EVENT_HANDLER_IND;
typedef APP_IBRT_UI_GLOBAL_HANDLER_IND APP_IBRT_IF_GLOBAL_HANDLER_IND;
typedef APP_IBRT_UI_GLOBAL_EVENT_UPDATE_IND APP_IBRT_IF_GLOBAL_EVENT_UPDATE_IND;
typedef APP_IBRT_UI_PROFILE_STATE_CHANGE_IND APP_IBRT_IF_PROFILE_STATE_CHANGE_IND;
typedef APP_IBRT_UI_CONNECT_MOBILE_HANDLER_IND APP_IBRT_IF_CONNECT_MOBILE_NEEDED_IND;
typedef APP_IBRT_UI_TWS_SWITCH_HANDLER_IND APP_IBRT_IF_TWS_SWITCH_NEEDED_IND;
typedef app_ibrt_ui_t app_ibrt_if_ui_t;
typedef ibrt_ctrl_t app_ibrt_if_ctrl_t;
enum APP_IBRT_IF_SNIFF_CHECKER_USER_T
{
APP_IBRT_IF_SNIFF_CHECKER_USER_HFP,
APP_IBRT_IF_SNIFF_CHECKER_USER_A2DP,
APP_IBRT_IF_SNIFF_CHECKER_USER_SPP,
APP_IBRT_IF_SNIFF_CHECKER_USER_QTY
};
enum APP_IBRT_IF_SLEEP_HOOK_BLOCKER_T
{
APP_IBRT_IF_SLEEP_HOOK_BLOCKER_A2DP_STREAMING = 1<<0,
APP_IBRT_IF_SLEEP_HOOK_BLOCKER_HFP_SCO = 1<<1,
APP_IBRT_IF_SLEEP_HOOK_BLOCKER_ALL = (1<<0)|(1<<1),
};
void app_ibrt_if_register_global_handler_ind(APP_IBRT_IF_GLOBAL_HANDLER_IND handler);
void app_ibrt_if_register_vender_handler_ind(APP_IBRT_IF_VENDER_EVENT_HANDLER_IND handler);
void app_ibrt_if_register_connect_mobile_needed_ind(APP_IBRT_IF_CONNECT_MOBILE_NEEDED_IND connect_moible_need_ind);
void app_ibrt_if_register_tws_switch_needed_ind(APP_IBRT_IF_TWS_SWITCH_NEEDED_IND tws_switch_need_ind);
void app_ibrt_if_register_global_event_update_ind(APP_IBRT_IF_GLOBAL_EVENT_UPDATE_IND handler);
void app_ibrt_if_register_link_connected_ind(APP_IBRT_UI_CONNECTED_HANDLER_IND mobile_connected_ind,
APP_IBRT_UI_CONNECTED_HANDLER_IND ibrt_connected_ind,
APP_IBRT_UI_CONNECTED_HANDLER_IND tws_connected_ind);
void app_ibrt_if_register_profile_state_change_ind(APP_IBRT_IF_PROFILE_STATE_CHANGE_IND handler);
void app_ibrt_if_register_pairing_mode_ind(APP_IBRT_UI_PAIRING_MODE_HANDLER_IND set_callback, APP_IBRT_UI_PAIRING_MODE_HANDLER_IND clear_callback);
int app_ibrt_if_config_load(ibrt_config_t *config);
int app_ibrt_if_reconfig(ibrt_config_t *config);
int app_ibrt_if_ui_reconfig(ibrt_ui_config_t *config);
int app_ibrt_core_if_reconfig(ibrt_config_t *config);
int app_ibrt_if_config(ibrt_ui_config_t *ui_config);
int app_ibrt_if_event_entry(ibrt_event_type event);
void app_ibrt_if_choice_connect_second_mobile(void);
void app_ibrt_if_choice_mobile_connect(uint8_t index);
void app_ibrt_if_disconnect_mobile_tws_link(void);
app_ibrt_if_ui_t* app_ibrt_if_ui_get_ctx(void);
app_ibrt_if_ctrl_t *app_ibrt_if_get_bt_ctrl_ctx(void);
void app_ibrt_if_enter_pairing_after_tws_connected(void);
void app_ibrt_if_enter_freeman_pairing(void);
int app_ibrt_if_voice_report_trig_retrigger(void);
int app_ibrt_if_force_audio_retrigger(void);
int app_ibrt_if_force_audio_retrigger_slave_sync(void);
int app_ibrt_if_keyboard_notify(APP_KEY_STATUS *status, void *param);
void app_ibrt_if_a2dp_lowlatency_scan(uint16_t interval, uint16_t window, uint8_t interlanced);
void app_ibrt_if_a2dp_restore_scan(void);
void app_ibrt_if_sco_lowlatency_scan(uint16_t interval, uint16_t window, uint8_t interlanced);
void app_ibrt_if_sco_restore_scan(void);
#ifdef IBRT_SEARCH_UI
void app_start_tws_serching_direactly();
void app_bt_manager_ibrt_role_process(const btif_event_t *Event);
void app_ibrt_search_ui_init(bool boxOperation,ibrt_event_type evt_type);
void app_ibrt_enter_limited_mode(void);
void app_ibrt_reconfig_btAddr_from_nv();
void app_bt_enter_mono_pairing_mode(void);
#endif
void app_ibrt_ui_automate_test_cmd_handler(uint8_t group_code, uint8_t operation_code, uint8_t *param, uint8_t param_len);
void app_ibrt_auto_test_inform_cmd_received(uint8_t group_code, uint8_t operation_code);
int app_ibrt_ui_test_cmd_handler(unsigned char *buf, unsigned int length);
void app_ibrt_if_ctx_checker(void);
extern "C" bool btdrv_get_page_pscan_coex_enable(void);
int app_ibrt_if_tws_sniff_block(uint32_t block_next_sec);
int app_ibrt_if_sniff_checker_start(enum APP_IBRT_IF_SNIFF_CHECKER_USER_T user);
int app_ibrt_if_sniff_checker_stop(enum APP_IBRT_IF_SNIFF_CHECKER_USER_T user);
int app_ibrt_if_sniff_checker_init(uint32_t delay_ms);
int app_ibrt_if_sniff_checker_reset(void);
void app_ibrt_if_exec_sleep_hook_blocker_set(APP_IBRT_IF_SLEEP_HOOK_BLOCKER_T blocker);
void app_ibrt_if_exec_sleep_hook_blocker_clr(APP_IBRT_IF_SLEEP_HOOK_BLOCKER_T blocker);
bool app_ibrt_if_exec_sleep_hook_blocker_is_a2dp_streaming(void);
bool app_ibrt_if_exec_sleep_hook_blocker_is_hfp_sco(void);
bool app_ibrt_if_exec_sleep_hook_allowed(void);
int app_ibrt_if_config_keeper_clear(void);
int app_ibrt_if_config_keeper_mobile_update(bt_bdaddr_t *addr);
int app_ibrt_if_config_keeper_tws_update(bt_bdaddr_t *addr);
void app_ibrt_ui_adaptive_fa_rx_gain(void);
void app_tws_ibrt_record_sync_id(void);
void app_tws_ibrt_resume_sync_id(void);
void app_ibrt_if_pairing_mode_refresh(void);
bool app_ibrt_if_tws_switch_prepare_needed(uint32_t *wait_ms);
void app_ibrt_if_tws_swtich_prepare(void);
void app_ibrt_if_tws_switch_prepare_done_in_bt_thread(IBRT_ROLE_SWITCH_USER_E user, uint32_t role);
bool app_ibrt_if_start_ibrt_onporcess(void);
bool app_ibrt_if_tws_switch_onporcess(void);
AppIbrtStatus app_ibrt_if_get_a2dp_state(AppIbrtA2dpState *a2dp_state);
AppIbrtStatus app_ibrt_if_get_avrcp_state(AppIbrtAvrcpState *avrcp_state);
AppIbrtStatus app_ibrt_if_get_hfp_state(AppIbrtHfpState *hfp_state);
AppIbrtStatus app_ibrt_if_get_hfp_call_status(AppIbrtCallStatus *call_status);
ibrt_role_e app_ibrt_if_get_ibrt_role();
#ifdef __cplusplus
}
#endif /* */
#endif