KT24-1110_65E-HA-651B/include_lib/system/app_core.h
2024-11-10 18:44:17 +08:00

86 lines
1.4 KiB
C

#ifndef SYS_APPLICATION_H
#define SYS_APPLICATION_H
#include "typedef.h"
#include "generic/list.h"
#include "system/event.h"
#define ACTION_BACK 0x0a1b2c00
#define ACTION_STOP 0x0a1b2c01
#define ACTION_DO_NOTHING 0x0a1b2c02
#define ACTION_CLASS_MASK 0xfffff000
enum app_state {
APP_STA_CREATE,
APP_STA_START,
APP_STA_PAUSE,
APP_STA_RESUME,
APP_STA_STOP,
APP_STA_DESTROY,
};
struct application;
struct intent {
const char *name;
int action;
const char *data;
u32 exdata;
};
struct application_operation {
int (*state_machine)(struct application *, enum app_state, struct intent *);
int (*event_handler)(struct application *, struct sys_event *);
};
struct application {
u8 state;
int action;
char *data;
const char *name;
struct list_head entry;
void *private_data;
const struct application_operation *ops;
};
#define REGISTER_APPLICATION(at) \
static struct application at sec(.app)
#define init_intent(it) \
do { \
(it)->name = NULL; \
(it)->action= 0; \
(it)->data = NULL; \
(it)->exdata = 0; \
}while (0)
void register_app_event_handler(int (*handler)(struct sys_event *));
struct application *get_current_app();
struct application *get_prev_app();
void app_core_back_to_prev_app();
int start_app(struct intent *it);
int start_app_async(struct intent *it, void (*callback)(void *p, int err), void *p);
#endif