// used in iotjs_module_udp.cpp void AddressToJS(jerry_value_t obj, const sockaddr* addr) { char ip[INET6_ADDRSTRLEN]; const sockaddr_in* a4; const sockaddr_in6* a6; int port; switch (addr->sa_family) { case AF_INET6: { a6 = (const sockaddr_in6*)(addr); uv_inet_ntop(AF_INET6, &a6->sin6_addr, ip, sizeof ip); port = ntohs(a6->sin6_port); iotjs_jval_set_property_string_raw(obj, IOTJS_MAGIC_STRING_ADDRESS, ip); iotjs_jval_set_property_string_raw(obj, IOTJS_MAGIC_STRING_FAMILY, IOTJS_MAGIC_STRING_IPV6); iotjs_jval_set_property_number(obj, IOTJS_MAGIC_STRING_PORT, port); break; } case AF_INET: { a4 = (const sockaddr_in*)(addr); uv_inet_ntop(AF_INET, &a4->sin_addr, ip, sizeof ip); port = ntohs(a4->sin_port); iotjs_jval_set_property_string_raw(obj, IOTJS_MAGIC_STRING_ADDRESS, ip); iotjs_jval_set_property_string_raw(obj, IOTJS_MAGIC_STRING_FAMILY, IOTJS_MAGIC_STRING_IPV4); iotjs_jval_set_property_number(obj, IOTJS_MAGIC_STRING_PORT, port); break; } default: { iotjs_jval_set_property_string_raw(obj, IOTJS_MAGIC_STRING_ADDRESS, ""); break; } } }
jerry_value_t InitProcess() { jerry_value_t process = jerry_create_object(); iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_COMPILE, Compile); iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_COMPILEMODULE, CompileModule); iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_READSOURCE, ReadSource); iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_CWD, Cwd); iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_CHDIR, Chdir); iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_DEBUGGERGETSOURCE, DebuggerGetSource); iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_DOEXIT, DoExit); SetProcessEnv(process); // process.builtin_modules jerry_value_t builtin_modules = jerry_create_object(); SetBuiltinModules(builtin_modules); iotjs_jval_set_property_jval(process, IOTJS_MAGIC_STRING_BUILTIN_MODULES, builtin_modules); jerry_release_value(builtin_modules); // process.platform iotjs_jval_set_property_string_raw(process, IOTJS_MAGIC_STRING_PLATFORM, TARGET_OS); // process.arch iotjs_jval_set_property_string_raw(process, IOTJS_MAGIC_STRING_ARCH, TARGET_ARCH); // process.version iotjs_jval_set_property_string_raw(process, IOTJS_MAGIC_STRING_VERSION, IOTJS_VERSION); // Set iotjs SetProcessIotjs(process); bool wait_source; if (iotjs_environment_config(iotjs_environment_get())->debugger != NULL) { wait_source = iotjs_environment_config(iotjs_environment_get()) ->debugger->wait_source; } else { wait_source = false; } if (!wait_source) { SetProcessArgv(process); } jerry_value_t wait_source_val = jerry_create_boolean(wait_source); iotjs_jval_set_property_jval(process, IOTJS_MAGIC_STRING_DEBUGGERWAITSOURCE, wait_source_val); jerry_release_value(wait_source_val); return process; }
static void SetProcessIotjs(jerry_value_t process) { // IoT.js specific jerry_value_t iotjs = jerry_create_object(); iotjs_jval_set_property_jval(process, IOTJS_MAGIC_STRING_IOTJS, iotjs); iotjs_jval_set_property_string_raw(iotjs, IOTJS_MAGIC_STRING_BOARD, TOSTRING(TARGET_BOARD)); jerry_release_value(iotjs); }
static void SetProcessEnv(jerry_value_t process) { const char *homedir, *iotjspath, *iotjsenv, *extra_module_path; homedir = getenv(IOTJS_MAGIC_STRING_HOME_U); if (homedir == NULL) { homedir = ""; } iotjspath = getenv(IOTJS_MAGIC_STRING_IOTJS_PATH_U); if (iotjspath == NULL) { #if defined(__NUTTX__) || defined(__TIZENRT__) iotjspath = "/mnt/sdcard"; #else iotjspath = ""; #endif } #if defined(EXPERIMENTAL) iotjsenv = "experimental"; #else iotjsenv = ""; #endif extra_module_path = getenv(IOTJS_MAGIC_STRING_IOTJS_EXTRA_MODULE_PATH_U); jerry_value_t env = jerry_create_object(); iotjs_jval_set_property_string_raw(env, IOTJS_MAGIC_STRING_HOME_U, homedir); iotjs_jval_set_property_string_raw(env, IOTJS_MAGIC_STRING_IOTJS_PATH_U, iotjspath); iotjs_jval_set_property_string_raw(env, IOTJS_MAGIC_STRING_IOTJS_ENV_U, iotjsenv); iotjs_jval_set_property_string_raw( env, IOTJS_MAGIC_STRING_IOTJS_EXTRA_MODULE_PATH_U, extra_module_path ? extra_module_path : ""); iotjs_jval_set_property_jval(process, IOTJS_MAGIC_STRING_ENV, env); jerry_release_value(env); }