KT24-1110_65E-HA-651B/apps/soundbox/smartbox/smartbox_task.c

132 lines
3.2 KiB
C
Raw Permalink Normal View History

2024-11-10 10:44:17 +00:00
#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