1 /*
2  * Copyright (C) 2015-2020 Alibaba Group Holding Limited
3  */
4 
5 #ifndef AMP_TASK_H
6 #define AMP_TASK_H
7 
8 #include <aos/kernel.h>
9 #include <stdint.h>
10 
11 typedef void (*amp_engine_call_t)(void *data);
12 
13 typedef enum {
14     AMP_TASK_MSG_CALLBACK = 0, /* default JSE callback */
15     AMP_TASK_MSG_EXIT = 1,
16     AMP_TASK_MSG_TYPE_MAX
17 } amp_task_msg_type_t;
18 
19 typedef enum {
20     AMP_TIMER_ONCE = 0, /* one shot timer */
21     AMP_TIMER_REPEAT    /* repeat timer */
22 } amp_timer_type_t;
23 
24 typedef struct {
25     amp_task_msg_type_t type;
26     amp_engine_call_t callback;
27     void *param;
28 } amp_task_msg_t;
29 
30 int32_t amp_task_schedule_call(amp_engine_call_t call, void *arg);
31 
32 /**
33  *
34  * JSEngine task initialization
35  *
36  */
37 int32_t amp_task_init(void);
38 
39 /**
40  * JSEngine yield task, for asynchronous event process
41  *
42  */
43 int32_t amp_task_yield(uint32_t timeout);
44 
45 aos_timer_t *amp_task_timer_action(uint32_t ms, amp_engine_call_t action,
46                                void *arg, amp_timer_type_t type, void **timer_msg);
47 
48 int32_t amp_task_exit_call(amp_engine_call_t call, void *arg);
49 
50 void amp_module_free(void);
51 
52 int32_t amp_module_free_register(void (*callback)(void));
53 
54 void amp_task_main();
55 
56 int32_t amp_task_deinit();
57 
58 #endif /* AMP_TASK_H */
59