123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418 |
- #ifndef SYS_EVENT_H
- #define SYS_EVENT_H
- #include "generic/typedef.h"
- #include "generic/list.h"
- #include "generic/rect.h"
- #define KEY_POWER_START 0
- #define KEY_POWER 1
- #define KEY_PREV 2
- #define KEY_NEXT 3
- #define KEY_OK 4
- #define KEY_CANCLE 5
- #define KEY_MENU 6
- #define KEY_MODE 7
- #define KEY_PHOTO 8
- #define KEY_ENC 9
- #define KEY_VOLUME_DEC 10
- #define KEY_VOLUME_INC 11
- #define KEY_PHONE 12
- #define KEY_LEFT 37
- #define KEY_UP 38
- #define KEY_RIGHT 39
- #define KEY_DOWN 40
- #define KEY_0 48
- #define KEY_1 49
- #define KEY_2 50
- #define KEY_3 51
- #define KEY_4 52
- #define KEY_5 53
- #define KEY_6 54
- #define KEY_7 55
- #define KEY_8 56
- #define KEY_9 57
- #define KEY_F1 60
- #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
- #define SYS_IR_EVENT 0x0020
- #define SYS_PBG_EVENT 0x0040
- #define SYS_BT_AI_EVENT 0x0080
- #define SYS_AI_EVENT 0x0100
- #define SYS_MATRIX_KEY_EVENT 0x0200
- #define SYS_TOUCHPAD_EVENT 0x0400
- #define SYS_ADT_EVENT 0x0800
- #define SYS_FMNA_EVENT 0x1000
- #define DEVICE_EVENT_FROM_AT_UART (('A' << 24) | ('T' << 16) | ('U' << 8) | '\0')
- #define DEVICE_EVENT_FROM_CHARGE (('C' << 24) | ('H' << 16) | ('G' << 8) | '\0')
- #define DEVICE_EVENT_FROM_POWER (('P' << 24) | ('O' << 16) | ('W' << 8) | '\0')
- #define DEVICE_EVENT_FROM_CI_UART (('C' << 24) | ('I' << 16) | ('U' << 8) | '\0')
- #define DEVICE_EVENT_FROM_CI_TWS (('C' << 24) | ('I' << 16) | ('T' << 8) | '\0')
- #define DEVICE_EVENT_CHARGE_STORE (('S' << 24) | ('T' << 16) | ('O' << 8) | '\0')
- #define DEVICE_EVENT_UMIDIGI_CHARGE_STORE (('Q' << 24) | ('C' << 16) | ('Y' << 8) | '\0')
- #define DEVICE_EVENT_TEST_BOX (('T' << 24) | ('S' << 16) | ('B' << 8) | '\0')
- #define DEVICE_EVENT_FROM_TONE (('T' << 24) | ('N' << 16) | ('E' << 8) | '\0')
- #define DEVICE_EVENT_FROM_FM (('F' << 24) | ('M' << 16) | ('\0'<< 8) | '\0')
- #define KEY_EVENT_FROM_TWS (('T' << 24) | ('W' << 16) | ('S' << 8) | '\0')
- #define SYS_BT_EVENT_FROM_TWS (('T' << 24) | ('W' << 16) | ('S' << 8) | '\0')
- #define DEVICE_EVENT_FROM_LINEIN (('A' << 24) | ('U' << 16) | ('X' << 8) | '\0')
- #define DRIVER_EVENT_FROM_SD0 (('S' << 24) | ('D' << 16) | ('0' << 8) | '\0')
- #define DRIVER_EVENT_FROM_SD1 (('S' << 24) | ('D' << 16) | ('1' << 8) | '\0')
- #define DRIVER_EVENT_FROM_SD2 (('S' << 24) | ('D' << 16) | ('2' << 8) | '\0')
- #define DEVICE_EVENT_FROM_MUSIC (('M' << 24) | ('S' << 16) | ('C' << 8) | '\0')
- #define DEVICE_EVENT_FROM_USB_HOST (('U' << 24) | ('H' << 16) | '\0' | '\0')
- #define DEVICE_EVENT_FROM_OTG (('O' << 24) | ('T' << 16) | ('G' << 8) | '\0')
- #define DEVICE_EVENT_FROM_PC (('P' << 24) | ('C' << 16) | '\0' | '\0')
- #define DEVICE_EVENT_FROM_UAC (('U' << 24) | ('A' << 16) | ('C' << 8) | '\0')
- #define DEVICE_EVENT_FROM_ALM (('A' << 24) | ('L' << 16) | ('M' << 8) | '\0')
- #define SYS_BT_EVENT_TYPE_CON_STATUS (('C' << 24) | ('O' << 16) | ('N' << 8) | '\0')
- #define SYS_BT_EVENT_TYPE_HCI_STATUS (('H' << 24) | ('C' << 16) | ('I' << 8) | '\0')
- #define SYS_BT_EVENT_BLE_STATUS (('B' << 24) | ('L' << 16) | ('E' << 8) | '\0')
- #define SYS_BT_EVENT_FORM_COMMON (('C' << 24) | ('M' << 16) | ('M' << 8) | '\0')
- #define DEVICE_EVENT_FROM_KEY (('K' << 24) | ('E' << 16) | ('Y' << 8) | '\0')
- #define DEVICE_EVENT_FROM_CUSTOM (('C' << 24) | ('S' << 16) | ('T' << 8) | '\0')
- #define SYS_BT_AI_EVENT_TYPE_STATUS (('B' << 24) | ('A' << 16) | ('I' << 8) | '\0')
- #define DEVICE_EVENT_FROM_UART_RX_OVERFLOW (('U' << 24) | ('R' << 16) | ('F' << 8) | '\0')
- #define DEVICE_EVENT_FROM_UART_RX_OUTTIME (('U' << 24) | ('R' << 16) | ('T' << 8) | '\0')
- #define DEVICE_EVENT_FROM_DAC (('D' << 24) | ('A' << 16) | ('C' << 8) | '\0')
- #define SYS_EVENT_FROM_CTRLER (('C' << 24) | ('T' << 16) | ('R' << 8) | '\0')
- #define SYS_EVENT_FROM_RECORD (('R' << 24) | ('E' << 16) | ('C' << 8) | '\0')
- #define DEVICE_EVENT_FROM_ENDLESS_LOOP_DEBUG (('E' << 24) | ('L' << 16) | ('D' << 8) | '\0')
- #define DEVICE_EVENT_FROM_EARTCH (('E' << 24) | ('T' << 16) | ('H' << 8) | '\0')
- #define DEVICE_EVENT_ONLINE_DATA (('O' << 24) | ('L' << 16) | ('D' << 8) | '\0')
- #define SYS_BT_EVENT_FROM_KEY (('K' << 24) | ('E' << 16) | ('Y' << 8) | '\0')
- #define SYS_BT_EVENT_FORM_SELF (('S' << 24) | ('E' << 16) | ('F' << 8) | '\0')
- #define DEVICE_EVENT_FROM_ANC (('A' << 24) | ('N' << 16) | ('C' << 8) | '\0')
- #define SYS_BT_EVENT_FORM_AT (('I' << 24) | ('A' << 16) | ('T' << 8) | '\0')
- #define DEVICE_EVENT_FROM_ADAPTER (('A' << 24) | ('D' << 16) | ('A' << 8) | '\0')
- #define DEVICE_EVENT_FROM_BOARD_UART (('B' << 24) | ('D' << 16) | ('U' << 8) | '\0')
- enum {
- KEY_EVENT_CLICK,
- KEY_EVENT_LONG,
- KEY_EVENT_HOLD,
- KEY_EVENT_UP,
- KEY_EVENT_DOUBLE_CLICK,
- KEY_EVENT_TRIPLE_CLICK,
- KEY_EVENT_FOURTH_CLICK,
- KEY_EVENT_FIRTH_CLICK,
- KEY_EVENT_USER,
- KEY_EVENT_MAX,
- };
- enum {
- DEVICE_EVENT_IN,
- DEVICE_EVENT_OUT,
- DEVICE_EVENT_ONLINE,
- DEVICE_EVENT_OFFLINE,
- DEVICE_EVENT_CHANGE,
- };
- enum {
- TOUCH_EVENT_DOWN,
- TOUCH_EVENT_MOVE,
- TOUCH_EVENT_HOLD,
- TOUCH_EVENT_UP,
- TOUCH_EVENT_CLICK,
- TOUCH_EVENT_DOUBLE_CLICK,
- };
- enum {
- NET_EVENT_CMD,
- NET_EVENT_DATA,
- NET_EVENT_CONNECTED,
- NET_EVENT_DISCONNECTED,
- NET_EVENT_SMP_CFG_TIMEOUT,
- };
- struct key_event {
- u8 init;
- u8 type;
- u16 event;
- u32 value;
- u32 tmr;
- };
- struct ir_event {
- u8 event;
- };
- struct msg_event {
- u8 event;
- u8 value;
- };
- #if EVENT_TOUCH_ENABLE_CONFIG
- struct touch_event {
- u8 event;
- struct position pos;
- };
- #endif
- struct device_event {
- u8 event;
- int value;
- };
- struct notify_433 {
- u8 event;
- u8 *packet;
- u8 size;
- };
- struct notify_nfc {
- u8 event;
- u8 *packet;
- u8 size;
- };
- struct notify_onepa {
- u8 event;
- u8 *packet;
- u8 size;
- };
- struct chargestore_event {
- u8 event;
- u8 *packet;
- u8 size;
- };
- struct testbox_event {
- u8 event;
- u8 *packet;
- u8 size;
- };
- struct dg_ota_event {
- u8 event;
- u8 *packet;
- u8 size;
- };
- struct umidigi_chargestore_event {
- u8 event;
- u8 value;
- };
- struct ancbox_event {
- u8 event;
- u32 value;
- };
- struct net_event {
- u8 event;
- u8 value;
- };
- struct bt_event {
- u8 event;
- u8 args[7];
- u32 value;
- };
- struct axis_event {
- u8 event;
- s16 x;
- s16 y;
- };
- struct codesw_event {
- u8 event;
- s8 value;
- };
- struct pbg_event {
- u8 event;
- u8 args[3];
- };
- struct adt_event {
- u8 event;
- u8 args[3];
- };
- struct uart_event {
- void *ut_bus;
- };
- struct uart_cmd_event {
- u8 type;
- u8 cmd;
- };
- struct ai_event {
- u32 value;
- };
- struct ear_event {
- u8 value;
- };
- struct rcsp_event {
- u8 event;
- u8 args[6];
- u8 size;
- };
- struct chargebox_event {
- u8 event;
- };
- struct matrix_key_event {
- u16 args[6]; //最多推6个按键出来,如果需要推多个按键需要自行修改,每个u16 低八位标识row 高八位标识col
- u8 *map;
- };
- struct touchpad_event {
- u8 gesture_event; //手势事件
- s8 x;
- s8 y;
- };
- /*最大的长度16bytes*/
- struct fmna_event {
- u8 event;
- u8 args[3];
- u32 value;
- void *event_data;
- void *handler;
- };
- struct sys_event {
- u16 type;
- u8 consumed;
- void *arg;
- union {
- struct key_event key;
- struct axis_event axis;
- struct codesw_event codesw;
- #if EVENT_TOUCH_ENABLE_CONFIG
- struct touch_event touch;
- #endif
- struct device_event dev;
- struct notify_433 nf4;
- struct notify_nfc nfn;
- struct notify_onepa nfo;
- struct net_event net;
- struct bt_event bt;
- struct msg_event msg;
- struct chargestore_event chargestore;
- struct ir_event ir;
- struct pbg_event pbg;
- struct uart_event uart;
- struct uart_cmd_event uart_cmd;
- struct ai_event ai;
- struct ear_event ear;
- struct rcsp_event rcsp;
- struct chargebox_event chargebox;
- struct dg_ota_event dg_ota;
- struct testbox_event testbox;
- struct umidigi_chargestore_event umidigi_chargestore;
- struct ancbox_event ancbox;
- struct matrix_key_event matrix_key;
- struct touchpad_event touchpad;
- struct adt_event adt;
- struct fmna_event fmna;
- } u;
- };
- struct static_event_handler {
- int event_type;
- void (*handler)(struct sys_event *);
- };
- #define SYS_EVENT_HANDLER(type, fn, pri) \
- const struct static_event_handler __event_handler_##fn sec(.sys_event.pri.handler) = { \
- .event_type = type, \
- .handler = fn, \
- }
- 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, int from, u8 priority,
- void (*handler)(struct sys_event *));
- void unregister_sys_event_handler(void (*handler)(struct sys_event *));
- /*
- * 事件通知函数,系统有事件发生时调用此函数
- */
- void sys_event_notify(struct sys_event *e);
- void sys_event_clear(struct sys_event *e);
- void sys_key_event_disable();
- void sys_key_event_enable();
- void sys_key_event_filter_disable();
- void sys_key_event_filter_enable();
- void sys_touch_event_disable();
- void sys_touch_event_enable();
- /*
- *下面四个为系统事件消耗函数,调用此函数后则对应的事件不在分发给其它任务
- *
- */
- void sys_event_consume(struct sys_event *e);
- void sys_key_event_consume(struct key_event *e);
- #if EVENT_TOUCH_ENABLE_CONFIG
- void sys_touch_event_consume(struct touch_event *e);
- #endif
- void sys_device_event_consume(struct device_event *e);
- /*
- * 下面两个函数为按键和触摸事件接管函数,调用此函数后则对应的事件只发到当前任务
- *
- * on=true: 开始接管, on=false: 取消接管
- *
- * once: on = false 时有效,当前这次不接管, 事件可以继续发送到其它任务
- *
- */
- void sys_key_event_takeover(bool on, bool once);
- void sys_touch_event_takeover(bool on, bool once);
- int sys_key_event_map(struct key_event *org, struct key_event *new);
- int sys_key_event_unmap(struct key_event *org, struct key_event *new);
- #endif
|