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