summaryrefslogtreecommitdiffstats
path: root/hal/gonk/SensorsTypes.h
diff options
context:
space:
mode:
Diffstat (limited to 'hal/gonk/SensorsTypes.h')
-rw-r--r--hal/gonk/SensorsTypes.h140
1 files changed, 140 insertions, 0 deletions
diff --git a/hal/gonk/SensorsTypes.h b/hal/gonk/SensorsTypes.h
new file mode 100644
index 000000000..35c852f5a
--- /dev/null
+++ b/hal/gonk/SensorsTypes.h
@@ -0,0 +1,140 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=2 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef hal_gonk_SensorsTypes_h
+#define hal_gonk_SensorsTypes_h
+
+namespace mozilla {
+namespace hal {
+
+enum SensorsDeliveryMode {
+ SENSORS_DELIVERY_MODE_BEST_EFFORT,
+ SENSORS_DELIVERY_MODE_IMMEDIATE
+};
+
+enum SensorsError {
+ SENSORS_ERROR_NONE,
+ SENSORS_ERROR_FAIL,
+ SENSORS_ERROR_NOT_READY,
+ SENSORS_ERROR_NOMEM,
+ SENSORS_ERROR_BUSY,
+ SENSORS_ERROR_DONE,
+ SENSORS_ERROR_UNSUPPORTED,
+ SENSORS_ERROR_PARM_INVALID
+};
+
+enum SensorsStatus {
+ SENSORS_STATUS_NO_CONTACT,
+ SENSORS_STATUS_UNRELIABLE,
+ SENSORS_STATUS_ACCURACY_LOW,
+ SENSORS_STATUS_ACCURACY_MEDIUM,
+ SENSORS_STATUS_ACCURACY_HIGH
+};
+
+enum SensorsTriggerMode {
+ SENSORS_TRIGGER_MODE_CONTINUOUS,
+ SENSORS_TRIGGER_MODE_ON_CHANGE,
+ SENSORS_TRIGGER_MODE_ONE_SHOT,
+ SENSORS_TRIGGER_MODE_SPECIAL
+};
+
+enum SensorsType {
+ SENSORS_TYPE_ACCELEROMETER,
+ SENSORS_TYPE_GEOMAGNETIC_FIELD,
+ SENSORS_TYPE_ORIENTATION,
+ SENSORS_TYPE_GYROSCOPE,
+ SENSORS_TYPE_LIGHT,
+ SENSORS_TYPE_PRESSURE,
+ SENSORS_TYPE_TEMPERATURE,
+ SENSORS_TYPE_PROXIMITY,
+ SENSORS_TYPE_GRAVITY,
+ SENSORS_TYPE_LINEAR_ACCELERATION,
+ SENSORS_TYPE_ROTATION_VECTOR,
+ SENSORS_TYPE_RELATIVE_HUMIDITY,
+ SENSORS_TYPE_AMBIENT_TEMPERATURE,
+ SENSORS_TYPE_MAGNETIC_FIELD_UNCALIBRATED,
+ SENSORS_TYPE_GAME_ROTATION_VECTOR,
+ SENSORS_TYPE_GYROSCOPE_UNCALIBRATED,
+ SENSORS_TYPE_SIGNIFICANT_MOTION,
+ SENSORS_TYPE_STEP_DETECTED,
+ SENSORS_TYPE_STEP_COUNTER,
+ SENSORS_TYPE_GEOMAGNETIC_ROTATION_VECTOR,
+ SENSORS_TYPE_HEART_RATE,
+ SENSORS_TYPE_TILT_DETECTOR,
+ SENSORS_TYPE_WAKE_GESTURE,
+ SENSORS_TYPE_GLANCE_GESTURE,
+ SENSORS_TYPE_PICK_UP_GESTURE,
+ SENSORS_TYPE_WRIST_TILT_GESTURE,
+ SENSORS_NUM_TYPES
+};
+
+struct SensorsEvent {
+ SensorsType mType;
+ SensorsStatus mStatus;
+ SensorsDeliveryMode mDeliveryMode;
+ int64_t mTimestamp;
+ union {
+ float mFloat[6];
+ uint64_t mUint[1];
+ } mData;
+};
+
+/**
+ * |SensorsSensor| represents a device sensor; either single or composite.
+ */
+struct SensorsSensor {
+ SensorsSensor(int32_t aId, SensorsType aType,
+ float aRange, float aResolution,
+ float aPower, int32_t aMinPeriod,
+ int32_t aMaxPeriod,
+ SensorsTriggerMode aTriggerMode,
+ SensorsDeliveryMode aDeliveryMode)
+ : mId(aId)
+ , mType(aType)
+ , mRange(aRange)
+ , mResolution(aResolution)
+ , mPower(aPower)
+ , mMinPeriod(aMinPeriod)
+ , mMaxPeriod(aMaxPeriod)
+ , mTriggerMode(aTriggerMode)
+ , mDeliveryMode(aDeliveryMode)
+ { }
+
+ int32_t mId;
+ SensorsType mType;
+ float mRange;
+ float mResolution;
+ float mPower;
+ int32_t mMinPeriod;
+ int32_t mMaxPeriod;
+ SensorsTriggerMode mTriggerMode;
+ SensorsDeliveryMode mDeliveryMode;
+};
+
+/**
+ * |SensorClass| represents the status of a specific sensor type.
+ */
+struct SensorsSensorClass {
+ SensorsSensorClass()
+ : mActivated(0)
+ , mMinValue(0)
+ , mMaxValue(0)
+ { }
+
+ void UpdateFromSensor(const SensorsSensor& aSensor)
+ {
+ mMaxValue = std::max(aSensor.mRange, mMaxValue);
+ }
+
+ uint32_t mActivated;
+ float mMinValue;
+ float mMaxValue;
+};
+
+} // namespace hal
+} // namespace mozilla
+
+#endif // hal_gonk_SensorsTypes_h