147 lines
2.7 KiB
C
147 lines
2.7 KiB
C
#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();
|
||
}
|
||
}
|