KT24-1110_65E-HA-651B/apps/soundbox/smartbox/smartbox_task.c
2024-11-10 18:44:17 +08:00

132 lines
3.2 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 "smartbox/smartbox_task.h"
#include "smartbox/smartbox.h"
#include "file_transfer.h"
#include "file_delete.h"
#include "dev_format.h"
#include "clock_cfg.h"
#include "app_task.h"
#include "le_smartbox_module.h"
#if (SMART_BOX_EN)
//这个模式主要是提供一个空模式, 处理一些需要占用时间不较长的交互处理, 处理做完之后退回到原来的模式
struct __action_event {
u8 type; //1:手机端触发, 0:固件触发
u8 OpCode_SN;
u8 action;
};
static struct __action_event action_prepare = {0};
static void app_smartbox_task_get_ready(void)
{
printf("%s\n", __FUNCTION__);
if (action_prepare.type) {
JL_CMD_response_send(JL_OPCODE_ACTION_PREPARE, JL_PRO_STATUS_SUCCESS, action_prepare.OpCode_SN, NULL, 0);
}
}
static void app_smartbox_action_end_callback(void)
{
if (app_get_curr_task() == APP_SMARTBOX_ACTION_TASK) {
printf("action end callback!!\n");
app_task_switch_back();
}
}
static void app_smartbox_task_start(void)
{
clock_add_set(SMARTBOX_ACTION_CLK);
app_smartbox_task_get_ready();
//根据不同的场景, 做不同的处理, 例如初始化不同的UI显示
switch (action_prepare.action) {
case SMARTBOX_TASK_ACTION_FILE_TRANSFER:
file_transfer_init(app_smartbox_action_end_callback);
break;
case SMARTBOX_TASK_ACTION_FILE_DELETE:
file_delete_init(app_smartbox_action_end_callback);
break;
case SMARTBOX_TASK_ACTION_DEV_FORMAT:
dev_format_init(app_smartbox_action_end_callback);
break;
default:
break;
}
}
static void app_smartbox_task_stop(void)
{
switch (action_prepare.action) {
case SMARTBOX_TASK_ACTION_FILE_TRANSFER:
break;
case SMARTBOX_TASK_ACTION_FILE_DELETE:
break;
case SMARTBOX_TASK_ACTION_DEV_FORMAT:
break;
default:
break;
}
clock_remove_set(SMARTBOX_ACTION_CLK);
printf("app_smartbox_task_stop\n");
}
static int app_smartbox_task_event_handle(struct sys_event *event)
{
switch (action_prepare.action) {
case SMARTBOX_TASK_ACTION_FILE_TRANSFER:
break;
case SMARTBOX_TASK_ACTION_FILE_DELETE:
break;
case SMARTBOX_TASK_ACTION_DEV_FORMAT:
break;
default:
break;
}
return 0;
}
void app_smartbox_task_prepare(u8 type, u8 action, u8 OpCode_SN)
{
action_prepare.type = type;
action_prepare.action = action;
action_prepare.OpCode_SN = OpCode_SN;
//切换模式
if (app_get_curr_task() != APP_SMARTBOX_ACTION_TASK) {
app_task_switch_to(APP_SMARTBOX_ACTION_TASK);
} else {
app_smartbox_task_get_ready();
}
}
void app_smartbox_task(void)
{
int msg[32];
app_smartbox_task_start();
while (1) {
app_task_get_msg(msg, ARRAY_SIZE(msg), 1);
switch (msg[0]) {
case APP_MSG_SYS_EVENT:
if (app_smartbox_task_event_handle((struct sys_event *)(msg + 1)) == false) {
app_default_event_deal((struct sys_event *)(&msg[1]));
}
break;
default:
break;
}
if (app_task_exitting()) {
app_smartbox_task_stop();
return;
}
}
}
#else
void app_smartbox_task(void)
{
}
#endif//SMART_BOX_EN