event.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. #ifndef SYS_EVENT_H
  2. #define SYS_EVENT_H
  3. #include "generic/typedef.h"
  4. #include "generic/list.h"
  5. #include "generic/rect.h"
  6. #define KEY_POWER_START 0
  7. #define KEY_POWER 1
  8. #define KEY_PREV 2
  9. #define KEY_NEXT 3
  10. #define KEY_OK 4
  11. #define KEY_CANCLE 5
  12. #define KEY_MENU 6
  13. #define KEY_MODE 7
  14. #define KEY_PHOTO 8
  15. #define KEY_ENC 9
  16. #define KEY_VOLUME_DEC 10
  17. #define KEY_VOLUME_INC 11
  18. #define KEY_PHONE 12
  19. #define KEY_LEFT 37
  20. #define KEY_UP 38
  21. #define KEY_RIGHT 39
  22. #define KEY_DOWN 40
  23. #define KEY_0 48
  24. #define KEY_1 49
  25. #define KEY_2 50
  26. #define KEY_3 51
  27. #define KEY_4 52
  28. #define KEY_5 53
  29. #define KEY_6 54
  30. #define KEY_7 55
  31. #define KEY_8 56
  32. #define KEY_9 57
  33. #define KEY_F1 60
  34. #define SYS_ALL_EVENT 0xffff
  35. #define SYS_KEY_EVENT 0x0001
  36. #define SYS_TOUCH_EVENT 0x0002
  37. #define SYS_DEVICE_EVENT 0x0004
  38. #define SYS_NET_EVENT 0x0008
  39. #define SYS_BT_EVENT 0x0010
  40. #define SYS_IR_EVENT 0x0020
  41. #define SYS_PBG_EVENT 0x0040
  42. #define SYS_BT_AI_EVENT 0x0080
  43. #define SYS_AI_EVENT 0x0100
  44. #define SYS_MATRIX_KEY_EVENT 0x0200
  45. #define SYS_TOUCHPAD_EVENT 0x0400
  46. #define SYS_ADT_EVENT 0x0800
  47. #define SYS_FMNA_EVENT 0x1000
  48. #define DEVICE_EVENT_FROM_AT_UART (('A' << 24) | ('T' << 16) | ('U' << 8) | '\0')
  49. #define DEVICE_EVENT_FROM_CHARGE (('C' << 24) | ('H' << 16) | ('G' << 8) | '\0')
  50. #define DEVICE_EVENT_FROM_POWER (('P' << 24) | ('O' << 16) | ('W' << 8) | '\0')
  51. #define DEVICE_EVENT_FROM_CI_UART (('C' << 24) | ('I' << 16) | ('U' << 8) | '\0')
  52. #define DEVICE_EVENT_FROM_CI_TWS (('C' << 24) | ('I' << 16) | ('T' << 8) | '\0')
  53. #define DEVICE_EVENT_CHARGE_STORE (('S' << 24) | ('T' << 16) | ('O' << 8) | '\0')
  54. #define DEVICE_EVENT_UMIDIGI_CHARGE_STORE (('Q' << 24) | ('C' << 16) | ('Y' << 8) | '\0')
  55. #define DEVICE_EVENT_TEST_BOX (('T' << 24) | ('S' << 16) | ('B' << 8) | '\0')
  56. #define DEVICE_EVENT_FROM_TONE (('T' << 24) | ('N' << 16) | ('E' << 8) | '\0')
  57. #define DEVICE_EVENT_FROM_FM (('F' << 24) | ('M' << 16) | ('\0'<< 8) | '\0')
  58. #define KEY_EVENT_FROM_TWS (('T' << 24) | ('W' << 16) | ('S' << 8) | '\0')
  59. #define SYS_BT_EVENT_FROM_TWS (('T' << 24) | ('W' << 16) | ('S' << 8) | '\0')
  60. #define DEVICE_EVENT_FROM_LINEIN (('A' << 24) | ('U' << 16) | ('X' << 8) | '\0')
  61. #define DRIVER_EVENT_FROM_SD0 (('S' << 24) | ('D' << 16) | ('0' << 8) | '\0')
  62. #define DRIVER_EVENT_FROM_SD1 (('S' << 24) | ('D' << 16) | ('1' << 8) | '\0')
  63. #define DRIVER_EVENT_FROM_SD2 (('S' << 24) | ('D' << 16) | ('2' << 8) | '\0')
  64. #define DEVICE_EVENT_FROM_MUSIC (('M' << 24) | ('S' << 16) | ('C' << 8) | '\0')
  65. #define DEVICE_EVENT_FROM_USB_HOST (('U' << 24) | ('H' << 16) | '\0' | '\0')
  66. #define DEVICE_EVENT_FROM_OTG (('O' << 24) | ('T' << 16) | ('G' << 8) | '\0')
  67. #define DEVICE_EVENT_FROM_PC (('P' << 24) | ('C' << 16) | '\0' | '\0')
  68. #define DEVICE_EVENT_FROM_UAC (('U' << 24) | ('A' << 16) | ('C' << 8) | '\0')
  69. #define DEVICE_EVENT_FROM_ALM (('A' << 24) | ('L' << 16) | ('M' << 8) | '\0')
  70. #define SYS_BT_EVENT_TYPE_CON_STATUS (('C' << 24) | ('O' << 16) | ('N' << 8) | '\0')
  71. #define SYS_BT_EVENT_TYPE_HCI_STATUS (('H' << 24) | ('C' << 16) | ('I' << 8) | '\0')
  72. #define SYS_BT_EVENT_BLE_STATUS (('B' << 24) | ('L' << 16) | ('E' << 8) | '\0')
  73. #define SYS_BT_EVENT_FORM_COMMON (('C' << 24) | ('M' << 16) | ('M' << 8) | '\0')
  74. #define DEVICE_EVENT_FROM_KEY (('K' << 24) | ('E' << 16) | ('Y' << 8) | '\0')
  75. #define DEVICE_EVENT_FROM_CUSTOM (('C' << 24) | ('S' << 16) | ('T' << 8) | '\0')
  76. #define SYS_BT_AI_EVENT_TYPE_STATUS (('B' << 24) | ('A' << 16) | ('I' << 8) | '\0')
  77. #define DEVICE_EVENT_FROM_UART_RX_OVERFLOW (('U' << 24) | ('R' << 16) | ('F' << 8) | '\0')
  78. #define DEVICE_EVENT_FROM_UART_RX_OUTTIME (('U' << 24) | ('R' << 16) | ('T' << 8) | '\0')
  79. #define DEVICE_EVENT_FROM_DAC (('D' << 24) | ('A' << 16) | ('C' << 8) | '\0')
  80. #define SYS_EVENT_FROM_CTRLER (('C' << 24) | ('T' << 16) | ('R' << 8) | '\0')
  81. #define SYS_EVENT_FROM_RECORD (('R' << 24) | ('E' << 16) | ('C' << 8) | '\0')
  82. #define DEVICE_EVENT_FROM_ENDLESS_LOOP_DEBUG (('E' << 24) | ('L' << 16) | ('D' << 8) | '\0')
  83. #define DEVICE_EVENT_FROM_EARTCH (('E' << 24) | ('T' << 16) | ('H' << 8) | '\0')
  84. #define DEVICE_EVENT_ONLINE_DATA (('O' << 24) | ('L' << 16) | ('D' << 8) | '\0')
  85. #define SYS_BT_EVENT_FROM_KEY (('K' << 24) | ('E' << 16) | ('Y' << 8) | '\0')
  86. #define SYS_BT_EVENT_FORM_SELF (('S' << 24) | ('E' << 16) | ('F' << 8) | '\0')
  87. #define DEVICE_EVENT_FROM_ANC (('A' << 24) | ('N' << 16) | ('C' << 8) | '\0')
  88. #define SYS_BT_EVENT_FORM_AT (('I' << 24) | ('A' << 16) | ('T' << 8) | '\0')
  89. #define DEVICE_EVENT_FROM_ADAPTER (('A' << 24) | ('D' << 16) | ('A' << 8) | '\0')
  90. #define DEVICE_EVENT_FROM_BOARD_UART (('B' << 24) | ('D' << 16) | ('U' << 8) | '\0')
  91. enum {
  92. KEY_EVENT_CLICK,
  93. KEY_EVENT_LONG,
  94. KEY_EVENT_HOLD,
  95. KEY_EVENT_UP,
  96. KEY_EVENT_DOUBLE_CLICK,
  97. KEY_EVENT_TRIPLE_CLICK,
  98. KEY_EVENT_FOURTH_CLICK,
  99. KEY_EVENT_FIRTH_CLICK,
  100. KEY_EVENT_USER,
  101. KEY_EVENT_MAX,
  102. };
  103. enum {
  104. DEVICE_EVENT_IN,
  105. DEVICE_EVENT_OUT,
  106. DEVICE_EVENT_ONLINE,
  107. DEVICE_EVENT_OFFLINE,
  108. DEVICE_EVENT_CHANGE,
  109. };
  110. enum {
  111. TOUCH_EVENT_DOWN,
  112. TOUCH_EVENT_MOVE,
  113. TOUCH_EVENT_HOLD,
  114. TOUCH_EVENT_UP,
  115. TOUCH_EVENT_CLICK,
  116. TOUCH_EVENT_DOUBLE_CLICK,
  117. };
  118. enum {
  119. NET_EVENT_CMD,
  120. NET_EVENT_DATA,
  121. NET_EVENT_CONNECTED,
  122. NET_EVENT_DISCONNECTED,
  123. NET_EVENT_SMP_CFG_TIMEOUT,
  124. };
  125. struct key_event {
  126. u8 init;
  127. u8 type;
  128. u16 event;
  129. u32 value;
  130. u32 tmr;
  131. };
  132. struct ir_event {
  133. u8 event;
  134. };
  135. struct msg_event {
  136. u8 event;
  137. u8 value;
  138. };
  139. #if EVENT_TOUCH_ENABLE_CONFIG
  140. struct touch_event {
  141. u8 event;
  142. struct position pos;
  143. };
  144. #endif
  145. struct device_event {
  146. u8 event;
  147. int value;
  148. };
  149. struct notify_433 {
  150. u8 event;
  151. u8 *packet;
  152. u8 size;
  153. };
  154. struct notify_nfc {
  155. u8 event;
  156. u8 *packet;
  157. u8 size;
  158. };
  159. struct notify_onepa {
  160. u8 event;
  161. u8 *packet;
  162. u8 size;
  163. };
  164. struct chargestore_event {
  165. u8 event;
  166. u8 *packet;
  167. u8 size;
  168. };
  169. struct testbox_event {
  170. u8 event;
  171. u8 *packet;
  172. u8 size;
  173. };
  174. struct dg_ota_event {
  175. u8 event;
  176. u8 *packet;
  177. u8 size;
  178. };
  179. struct umidigi_chargestore_event {
  180. u8 event;
  181. u8 value;
  182. };
  183. struct ancbox_event {
  184. u8 event;
  185. u32 value;
  186. };
  187. struct net_event {
  188. u8 event;
  189. u8 value;
  190. };
  191. struct bt_event {
  192. u8 event;
  193. u8 args[7];
  194. u32 value;
  195. };
  196. struct axis_event {
  197. u8 event;
  198. s16 x;
  199. s16 y;
  200. };
  201. struct codesw_event {
  202. u8 event;
  203. s8 value;
  204. };
  205. struct pbg_event {
  206. u8 event;
  207. u8 args[3];
  208. };
  209. struct adt_event {
  210. u8 event;
  211. u8 args[3];
  212. };
  213. struct uart_event {
  214. void *ut_bus;
  215. };
  216. struct uart_cmd_event {
  217. u8 type;
  218. u8 cmd;
  219. };
  220. struct ai_event {
  221. u32 value;
  222. };
  223. struct ear_event {
  224. u8 value;
  225. };
  226. struct rcsp_event {
  227. u8 event;
  228. u8 args[6];
  229. u8 size;
  230. };
  231. struct chargebox_event {
  232. u8 event;
  233. };
  234. struct matrix_key_event {
  235. u16 args[6]; //最多推6个按键出来,如果需要推多个按键需要自行修改,每个u16 低八位标识row 高八位标识col
  236. u8 *map;
  237. };
  238. struct touchpad_event {
  239. u8 gesture_event; //手势事件
  240. s8 x;
  241. s8 y;
  242. };
  243. /*最大的长度16bytes*/
  244. struct fmna_event {
  245. u8 event;
  246. u8 args[3];
  247. u32 value;
  248. void *event_data;
  249. void *handler;
  250. };
  251. struct sys_event {
  252. u16 type;
  253. u8 consumed;
  254. void *arg;
  255. union {
  256. struct key_event key;
  257. struct axis_event axis;
  258. struct codesw_event codesw;
  259. #if EVENT_TOUCH_ENABLE_CONFIG
  260. struct touch_event touch;
  261. #endif
  262. struct device_event dev;
  263. struct notify_433 nf4;
  264. struct notify_nfc nfn;
  265. struct notify_onepa nfo;
  266. struct net_event net;
  267. struct bt_event bt;
  268. struct msg_event msg;
  269. struct chargestore_event chargestore;
  270. struct ir_event ir;
  271. struct pbg_event pbg;
  272. struct uart_event uart;
  273. struct uart_cmd_event uart_cmd;
  274. struct ai_event ai;
  275. struct ear_event ear;
  276. struct rcsp_event rcsp;
  277. struct chargebox_event chargebox;
  278. struct dg_ota_event dg_ota;
  279. struct testbox_event testbox;
  280. struct umidigi_chargestore_event umidigi_chargestore;
  281. struct ancbox_event ancbox;
  282. struct matrix_key_event matrix_key;
  283. struct touchpad_event touchpad;
  284. struct adt_event adt;
  285. struct fmna_event fmna;
  286. } u;
  287. };
  288. struct static_event_handler {
  289. int event_type;
  290. void (*handler)(struct sys_event *);
  291. };
  292. #define SYS_EVENT_HANDLER(type, fn, pri) \
  293. const struct static_event_handler __event_handler_##fn sec(.sys_event.pri.handler) = { \
  294. .event_type = type, \
  295. .handler = fn, \
  296. }
  297. extern struct static_event_handler sys_event_handler_begin[];
  298. extern struct static_event_handler sys_event_handler_end[];
  299. #define list_for_each_static_event_handler(p) \
  300. for (p = sys_event_handler_begin; p < sys_event_handler_end; p++)
  301. int register_sys_event_handler(int event_type, int from, u8 priority,
  302. void (*handler)(struct sys_event *));
  303. void unregister_sys_event_handler(void (*handler)(struct sys_event *));
  304. /*
  305. * 事件通知函数,系统有事件发生时调用此函数
  306. */
  307. void sys_event_notify(struct sys_event *e);
  308. void sys_event_clear(struct sys_event *e);
  309. void sys_key_event_disable();
  310. void sys_key_event_enable();
  311. void sys_key_event_filter_disable();
  312. void sys_key_event_filter_enable();
  313. void sys_touch_event_disable();
  314. void sys_touch_event_enable();
  315. /*
  316. *下面四个为系统事件消耗函数,调用此函数后则对应的事件不在分发给其它任务
  317. *
  318. */
  319. void sys_event_consume(struct sys_event *e);
  320. void sys_key_event_consume(struct key_event *e);
  321. #if EVENT_TOUCH_ENABLE_CONFIG
  322. void sys_touch_event_consume(struct touch_event *e);
  323. #endif
  324. void sys_device_event_consume(struct device_event *e);
  325. /*
  326. * 下面两个函数为按键和触摸事件接管函数,调用此函数后则对应的事件只发到当前任务
  327. *
  328. * on=true: 开始接管, on=false: 取消接管
  329. *
  330. * once: on = false 时有效,当前这次不接管, 事件可以继续发送到其它任务
  331. *
  332. */
  333. void sys_key_event_takeover(bool on, bool once);
  334. void sys_touch_event_takeover(bool on, bool once);
  335. int sys_key_event_map(struct key_event *org, struct key_event *new);
  336. int sys_key_event_unmap(struct key_event *org, struct key_event *new);
  337. #endif