可视化工具一拖二-常用应用知识
📎 原始文档:https://www.kdocs.cn/l/ceAmvCWetPsB 可视化工具一拖二-常用应用知识
一、一拖二常用应用接口
常用接口见avctp_user.h文件,其中大部分应用都在程序中被调用,可以参考模仿其中的应用方式。
其中常说的conn结构体地址,例如:void *device = btstack_get_conn_device(bt_addr);
设备conn结构体中包含了该连接设备大量信息,如蓝牙地址/a2dp和esco状态/设备类型等,程序内的大部分接口都是通过设备conn结构体来进行操控的。
extern u16 bt_sdp_create_diy_device_ID_service(u8 *buffer, u16 buffer_size);
extern u16 bt_sdp_create_diy_hid_service(u8 *buffer, u16 buffer_size, const u8 *hid_descriptor, u16 hid_descriptor_size);
/************用户自定义HID的一些接口 end*******************/
/*该接口会直接操作VM,可以读取蓝牙记录列表中的蓝牙地址信息
* mac_addr: 是用来保存多个地址信息的buffer,
* conn_device_num: 是期望读取最大个数(支持1-9)
* id: 一般设备是0。发射器和独立的HID模式是1
*/
u8 bt_restore_remote_device_info_opt(bd_addr_t *mac_addr, u8 conn_device_num, u8 id);
/*remote dev type*/
/*0:unknow,1-android,2:apple_inc,0x03-xiaomi*/
enum {
REMOTE_DEV_UNKNOWN = 0,
REMOTE_DEV_ANDROID ,
REMOTE_DEV_IOS ,
REMOTE_DEV_XIAOMI ,
REMOTE_DEV_DONGLE_SPEAK = 0xfa ,
};
/*这个接口会直接访问VM,根据地址获取已经记录好的设备厂商
*读操作时op_flag和value参数都传0。返回值参考上面的枚举
* */
u8 bt_remote_dev_company_ioctrl(bd_addr_t dev_addr, u8 op_flag, u8 value);
/*模式切换相关的接口*/
/*蓝牙协议栈初始化*/
int btstack_init();
/*退出蓝牙函数*/
int btstack_exit();
/*后台的恢复接口*/
void btstack_resume();//background resume
/*后台时退出蓝牙的处理接口*/
int btstack_suspend();
/*查询地址是不是杰理配套的蓝牙dongle*/
int btstack_get_dev_type_for_addr(u8 *addr);
/*查询当前有没有杰理配套的蓝牙dongle连接*/
bool bt_check_is_have_dongle_dev_conn();
/*一拖二的一些状态获取接口和操作接口*/
/*获取的值上限是bt_set_auto_conn_device_num接口配置的值,一般用于做回连策略*/
int btstack_get_num_of_remote_device_recorded();
/*根据记录的蓝牙库conn地址去操作*/
/*根据地址获取该地址对应的conn结构体地址*/
void *btstack_get_conn_device(u8 *addr);
/*获取当前有多少个已经连接的设备*/
int btstack_get_conn_devices(void *devices[], int max_num);
/*根据记录的conn结构体地址获取对应设备的地址*/
u8 *btstack_get_device_mac_addr(void *device);
/*根据记录的conn结构体地址获取对应设备的a2dp播放状态*/
int btstack_get_device_a2dp_state(void *device);
/*根据记录的conn结构体地址操作命令,命令列表也是USER_CMD_TYPE的枚举值
* 这个接口只使用那些不需要参数的命令,需要的参数的不用这个*/
int btstack_device_control(void *device, int cmd);
/*根据记录的conn结构体地址获取对应设备的连接链路信息*/
int btstack_get_device_channel_state(void *device);
/*根据记录的conn结构体地址获取对应设备的电话状态*/
int btstack_bt_get_call_status(void *device);
/*根据记录的conn结构体地址获取对应设备的esco状态*/
int btstack_get_call_esco_status(void *device);
/*根据记录的conn结构体地址去断开对应的设备*/
void btstack_device_detach(void *device);
//记录是自动断开A2DP的地址,回连检查的时候区分手机断开的情况
void bt_stack_save_a2dp_auto_discon_addr(u8 *addr, u8 pause_music_flag);
//检查是自动断开的再回连
bool bt_stack_check_a2dp_auto_discon_addr(u8 *addr);
/*获取正在处于来电状态的设备数目*/
u8 bt_stack_get_incoming_call_num();
/*根据地址获取设备是否支持来电铃声*/
u8 btstack_get_inband_ringtone_flag_for_addr(u8 *addr);
/*根据地址配置ESCO的状态*/
void bt_api_esco_status(u8 *addr, u8 status);
/*可以获取传入地址之外的另一个设备地址信息,没有返回NULL*/
u8 *btstack_get_other_dev_addr(u8 *addr);
/*上电会根据配置读取连接过的设备地址,保持在一个数组
* 这个接口根据数组位置获取地址出来,返回真表示获取成功,addr是获取到的地址值*/
bool btstack_get_remote_addr(u8 *addr, u8 index);