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

Commit e07fd9fc authored by Hsin-Yi Chen's avatar Hsin-Yi Chen Committed by Gerrit Code Review
Browse files

Merge "Set default value for pressure sensor"

parents cd563ba0 eac1775c
Loading
Loading
Loading
Loading
+15 −10
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ namespace sensors {
namespace V2_X {
namespace implementation {

using ::android::hardware::sensors::V1_0::EventPayload;
using ::android::hardware::sensors::V1_0::MetaDataEventType;
using ::android::hardware::sensors::V1_0::OperationMode;
using ::android::hardware::sensors::V1_0::Result;
@@ -133,20 +134,13 @@ bool Sensor::isWakeUpSensor() {
}

std::vector<Event> Sensor::readEvents() {
    // For an accelerometer sensor type, default the z-direction
    // value to -9.8
    float zValue = (mSensorInfo.type == SensorType::ACCELEROMETER)
        ? -9.8 : 0.0;

    std::vector<Event> events;
    Event event;
    event.sensorHandle = mSensorInfo.sensorHandle;
    event.sensorType = mSensorInfo.type;
    event.timestamp = ::android::elapsedRealtimeNano();
    event.u.vec3.x = 0;
    event.u.vec3.y = 0;
    event.u.vec3.z = zValue;
    event.u.vec3.status = SensorStatus::ACCURACY_HIGH;
    memset(&event.u, 0, sizeof(event.u));
    readEventPayload(event.u);
    events.push_back(event);
    return events;
}
@@ -194,7 +188,7 @@ std::vector<Event> OnChangeSensor::readEvents() {

    for (auto iter = events.begin(); iter != events.end(); ++iter) {
        Event ev = *iter;
        if (ev.u.vec3 != mPreviousEvent.u.vec3 || !mPreviousEventSet) {
        if (!mPreviousEventSet || memcmp(&mPreviousEvent.u, &ev.u, sizeof(ev.u)) != 0) {
            outputEvents.push_back(ev);
            mPreviousEvent = ev;
            mPreviousEventSet = true;
@@ -221,6 +215,13 @@ AccelSensor::AccelSensor(int32_t sensorHandle, ISensorsEventCallback* callback)
    mSensorInfo.flags = static_cast<uint32_t>(SensorFlagBits::DATA_INJECTION);
};

void AccelSensor::readEventPayload(EventPayload& payload) {
    payload.vec3.x = 0;
    payload.vec3.y = 0;
    payload.vec3.z = -9.8;
    payload.vec3.status = SensorStatus::ACCURACY_HIGH;
}

PressureSensor::PressureSensor(int32_t sensorHandle, ISensorsEventCallback* callback)
    : Sensor(callback) {
    mSensorInfo.sensorHandle = sensorHandle;
@@ -240,6 +241,10 @@ PressureSensor::PressureSensor(int32_t sensorHandle, ISensorsEventCallback* call
    mSensorInfo.flags = 0;
};

void PressureSensor::readEventPayload(EventPayload& payload) {
    payload.scalar = 1013.25f;
}

MagnetometerSensor::MagnetometerSensor(int32_t sensorHandle, ISensorsEventCallback* callback)
    : Sensor(callback) {
    mSensorInfo.sensorHandle = sensorHandle;
+8 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ class Sensor {
    using OperationMode = ::android::hardware::sensors::V1_0::OperationMode;
    using Result = ::android::hardware::sensors::V1_0::Result;
    using Event = ::android::hardware::sensors::V2_1::Event;
    using EventPayload = ::android::hardware::sensors::V1_0::EventPayload;
    using SensorInfo = ::android::hardware::sensors::V2_1::SensorInfo;
    using SensorType = ::android::hardware::sensors::V2_1::SensorType;

@@ -65,6 +66,7 @@ class Sensor {
  protected:
    void run();
    virtual std::vector<Event> readEvents();
    virtual void readEventPayload(EventPayload&) {}
    static void startThread(Sensor* sensor);

    bool isWakeUpSensor();
@@ -101,6 +103,9 @@ class OnChangeSensor : public Sensor {
class AccelSensor : public Sensor {
  public:
    AccelSensor(int32_t sensorHandle, ISensorsEventCallback* callback);

  protected:
    virtual void readEventPayload(EventPayload& payload) override;
};

class GyroSensor : public Sensor {
@@ -116,6 +121,9 @@ class AmbientTempSensor : public OnChangeSensor {
class PressureSensor : public Sensor {
  public:
    PressureSensor(int32_t sensorHandle, ISensorsEventCallback* callback);

  protected:
    virtual void readEventPayload(EventPayload& payload) override;
};

class MagnetometerSensor : public Sensor {