void sj_gpio_api_setup(struct v7 *v7) { v7_val_t gpio = v7_mk_object(v7); v7_set(v7, v7_get_global(v7), "GPIO", ~0, gpio); v7_set_method(v7, gpio, "setMode", GPIO_setMode); v7_set_method(v7, gpio, "read", GPIO_read); v7_set_method(v7, gpio, "write", GPIO_write); v7_set_method(v7, gpio, "setISR", GPIO_setISR); v7_set(v7, gpio, "INOUT", ~0, v7_mk_number(v7, GPIO_MODE_INOUT)); v7_set(v7, gpio, "IN", ~0, v7_mk_number(v7, GPIO_MODE_INPUT)); v7_set(v7, gpio, "OUT", ~0, v7_mk_number(v7, GPIO_MODE_OUTPUT)); v7_set(v7, gpio, "FLOAT", ~0, v7_mk_number(v7, GPIO_PULL_FLOAT)); v7_set(v7, gpio, "PULLUP", ~0, v7_mk_number(v7, GPIO_PULL_PULLUP)); v7_set(v7, gpio, "PULLDOWN", ~0, v7_mk_number(v7, GPIO_PULL_PULLDOWN)); v7_set(v7, gpio, "OFF", ~0, v7_mk_number(v7, GPIO_INTR_OFF)); v7_set(v7, gpio, "POSEDGE", ~0, v7_mk_number(v7, GPIO_INTR_POSEDGE)); v7_set(v7, gpio, "NEGEDGE", ~0, v7_mk_number(v7, GPIO_INTR_NEGEDGE)); v7_set(v7, gpio, "ANYEDGE", ~0, v7_mk_number(v7, GPIO_INTR_ANYEDGE)); v7_set(v7, gpio, "LOLEVEL", ~0, v7_mk_number(v7, GPIO_INTR_LOLEVEL)); v7_set(v7, gpio, "HILEVEL", ~0, v7_mk_number(v7, GPIO_INTR_HILEVEL)); /* * TODO(mkm): figure out what to do with this "esp specific" mode. * It's not really ESP specific, but the soft debouncer is currently * implemented in esp8266 platform code. */ v7_set(v7, gpio, "CLICK", ~0, v7_mk_number(v7, 6 /* GPIO_INTR_TYPE_ONCLICK */)); if (v7_exec_file(v7, "gpio.js", NULL) != V7_OK) { /* TODO(mkm): make setup functions return an error code */ abort(); } }
void sj_init_uart(struct v7 *v7) { v7_val_t uart = V7_UNDEFINED, uart_proto = V7_UNDEFINED, uart_ctor = V7_UNDEFINED; v7_own(v7, &uart); v7_own(v7, &uart_proto); v7_own(v7, &uart_ctor); uart = v7_mk_object(v7); uart_proto = v7_mk_object(v7); uart_ctor = v7_mk_function_with_proto(v7, UART_ctor, uart_proto); v7_def(v7, uart, "dev", ~0, _V7_DESC_HIDDEN(1), uart_ctor); v7_set_method(v7, uart_proto, "read", UART_read); v7_set_method(v7, uart_proto, "write", UART_write); v7_set_method(v7, uart_proto, "recv", UART_recv); v7_set(v7, v7_get_global(v7), "UART", ~0, uart); { enum v7_err rcode = v7_exec( v7, "UART.open = function (d) { return new UART.dev(d); }", NULL); assert(rcode == V7_OK); #if defined(NDEBUG) (void) rcode; #endif } v7_disown(v7, &uart_ctor); v7_disown(v7, &uart_proto); v7_disown(v7, &uart); }
void sj_init_uart(struct v7 *v7) { v7_val_t uart = v7_create_undefined(), uart_proto = v7_create_undefined(), uart_ctor = v7_create_undefined(); v7_own(v7, &uart); v7_own(v7, &uart_proto); v7_own(v7, &uart_ctor); uart = v7_create_object(v7); uart_proto = v7_create_object(v7); uart_ctor = v7_create_constructor(v7, uart_proto, UART_ctor); v7_set(v7, uart, "dev", ~0, V7_PROPERTY_HIDDEN, uart_ctor); v7_set_method(v7, uart_proto, "read", UART_read); v7_set_method(v7, uart_proto, "write", UART_write); v7_set_method(v7, uart_proto, "recv", UART_recv); v7_set(v7, v7_get_global(v7), "UART", ~0, 0, uart); { enum v7_err rcode = v7_exec( v7, "UART.open = function (d) { return new UART.dev(d); }", NULL); assert(rcode == V7_OK); #if defined(NDEBUG) (void) rcode; #endif } v7_disown(v7, &uart_ctor); v7_disown(v7, &uart_proto); v7_disown(v7, &uart); }
void sj_init_simple_http_client(struct v7 *v7) { v7_val_t http; http = v7_create_object(v7); v7_set(v7, v7_get_global_object(v7), "Http", 4, 0, http); v7_set_method(v7, http, "get", sj_http_get); v7_set_method(v7, http, "post", sj_http_post); }
void sj_timers_api_setup(struct v7 *v7) { v7_set_method(v7, v7_get_global(v7), "setTimeout", global_setTimeout); v7_set_method(v7, v7_get_global(v7), "setInterval", global_setInterval); v7_set_method(v7, v7_get_global(v7), "clearTimeout", global_clearTimeoutOrInterval); v7_set_method(v7, v7_get_global(v7), "clearInterval", global_clearTimeoutOrInterval); }
void init_gpiojs(struct v7 *v7) { s_v7 = v7; v7_val_t gpio = v7_create_object(v7); v7_set(v7, v7_get_global(v7), "GPIO", ~0, 0, gpio); v7_set_method(v7, gpio, "setmode", GPIO_setmode); v7_set_method(v7, gpio, "read", GPIO_read); v7_set_method(v7, gpio, "write", GPIO_write); v7_set_method(v7, gpio, "setisr", GPIO_setisr); }
void sj_gpio_api_setup(struct v7 *v7) { s_v7 = v7; v7_val_t gpio = v7_mk_object(v7); v7_set(v7, v7_get_global(v7), "GPIO", ~0, gpio); v7_set_method(v7, gpio, "setmode", GPIO_setmode); v7_set_method(v7, gpio, "read", GPIO_read); v7_set_method(v7, gpio, "write", GPIO_write); v7_set_method(v7, gpio, "setisr", GPIO_setisr); }
void sj_v7_ext_api_setup(struct v7 *v7) { v7_val_t gc; v7_set_method(v7, v7_get_global(v7), "usleep", global_usleep); gc = v7_mk_object(v7); v7_set(v7, v7_get_global(v7), "GC", ~0, gc); v7_set_method(v7, gc, "stat", GC_stat); v7_set_method(v7, gc, "gc", GC_gc); }
void sj_init_sys(struct v7 *v7) { v7_val_t sys; sys = v7_mk_object(v7); v7_set(v7, v7_get_global(v7), "Sys", ~0, sys); v7_set_method(v7, sys, "prof", Sys_prof); v7_set_method(v7, sys, "wdtFeed", Sys_wdtFeed); v7_set_method(v7, sys, "reboot", Sys_reboot); v7_set_method(v7, sys, "setLogLevel", Sys_setLogLevel); }
void init_v7(void *stack_base) { struct v7_create_opts opts; v7_val_t dht11, debug; opts.object_arena_size = 164; opts.function_arena_size = 26; opts.property_arena_size = 400; opts.c_stack_base = stack_base; v7 = v7_create_opt(opts); v7_set_method(v7, v7_get_global(v7), "dsleep", dsleep); v7_set_method(v7, v7_get_global(v7), "crash", crash); #if V7_ESP_ENABLE__DHT11 dht11 = v7_create_object(v7); v7_set(v7, v7_get_global(v7), "DHT11", 5, 0, dht11); v7_set_method(v7, dht11, "read", DHT11_read); #else (void) dht11; #endif /* V7_ESP_ENABLE__DHT11 */ debug = v7_create_object(v7); v7_set(v7, v7_get_global(v7), "Debug", 5, 0, debug); v7_set_method(v7, debug, "mode", Debug_mode); v7_set_method(v7, debug, "print", Debug_print); sj_init_timers(v7); sj_init_v7_ext(v7); init_gpiojs(v7); init_adcjs(v7); init_i2cjs(v7); init_pwm(v7); init_spijs(v7); init_wifi(v7); mongoose_init(); sj_init_http(v7); sj_init_ws_client(v7); /* NOTE(lsm): must be done after mongoose_init(). */ init_device(v7); #ifndef DISABLE_OTA init_updater(v7); #endif #ifndef DISABLE_C_CLUBBY sj_init_clubby(v7); #endif v7_gc(v7, 1); }
void init_v7(void *stack_base) { struct v7_create_opts opts; v7_val_t dht11, debug; opts.object_arena_size = 164; opts.function_arena_size = 26; opts.property_arena_size = 400; opts.c_stack_base = stack_base; v7 = v7_create_opt(opts); v7_set_method(v7, v7_get_global_object(v7), "dsleep", dsleep); v7_set_method(v7, v7_get_global_object(v7), "crash", crash); #if V7_ESP_ENABLE__DHT11 dht11 = v7_create_object(v7); v7_set(v7, v7_get_global_object(v7), "DHT11", 5, 0, dht11); v7_set_method(v7, dht11, "read", DHT11_read); #else (void) dht11; #endif /* V7_ESP_ENABLE__DHT11 */ debug = v7_create_object(v7); v7_set(v7, v7_get_global_object(v7), "Debug", 5, 0, debug); v7_set_method(v7, debug, "mode", Debug_mode); v7_set_method(v7, debug, "print", Debug_print); sj_init_timers(v7); sj_init_v7_ext(v7); init_gpiojs(v7); init_i2cjs(v7); init_spijs(v7); init_wifi(v7); #ifndef RTOS_TODO init_data_gen_server(v7); #endif esp_init_conf(v7); #ifdef RTOS_SDK mongoose_init(); #endif sj_init_simple_http_client(v7); #ifdef RTOS_SDK sj_init_ws_client(v7); #endif v7_gc(v7, 1); }
void esp_sj_uart_init(struct v7 *v7) { sj_us[0].v7 = sj_us[1].v7 = v7; os_timer_setfn(&sj_us[0].timer, esp_sj_uart_dispatcher, (void *) 0); os_timer_setfn(&sj_us[1].timer, esp_sj_uart_dispatcher, (void *) 1); s_uart_proto = v7_mk_object(v7); v7_set_method(v7, s_uart_proto, "configure", UART_configure); v7_set_method(v7, s_uart_proto, "onRecv", UART_onRecv); v7_set_method(v7, s_uart_proto, "recv", UART_recv); v7_set_method(v7, s_uart_proto, "setRXEnabled", UART_setRXEnabled); v7_set_method(v7, s_uart_proto, "onTXEmpty", UART_onTXEmpty); v7_set_method(v7, s_uart_proto, "sendAvail", UART_sendAvail); v7_set_method(v7, s_uart_proto, "send", UART_send); v7_set_method(v7, v7_get_global(v7), "UART", UART_get); sj_us[0].uart_no = 0; sj_us[0].obj = v7_mk_object(v7); v7_set_proto(v7, sj_us[0].obj, s_uart_proto); v7_set(v7, sj_us[0].obj, "_u", ~0, v7_mk_number(0)); v7_own(v7, &sj_us[0].obj); sj_us[1].uart_no = 1; sj_us[1].obj = v7_mk_object(v7); v7_set_proto(v7, sj_us[1].obj, s_uart_proto); v7_set(v7, sj_us[1].obj, "_u", ~0, v7_mk_number(1)); v7_own(v7, &sj_us[1].obj); }
void sj_init_ws_client(struct v7 *v7) { v7_val_t ws_proto = v7_create_object(v7); v7_val_t ws = v7_create_constructor(v7, ws_proto, sj_ws_ctor, 1); v7_own(v7, &ws); v7_set_method(v7, ws_proto, "send", WebSocket_send); v7_set_method(v7, ws_proto, "close", WebSocket_close); v7_set(v7, ws_proto, "readyState", ~0, V7_PROPERTY_DONT_ENUM | V7_PROPERTY_GETTER, v7_create_function(v7, WebSocket_readyState, 0)); v7_set(v7, ws, "OPEN", ~0, 0, WEBSOCKET_OPEN); v7_set(v7, ws, "CLOSED", ~0, 0, WEBSOCKET_CLOSED); v7_set(v7, v7_get_global_object(v7), "WebSocket", ~0, 0, ws); v7_disown(v7, &ws); }
int main(void) { enum v7_err rcode = V7_OK; struct v7 *v7 = v7_create(); v7_val_t ctor_func, proto, eval_result; proto = v7_mk_object(v7); ctor_func = v7_mk_function_with_proto(v7, MyThing_ctor, proto); v7_def(v7, ctor_func, "MY_CONST", ~0, (V7_DESC_WRITABLE(0) | V7_DESC_CONFIGURABLE(0)), v7_mk_number(123)); v7_set_method(v7, proto, "myMethod", &MyThing_myMethod); v7_set(v7, v7_get_global(v7), "MyThing", ~0, ctor_func); rcode = v7_exec(v7, "\ print('MyThing.MY_CONST = ', MyThing.MY_CONST); \ var t = new MyThing(456); \ print('t.MY_CONST = ', t.MY_CONST); \ print('t.myMethod = ', t.myMethod); \ print('t.myMethod() = ', t.myMethod());", &eval_result); if (rcode != V7_OK) { fprintf(stderr, "exec error: %d\n", (int) rcode); } v7_destroy(v7); return (int) rcode; }
int main(void) { struct v7 *v7 = v7_create(); v7_val_t result; v7_set_method(v7, v7_get_global_object(v7), "sum", &js_sum); v7_exec(v7, &result, "print(sum(1.2, 3.4))"); v7_destroy(v7); return 0; }
void init_v7(void *stack_base) { struct v7_mk_opts opts; #ifdef V7_THAW opts.object_arena_size = 85; opts.function_arena_size = 16; opts.property_arena_size = 170; #else opts.object_arena_size = 164; opts.function_arena_size = 26; opts.property_arena_size = 400; #endif opts.c_stack_base = stack_base; v7 = v7_create_opt(opts); v7_set_method(v7, v7_get_global(v7), "dsleep", dsleep); v7_set_method(v7, v7_get_global(v7), "crash", crash); }
void miot_console_api_setup(struct v7 *v7) { v7_val_t console_v = v7_mk_object(v7); v7_own(v7, &console_v); v7_set_method(v7, console_v, "log", Console_log); v7_set(v7, v7_get_global(v7), "console", ~0, console_v); v7_disown(v7, &console_v); }
void sj_wifi_init(struct v7 *v7) { s_v7 = v7; s_wifi = v7_create_object(v7); v7_set_method(v7, s_wifi, "setup", sj_Wifi_setup); v7_set_method(v7, s_wifi, "connect", Wifi_connect); v7_set_method(v7, s_wifi, "disconnect", Wifi_disconnect); v7_set_method(v7, s_wifi, "status", Wifi_status); v7_set_method(v7, s_wifi, "show", Wifi_show); v7_set_method(v7, s_wifi, "ip", Wifi_ip); v7_set_method(v7, s_wifi, "changed", Wifi_changed); v7_set_method(v7, s_wifi, "scan", Wifi_scan); v7_set(v7, v7_get_global(v7), "Wifi", 4, 0, s_wifi); }
void sj_sys_js_init(struct v7 *v7) { v7_val_t sys, fs; sys = v7_mk_object(v7); v7_set(v7, v7_get_global(v7), "Sys", ~0, sys); v7_set_method(v7, sys, "prof", Sys_prof); v7_set_method(v7, sys, "reboot", Sys_reboot); v7_set_method(v7, sys, "setLogLevel", Sys_setLogLevel); v7_set_method(v7, sys, "time", Sys_time); v7_set_method(v7, sys, "wdtFeed", Sys_wdtFeed); v7_set_method(v7, sys, "wdtSetTimeout", Sys_wdtSetTimeout); v7_set_method(v7, sys, "wdtEnable", Sys_wdtEnable); v7_set_method(v7, sys, "wdtDisable", Sys_wdtDisable); fs = v7_mk_object(v7); v7_set(v7, sys, "fs", ~0, fs); v7_set_method(v7, fs, "free", Sys_fs_getFreeSpace); }
void sj_mqtt_api_setup(struct v7 *v7) { v7_val_t mqtt_proto = v7_mk_object(v7); v7_val_t mqtt_connect = v7_mk_function_with_proto(v7, sj_mqtt_connect, mqtt_proto); v7_val_t mqtt; v7_own(v7, &mqtt_connect); mqtt = v7_mk_object(v7); v7_own(v7, &mqtt); v7_set(v7, mqtt, "connect", ~0, mqtt_connect); v7_def(v7, mqtt, "proto", ~0, V7_DESC_ENUMERABLE(0), mqtt_proto); v7_set_method(v7, mqtt_proto, "publish", MQTT_publish); v7_set_method(v7, mqtt_proto, "subscribe", MQTT_subscribe); v7_set_method(v7, mqtt_proto, "on", MQTT_on); v7_set(v7, v7_get_global(v7), "MQTT", ~0, mqtt); v7_disown(v7, &mqtt); v7_disown(v7, &mqtt_connect); }
void init_updater_clubby(struct v7 *v7) { (void) v7; #ifndef DISABLE_C_CLUBBY #ifndef CS_DISABLE_JS s_v7 = v7; v7_val_t updater = v7_mk_object(v7); v7_val_t sys = v7_get(v7, v7_get_global(v7), "Sys", ~0); s_updater_notify_cb = V7_UNDEFINED; v7_own(v7, &s_updater_notify_cb); v7_def(v7, sys, "updater", ~0, V7_DESC_ENUMERABLE(0), updater); v7_set_method(v7, updater, "notify", Updater_notify); v7_set_method(v7, updater, "start", Updater_startupdate); v7_def(s_v7, updater, "GOT_REQUEST", ~0, (V7_DESC_WRITABLE(0) | V7_DESC_CONFIGURABLE(0)), v7_mk_number(v7, UJS_GOT_REQUEST)); v7_def(s_v7, updater, "COMPLETED", ~0, (V7_DESC_WRITABLE(0) | V7_DESC_CONFIGURABLE(0)), v7_mk_number(v7, UJS_COMPLETED)); v7_def(s_v7, updater, "NOTHING_TODO", ~0, (V7_DESC_WRITABLE(0) | V7_DESC_CONFIGURABLE(0)), v7_mk_number(v7, UJS_NOTHING_TODO)); v7_def(s_v7, updater, "FAILED", ~0, (V7_DESC_WRITABLE(0) | V7_DESC_CONFIGURABLE(0)), v7_mk_number(v7, UJS_ERROR)); #endif sj_clubby_register_global_command("/v1/SWUpdate.Update", handle_update_req, NULL); sj_clubby_register_global_command(clubby_cmd_ready, handle_clubby_ready, NULL); #endif }
int main(void) { enum v7_err rcode = V7_OK; struct v7 *v7 = v7_create(); v7_val_t result; v7_set_method(v7, v7_get_global(v7), "sum", &js_sum); rcode = v7_exec(v7, "print(sum(1.2, 3.4))", &result); if (rcode != V7_OK) { v7_print_error(stderr, v7, "Evaluation error", result); } v7_destroy(v7); return (int) rcode; }
void sj_wifi_api_setup(struct v7 *v7) { v7_val_t s_wifi = v7_mk_object(v7); v7_own(v7, &s_wifi); v7_set_method(v7, s_wifi, "setup", sj_Wifi_setup); v7_set_method(v7, s_wifi, "connect", Wifi_connect); v7_set_method(v7, s_wifi, "disconnect", Wifi_disconnect); v7_set_method(v7, s_wifi, "status", Wifi_status); v7_set_method(v7, s_wifi, "show", Wifi_show); v7_set_method(v7, s_wifi, "ip", Wifi_ip); v7_set_method(v7, s_wifi, "changed", Wifi_changed); v7_set_method(v7, s_wifi, "scan", Wifi_scan); v7_set_method(v7, s_wifi, "ready", Wifi_ready); v7_set(v7, v7_get_global(v7), "Wifi", ~0, s_wifi); v7_set(v7, s_wifi, "CONNECTED", ~0, v7_mk_number(v7, SJ_WIFI_CONNECTED)); v7_set(v7, s_wifi, "DISCONNECTED", ~0, v7_mk_number(v7, SJ_WIFI_DISCONNECTED)); v7_set(v7, s_wifi, "GOTIP", ~0, v7_mk_number(v7, SJ_WIFI_IP_ACQUIRED)); v7_disown(v7, &s_wifi); }
void js_init_gsm(struct v7* v7) { vm_gsm_tel_call_reg_listener(call_listener_func); v7_val_t gsm = v7_create_object(v7); v7_set(v7, v7_get_global(v7), "gsm", 3, 0, gsm); v7_set_method(v7, gsm, "call", gsm_call); v7_set_method(v7, gsm, "answer", gsm_answer); v7_set_method(v7, gsm, "hang", gsm_hang); v7_set_method(v7, gsm, "on_incoming_call", gsm_on_incoming_call); v7_set_method(v7, gsm, "text", gsm_text); v7_set_method(v7, gsm, "on_new_message", gsm_on_new_message); }
int main(void) { struct v7 *v7 = v7_create(); v7_val_t ctor_func, proto, eval_result; proto = v7_create_object(v7); ctor_func = v7_create_constructor(v7, proto, MyThing_ctor, 1); v7_set(v7, ctor_func, "MY_CONST", ~0, V7_PROPERTY_READ_ONLY | V7_PROPERTY_DONT_DELETE, v7_create_number(123)); v7_set_method(v7, proto, "myMethod", &MyThing_myMethod); v7_set(v7, v7_get_global_object(v7), "MyThing", ~0, 0, ctor_func); v7_exec(v7, &eval_result, "\ print('MyThing.MY_CONST = ', MyThing.MY_CONST); \ var t = new MyThing(456); \ print('t.MY_CONST = ', t.MY_CONST); \ print('t.myMethod = ', t.myMethod); \ print('t.myMethod() = ', t.myMethod());"); v7_destroy(v7); return 0; }
void sj_init_v7_ext(struct v7 *v7) { v7_val_t os, gc; v7_set(v7, v7_get_global_object(v7), "version", 7, 0, v7_create_string(v7, sj_version, strlen(sj_version), 1)); v7_set_method(v7, v7_get_global_object(v7), "usleep", global_usleep); v7_set_method(v7, v7_get_global_object(v7), "setTimeout", global_set_timeout); gc = v7_create_object(v7); v7_set(v7, v7_get_global_object(v7), "GC", 2, 0, gc); v7_set_method(v7, gc, "stat", GC_stat); v7_set_method(v7, gc, "gc", GC_gc); os = v7_create_object(v7); v7_set(v7, v7_get_global_object(v7), "OS", 2, 0, os); v7_set_method(v7, os, "prof", OS_prof); v7_set_method(v7, os, "wdt_feed", OS_wdt_feed); v7_set_method(v7, os, "reset", OS_reset); }
Bot::Bot(bot_manager* mgr, const char* name, const char* workDir) { _mgr = mgr; _name = name; /*_workDir = std::string(ExePath()).c_str(); _workDir += L"\\plugins\\BMP\\"; TString botNamee = name; botNamee.ToUpper(); _workDir += botNamee.GetAsWChar(); MessageBox(NULL, _workDir.GetAsChar(), "Work Dir", 0);*/ setActive(); _workDir = workDir; _workDir += L"bmp\\"; bool isScriptOk = true; if (!EnsureDirExists(_workDir.GetAsWChar())) { isScriptOk = false; } _charset.color = RGB(0xff, 0x99, 0x00); _activeBot = this; _scriptFile = _workDir.GetAsWChar(); _scriptFile += L"main.js"; if (isScriptOk && !FileExists(std::string(_scriptFile.GetAsChar()))) { TString strSay = L"BMP Plugin will not work, please put file 'main.js' into work dir. ("; strSay += _scriptFile.GetAsWChar(); strSay += L")"; //say(strSay); MessageBox(NULL, strSay.GetAsChar(), "BMP Bot Alert", 0); isScriptOk = false; } v7 = v7_create(); enum v7_err rcode = V7_OK; v7_val_t result; //events function define v7_set_method(v7, v7_get_global(v7), "on", (v7_cfunction_t*)&jsBotEvent); //utilities functions v7_set_method(v7, v7_get_global(v7), "say", (v7_cfunction_t*)&jsBotSay); v7_set_method(v7, v7_get_global(v7), "setTimeout", (v7_cfunction_t*)&jsSetTimeout); v7_set_method(v7, v7_get_global(v7), "setInterval", (v7_cfunction_t*)&jsSetInterval); v7_set_method(v7, v7_get_global(v7), "clearTimeout", (v7_cfunction_t*)&jsClearTimeout); v7_set_method(v7, v7_get_global(v7), "clearInterval", (v7_cfunction_t*)&jsClearInterval); botObj = new v7_val_t; v7_own(v7, botObj); *botObj = v7_mk_object(v7); v7_val_t botName = v7_mk_string(v7, name, ~0, 1); v7_set(v7, *botObj, "name", ~0, botName); v7_set(v7, v7_get_global(v7), "BOT", ~0, *botObj); v7_set_method(v7, *botObj, "setFontStyle", (v7_cfunction_t*)&jsBotFontStyle); v7_set_method(v7, *botObj, "load", (v7_cfunction_t*)&jsBotLoadFile); //rcode = v7_exec(v7, "var a = \"aaa\"; say(a); print(\"Yeah\");", &result); if (isScriptOk) { rcode = v7_exec_file(v7, _scriptFile.GetAsChar(), &result); if (rcode != V7_OK) { if (result == V7_SYNTAX_ERROR) MessageBox(NULL, "script fail syntax error", "Nooo", 0); else if (result == V7_EXEC_EXCEPTION) MessageBox(NULL, "script fail, exception", "Nooo", 0); else if (result == V7_EXEC_EXCEPTION) MessageBox(NULL, "script fail, exception", "Nooo", 0); else if (result == V7_AST_TOO_LARGE) MessageBox(NULL, "script fail, ast too large", "Nooo", 0); } else { v7_val_t vObj; v7_own(v7, &vObj); vObj = v7_mk_object(v7); v7Obj = &vObj; } } }
void sj_init_timers(struct v7 *v7) { v7_set_method(v7, v7_get_global(v7), "setTimeout", global_set_timeout); }
void sj_http_api_setup(struct v7 *v7) { v7_val_t Http = v7_mk_undefined(); v7_val_t URL = v7_mk_undefined(); sj_http_server_proto = v7_mk_undefined(); sj_http_response_proto = v7_mk_undefined(); sj_http_request_proto = v7_mk_undefined(); /* * All values are owned temporarily: static values like * `sj_http_server_proto` will be owned later forever, in `sj_http_init()`. * * This is needed to support freezing */ v7_own(v7, &Http); v7_own(v7, &URL); v7_own(v7, &sj_http_server_proto); v7_own(v7, &sj_http_response_proto); v7_own(v7, &sj_http_request_proto); sj_http_server_proto = v7_mk_object(v7); sj_http_response_proto = v7_mk_object(v7); sj_http_request_proto = v7_mk_object(v7); /* NOTE(lsm): setting Http to globals immediately to avoid gc-ing it */ Http = v7_mk_object(v7); v7_set(v7, v7_get_global(v7), "Http", ~0, Http); v7_set(v7, Http, "_serv", ~0, sj_http_server_proto); v7_set(v7, Http, "_resp", ~0, sj_http_response_proto); v7_set(v7, Http, "_req", ~0, sj_http_request_proto); v7_set_method(v7, Http, "createServer", Http_createServer); v7_set_method(v7, Http, "get", Http_get); v7_set_method(v7, Http, "request", Http_createClient); v7_set_method(v7, sj_http_server_proto, "listen", Http_Server_listen); /* Initialize response prototype */ v7_set_method(v7, sj_http_response_proto, "writeHead", Http_response_writeHead); v7_set_method(v7, sj_http_response_proto, "write", Http_response_write); v7_set_method(v7, sj_http_response_proto, "end", Http_response_end); v7_set_method(v7, sj_http_response_proto, "serve", Http_response_serve); /* Initialize request prototype */ v7_set_method(v7, sj_http_request_proto, "write", Http_request_write); v7_set_method(v7, sj_http_request_proto, "end", Http_request_end); v7_set_method(v7, sj_http_request_proto, "abort", Http_request_abort); v7_set_method(v7, sj_http_request_proto, "setTimeout", Http_request_set_timeout); URL = v7_mk_object(v7); v7_set(v7, v7_get_global(v7), "URL", ~0, URL); v7_set_method(v7, URL, "parse", URL_parse); v7_disown(v7, &sj_http_request_proto); v7_disown(v7, &sj_http_response_proto); v7_disown(v7, &sj_http_server_proto); v7_disown(v7, &URL); v7_disown(v7, &Http); }
ICACHE_FLASH_ATTR void init_v7() { struct v7_create_opts opts; v7_val_t wifi, gpio, dht11, gc, debug; opts.object_arena_size = 94; opts.function_arena_size = 17; opts.property_arena_size = 340; v7 = v7_create_opt(opts); v7_set_method(v7, v7_get_global_object(v7), "usleep", usleep); v7_set_method(v7, v7_get_global_object(v7), "setTimeout", set_timeout); gpio = v7_create_object(v7); v7_set(v7, v7_get_global_object(v7), "GPIO", 4, 0, gpio); v7_set_method(v7, gpio, "in", GPIO_in); v7_set_method(v7, gpio, "out", GPIO_out); wifi = v7_create_object(v7); v7_set(v7, v7_get_global_object(v7), "Wifi", 4, 0, wifi); v7_set_method(v7, wifi, "setup", Wifi_setup); v7_set_method(v7, wifi, "disconnect", Wifi_disconnect); v7_set_method(v7, wifi, "connect", Wifi_connect); v7_set_method(v7, wifi, "status", Wifi_status); v7_set_method(v7, wifi, "ip", Wifi_ip); v7_set(v7, wifi, "STATION", 7, 0, v7_create_number(0)); v7_set(v7, wifi, "SOFTAP", 6, 0, v7_create_number(1)); #if V7_ESP_ENABLE__DHT11 dht11 = v7_create_object(v7); v7_set(v7, v7_get_global_object(v7), "DHT11", 5, 0, dht11); v7_set_method(v7, dht11, "read", DHT11_read); #endif /* V7_ESP_ENABLE__DHT11 */ gc = v7_create_object(v7); v7_set(v7, v7_get_global_object(v7), "GC", 2, 0, gc); v7_set_method(v7, gc, "stat", GC_stat); v7_set_method(v7, gc, "collect", GC_collect); debug = v7_create_object(v7); v7_set(v7, v7_get_global_object(v7), "Debug", 5, 0, debug); v7_set_method(v7, debug, "setOutput", Debug_set_output); v7_set_method(v7, debug, "print", Debug_print); v7_init_http_client(v7); }