pinebuds/services/bt_app/app_bt_func.h

352 lines
11 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_BT_FUNC_H__
#define __APP_BT_FUNC_H__
#include "cmsis_os.h"
#include "hal_trace.h"
#ifdef __cplusplus
extern "C" {
#endif
#include "me_api.h"
#include "a2dp_api.h"
#include "hfp_api.h"
#include "dip_api.h"
typedef enum _bt_fn_req {
Me_switch_sco_req = 0,
ME_SwitchRole_req = 1,
ME_SetConnectionRole_req = 2,
MeDisconnectLink_req = 3,
ME_StopSniff_req = 4,
ME_SetAccessibleMode_req = 5,
Me_SetLinkPolicy_req = 6,
CMGR_SetSniffTimer_req = 7,
CMGR_SetSniffInofToAllHandlerByRemDev_req = 8,
A2DP_OpenStream_req = 9,
A2DP_CloseStream_req = 10,
A2DP_SetMasterRole_req = 11,
HF_CreateServiceLink_req = 12,
HF_DisconnectServiceLink_req = 13,
HF_CreateAudioLink_req = 14,
HF_DisconnectAudioLink_req = 15,
HF_EnableSniffMode_req = 16,
HF_SetMasterRole_req = 17,
#if defined (__HSP_ENABLE__)
HS_CreateServiceLink_req = 18,
HS_CreateAudioLink_req = 19,
HS_DisconnectAudioLink_req = 20,
HS_EnableSniffMode_req = 21,
HS_DisconnectServiceLink_req = 22,
#endif
BT_Control_SleepMode_req = 23,
BT_Custom_Func_req = 24,
ME_StartSniff_req = 25,
#ifdef BTIF_DIP_DEVICE
DIP_QuryService_req = 26,
#endif
A2DP_Force_OpenStream_req = 27,
HF_Force_CreateServiceLink_req = 28,
BT_Red_Ccmp_Client_Open = 29,
BT_Set_Access_Mode_Test = 30,
BT_Set_Adv_Mode_Test = 31,
Write_Controller_Memory_Test = 32,
Read_Controller_Memory_Test = 33,
}bt_fn_req;
typedef void (*APP_BTTHREAD_REQ_CUSTOMER_CALL_CB_T)(void *, void *);
typedef union _bt_fn_param {
// BtStatus Me_switch_sco(uint16_t scohandle)
struct {
uint16_t scohandle;
} Me_switch_sco_param;
// BtStatus ME_SwitchRole(btif_remote_device_t *remDev)
struct {
btif_remote_device_t* remDev;
} ME_SwitchRole_param;
//BtConnectionRole ME_SetConnectionRole(BtConnectionRole role)
struct {
btif_connection_role_t role;
} BtConnectionRole_param;
// void MeDisconnectLink(btif_remote_device_t* remDev)
struct {
btif_remote_device_t* remDev;
} MeDisconnectLink_param;
//BtStatus ME_StopSniff(btif_remote_device_t *remDev)
struct {
btif_remote_device_t* remDev;
} ME_StopSniff_param;
struct {
btif_remote_device_t* remDev;
btif_sniff_info_t sniffInfo;
} ME_StartSniff_param;
struct {
bool isEnable;
} ME_BtControlSleepMode_param;
struct {
bool isEnable;
} ME_BtSetAdvMode_param;
//BtStatus ME_SetAccessibleMode(btif_accessible_mode_t mode, const btif_access_mode_info_t *info)
struct {
btif_accessible_mode_t mode;
btif_access_mode_info_t info;
} ME_SetAccessibleMode_param;
//BtStatus Me_SetLinkPolicy(btif_remote_device_t *remDev, btif_link_policy_t policy)
struct {
btif_remote_device_t *remDev;
btif_link_policy_t policy;
} Me_SetLinkPolicy_param;
/*BtStatus CMGR_SetSniffTimer(CmgrHandler *Handler,
btif_sniff_info_t* SniffInfo,
TimeT Time)
*/
struct {
btif_cmgr_handler_t *Handler;
btif_sniff_info_t SniffInfo;
TimeT Time;
} CMGR_SetSniffTimer_param;
/*BtStatus CMGR_SetSniffInofToAllHandlerByRemDev(btif_sniff_info_t* SniffInfo,
btif_remote_device_t *RemDev)
*/
struct {
btif_sniff_info_t SniffInfo;
btif_remote_device_t *RemDev;
} CMGR_SetSniffInofToAllHandlerByRemDev_param;
//BtStatus A2DP_OpenStream(a2dp_stream_t *Stream, bt_bdaddr_t *Addr)
struct {
a2dp_stream_t *Stream;
bt_bdaddr_t *Addr;
} A2DP_OpenStream_param;
//BtStatus A2DP_CloseStream(a2dp_stream_t *Stream);
struct {
a2dp_stream_t *Stream;
} A2DP_CloseStream_param;
//BtStatus A2DP_SetMasterRole(a2dp_stream_t *Stream, BOOL Flag);
struct {
a2dp_stream_t *Stream;
BOOL Flag;
} A2DP_SetMasterRole_param;
//BtStatus HF_CreateServiceLink(HfChannel *Chan, bt_bdaddr_t *Addr)
struct {
hf_chan_handle_t Chan;
bt_bdaddr_t *Addr;
} HF_CreateServiceLink_param;
//bt_status_t HF_DisconnectServiceLink(hf_chan_handle_t Chan)
struct {
hf_chan_handle_t Chan;
} HF_DisconnectServiceLink_param;
//bt_status_t HF_CreateAudioLink(hf_chan_handle_t Chan)
struct {
hf_chan_handle_t Chan;
} HF_CreateAudioLink_param;
//bt_status_t HF_DisconnectAudioLink(hf_chan_handle_t Chan)
struct {
hf_chan_handle_t Chan;
} HF_DisconnectAudioLink_param;
//bt_status_t HF_EnableSniffMode(hf_chan_handle_t Chan, BOOL Enable)
struct {
hf_chan_handle_t Chan;
BOOL Enable;
} HF_EnableSniffMode_param;
//bt_status_t HF_SetMasterRole(hf_chan_handle_t Chan, BOOL Flag);
struct {
hf_chan_handle_t Chan;
BOOL Flag;
} HF_SetMasterRole_param;
#ifdef BTIF_DIP_DEVICE
struct {
btif_remote_device_t* remDev;
btif_dip_client_t *dip_client;
} DIP_QuryService_param;
#endif
#if defined (__HSP_ENABLE__)
//bt_status_t HS_CreateServiceLink(HsChannel *Chan, bt_bdaddr_t *Addr)
struct {
HsChannel *Chan;
bt_bdaddr_t *Addr;
} HS_CreateServiceLink_param;
//BtStatus HS_CreateAudioLink(HsChannel *Chan)
struct {
HsChannel *Chan;
} HS_CreateAudioLink_param;
//BtStatus HS_DisconnectAudioLink(HsChannel *Chan)
struct {
HsChannel *Chan;
} HS_DisconnectAudioLink_param;
//BtStatus HS_DisconnectServiceLink(HsChannel *Chan)
struct {
HsChannel *Chan;
} HS_DisconnectServiceLink_param;
//BtStatus HS_EnableSniffMode(HsChannel *Chan, BOOL Enable)
struct {
HsChannel *Chan;
BOOL Enable;
} HS_EnableSniffMode_param;
#endif
struct {
uint32_t func_ptr;
uint32_t param0;
uint32_t param1;
} CustomFunc_param;
struct {
uint32_t addr;
uint32_t memval;
uint8_t type;
} Me_writecontrollermem_param;
struct {
uint32_t addr;
uint8_t len;
uint8_t type;
} Me_readcontrollermem_param;
} bt_fn_param;
typedef struct {
uint32_t src_thread;
uint32_t request_id;
bt_fn_param param;
} APP_BT_MAIL;
typedef struct
{
btif_remote_device_t *remDev;
btif_link_policy_t policy;
} BT_SET_LINKPOLICY_REQ_T;
int app_bt_mail_init(void);
int app_bt_Me_switch_sco(uint16_t scohandle);
int app_bt_ME_SwitchRole(btif_remote_device_t* remDev);
int app_bt_ME_SetConnectionRole(btif_connection_role_t role);
int app_bt_MeDisconnectLink(btif_remote_device_t* remDev);
int app_bt_ME_StopSniff(btif_remote_device_t *remDev);
int app_bt_ME_SetAccessibleMode(btif_accessible_mode_t mode, const btif_access_mode_info_t *info);
int app_bt_Me_SetLinkPolicy(btif_remote_device_t *remDev, btif_link_policy_t policy);
int app_bt_CMGR_SetSniffTimer(btif_cmgr_handler_t *Handler,
btif_sniff_info_t* SniffInfo,
TimeT Time);
int app_bt_CMGR_SetSniffInfoToAllHandlerByRemDev(btif_sniff_info_t* SniffInfo,
btif_remote_device_t *RemDev);
int app_bt_A2DP_OpenStream(a2dp_stream_t *Stream, bt_bdaddr_t *Addr);
int app_bt_A2DP_CloseStream(a2dp_stream_t *Stream);
int app_bt_A2DP_SetMasterRole(a2dp_stream_t *Stream, BOOL Flag);
int app_bt_HF_CreateServiceLink(hf_chan_handle_t Chan, bt_bdaddr_t *Addr);
int app_bt_HF_DisconnectServiceLink(hf_chan_handle_t Chan);
int app_bt_HF_CreateAudioLink(hf_chan_handle_t Chan);
int app_bt_HF_DisconnectAudioLink(hf_chan_handle_t Chan);
int app_bt_HF_EnableSniffMode(hf_chan_handle_t Chan, BOOL Enable);
int app_bt_HF_SetMasterRole(hf_chan_handle_t Chan, BOOL Flag);
void app_bt_accessible_manager_process(const btif_event_t *Event);
void app_bt_role_manager_process(const btif_event_t* Event);
void app_bt_sniff_manager_process(const btif_event_t *Event);
//void app_bt_golbal_handle_hook(const btif_event_t *Event);
int app_bt_ME_ControlSleepMode(bool isEnabled);
#ifdef BTIF_DIP_DEVICE
int app_bt_dip_QuryService(btif_dip_client_t *client, btif_remote_device_t* rem);
#endif
#if defined (__HSP_ENABLE__)
int app_bt_HS_CreateServiceLink(HsChannel *Chan, bt_bdaddr_t *Addr);
int app_bt_HS_CreateAudioLink(HsChannel *Chan);
int app_bt_HS_DisconnectAudioLink(HsChannel *Chan);
int app_bt_HS_DisconnectServiceLink(HsChannel *Chan);
int app_bt_HS_EnableSniffMode(HsChannel *Chan, BOOL Enable);
#endif
bool app_is_access_mode_set_pending(void);
void app_set_pending_access_mode(void);
void app_bt_set_linkpolicy(btif_remote_device_t *remDev, btif_link_policy_t policy);
void app_check_pending_stop_sniff_op(void);
BT_SET_LINKPOLICY_REQ_T* app_bt_pop_pending_set_linkpolicy(void);
void app_retry_setting_access_mode(void);
void app_set_accessmode(btif_accessible_mode_t mode);
int app_bt_start_custom_function_in_bt_thread(
uint32_t param0, uint32_t param1, uint32_t funcPtr);
int app_bt_ME_StartSniff(btif_remote_device_t *remDev, btif_sniff_info_t* sniffInfo);
#ifdef FPGA
int app_bt_ME_SetAccessibleMode_Fortest(btif_accessible_mode_t mode, const btif_access_mode_info_t *info);
int app_bt_ME_Set_Advmode_Fortest(uint8_t en);
int app_bt_ME_Write_Controller_Memory_Fortest(uint32_t addr,uint32_t val,uint8_t type);
int app_bt_ME_Read_Controller_Memory_Fortest(uint32_t addr,uint32_t len,uint8_t type);
#endif
#ifdef __cplusplus
}
#endif
#endif /* __APP_BT_FUNC_H__ */