BT-360功能总结(基于AC700N-SDK1.3.6)

BT-360功能总结(基于AC700N-SDK1.3.6)

按键触发流程分析

以下展示的表格为默认按键配置

SHORT LONG HOLD UP DOUBLE TRIPLE
KEY_MUSIC_PP KEY_POWEROFF KEY_POWEROFF_HOLD KEY_NULL KEY_CALL_LAST_NO KEY_LOW_LANTECY

长按按键触发流程为:LONG > HOLD > …….. > HOLD > UP

一般前面的三项是不改的,有不同的功能直接在相应的CASE中修改

开关机时间的设定

  • 开机时间(以ADkey为例)
1
2
3
// \apps\earphone\app_main.c
// 代码行数168
if (delay_10ms_cnt > 200) {

如果是ADkey开机会发现不管delay_10ms_cnt配置多少,轻按一下开机键会就触发延迟开机,延迟时间为delay_10ms_cnt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// \apps\earphone\board\br36\board_ac700n_demo.c
// 代码行数636 (其他配置可能会影响这个行数) 注释掉的代码为原代码
#if TCFG_ADKEY_ENABLE
u8 adc_pwr_value = adc_get_value(adkey_data.ad_channel);
if (adkey_data.enable) {
printf("adc_pwr_value = %d\n",adc_pwr_value);
if (adc_pwr_value < 10) {
return 1;
}
}
// if (adkey_data.enable) {
// return 1;
// }
#endif
  • 关机时间(以ADkey为例)
1
2
3
// \apps\earphone\key_event_deal.c
// 代码行数636 (大概位置)
#define POWER_OFF_CNT 8

需要配合ADkey的配置计算时间

1
2
3
4
5
6
7
8
9
10
11
12
13
// \apps\common\device\key\adkey.c
// 代码行数13
//按键驱动扫描参数列表
struct key_driver_para adkey_scan_para = {
.scan_time = 10, //按键扫描频率, 单位: ms
.last_key = NO_KEY, //上一次get_value按键值, 初始化为NO_KEY;
.filter_time = 2, //按键消抖延时;
.long_time = 75, //按键判定长按数量
.hold_time = (75 + 15), //按键判定HOLD数量
.click_delay_time = 20, //按键被抬起后等待连击延时数量
.key_type = KEY_DRIVER_TYPE_AD,
.get_value = ad_get_key_value,
};

关闭系统打印

节省flash空间

1
2
3
4
5
6
7
8
9
10
// \apps\earphone\include\app_config.h
// 代码行数8
#define LIB_DEBUG 0
#define CONFIG_DEBUG_LIB(x) (x & LIB_DEBUG)

//#define CONFIG_DEBUG_ENABLE

#ifndef CONFIG_DEBUG_ENABLE
//#define CONFIG_DEBUG_LITE_ENABLE //轻量级打印开关, 默认关闭
#endif

低电以及关机电压

1
2
3
4
// \apps\earphone\include\app_power_manage.h
// 代码行数8
#define LOW_POWER_OFF_VAL 330 //低电关机电压
#define LOW_POWER_WARN_VAL 340 //低电提醒电压

部分灯效的实现

大部分灯效的控制都在ui_manage.c中,这里以“TWS连接后,副耳灭灯,主耳灯效为快闪”为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// \apps\earphone\ui_manage.c
// 代码行数209
case STATUS_BT_TWS_CONN:
log_info("[STATUS_BT_TWS_CONN]\n");
// pwm_led_mode_set(p_led->tws_connect_ok);
if(tws_api_get_local_channel()=='L'){
//if(tws_api_get_role() == TWS_ROLE_MASTER){
pwm_led_mode_set(PWM_LED0_LED1_FAST_FLASH);
}else{
pwm_led_mode_set(PWM_LED_ALL_OFF);
}
break;
case STATUS_BT_TWS_DISCONN:
log_info("[STATUS_BT_TWS_DISCONN]\n");
// pwm_led_mode_set(p_led->tws_disconnect);
pwm_led_mode_set(PWM_LED0_LED1_FAST_FLASH);
break;

其他小功能配置

LED灯、主副MIC、双麦ENC、充电截止电压的配置基本在主配置文件中