Skip to content Skip to footer

FAQ:主从切换使用说明 (#95) · Issues · chenmingqiu / JL

1、主从切换支持的场景:

有3种场景支持主从切换:

①、tws连接手机状态,单耳入仓,或者单耳低电关机。该类型主从切换为强制类型,代码默认开启。

②、通话时候根据电量自动主从切换,该类型为可选类型,程序选择开关。通话时候根据电量做主从切换是因为通话时候主机功耗比从机要大,解决主机耗完电但是从机还有较多电量情况。

③、歌曲播放根据主从信号质量做自动主从切换,该类型为可选类型,程序选择开关。该功能是为了兼容主机超距时候,没有主从切换从机会和手机断开连接的情况。

2、通话、歌曲(歌曲最新SDK已支持)时候根据电量做主从切换介绍:

app_config.h文件里面对应的宏置1开启通话电量平衡功能:

通话电量平衡控制介绍:

bool tws_host_esco_role_switch_by_power_balance(u16 m_voltage, u16 s_voltage)

{

if (m_voltage + 15 <= s_voltage) {

return 1;

}

return 0;

}

歌曲时候根据电量做主从切换:

bool tws_host_role_switch_by_power_balance(u16 m_voltage, u16 s_voltage)

{

if (m_voltage + 100 <= s_voltage) {

return 1;

}

return 0;

}

3、歌曲播放根据主从信号质量做主从切换:

app_config.h文件里面对应的宏置1开启歌曲播放根据信号质量做主从切换功能:

歌曲播放根据信号质量做主从切换功能控制,该函数在程序外面重写即可,库里面的函数会优先调用外面重写函数:

u8 a2dp_role_switch_check_debug(int master_rx_num, int slave_rx_num, int master_rssi, char slave_rssi, int tws_rssi, int msec)

{

#if 1

static int rx_rssi_print_cnt = 0;

if (++rx_rssi_print_cnt == 10) {

rx_rssi_print_cnt = 0;

printf("rx: %d, %d, rssi: %d, %d, %d, msec:%d\n",

master_rx_num, slave_rx_num,

master_rssi, slave_rssi, tws_rssi, msec);

}

return 1;

#endif

return 0;

}

u8 a2dp_role_switch_check_rssi(int master_rssi, char slave_rssi)

{

if (master_rssi < -58 && slave_rssi > -70 && master_rssi + 15 <= slave_rssi) {

return 1;

}

return 0;

}

4、通话时候根据信号做主从切换介绍:

调用void tws_api_esco_rssi_role_switch(u8 enable)接口使能通话时候根据信号质量做主从切换功能:

通话根据信号质量做主从切换功能控制,该函数在程序外面重写即可,库里面的函数会优先调用外面重写函数,信号强弱查询函数使用和歌曲播放时候的一样:

u8 esco_role_switch_check_rssi(int master_rssi, char slave_rssi)

{

if (master_rssi < -58 && slave_rssi > -70 && master_rssi + 15 <= slave_rssi) {

return 1;

}

return 0;

}