java: fix Java return types in ADXL355

Signed-off-by: Petre <petre.p.eftime@intel.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
This commit is contained in:
Petre 2015-08-26 18:27:48 +03:00 committed by Mihai Tudor Panu
parent 2455938691
commit 4f30959a43
4 changed files with 67 additions and 0 deletions

View File

@ -72,6 +72,15 @@ void ADXL335::values(int *xVal, int *yVal, int *zVal)
*zVal = mraa_aio_read(m_aioZ); *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) void ADXL335::acceleration(float *xAccel, float *yAccel, float *zAccel)
{ {
int x, y, z; int x, y, z;
@ -87,6 +96,15 @@ void ADXL335::acceleration(float *xAccel, float *yAccel, float *zAccel)
*zAccel = (zVolts - m_zeroZ) / ADXL335_SENSITIVITY; *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() void ADXL335::calibrate()
{ {
// make sure the sensor is still before running calibration. // make sure the sensor is still before running calibration.

View File

@ -105,6 +105,15 @@ namespace upm {
*/ */
void values(int *xVal, int *yVal, int *zVal); 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 * Gets the acceleration along all 3 axes
* *
@ -114,6 +123,15 @@ namespace upm {
*/ */
void acceleration(float *xAccel, float *yAccel, float *zAccel); 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 * While the sensor is still, measures the X-axis, Y-axis, and Z-axis
* values and uses those values as the zero values. * values and uses those values as the zero values.

View File

@ -10,4 +10,34 @@
#include "adxl335.h" #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" %include "adxl335.h"

View File

@ -9,6 +9,7 @@
%apply int { speed_t }; %apply int { speed_t };
%apply int { mraa_result_t }; %apply int { mraa_result_t };
%apply int { mraa::Result };
#endif #endif
#if (SWIG_JAVASCRIPT_V8) #if (SWIG_JAVASCRIPT_V8)