diff --git a/src/adxl335/adxl335.cxx b/src/adxl335/adxl335.cxx index 7bffb7ad..8391d0ae 100644 --- a/src/adxl335/adxl335.cxx +++ b/src/adxl335/adxl335.cxx @@ -72,6 +72,15 @@ void ADXL335::values(int *xVal, int *yVal, int *zVal) *zVal = mraa_aio_read(m_aioZ); } +#ifdef SWIGJAVA +int *ADXL335::values() +{ + int *v = new int[3]; + values(&v[0], &v[1], &v[2]); + return v; +} +#endif + void ADXL335::acceleration(float *xAccel, float *yAccel, float *zAccel) { int x, y, z; @@ -87,6 +96,15 @@ void ADXL335::acceleration(float *xAccel, float *yAccel, float *zAccel) *zAccel = (zVolts - m_zeroZ) / ADXL335_SENSITIVITY; } +#ifdef SWIGJAVA +float *ADXL335::acceleration() +{ + float *v = new float[3]; + acceleration(&v[0], &v[1], &v[2]); + return v; +} +#endif + void ADXL335::calibrate() { // make sure the sensor is still before running calibration. diff --git a/src/adxl335/adxl335.h b/src/adxl335/adxl335.h index 8cef1a85..e7671da2 100644 --- a/src/adxl335/adxl335.h +++ b/src/adxl335/adxl335.h @@ -105,6 +105,15 @@ namespace upm { */ void values(int *xVal, int *yVal, int *zVal); +#ifdef SWIGJAVA + /** + * Gets the analog values for the 3 axes + * + * @return Array containing value of X, Y, Z axes + */ + int *values(); +#endif + /** * Gets the acceleration along all 3 axes * @@ -114,6 +123,15 @@ namespace upm { */ void acceleration(float *xAccel, float *yAccel, float *zAccel); +#ifdef SWIGJAVA + /** + * Gets the acceleration along all 3 axes + * + * @return Array containing acceleration on X, Y, Z axes + */ + float *acceleration(); +#endif + /** * While the sensor is still, measures the X-axis, Y-axis, and Z-axis * values and uses those values as the zero values. diff --git a/src/adxl335/javaupm_adxl335.i b/src/adxl335/javaupm_adxl335.i index b809932d..5fd3be16 100644 --- a/src/adxl335/javaupm_adxl335.i +++ b/src/adxl335/javaupm_adxl335.i @@ -10,4 +10,34 @@ #include "adxl335.h" %} +%typemap(jni) float* "jfloatArray" +%typemap(jstype) float* "float[]" +%typemap(jtype) float* "float[]" + +%typemap(javaout) float* { + return $jnicall; +} + +%typemap(out) float *acceleration { + $result = JCALL1(NewFloatArray, jenv, 3); + JCALL4(SetFloatArrayRegion, jenv, $result, 0, 3, $1); +} + +%typemap(jni) int* "jintArray" +%typemap(jstype) int* "int[]" +%typemap(jtype) int* "int[]" + +%typemap(javaout) int* { + return $jnicall; +} + +%typemap(out) int *values { + $result = JCALL1(NewIntArray, jenv, 3); + JCALL4(SetIntArrayRegion, jenv, $result, 0, 3, (const signed int*)$1); + delete [] $1; +} + +%ignore values(int *, int *, int *); +%ignore acceleration(float *, float *, float *); + %include "adxl335.h" diff --git a/src/upm.i b/src/upm.i index 67bceeaa..04fc1e0c 100644 --- a/src/upm.i +++ b/src/upm.i @@ -9,6 +9,7 @@ %apply int { speed_t }; %apply int { mraa_result_t }; + %apply int { mraa::Result }; #endif #if (SWIG_JAVASCRIPT_V8)