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

Commit d4db70a7 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: I3abc3ddc7c6adc4b32a40b9a43f2a94c5af7b2b0
Signed-off-by: default avatarBen Fennema <fennema@google.com>
parent 804339a5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ public:
    virtual sp<ISensorEventConnection> createSensorEventConnection(const String8& packageName,
             int mode, const String16& opPackageName) = 0;
    virtual int32_t isDataInjectionEnabled() = 0;
    virtual status_t  setSensorPhysicalData(const char* physicaldata) = 0;
};

// ----------------------------------------------------------------------------
+1 −1
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ public:
    Sensor const* getDefaultSensor(int type);
    sp<SensorEventQueue> createEventQueue(String8 packageName = String8(""), int mode = 0);
    bool isDataInjectionEnabled();

    bool SetPhysicalData(const char* data);
private:
    // DeathRecipient interface
    void sensorManagerDied();
+20 −1
Original line number Diff line number Diff line
@@ -35,7 +35,8 @@ namespace android {
enum {
    GET_SENSOR_LIST = IBinder::FIRST_CALL_TRANSACTION,
    CREATE_SENSOR_EVENT_CONNECTION,
    ENABLE_DATA_INJECTION
    ENABLE_DATA_INJECTION,
    SET_SENSOR_PHYSICAL_DATA,
};

class BpSensorServer : public BpInterface<ISensorServer>
@@ -83,6 +84,16 @@ public:
        remote()->transact(ENABLE_DATA_INJECTION, data, &reply);
        return reply.readInt32();
    }

    virtual status_t setSensorPhysicalData(const char* physicaldata)
    {
        Parcel data, reply;
        //ALOGD("ISensorManager::SetSensorPhysicalData(%s)",physicaldata);
        data.writeInterfaceToken(ISensorServer::getInterfaceDescriptor());
        data.writeCString(physicaldata);
        remote()->transact(SET_SENSOR_PHYSICAL_DATA, data, &reply);
        return reply.readInt32();
     }
};

// Out-of-line virtual method definition to trigger vtable emission in this
@@ -124,6 +135,14 @@ status_t BnSensorServer::onTransact(
            reply->writeInt32(static_cast<int32_t>(ret));
            return NO_ERROR;
        }
        case SET_SENSOR_PHYSICAL_DATA: {
            CHECK_INTERFACE(ISensorServer, data, reply);
            const char* physicaldata = data.readCString();
            //ALOGD("ISensorManager, BnSensorServer::onTransact, physicaldata is: (%s)",physicaldata);
            status_t result = setSensorPhysicalData(physicaldata);
            reply->writeInt32(result);
            return NO_ERROR;
        }
    }
    return BBinder::onTransact(code, data, reply, flags);
}
+17 −0
Original line number Diff line number Diff line
@@ -227,5 +227,22 @@ bool SensorManager::isDataInjectionEnabled() {
    return false;
}

bool SensorManager::SetPhysicalData(const char* data)
{
    status_t reply;
    //ALOGD("SensorManager::SetPhysicalData(%s)",data);

    reply = mSensorServer->setSensorPhysicalData(data);

    if(reply == NO_ERROR)
    {
        return true;
    }
    else
    {
        return false;
    }
}

// ----------------------------------------------------------------------------
}; // namespace android
+15 −0
Original line number Diff line number Diff line
@@ -407,6 +407,21 @@ status_t SensorDevice::setMode(uint32_t mode) {
     return mSensorModule->set_operation_mode(mode);
}

status_t SensorDevice::setSensorPhysicalData(const char* physicaldata)
{
    //ALOGD("SensorDevice::setSensorPhysicalData(%s)",physicaldata);
    Mutex::Autolock _l(mLock);
    if((mSensorModule->set_sensor_physical_data == NULL) || (getHalDeviceVersion() < SENSORS_DEVICE_API_VERSION_1_3_5))
    {
        return NO_INIT;
    }
    else
    {
        return mSensorModule->set_sensor_physical_data(physicaldata);
    }
}


// ---------------------------------------------------------------------------

int SensorDevice::Info::numActiveClients() {
Loading