DUT(Device Under Test)模式的使用:
DUT MODE 为工厂测试模式,以便工厂对PCBA软件进行测试
功能:五击进入DUT
case DUT_MODE:
printf("DUT_MODE\n");
sys_cb.User_cbt_test_en = USER_ENTER_CBT_EN_DATA;// 0xa8 则重启 BT mode 进入 测试模式
// sys_cb.Test_mode_kth_cnt = 0;
bt_nor_delete_link_info();
func_cb.sta = FUNC_NULL;
break;
在msg_bt.c中,在接收到msg_enqueue(DUT_MODE);事件时,执行上述代码。
在代码的追踪,发现在key_five_press_process(u16 key_val)中发送msg_enqueue(DUT_MODE);消息机制检测到发送msg_enqueue(DUT_MODE);则会在msg_bt.c中执行DUT_MODE中的代码。
u16 key_five_press_process(u16 key_val)
{
key_five_t *s = &key_five_cb;
if (s->counter) {
s->counter--;
}
if (!s->counter) {
s->strikes = 0;
s->val = NO_KEY;
}
if (check_key_return(key_val)) {
s->strikes++;
if ((key_val == s->val) && (s->strikes == 5)) {
//检测到5击按键
printf("3333333333333333333333333333333333\n");
//msg_enqueue(DUT_MODE | (key_val & 0xff));
msg_enqueue(DUT_MODE);
} else {
if (key_val != s->val) {
s->strikes = 1;
s->val = key_val;
}
s->counter = 120; //按键松开超时600ms
}
}
return key_val;
}
三击通报版本号提示音:
在DUT模式下,进行三击通报版本号提示音
三击宏定义: KTH_PLAY_POWER
case KTH_PLAY_POWER:
if(bt_nor_is_connected())
{
bt_music_prev();
}
#if 1
if(BT_STA_IDLE==bt_get_status())
{
if(USER_ENTER_CBT_EN_DATA==sys_cb.User_cbt_test_en)
{
printf("TEST Moding...\n");
if(1==bt_cfg.cbt_test_mode)
{
func_cb.mp3_res_play(RES_BUF_NUM_0_MP3, RES_LEN_NUM_0_MP3);
delay_5ms(15);
func_cb.mp3_res_play(RES_BUF_NUM_2_MP3, RES_LEN_NUM_2_MP3);
delay_5ms(15);
func_cb.mp3_res_play(RES_BUF_NUM_2_MP3, RES_LEN_NUM_2_MP3);
}
printf("DUT_MODE\n");
sys_cb.User_cbt_test_en = USER_EXIT_CBT_EN_DATA;// 0则关闭DUT模式 0xa8 则重启 BT mode 进入 测试模式
sys_cb.Test_mode_kth_cnt = 0;
bt_nor_delete_link_info();
func_cb.sta = FUNC_NULL;
}
}
#endif
break;