86 lines
1.4 KiB
C
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
|
|
|