iotjs_bufferwrap_t* iotjs_bufferwrap_from_jbuiltin( const iotjs_jval_t* jbuiltin) { IOTJS_ASSERT(iotjs_jval_is_object(jbuiltin)); iotjs_bufferwrap_t* buffer = (iotjs_bufferwrap_t*)iotjs_jval_get_object_native_handle(jbuiltin); IOTJS_ASSERT(buffer != NULL); return buffer; }
// A client socket wants to connect to this server. // Parameters: // * uv_stream_t* handle - server handle // * int status - status code static void OnConnection(uv_stream_t* handle, int status) { // Server tcp wrapper. iotjs_tcpwrap_t* tcp_wrap = iotjs_tcpwrap_from_handle((uv_tcp_t*)handle); // Tcp object jerry_value_t jtcp = iotjs_tcpwrap_jobject(tcp_wrap); // `onconnection` callback. jerry_value_t jonconnection = iotjs_jval_get_property(jtcp, IOTJS_MAGIC_STRING_ONCONNECTION); IOTJS_ASSERT(jerry_value_is_function(jonconnection)); // The callback takes two parameter // [0] status // [1] client tcp object iotjs_jargs_t args = iotjs_jargs_create(2); iotjs_jargs_append_number(&args, status); if (status == 0) { // Create client socket handle wrapper. jerry_value_t jcreate_tcp = iotjs_jval_get_property(jtcp, IOTJS_MAGIC_STRING_CREATETCP); IOTJS_ASSERT(jerry_value_is_function(jcreate_tcp)); jerry_value_t jclient_tcp = iotjs_jhelper_call_ok(jcreate_tcp, jerry_create_undefined(), iotjs_jargs_get_empty()); IOTJS_ASSERT(jerry_value_is_object(jclient_tcp)); iotjs_tcpwrap_t* tcp_wrap_client = (iotjs_tcpwrap_t*)(iotjs_jval_get_object_native_handle(jclient_tcp)); uv_stream_t* client_handle = (uv_stream_t*)(iotjs_tcpwrap_tcp_handle(tcp_wrap_client)); int err = uv_accept(handle, client_handle); if (err) { iotjs_jargs_destroy(&args); return; } iotjs_jargs_append_jval(&args, jclient_tcp); jerry_release_value(jcreate_tcp); jerry_release_value(jclient_tcp); } iotjs_make_callback(jonconnection, jtcp, &args); jerry_release_value(jonconnection); iotjs_jargs_destroy(&args); }
iotjs_bufferwrap_t* iotjs_bufferwrap_create(const iotjs_jval_t* jbuiltin, size_t length) { iotjs_bufferwrap_t* bufferwrap = IOTJS_ALLOC(iotjs_bufferwrap_t); IOTJS_VALIDATED_STRUCT_CONSTRUCTOR(iotjs_bufferwrap_t, bufferwrap); iotjs_jobjectwrap_initialize(&_this->jobjectwrap, jbuiltin, &this_module_native_info); if (length > 0) { _this->length = length; _this->buffer = iotjs_buffer_allocate(length); IOTJS_ASSERT(_this->buffer != NULL); } else { _this->length = 0; _this->buffer = NULL; } IOTJS_ASSERT( bufferwrap == (iotjs_bufferwrap_t*)(iotjs_jval_get_object_native_handle(jbuiltin))); return bufferwrap; }
iotjs_spi_t* iotjs_spi_get_instance(const iotjs_jval_t* jspi) { uintptr_t handle = iotjs_jval_get_object_native_handle(jspi); return (iotjs_spi_t*)(handle); }
static iotjs_pwm_t* iotjs_pwm_instance_from_jval(const iotjs_jval_t* jpwm) { uintptr_t handle = iotjs_jval_get_object_native_handle(jpwm); return (iotjs_pwm_t*)handle; }
static iotjs_adc_t* iotjs_adc_instance_from_jval(const iotjs_jval_t* jadc) { uintptr_t handle = iotjs_jval_get_object_native_handle(jadc); return (iotjs_adc_t*)handle; }