mcu_ab568x/app/projects/AB5682C_240/functions/func_ring_test.c
2025-05-30 18:03:10 +08:00

153 lines
3.4 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "include.h"
#include "func.h"
#include "m_sportInfo.h"
#include "api.h"
#include "ancs_msg.h"
#include "m_storage.h"
#include "app_variable.h"
#include "m_remind.h"
#if TRACE_EN
#define TRACE(...) printf(__VA_ARGS__)
#else
#define TRACE(...)
#endif
#define APP_AUDIO_STATE_WTONE 3
typedef struct f_ringtest_t_ {
u32 enter_tick;
} f_ringtest_t;
enum {
COMPO_ID_BTN_LEF = 1,
COMPO_ID_BTN_CEN,
COMPO_ID_BTN_RIG,
};
static int color_index = 0;
/* 工厂模式声音测试运行状态true正在运行false未在运行 */
static bool ring_test_run_state = false;
static void func_ring_test_run_state_set(bool state)
{
ring_test_run_state = state;
}
static bool func_ring_test_run_state_get(void)
{
return ring_test_run_state;
}
compo_form_t *func_ringtest_form_create(void)
{
compo_form_t *frm = compo_form_create(true);
compo_textbox_t *txt_off = compo_textbox_create(frm, 110);
compo_textbox_set_align_center(txt_off, false);
compo_textbox_set_pos(txt_off, GUI_SCREEN_CENTER_X-60, GUI_SCREEN_CENTER_Y);
compo_textbox_set(txt_off, "Ringtone test");
// compo_textbox_set_autoroll_mode(txt_off, TEXT_AUTOROLL_MODE_SROLL);
return frm;
}
static void ring_play_check(void)
{
if (!tone_get_status()) {
tone_play_test();
}
}
static void func_ringtest_process(void)
{
func_process();
}
static void func_ringtest_message(size_msg_t msg)
{
/* 检测窗体是否被外部改变,只允许用户主动改变退出 */
if (func_cb.sta != FUNC_SUB_RING) {
func_cb.sta = FUNC_SUB_RING;
}
switch (msg) {
case MSG_CTP_CLICK:
break;
case MSG_CTP_SHORT_UP:
break;
case MSG_CTP_SHORT_DOWN:
break;
case MSG_CTP_LONG:
break;
case KEY_RIGHT:
break;
case KEY_LEFT:
break;
case KEY_BACK:
break;
case MSG_CTP_SHORT_RIGHT:
func_message(msg);
/* 右滑退出厂测模式 */
if (func_cb.sta == FUNC_FACTORY_TEST) {
func_ring_test_run_state_set(false);
}
break;
default:
func_message(msg);
break;
}
}
AT(.text.func.btring)
static void bsp_bt_ring_res_play(u32 addr, u32 len)
{
printf("%s: addr: %x, len: %x\n", __func__, addr, len);
dac_set_anl_offset(0);
bt_audio_bypass();
music_control(MUSIC_MSG_STOP);
bsp_change_volume(WARNING_VOLUME);
if(judge_disturd()== true)
return;
if (len == 0) {
return;
}
if (sys_cb.mute) {
bsp_loudspeaker_unmute();
delay_5ms(6);
}
mp3_res_play_kick(addr, len);
}
static void func_ringtest_enter(void)
{
func_cb.f_cb = func_zalloc(sizeof(f_ringtest_t));
func_cb.frm_main = func_ringtest_form_create();
func_cb.mp3_res_play = func_bt_mp3_res_play;
bsp_bt_ring_res_play(RES_BUF_RING_RING_MP3, RES_LEN_RING_RING_MP3);
}
static void func_ringtest_exit(void)
{
func_cb.last = FUNC_SUB_RING;
}
void func_ringtest(void)
{
printf("%s\n", __func__);
func_ringtest_enter();
/* 厂测过程除用户主动退出外 不响应外部窗体切换 */
func_ring_test_run_state_set(true);
while (func_ring_test_run_state_get()) {
func_ringtest_process();
func_ringtest_message(msg_dequeue());
}
func_ringtest_exit();
}