mcu_ab568x/userboot240328/app/projects/AB5681G_320/functions/func.c
2025-05-30 18:03:10 +08:00

147 lines
2.7 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_menu.h"
#if TRACE_EN
#define TRACE(...) printf(__VA_ARGS__)
#else
#define TRACE(...)
#endif
extern void func_bt(void);
func_cb_t func_cb AT(.buf.func_cb);
AT(.text.func.process)
void func_process(void)
{
WDT_CLR();
#if VBAT_DETECT_EN
bsp_vbat_lpwr_process();
#endif
#if FOT_EN
bsp_fot_process();
#endif
}
void evt_message(size_msg_t msg)
{
switch (msg) {
default:
break;
}
}
//func common message process
void func_message(size_msg_t msg)
{
switch (msg) {
case EVT_READY_EXCHANGE_MTU:
ble_exchange_mtu_request();
break;
#if SOFT_POWER_ON_OFF
case KLH_BACK:
case KLH_LEFT:
case KLH_RIGHT:
func_cb.sta = FUNC_PWROFF;
break;
#endif
case KU_MODE:
func_cb.sta = FUNC_NULL;
break;
case MSG_SYS_500MS:
break;
case MSG_SYS_1S:
break;
default:
evt_message(msg);
break;
}
// //调节音量3秒后写入flash
// if ((sys_cb.cm_vol_change) && (sys_cb.cm_times >= 6)) {
// sys_cb.cm_vol_change = 0;
// cm_sync();
// }
}
///进入一个功能的总入口
AT(.text.func)
void func_enter(void)
{
//检查Func Heap
u32 heap_size = func_heap_get_free_size();
if (heap_size != HEAP_FUNC_SIZE) {
TRACE("Func heap leak (%d -> %d): %d\n", func_cb.last, func_cb.sta, heap_size);
// halt(HALT_FUNC_HEAP);
}
// param_sync();
reset_sleep_delay_all();
reset_pwroff_delay();
func_cb.mp3_res_play = NULL;
func_cb.set_vol_callback = NULL;
AMPLIFIER_SEL_D();
}
AT(.text.func)
void func_exit(void)
{
//释放FUNC控制结构体
if (func_cb.f_cb != NULL) {
func_free(func_cb.f_cb);
}
func_cb.f_cb = NULL;
}
AT(.text.func)
void func_run(void)
{
printf("%s\n", __func__);
memset(func_cb.tbl_sort, 0, sizeof(func_cb.tbl_sort));
func_cb.tbl_sort[0] = FUNC_CLOCK;
func_cb.tbl_sort[1] = FUNC_HEARTRATE;
func_cb.tbl_sort[2] = FUNC_BT;
func_cb.sort_cnt = 3;
func_cb.sta = FUNC_BT;
for (;;) {
func_enter();
switch (func_cb.sta) {
#if FUNC_BT_EN
case FUNC_BT:
func_bt();
break;
#endif
#if FUNC_BT_DUT_EN
case FUNC_BT_DUT:
func_bt_dut();
break;
#endif
#if FUNC_IDLE_EN
case FUNC_IDLE:
func_idle();
break;
#endif // FUNC_IDLE_EN
// case FUNC_PWROFF:
// func_pwroff(1);
// break;
default:
break;
}
func_exit();
}
}