Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ad751696 authored by Jani Suonpera's avatar Jani Suonpera Committed by Ben Fennema
Browse files

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: default avatarBen Fennema <fennema@google.com>
parent 52bdf115
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -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);
}
+8 −0
Original line number Diff line number Diff line
@@ -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
+15 −0
Original line number Diff line number Diff line
@@ -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[] = {