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