Loading sensors/common/default/2.X/Sensor.cpp +15 −10 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } Loading Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading sensors/common/default/2.X/Sensor.h +8 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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(); Loading Loading @@ -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 { Loading @@ -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 { Loading Loading
sensors/common/default/2.X/Sensor.cpp +15 −10 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } Loading Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading
sensors/common/default/2.X/Sensor.h +8 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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(); Loading Loading @@ -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 { Loading @@ -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 { Loading