Hello
I have made the following minimal code to read Android sensors
it looks to work even if sensor data are sometime wrong and
ALooper_pollAll seems to go in timeout
I have a problem with the sensor time
in android sensor.h it is defined as a 64bit, Nanoseconds from a ("date")
I read this value with J as two 32bit integers
eTimeN =: memr event,16,1,4
eTimeS =: memr event,20,1,4
is it possible to read it as a 64bit ? or can I cast the two 32Bit into a
64 bit J value ?
Thanks in advance
Paolo
Code:
require 'dll'
smgr =: 'libandroid.so ASensorManager_getInstance > x ' cd ''
looper =: 'libandroid.so ALooper_forThread > x i' cd < 0
Ident =: 3
ASENSOR_TYPE_ACCELEROMETER =: 1
ASENSOR_TYPE_MAGNETIC_FIELD =: 2
ASENSOR_TYPE_GYROSCOPE =: 4
ASENSOR_TYPE_LIGHT =: 5
ASENSOR_TYPE_PROXIMITY =: 8
sensorId =: 4
queue =: 'libandroid.so ASensorManager_createEventQueue > x x x i x x ' cd
smgr; looper ; Ident;(0);(0)
sensor=: 'libandroid.so ASensorManager_getDefaultSensor > x x i' cd smgr;
sensorId
eventRate =: 'libandroid.so ASensor_getMinDelay > i x ' cd < sensor
er1 =: 'libandroid.so ASensorEventQueue_registerSensor > i x x i i ' cd
queue ; sensor;eventRate;eventRate
er3 =: 'libandroid.so ASensorEventQueue_enableSensor > i x x ' cd queue ;
sensor
er2 =: 'libandroid.so ASensorEventQueue_setEventRate > i x x i ' cd queue ;
sensor; eventRate
event =: mema 104 + 152
numEvent =: 1
data3ax =: _1
getsnsr =: verb define
for. i. 30 do.
idntLoop =: 'libandroid.so ALooper_pollAll > i i x x x ' cd 1000;0;0;0
evtRead =: 'libandroid.so ASensorEventQueue_getEvents > i x x i ' cd
queue;event; numEvent
if. evtRead > 0 do.
evtVers =: memr event, 0,1,4
evtSens =: memr event, 4,1,4
evtType =: memr event, 8,1,4
eTimeN =: memr event,16,1,4
eTimeS =: memr event,20,1,4
data3raw =: memr event,24,3,4 NB. sensor values
data3bin =: 2 ic data3raw
data3ax =: _1 fc data3bin NB. J floating point
break.
end.
end.
)
getsnsr 0
memf event
'libandroid.so ASensorEventQueue_disableSensor > n x x ' cd queue ; senor
'libandroid.so ASensorManager_destroyEventQueue > n x x ' cd smgr ; queue
'libandroid.so ALooper_release > n x ' cd < looper
cdf ''
--
We are made of star dust
(Carl Sagan)
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm