1 /*
2  * Copyright (C) 2015-2019 Alibaba Group Holding Limited
3  */
4 
5 #ifndef BONE_ENGINE_INL_H
6 #define BONE_ENGINE_INL_H
7 
8 #include <stdint.h>
9 #include "duktape/duktape.h"
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 /*
16  * get JSEngine context
17  */
18 duk_context *be_get_context();
19 
20 /*
21  * Create a global array refs in the heap stash
22  */
23 void be_ref_setup(duk_context *ctx);
24 
25 /*
26  * saving top of stack to refs, return refs position. (NOTE: top of stack
27  * overflow)
28  *
29  */
30 int be_ref(duk_context *ctx);
31 
32 /*
33  * get ref from refs
34  */
35 void be_push_ref(duk_context *ctx, int ref);
36 
37 /*
38  * clear ref in refs
39  */
40 void be_unref(duk_context *ctx, int ref);
41 
42 /*
43  * module manage initial
44  */
45 void be_module_node_init(duk_context *ctx);
46 
47 /*
48  * set entry file path, e.g. /spiffs/index.js
49  */
50 void be_module_node_set_entry(duk_context *ctx, const char *entry);
51 
52 /*
53  * JSEngine log prefix, identification for be-cli
54  */
55 #define BonePrefix "BoneEngine > "
56 
57 #define AMP_ADD_GLOBAL_FUNCTION(FUNCTION_NAME_STRING, FUNCTION_NAME, PARAM_COUNT) \
58 		duk_push_c_function(ctx, FUNCTION_NAME, PARAM_COUNT); \
59 		duk_put_global_string(ctx, FUNCTION_NAME_STRING)
60 
61 #define AMP_ADD_FUNCTION(FUNCTION_NAME_STRING, FUNCTION_NAME, PARAM_COUNT) \
62 		duk_push_c_function(ctx, FUNCTION_NAME, PARAM_COUNT); \
63 		duk_put_prop_string(ctx, -2, FUNCTION_NAME_STRING)
64 
65 #define AMP_ADD_INT(INT_NAME, INT_VALUE) \
66 		duk_push_int(ctx, INT_VALUE); \
67 		duk_put_prop_string(ctx, -2, INT_NAME)
68 
69 #define AMP_ADD_STRING(STRING_NAME, STRING_VALUE) \
70 		duk_push_string(ctx, STRING_VALUE); \
71 		duk_put_prop_string(ctx, -2, STRING_NAME)
72 
73 #define AMP_ADD_BOOLEAN(BOOLEAN_NAME, BOOLEAN_VALUE) \
74 		duk_push_boolean(ctx, BOOLEAN_VALUE); \
75 		duk_put_prop_string(ctx, -2, BOOLEAN_NAME)
76 
77 /* addons */
78 void module_adc_register(void);
79 void module_builtin_register(void);
80 void module_checksum_register(void);
81 void module_dac_register(void);
82 void module_gpio_register(void);
83 void module_i2c_register(void);
84 void module_ir_register(void);
85 void module_lcd_register(void);
86 void module_miio_register(void);
87 void module_mqtt_register(void);
88 void module_os_register(void);
89 void module_crypto_register(void);
90 void module_pwm_register(void);
91 void module_rtc_register(void);
92 void module_timer_register(void);
93 void module_uart_register(void);
94 void module_wdg_register(void);
95 void module_wifi_register(void);
96 void module_udp_register(void);
97 void module_http_register(void);
98 void module_fs_register(void);
99 void module_aiot_register(void);
100 void module_app_ota_register(void);
101 void module_audioplayer_register(void);
102 void module_tts_register(void);
103 void module_location_register(void);
104 void module_paybox_register(void);
105 void module_smartcard_register(void);
106 
107 void module_kv_register(void);
108 void module_pm_register(void);
109 void module_battery_register(void);
110 void module_charger_register(void);
111 void module_wakelock_register(void);
112 void module_cellular_register(void);
113 void module_tcp_register(void);
114 void module_aiot_register(void);
115 void module_spi_register(void);
116 void module_systimer_register(void);
117 void module_system_register(void);
118 void module_vm_register(void);
119 void module_ui_register(void);
120 void module_keypad_register(void);
121 void module_bt_host_register(void);
122 void module_blecfgnet_register(void);
123 
124 int32_t repl_init(void);
125 
126 #ifdef __cplusplus
127 }
128 #endif
129 
130 #endif /* BONE_ENGINE_INL_H */
131