【杰理AC692X】来电在报号之前播自定义提示音

遇到个需求,需要在来电报号之前先播自定义的提示音,话不多说,直接打印追踪代码:

首先,当对方来电时,会接受到 BT_STATUS_PHONE_INCOME 来电消息,

case BT_STATUS_PHONE_INCOME:
        if (get_curr_channel_state()&HID_CH) {
            //puts("USER_CTRL_HID_DISCONNECT\n");
            user_send_cmd_prepare(USER_CTRL_HID_DISCONNECT, 0, NULL);
        }
        //tone_play(TONE_BT_PARING, 0);
        //phone_ring_play_start();
        user_val->phone_ring_flag = 1;
#if BT_PHONE_NUMBER
        phone_num_play_start();
#else
        phone_ring_play_start();
#endif
	... ...
	break;

然后进入 phone_num_play_start() 函数,开启定时发送报号消息 MSG_BT_TONE_PHONE_NUM ,同时初始化相关参数:

void phone_num_play_start()
{
    user_val->phone_num_flag = 0;
    user_val->phone_num_idx = 0;
    sys_timer_register(&user_val->bt_prompt_timeout, 500, phone_num_play_timer, 1);
}

打印发现播号是通过 user_val->phone_num_idx 定时计数实现,那就当 user_val->phone_num_idx 为 ‘0’ 的时候先播自定义的提示音,然后再用标志位和计数位使之继续播报号码,这里的标志位和计数要在来电消息或者挂断消息清零,简单操作就实现了。

下面是我的做法:
【杰理AC692X】来电在报号之前播自定义提示音_第1张图片

你可能感兴趣的:(杰理692系列问题)