doubao_chat/include_lib/utils/event/event.h

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