杰理基础问题-1

1、提示音大小统一调整

1
2
3
4
5
6
audio_config.h

#define SYS_MAX_VOL MAX_COM_VOL
#define SYS_DEFAULT_VOL SYS_MAX_VOL
#define SYS_DEFAULT_TONE_VOL 11 // 提示音音量大小
#define SYS_DEFAULT_SIN_VOL 8

2、清除配对后关机+灯效(红白闪两次后红灯闪三次)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// 1、第一种方法,直接写
#include "asm/pwm_led.h"
if(get_bt_connect_status() >= BT_STATUS_CONNECTING){
user_send_cmd_prepare(USER_CTRL_DISCONNECTION_HCI, 0, NULL);
}
user_send_cmd_prepare(USER_CTRL_DEL_ALL_REMOTE_INFO, 0, NULL);
tone_play_index(IDEX_TONE_NUM_9,1);
pwm_led_mode_set(PWM_LED_ALL_ON);
os_time_dly(40);
pwm_led_mode_set(PWM_LED_ALL_OFF);
os_time_dly(40);
pwm_led_mode_set(PWM_LED_ALL_ON);
os_time_dly(40);
pwm_led_mode_set(PWM_LED_ALL_OFF);
os_time_dly(40);
pwm_led_mode_set(PWM_LED1_ON);
os_time_dly(40);
pwm_led_mode_set(PWM_LED_ALL_OFF);
os_time_dly(40);
pwm_led_mode_set(PWM_LED1_ON);
os_time_dly(40);
pwm_led_mode_set(PWM_LED_ALL_OFF);
os_time_dly(40);
pwm_led_mode_set(PWM_LED1_ON);
os_time_dly(80);
power_set_soft_poweroff();
// 2、新增ui状态,ui_update_status()
// 参考XH-56

3、切换游戏模式和普通模式

1
bt_set_low_latency_mode(!bt_get_low_latency_mode());

4、开关语音助手

1
2
3
4
5
if(app_var.siri_stu){
user_send_cmd_prepare(USER_CTRL_HFP_GET_SIRI_CLOSE, 0, NULL);
}else{
user_send_cmd_prepare(USER_CTRL_HFP_GET_SIRI_OPEN, 0, NULL);
}

5、最大提示音

1
2
3
// tone_player_api.h
// 改为0
#define CONFIG_USE_DEFAULT_SINE 0

6、新增六击事件

