132 lines
3.2 KiB
C
132 lines
3.2 KiB
C
|
#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
|
|||
|
|