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 py_task_schedule_call(amp_engine_call_t call, void *arg);
31 
32 /**
33  *
34  * JSEngine task initialization
35  *
36  */
37 int32_t py_task_deinit(void);
38 
39 /**
40  * JSEngine yield task, for asynchronous event process
41  *
42  */
43 int32_t py_task_yield(uint32_t timeout);
44 
45 aos_timer_t *amp_task_timer_action(uint32_t ms, amp_engine_call_t action, void *arg, amp_timer_type_t type);
46 
47 int32_t py_task_exit_call(amp_engine_call_t call, void *arg);
48 
49 void amp_module_free(void);
50 
51 int32_t amp_module_free_register(void (*callback)(void));
52 
53 void amp_task_main();
54 
55 int32_t amp_task_deinit();
56 
57 #endif /* AMP_TASK_H */
58