210 lines
9.8 KiB
C
210 lines
9.8 KiB
C
#ifndef EARPHONE_H
|
|
#define EARPHONE_H
|
|
|
|
#include "system/includes.h"
|
|
#include "app_config.h"
|
|
|
|
///搜索完整结束的事件
|
|
#define HCI_EVENT_INQUIRY_COMPLETE 0x01
|
|
///连接完成的事件
|
|
#define HCI_EVENT_CONNECTION_COMPLETE 0x03
|
|
///断开的事件,会有一些错误码区分不同情况的断开
|
|
#define HCI_EVENT_DISCONNECTION_COMPLETE 0x05
|
|
///连接中请求pin code的事件,给这个事件上来目前是做了一个确认的操作
|
|
#define HCI_EVENT_PIN_CODE_REQUEST 0x16
|
|
///连接设备发起了简易配对加密的连接
|
|
#define HCI_EVENT_IO_CAPABILITY_REQUEST 0x31
|
|
///这个事件上来目前是做了一个连接确认的操作
|
|
#define HCI_EVENT_USER_CONFIRMATION_REQUEST 0x33
|
|
///这个事件是需要输入6个数字的连接消息,一般在键盘应用才会有
|
|
#define HCI_EVENT_USER_PASSKEY_REQUEST 0x34
|
|
///<可用于显示输入passkey位置 value 0:start 1:enrer 2:earse 3:clear 4:complete
|
|
#define HCI_EVENT_USER_PRESSKEY_NOTIFICATION 0x3B
|
|
///杰理自定义的事件,上电回连的时候读不到VM的地址。
|
|
#define HCI_EVENT_VENDOR_NO_RECONN_ADDR 0xF8
|
|
///杰理自定义的事件,有测试盒连接的时候会有这个事件
|
|
#define HCI_EVENT_VENDOR_REMOTE_TEST 0xFE
|
|
///杰理自定义的事件,可以认为是断开之后协议栈资源释放完成的事件
|
|
#define BTSTACK_EVENT_HCI_CONNECTIONS_DELETE 0x6D
|
|
|
|
|
|
#define ERROR_CODE_SUCCESS 0x00
|
|
///<回连超时退出消息
|
|
#define ERROR_CODE_PAGE_TIMEOUT 0x04
|
|
///<连接过程中linkkey错误
|
|
#define ERROR_CODE_AUTHENTICATION_FAILURE 0x05
|
|
///<连接过程中linkkey丢失,手机删除了linkkey,回连就会出现一次
|
|
#define ERROR_CODE_PIN_OR_KEY_MISSING 0x06
|
|
///<连接超时,一般拿远就会断开有这个消息
|
|
#define ERROR_CODE_CONNECTION_TIMEOUT 0x08
|
|
///<连接个数超出了资源允许
|
|
#define ERROR_CODE_SYNCHRONOUS_CONNECTION_LIMIT_TO_A_DEVICE_EXCEEDED 0x0A
|
|
///<回连的时候发现设备还没释放我们这个地址,一般直接断电开机回连会出现
|
|
#define ERROR_CODE_ACL_CONNECTION_ALREADY_EXISTS 0x0B
|
|
///<需要回连的设备资源不够。有些手机连了一个设备之后就会用这个拒绝。或者其它的资源原因
|
|
#define ERROR_CODE_CONNECTION_REJECTED_DUE_TO_LIMITED_RESOURCES 0x0D
|
|
///<有些可能只允许指定地址连接的,可能会用这个去拒绝连接。或者我们设备的地址全0或者有问题
|
|
#define ERROR_CODE_CONNECTION_REJECTED_DUE_TO_UNACCEPTABLE_BD_ADDR 0x0F
|
|
///<连接的时间太长了,手机要断开了。这种容易复现可以联系我们分析
|
|
#define ERROR_CODE_CONNECTION_ACCEPT_TIMEOUT_EXCEEDED 0x10
|
|
///<经常用的连接断开消息。就认为断开就行
|
|
#define ERROR_CODE_REMOTE_USER_TERMINATED_CONNECTION 0x13
|
|
///<正常的断开消息,本地L2CAP资源释放之后就会发这个值上来了
|
|
#define ERROR_CODE_CONNECTION_TERMINATED_BY_LOCAL_HOST 0x16
|
|
|
|
#define ERROR_CODE_ROLE_CHANGE_NOT_ALLOWED 0x21
|
|
|
|
///杰理自定义,在回连的过程中使用page cancel命令主动取消成功会有这个命令
|
|
#define CUSTOM_BB_AUTO_CANCEL_PAGE 0xFD //// app cancle page
|
|
///杰理自定义,库里面有些功能需要停止page的时候会有。比如page的时候来了电话
|
|
#define BB_CANCEL_PAGE 0xFE //// bb cancle page
|
|
|
|
struct sys_event;
|
|
|
|
#if (TCFG_USER_BLE_ENABLE && (CONFIG_BT_MODE == BT_NORMAL))
|
|
|
|
|
|
#if (BT_AI_SEL_PROTOCOL & LL_SYNC_EN)
|
|
|
|
int ll_sync_earphone_state_init();
|
|
int ll_sync_earphone_state_set_page_scan_enable();
|
|
int ll_sync_earphone_state_get_connect_mac_addr();
|
|
int ll_sync_earphone_state_cancel_page_scan();
|
|
int ll_sync_earphone_state_enter_soft_poweroff();
|
|
int ll_sync_earphone_state_tws_init(int paired);
|
|
int ll_sync_earphone_state_tws_connected(int first_pair, u8 *comm_addr);
|
|
int ll_sync_sys_event_handler_specific(struct sys_event *event);
|
|
|
|
#define EARPHONE_STATE_INIT() ll_sync_earphone_state_init()
|
|
#define EARPHONE_STATE_SET_PAGE_SCAN_ENABLE() ll_sync_earphone_state_set_page_scan_enable()
|
|
#define EARPHONE_STATE_GET_CONNECT_MAC_ADDR() ll_sync_earphone_state_get_connect_mac_addr()
|
|
#define EARPHONE_STATE_CANCEL_PAGE_SCAN() ll_sync_earphone_state_cancel_page_scan()
|
|
#define EARPHONE_STATE_ENTER_SOFT_POWEROFF() ll_sync_earphone_state_enter_soft_poweroff()
|
|
#define EARPHONE_STATE_TWS_INIT(a) ll_sync_earphone_state_tws_init(a)
|
|
#define EARPHONE_STATE_TWS_CONNECTED(a, b) ll_sync_earphone_state_tws_connected(a,b)
|
|
#define SYS_EVENT_HANDLER_SPECIFIC(a) ll_sync_sys_event_handler_specific(a)
|
|
#define SYS_EVENT_REMAP(a) 0
|
|
#define EARPHONE_STATE_SNIFF(a)
|
|
#define EARPHONE_STATE_ROLE_SWITCH(a)
|
|
|
|
#elif (BT_AI_SEL_PROTOCOL & TUYA_DEMO_EN)
|
|
int tuya_earphone_state_init();
|
|
int tuya_earphone_state_set_page_scan_enable();
|
|
int tuya_earphone_state_get_connect_mac_addr();
|
|
int tuya_earphone_state_cancel_page_scan();
|
|
int tuya_earphone_state_enter_soft_poweroff();
|
|
int tuya_earphone_state_tws_init(int paired);
|
|
int tuya_earphone_state_tws_connected(int first_pair, u8 *comm_addr);
|
|
int tuya_sys_event_handler_specific(struct sys_event *event);
|
|
|
|
#define EARPHONE_STATE_INIT() tuya_earphone_state_init()
|
|
#define EARPHONE_STATE_SET_PAGE_SCAN_ENABLE() tuya_earphone_state_set_page_scan_enable()
|
|
#define EARPHONE_STATE_GET_CONNECT_MAC_ADDR() tuya_earphone_state_get_connect_mac_addr()
|
|
#define EARPHONE_STATE_CANCEL_PAGE_SCAN() tuya_earphone_state_cancel_page_scan()
|
|
#define EARPHONE_STATE_ENTER_SOFT_POWEROFF() tuya_earphone_state_enter_soft_poweroff()
|
|
#define EARPHONE_STATE_TWS_INIT(a) tuya_earphone_state_tws_init(a)
|
|
#define EARPHONE_STATE_TWS_CONNECTED(a, b) tuya_earphone_state_tws_connected(a,b)
|
|
#define SYS_EVENT_HANDLER_SPECIFIC(a) tuya_sys_event_handler_specific(a)
|
|
#define SYS_EVENT_REMAP(a) 0
|
|
#define EARPHONE_STATE_SNIFF(a)
|
|
#define EARPHONE_STATE_ROLE_SWITCH(a)
|
|
|
|
|
|
#elif TCFG_WIRELESS_MIC_ENABLE
|
|
#define EARPHONE_STATE_INIT() do { } while(0)
|
|
#define EARPHONE_STATE_SET_PAGE_SCAN_ENABLE() do { } while(0)
|
|
#define EARPHONE_STATE_GET_CONNECT_MAC_ADDR() do { } while(0)
|
|
#define EARPHONE_STATE_CANCEL_PAGE_SCAN() do { } while(0)
|
|
#define EARPHONE_STATE_ENTER_SOFT_POWEROFF() do { } while(0)
|
|
#define EARPHONE_STATE_TWS_INIT(a) do { } while(0)
|
|
#define EARPHONE_STATE_TWS_CONNECTED(a, b) do { } while(0)
|
|
#define SYS_EVENT_HANDLER_SPECIFIC(a) do { } while(0)
|
|
#define SYS_EVENT_REMAP(a) 0
|
|
#define EARPHONE_STATE_SNIFF(a)
|
|
#define EARPHONE_STATE_ROLE_SWITCH(a)
|
|
|
|
#elif TCFG_WIRELESS_MIC_ENABLE
|
|
#define EARPHONE_STATE_INIT() do { } while(0)
|
|
#define EARPHONE_STATE_SET_PAGE_SCAN_ENABLE() do { } while(0)
|
|
#define EARPHONE_STATE_GET_CONNECT_MAC_ADDR() do { } while(0)
|
|
#define EARPHONE_STATE_CANCEL_PAGE_SCAN() do { } while(0)
|
|
#define EARPHONE_STATE_ENTER_SOFT_POWEROFF() do { } while(0)
|
|
#define EARPHONE_STATE_TWS_INIT(a) do { } while(0)
|
|
#define EARPHONE_STATE_TWS_CONNECTED(a, b) do { } while(0)
|
|
#define SYS_EVENT_HANDLER_SPECIFIC(a) do { } while(0)
|
|
#define SYS_EVENT_REMAP(a) 0
|
|
#define EARPHONE_STATE_SNIFF(a)
|
|
#define EARPHONE_STATE_ROLE_SWITCH(a)
|
|
|
|
#else
|
|
#define EARPHONE_STATE_INIT() do { } while(0)
|
|
#define EARPHONE_STATE_SET_PAGE_SCAN_ENABLE() do { } while(0)
|
|
#define EARPHONE_STATE_GET_CONNECT_MAC_ADDR() do { } while(0)
|
|
#define EARPHONE_STATE_CANCEL_PAGE_SCAN() do { } while(0)
|
|
#define EARPHONE_STATE_ENTER_SOFT_POWEROFF() do { } while(0)
|
|
#define EARPHONE_STATE_TWS_INIT(a) do { } while(0)
|
|
#define EARPHONE_STATE_TWS_CONNECTED(a, b) do { } while(0)
|
|
#define SYS_EVENT_HANDLER_SPECIFIC(a) do { } while(0)
|
|
#define SYS_EVENT_REMAP(a) 0
|
|
#define EARPHONE_STATE_SNIFF(a)
|
|
#define EARPHONE_STATE_ROLE_SWITCH(a)
|
|
|
|
#endif
|
|
|
|
|
|
#else
|
|
|
|
#define EARPHONE_STATE_INIT() do { } while(0)
|
|
#define EARPHONE_STATE_SET_PAGE_SCAN_ENABLE() do { } while(0)
|
|
#define EARPHONE_STATE_GET_CONNECT_MAC_ADDR() do { } while(0)
|
|
#define EARPHONE_STATE_CANCEL_PAGE_SCAN() do { } while(0)
|
|
#define EARPHONE_STATE_ENTER_SOFT_POWEROFF() do { } while(0)
|
|
#define EARPHONE_STATE_TWS_INIT(a) do { } while(0)
|
|
#define EARPHONE_STATE_TWS_CONNECTED(a, b) do { } while(0)
|
|
#define SYS_EVENT_HANDLER_SPECIFIC(a) do { } while(0)
|
|
#define SYS_EVENT_REMAP(a) 0
|
|
#define EARPHONE_STATE_SNIFF(a)
|
|
#define EARPHONE_STATE_ROLE_SWITCH(a)
|
|
#endif
|
|
|
|
|
|
#define BT_RECEIVER_EN 0
|
|
#define BT_EMITTER_EN 1
|
|
|
|
typedef enum {
|
|
AVCTP_OPID_VOLUME_UP = 0x41,
|
|
AVCTP_OPID_VOLUME_DOWN = 0x42,
|
|
AVCTP_OPID_MUTE = 0x43,
|
|
AVCTP_OPID_PLAY = 0x44,
|
|
AVCTP_OPID_STOP = 0x45,
|
|
AVCTP_OPID_PAUSE = 0x46,
|
|
AVCTP_OPID_NEXT = 0x4B,
|
|
AVCTP_OPID_PREV = 0x4C,
|
|
} AVCTP_CMD_TYPE;
|
|
|
|
extern struct bt_mode_var g_bt_hdl;
|
|
|
|
extern u8 bt_app_exit_check(void);
|
|
extern void bt_mode_app_msg_handler(int *msg);
|
|
extern const struct key_remap_table *get_key_remap_table();
|
|
int bt_get_low_latency_mode();
|
|
void bt_set_low_latency_mode(int enable);
|
|
bool is_siri_open();
|
|
struct app_mode *app_enter_bt_mode(int arg);
|
|
void tone_ring_player_stop();
|
|
bool bt_check_already_initializes(void);
|
|
u8 is_bredr_close(void);
|
|
u8 get_link_inquiry_state();
|
|
void bt_search_device(void);
|
|
void bt_search_stop(void);
|
|
u8 bt_emitter_pp(u8 pp);
|
|
void emitter_open(u8 source);
|
|
void emitter_close(u8 source);
|
|
u8 connect_last_source_device_from_vm();
|
|
void bredr_conn_dev(u8 *mac);
|
|
void bredr_search_device();
|
|
void bt_emitter_start_search_device();
|
|
|
|
|
|
#endif
|