1
2
3
4
5
// key_driver.c
// TODO: 在此可以添加任意多击事件,需KEY_EVENT_SIXTH_CLICK枚举
if (scan_para->click_cnt >= 6) {
key_event = KEY_EVENT_SIXTH_CLICK; //六击
} else if (scan_para->click_cnt >= 5) {

7、获取当前的左右

1
2
3
4
5
6
7
8
// 当通过软件或硬件固定左右耳后,单耳也能正确获取
/*
* 获取声道
* 'L': 左声道
* 'R': 右声道
* 'U': 双声道合并
*/
tws_api_get_local_channel();

8、判断按键消息是否来自TWS

1
2
3
4
5
6
7
// 在按键消息的主处理函数中
channel = tws_api_get_local_channel();
if ('L' == channel) {
channel = (u32)event->arg == KEY_EVENT_FROM_TWS ? 'R' : 'L';
} else {
channel = (u32)event->arg == KEY_EVENT_FROM_TWS ? 'L' : 'R';
}

9、获取TWS状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
* 获取tws 连接的状态
* 返回值: 详见顶部TWS_STA_**
*/
int tws_api_get_tws_state();

/*
* tws 状态
*/
#define TWS_STA_SIBLING_DISCONNECTED 0x00000001 //tws未连接
#define TWS_STA_SIBLING_CONNECTED 0x00000002 //tws已连接
#define TWS_STA_PHONE_DISCONNECTED 0x00000004 //手机未连接
#define TWS_STA_PHONE_CONNECTED 0x00000008 //手机已连接
#define TWS_STA_ESCO_OPEN 0x00000010 //正在打电话
#define TWS_STA_SBC_OPEN 0x00000020 //正在播歌
#define TWS_STA_MONITOR_START 0x00000040 //tws从机开始监听手机链路
#define TWS_STA_LOCAL_TWS_OPEN 0x00000080 //开启local_tws
#define TWS_STA_ESCO_OPEN_LINK 0x00000100 //正在打电话,create link
#define TWS_STA_MONITOR_ING 0x00000200 //tws主从收到监听信息

10、获取TWS主从

1
2
3
4
/*
* 获取主从, 播歌和打电话状态下结果不可靠,请勿调用
*/
int tws_api_get_role();

11、获取蓝牙连接状态

1
get_bt_connect_status();

12、获取电话状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
u8 get_call_status(); 与BT_CALL_IND_STA 枚举的值判断
用于获取当前蓝牙电话的状态
*/
extern u8 get_call_status();

typedef enum {
BT_CALL_BATTERY_CHG = 0, //电池电量改变
BT_CALL_SIGNAL_CHG, //网络信号改变
BT_CALL_INCOMING, //电话打入
BT_CALL_OUTGOING, //电话打出
BT_CALL_ACTIVE, //接通电话
BT_CALL_HANGUP, //电话挂断
BT_CALL_ALERT, //远端reach
BT_CALL_VOL_CHANGED,
} BT_CALL_IND_STA;

13、进入DUT模式

1
2
3
4
5
6
/**********进入蓝牙dut模式
* mode=0:使能可以进入dut,原本流程不变。
* mode=1:删除一些其它切换状态,产线中通过工具调用此接口进入dut模式,提高测试效率
*********************/
void bt_bredr_enter_dut_mode(u8 mode, u8 inquiry_scan_en)
// 用IDE跳转不了,在earphone.c里面

14、触摸按键设置开机长按时间

1
2
3
//lp_touch_key.h
//长按开机时间:
#define CFG_M2P_CTMU_CH0_SOFTOFF_LONG_TIME 5 //(n + 6) * 100(ms)

15、长按关机时间

1
2
//key_event_deal.c
#define POWER_OFF_CNT 16

16、两个IO驱动两个灯

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//*********************************************************************************//
// LED 配置 //
//*********************************************************************************//
#define TCFG_PWMLED_ENABLE ENABLE_THIS_MOUDLE //是否支持PMW LED推灯模块
#define TCFG_PWMLED_IOMODE LED_TWO_IO_MODE //LED模式,单IO还是两个IO推灯
//双IO推灯配置
#define TCFG_PWMLED_DIO_PIN0 IO_PORTA_06 //白灯
#define TCFG_PWMLED_DIO_PIN1 IO_PORTA_08 //红灯

/************************** PWM_LED ****************************/
#if TCFG_PWMLED_ENABLE
LED_PLATFORM_DATA_BEGIN(pwm_led_data)
.io_mode = TCFG_PWMLED_IOMODE, //推灯模式设置:支持单个IO推两个灯和两个IO推两个灯
.io_cfg.two_io.pin0 = TCFG_PWMLED_DIO_PIN0, //双IO推两个灯的IO口配置
.io_cfg.two_io.pin1 = TCFG_PWMLED_DIO_PIN1,
LED_PLATFORM_DATA_END()
#endif

17、低电设置

1
2
3
4
5
//app_power_manage.h
#define LOW_POWER_SHUTDOWN 280 //低电直接关机电压-拔出不开机-开盖不开机
#define LOW_POWER_OFF_VAL 300 //低电关机电压
#define LOW_POWER_WARN_VAL 330 //低电提醒电压
#define LOW_POWER_WARN_TIME (60 * 1000) //低电提醒时间

18、其他按键设置长按开机时间

1
2
//app_main.c
void check_power_on_key(void)

19、智能充电仓通讯波特率修改

1
2
3
4
5
6
7
8
//chargestore.h
#define CHARGESTORE_PLATFORM_DATA_END() \
.baudrate = 9600, \
.init = chargestore_init, \
.open = chargestore_open, \
.close = chargestore_close, \
.write = chargestore_write, \
};

20、获取当前音量大小

1
2
3
4
5
6
7
8
9
app_audio_get_volume(APP_AUDIO_STATE_MUSIC);
/*
*audio state define
*/
#define APP_AUDIO_STATE_IDLE 0
#define APP_AUDIO_STATE_MUSIC 1
#define APP_AUDIO_STATE_CALL 2
#define APP_AUDIO_STATE_WTONE 3
#define APP_AUDIO_CURRENT_STATE 4

21、判断经典蓝牙是否在打开状态

1
2
3
4
is_bredr_close();
//return
//1 :关闭
//0 :打开

22、打印当前文件-当前函数-当前行数

1
printf ("%s %s %d \r\n" ,__FILE__, __func__, __LINE__);

23、提示音播放

1
2
3
4
5
6
/*
*index:提示音索引
*preemption:抢断标志 对音乐的抢断行为,而不是提示音之间的互斥关系
*/
__BANK_TONE_ENTRY
int tone_play_index(u8 index, u8 preemption)