DO NOT MERGE ANYWHERE Add new interface for sensor physical data

This is special solution only for emerald branch.

Changes including new const char* value/interface for sensor physical data. Sensor service and manager does not take care of content, structure or other
details of string. Sensor HAL is taking care of parsing data from string and setting values to Sensor HW.

Change-Id: Id19226d7d3ac0628488a0f005f2b1c44bafcf9b6
Signed-off-by: Ben Fennema <fennema@google.com>
This commit is contained in:
Jani Suonpera
2015-10-09 11:59:19 +03:00
committed by Ben Fennema
parent 52bdf11583
commit ad75169628
3 changed files with 46 additions and 0 deletions

View File

@@ -1684,4 +1684,27 @@ public abstract class SensorManager {
}
return delay;
}
/**
* Send configuration string to Sensor HAL.
*
* @param data String which includes sensor physical data.
* Sensor HAL is taking care of parsing data from string and
* setting values to Sensor HW.
*
* @return true if successfully send to HAL.
*/
/**
* @hide
*/
public boolean SetPhysicalData(String data)
{
//Log.d(TAG, "SensorManager.SetPhysicalData(" + data + ")");
return SetPhysicalDataImpl(data);
}
/**
* @hide
*/
protected abstract boolean SetPhysicalDataImpl(String data);
}

View File

@@ -45,6 +45,7 @@ public class SystemSensorManager extends SensorManager {
private static native boolean nativeGetSensorAtIndex(long nativeInstance,
Sensor sensor, int index);
private static native boolean nativeIsDataInjectionEnabled(long nativeInstance);
private static native boolean nativeSetPhysicalData(long nativeInstance, String data);
private static boolean sSensorModuleInitialized = false;
private static InjectEventQueue mInjectEventQueue = null;
@@ -274,6 +275,13 @@ public class SystemSensorManager extends SensorManager {
}
}
@Override
protected boolean SetPhysicalDataImpl(String data)
{
//Log.d(TAG, "SystemSensorManager.SetPhysicalDataImpl(" + data + ")");
return nativeSetPhysicalData(mNativeInstance,data);
}
/*
* BaseEventQueue is the communication channel with the sensor service,
* SensorEventQueue, TriggerEventQueue are subclases and there is one-to-one mapping between

View File

@@ -185,6 +185,18 @@ static jboolean nativeIsDataInjectionEnabled(JNIEnv *_env, jclass _this, jlong s
return mgr->isDataInjectionEnabled();
}
static jboolean nativeSetPhysicalData(JNIEnv *env, jclass clazz,jlong sensorManager, jstring javaString)
{
SensorManager* mgr = reinterpret_cast<SensorManager*>(sensorManager);
const char *nativeString = env->GetStringUTFChars(javaString, JNI_FALSE);
bool return_value;
//ALOGD("android_hardware_SensorManager, call JNI function nativeSetPhysicalData(%s)",nativeString);
return_value = mgr->SetPhysicalData(nativeString);
env->ReleaseStringUTFChars(javaString, nativeString);
return return_value;
}
//----------------------------------------------------------------------------
class Receiver : public LooperCallback {
@@ -358,6 +370,9 @@ static JNINativeMethod gSystemSensorManagerMethods[] = {
{"nativeIsDataInjectionEnabled",
"(J)Z",
(void*)nativeIsDataInjectionEnabled},
{"nativeSetPhysicalData",
"(JLjava/lang/String;)Z",
(void*)nativeSetPhysicalData },
};
static JNINativeMethod gBaseEventQueueMethods[] = {