doubao_chat/apps/common/example/system/wait_completion/main.c

52 lines
1.3 KiB
C

#include "app_config.h"
#include "system/includes.h"
#include "system/sys_common.h"
#include "wait.h"
#ifdef USE_WAIT_COMPLETION_TEST_DEMO
static u8 test_wait_time_sec;
static int wait_condition(void)
{
if (timer_get_sec() > test_wait_time_sec) {
puts("wait_condition return OK!\r\n");
return 1;
}
return 0;
}
static int wait_completion_callback(void *priv)
{
printf("wait_completion_callback run 0x%x!\r\n", (u32)priv);
return 0;
}
static void wait_completion_test_task(void *p)
{
os_time_dly(100); //wait_completion初始化完成后才可以测试
test_wait_time_sec = 1;
wait_completion_add_to_task("app_core", wait_condition, wait_completion_callback, (void *)0x12345678);
os_time_dly(test_wait_time_sec * 100 + 100);
test_wait_time_sec = 30;
u16 wait_id = wait_completion_add_to_task("app_core", wait_condition, wait_completion_callback, NULL);
os_time_dly(100);
wait_completion_del(wait_id);//中途取消,删除wait_completion
printf("wait_completion_del id[0x%x] OK!\r\n", wait_id);
while (1) {
os_time_dly(300);
}
}
static int c_main(void)
{
os_task_create(wait_completion_test_task, NULL, 10, 1000, 128, "wait_completion_test_task");
return 0;
}
late_initcall(c_main);
#endif