#include "gpio.h"
#include <stdexcept>
+#if defined(SWIGJAVASCRIPT)
+ #if NODE_MODULE_VERSION >= 0x000D
+ #include <uv.h>
+ #endif
+#endif
+
namespace mraa {
// These enums must match the enums in gpio.h
static void v8isr(uv_work_t* req, int status) {
mraa::Gpio *This = (mraa::Gpio *)req->data;
int argc = 1;
- v8::Local<v8::Value> argv[] = { v8::Integer::New(-1) };
- This->m_v8isr->Call(v8::Context::GetCurrent()->Global(), argc, argv);
+ v8::Local<v8::Value> argv[] = { SWIGV8_INTEGER_NEW(-1) };
+#if NODE_MODULE_VERSION >= 0x000D
+ v8::Local<v8::Function> f = v8::Local<v8::Function>::New(v8::Isolate::GetCurrent(), This->m_v8isr);
+ f->Call(SWIGV8_CURRENT_CONTEXT()->Global(), argc, argv);
+#else
+ This->m_v8isr->Call(SWIGV8_CURRENT_CONTEXT()->Global(), argc, argv);
+#endif
delete req;
}
}
mraa_result_t isr(Edge mode, v8::Handle<v8::Function> func) {
+#if NODE_MODULE_VERSION >= 0x000D
+ m_v8isr.Reset(v8::Isolate::GetCurrent(), func);
+#else
m_v8isr = v8::Persistent<v8::Function>::New(func);
+#endif
return mraa_gpio_isr(m_gpio, (gpio_edge_t) mode, &uvwork, this);
}
#else
*/
mraa_result_t isrExit() {
#if defined(SWIGJAVASCRIPT)
+ #if NODE_MODULE_VERSION >= 0x000D
+ m_v8isr.Reset();
+ #else
m_v8isr.Dispose();
+ m_v8isr.Clear();
+ #endif
#endif
return mraa_gpio_isr_exit(m_gpio);
}
%module (docstring="Javascript interface to libmraa") mraa
%feature("autodoc", "3");
+#define NODE012
%include carrays.i
%include cpointer.i
class Spi;
%typemap(out) uint8_t*
{
+#ifdef NODE012
+ $result = node::Buffer::New((char*) $1, arg3);
+#else
$result = node::Buffer::New((char*) $1, arg3)->handle_;
+#endif
}
}
$2 = x;
if ($2 < 0) {
SWIG_exception_fail(SWIG_ERROR, "Positive integer expected");
- SWIGV8_RETURN(v8::Undefined());
+ SWIGV8_RETURN(SWIGV8_UNDEFINED());
}
$1 = (uint8_t*) malloc($2 * sizeof(uint8_t));
}
if (result < 0) { /* Check for I/O error */
free($1);
SWIG_exception_fail(SWIG_ERROR, "I2c write failed");
- SWIGV8_RETURN(v8::Undefined());
+ SWIGV8_RETURN(SWIGV8_UNDEFINED());
}
+#ifdef NODE012
+ $result = node::Buffer::New((char*) $1, result);
+#else
$result = node::Buffer::New((char*) $1, result)->handle_;
+#endif
free($1);
}