68 lines
1.3 KiB
C
68 lines
1.3 KiB
C
#ifndef SYS_EVENT_H
|
|
#define SYS_EVENT_H
|
|
|
|
#include "generic/typedef.h"
|
|
|
|
|
|
#define SYS_ALL_EVENT 0xffff
|
|
|
|
#define SYS_KEY_EVENT 0x0001
|
|
#define SYS_TOUCH_EVENT 0x0002
|
|
#define SYS_DEVICE_EVENT 0x0004
|
|
#define SYS_NET_EVENT 0x0008
|
|
#define SYS_BT_EVENT 0x0010
|
|
|
|
struct rcsp_event {
|
|
u8 event;
|
|
u8 args[6];
|
|
u8 size;
|
|
};
|
|
|
|
struct sys_event {
|
|
u16 type;
|
|
u8 from;
|
|
u8 len;
|
|
u8 payload[0];
|
|
};
|
|
|
|
|
|
struct static_event_handler {
|
|
u16 event_type;
|
|
int (*prob_handler)(struct sys_event *);
|
|
void (*post_handler)(struct sys_event *);
|
|
};
|
|
|
|
|
|
#define SYS_EVENT_STATIC_HANDLER_REGISTER(handler) \
|
|
const struct static_event_handler __static_event_##handler \
|
|
SEC_USED(.sys_event.handler)
|
|
|
|
extern struct static_event_handler sys_event_handler_begin[];
|
|
extern struct static_event_handler sys_event_handler_end[];
|
|
|
|
#define list_for_each_static_event_handler(p) \
|
|
for (p = sys_event_handler_begin; p < sys_event_handler_end; p++)
|
|
|
|
|
|
|
|
int register_sys_event_handler(int event_type, u8 from, u8 priority,
|
|
void (*handler)(struct sys_event *));
|
|
|
|
|
|
void unregister_sys_event_handler(void (*handler)(struct sys_event *));
|
|
|
|
|
|
/*
|
|
* 事件通知函数,系统有事件发生时调用此函数
|
|
*/
|
|
int sys_event_notify(u16 type, u8 from, void *event, u8 len);
|
|
|
|
|
|
void sys_event_clear(u16 type, u8 from);
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|