KT25-1014_AC695x_BTE_SDK310/apps/soundbox/common/task_table.c
2025-10-14 16:57:01 +08:00

201 lines
6.1 KiB
C

#include "system/includes.h"
#include "app_config.h"
/*任务列表, 注意:stack_size设置为32*n*/
const struct task_info task_info_table[] = {
{"app_core", 1, 896, 768 },
{"sys_event", 6, 256, 0 },
{"btctrler", 4, 512, 512 },
{"btencry", 1, 512, 128 },
#if TCFG_USER_TWS_ENABLE
{"tws", 5, 512, 128 },
#endif
#if (TCFG_USER_TWS_ENABLE || TCFG_USER_BLE_ENABLE || TCFG_USER_EMITTER_ENABLE)
{"btstack", 3, 768, 512 },
#else
{"btstack", 3, 512, 256 },
#endif
#if TCFG_DEC2TWS_TASK_ENABLE
{"local_dec", 3, 768, 128 },
#endif
#if ((TCFG_USER_TWS_ENABLE && TCFG_MIC_EFFECT_ENABLE)||(SOUNDCARD_ENABLE))
{"audio_dec", 3, 768 + 128 + 128, 128 },
#else
{"audio_dec", 3, 768 + 32, 128 },
#endif
{"audio_enc", 3, 512, 128 },
#if TCFG_AUDIO_DEC_OUT_TASK
{"audio_out", 2, 384, 0},
#endif
{"aec", 2, 768, 0 },
{"aec_dbg", 3, 128, 128 },
{"update", 1, 512, 0 },
{"dw_update", 2, 256, 128 },
#if(USER_UART_UPDATE_ENABLE)
{"uart_update", 1, 256, 128 },
#endif
{"systimer", 6, 128, 0 },
{"dev_mg", 3, 512, 512 },
#ifndef CONFIG_SOUNDBOX_FLASH_256K
{"usb_msd", 1, 512, 128 },
{"usb_audio", 5, 256, 256 },
{"plnk_dbg", 5, 256, 256 },
{"adc_linein", 2, 768, 128 },
/* {"src_write", 1, 768, 256 }, */
{"fm_task", 3, 512, 128 },
#endif
{"enc_write", 1, 768, 0 },
#if (RCSP_BTMATE_EN || RCSP_ADV_EN)
{"rcsp_task", 4, 768, 128 },
#endif
#if (TCFG_SPI_LCD_ENABLE||TCFG_SIMPLE_LCD_ENABLE)
{"ui", 2, 768, 256 },
#else
{"ui", 3, 384 - 64, 128 },
#endif
#if(TCFG_CHARGE_BOX_ENABLE)
{"chgbox_n", 6, 512, 128 },
#endif
#if (SMART_BOX_EN)
{"smartbox", 4, 768, 128 },
#endif//SMART_BOX_EN
#if (AI_APP_PROTOCOL)
{"app_proto", 2, 512, 64 },
{"dw_update", 2, 256, 128 },
#endif
#if (GMA_EN)
{"tm_gma", 3, 768, 256 },
#endif
#if RCSP_FILE_OPT
{"file_bs", 1, 768, 64 },
#endif
#if TCFG_KEY_TONE_EN
{"key_tone", 5, 256, 32},
#endif
#if TCFG_MIXER_CYCLIC_TASK_EN
{"mix_out", 5, 256, 0},
#endif
{"mic_stream", 5, 768, 128 },
#if(TCFG_HOST_AUDIO_ENABLE)
{"uac_play", 6, 768, 0 },
{"uac_record", 6, 768, 32 },
#endif
#if (TUYA_DEMO_EN)
{"user_deal", 7, 512, 512 },//定义线程 tuya任务调度
#endif
{0, 0},
};
enum {
KEY_USER_DEAL_POST = 0,
KEY_USER_DEAL_POST_MSG,
KEY_USER_DEAL_POST_EVENT,
KEY_USER_DEAL_POST_2,
};
#include "system/includes.h"
#include "system/event.h"
///自定义事件推送的线程
#define Q_USER_DEAL 0xAABBCC ///自定义队列类型
#define Q_USER_DATA_SIZE 10///理论Queue受任务声明struct task_info.qsize限制,但不宜过大,建议<=6
void user_deal_send_ver(void)
{
//os_taskq_post("user_deal", 1,KEY_USER_DEAL_POST);
os_taskq_post_msg("user_deal", 1, KEY_USER_DEAL_POST_MSG);
//os_taskq_post_event("user_deal",1, KEY_USER_DEAL_POST_EVENT);
}
void user_deal_rand_set(u32 rand)
{
os_taskq_post("user_deal", 2, KEY_USER_DEAL_POST_2, rand);
}
void user_deal_send_array(int *msg, int argc)
{
if (argc > Q_USER_DATA_SIZE) {
return;
}
os_taskq_post_type("user_deal", Q_USER_DEAL, argc, msg);
}
void user_deal_send_msg(void)
{
os_taskq_post_event("user_deal", 1, KEY_USER_DEAL_POST_EVENT);
}
void user_deal_send_test(void)///模拟测试函数,可按键触发调用,自行看打印
{
user_deal_send_ver();
user_deal_rand_set(0x11223344);
static u32 data[Q_USER_DATA_SIZE] = {0x11223344, 0x55667788, 0x11223344, 0x55667788, 0x11223344,
0xff223344, 0x556677ee, 0x11223344, 0x556677dd, 0x112233ff,
};
user_deal_send_array(data, sizeof(data) / sizeof(int));
}
static void user_deal_task_handle(void *p)
{
int msg[Q_USER_DATA_SIZE + 1] = {0, 0, 0, 0, 0, 0, 0, 0, 00, 0};
int res = 0;
while (1) {
res = os_task_pend("taskq", msg, ARRAY_SIZE(msg));
if (res != OS_TASKQ) {
continue;
}
r_printf("user_deal_task_handle:0x%x", msg[0]);
put_buf(msg, (Q_USER_DATA_SIZE + 1) * 4);
if (msg[0] == Q_MSG) {
printf("use os_taskq_post_msg");
switch (msg[1]) {
case KEY_USER_DEAL_POST_MSG:
printf("KEY_USER_DEAL_POST_MSG");
break;
default:
break;
}
} else if (msg[0] == Q_EVENT) {
printf("use os_taskq_post_event");
switch (msg[1]) {
case KEY_USER_DEAL_POST_EVENT:
printf("KEY_USER_DEAL_POST_EVENT");
break;
default:
break;
}
} else if (msg[0] == Q_CALLBACK) {
} else if (msg[0] == Q_USER) {
printf("use os_taskq_post");
switch (msg[1]) {
case KEY_USER_DEAL_POST:
printf("KEY_USER_DEAL_POST");
break;
case KEY_USER_DEAL_POST_2:
printf("KEY_USER_DEAL_POST_2:0x%x", msg[2]);
break;
default:
break;
}
} else if (msg[0] == Q_USER_DEAL) {
printf("use os_taskq_post_type");
printf("0x%x 0x%x 0x%x 0x%x 0x%x", msg[1], msg[2], msg[3], msg[4], msg[5]);
printf("0x%x 0x%x 0x%x 0x%x 0x%x", msg[6], msg[7], msg[8], msg[9], msg[10]);
}
puts("");
}
}
void user_deal_init(void)
{
task_create(user_deal_task_handle, NULL, "user_deal");
}
void user_deal_exit(void)
{
task_kill("user_deal");
}