[sensors] Minor tuning of hal definition

  * Swap GEOMAGNETIC_FIELD with MAGNETIC_FIELD for more accurate
    definition.
  * Remove redundunt prefixes in various enum definitions.
  * Clarify that string type will be removed for well defined sensor
    types. This avoid dependency on strings defined in sensors.h.
  * Added SensorFlagShift enum.
  * Remove unused flag parameter in batch.
  * Remove legacy setDelay function.
  * Change the type of sensor flag to bitfield<SensorFlagBits>, and
    use uint32_t since only low 32 bits are used.

Test: all sensor works(in marlin), tested with sensorlogger.

Change-Id: I93a4d13c5d2e054857d1e400d15002aeb9a47368
diff --git a/sensors/1.0/ISensors.hal b/sensors/1.0/ISensors.hal
index c929ef8..c56da29 100644
--- a/sensors/1.0/ISensors.hal
+++ b/sensors/1.0/ISensors.hal
@@ -52,20 +52,6 @@
     activate(int32_t sensorHandle, bool enabled) generates (Result result);
 
     /**
-     * Set the sampling period in nanoseconds for a given sensor.
-     *
-     * If samplingPeriodNs > maxDelay it will be truncated to
-     * maxDelay and if samplingPeriodNs < minDelay it will be
-     * replaced by minDelay.
-     *
-     * @param  sensorHandle handle of sensor to be changed.
-     * @param  samplngPeriodNs specified sampling period in nanoseconds.
-     * @return result OK on success, BAD_VALUE if sensorHandle is invalid.
-     */
-    setDelay(int32_t sensorHandle, int64_t samplingPeriodNs)
-        generates (Result result);
-
-    /**
      * Generate a vector of sensor events containing at most "maxCount"
      * entries.
      *
@@ -105,7 +91,6 @@
      * @return result OK on success, BAD_VALUE if any parameters are invalid.
      */
     batch(int32_t sensorHandle,
-          int32_t flags,
           int64_t samplingPeriodNs,
           int64_t maxReportLatencyNs) generates (Result result);
 
diff --git a/sensors/1.0/default/Sensors.cpp b/sensors/1.0/default/Sensors.cpp
index f9f1ca6..8903397 100644
--- a/sensors/1.0/default/Sensors.cpp
+++ b/sensors/1.0/default/Sensors.cpp
@@ -142,15 +142,6 @@
                 enabled));
 }
 
-Return<Result> Sensors::setDelay(
-        int32_t sensor_handle, int64_t sampling_period_ns) {
-    return ResultFromStatus(
-            mSensorDevice->setDelay(
-                reinterpret_cast<sensors_poll_device_t *>(mSensorDevice),
-                sensor_handle,
-                sampling_period_ns));
-}
-
 Return<void> Sensors::poll(int32_t maxCount, poll_cb _hidl_cb) {
     hidl_vec<Event> out;
     hidl_vec<SensorInfo> dynamicSensorsAdded;
@@ -206,14 +197,13 @@
 
 Return<Result> Sensors::batch(
         int32_t sensor_handle,
-        int32_t flags,
         int64_t sampling_period_ns,
         int64_t max_report_latency_ns) {
     return ResultFromStatus(
             mSensorDevice->batch(
                 mSensorDevice,
                 sensor_handle,
-                flags,
+                0, /*flags*/
                 sampling_period_ns,
                 max_report_latency_ns));
 }
diff --git a/sensors/1.0/default/Sensors.h b/sensors/1.0/default/Sensors.h
index a33f283..e8bd98d 100644
--- a/sensors/1.0/default/Sensors.h
+++ b/sensors/1.0/default/Sensors.h
@@ -39,14 +39,10 @@
     Return<Result> activate(
             int32_t sensor_handle, bool enabled) override;
 
-    Return<Result> setDelay(
-            int32_t sensor_handle, int64_t sampling_period_ns) override;
-
     Return<void> poll(int32_t maxCount, poll_cb _hidl_cb) override;
 
     Return<Result> batch(
             int32_t sensor_handle,
-            int32_t flags,
             int64_t sampling_period_ns,
             int64_t max_report_latency_ns) override;
 
diff --git a/sensors/1.0/default/convert.cpp b/sensors/1.0/default/convert.cpp
index 68fb75c..6735e96 100644
--- a/sensors/1.0/default/convert.cpp
+++ b/sensors/1.0/default/convert.cpp
@@ -72,18 +72,18 @@
     dst->timestamp = src.timestamp;
 
     switch (dst->sensorType) {
-        case SensorType::SENSOR_TYPE_META_DATA:
+        case SensorType::META_DATA:
         {
             dst->u.meta.what = (MetaDataEventType)src.meta_data.what;
             break;
         }
 
-        case SensorType::SENSOR_TYPE_ACCELEROMETER:
-        case SensorType::SENSOR_TYPE_GEOMAGNETIC_FIELD:
-        case SensorType::SENSOR_TYPE_ORIENTATION:
-        case SensorType::SENSOR_TYPE_GYROSCOPE:
-        case SensorType::SENSOR_TYPE_GRAVITY:
-        case SensorType::SENSOR_TYPE_LINEAR_ACCELERATION:
+        case SensorType::ACCELEROMETER:
+        case SensorType::MAGNETIC_FIELD:
+        case SensorType::ORIENTATION:
+        case SensorType::GYROSCOPE:
+        case SensorType::GRAVITY:
+        case SensorType::LINEAR_ACCELERATION:
         {
             dst->u.vec3.x = src.acceleration.x;
             dst->u.vec3.y = src.acceleration.y;
@@ -92,9 +92,9 @@
             break;
         }
 
-        case SensorType::SENSOR_TYPE_ROTATION_VECTOR:
-        case SensorType::SENSOR_TYPE_GAME_ROTATION_VECTOR:
-        case SensorType::SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR:
+        case SensorType::ROTATION_VECTOR:
+        case SensorType::GAME_ROTATION_VECTOR:
+        case SensorType::GEOMAGNETIC_ROTATION_VECTOR:
         {
             dst->u.vec4.x = src.data[0];
             dst->u.vec4.y = src.data[1];
@@ -103,148 +103,148 @@
             break;
         }
 
-        case SensorType::SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED:
-        case SensorType::SENSOR_TYPE_GYROSCOPE_UNCALIBRATED:
-        case SensorType::SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED:
-        {
-            dst->u.uncal.x = src.uncalibrated_gyro.x_uncalib;
-            dst->u.uncal.y = src.uncalibrated_gyro.y_uncalib;
-            dst->u.uncal.z = src.uncalibrated_gyro.z_uncalib;
-            dst->u.uncal.x_bias = src.uncalibrated_gyro.x_bias;
-            dst->u.uncal.y_bias = src.uncalibrated_gyro.y_bias;
-            dst->u.uncal.z_bias = src.uncalibrated_gyro.z_bias;
-            break;
-        }
+      case SensorType::MAGNETIC_FIELD_UNCALIBRATED:
+      case SensorType::GYROSCOPE_UNCALIBRATED:
+      case SensorType::ACCELEROMETER_UNCALIBRATED:
+      {
+          dst->u.uncal.x = src.uncalibrated_gyro.x_uncalib;
+          dst->u.uncal.y = src.uncalibrated_gyro.y_uncalib;
+          dst->u.uncal.z = src.uncalibrated_gyro.z_uncalib;
+          dst->u.uncal.x_bias = src.uncalibrated_gyro.x_bias;
+          dst->u.uncal.y_bias = src.uncalibrated_gyro.y_bias;
+          dst->u.uncal.z_bias = src.uncalibrated_gyro.z_bias;
+          break;
+      }
 
-        case SensorType::SENSOR_TYPE_DEVICE_ORIENTATION:
-        case SensorType::SENSOR_TYPE_LIGHT:
-        case SensorType::SENSOR_TYPE_PRESSURE:
-        case SensorType::SENSOR_TYPE_TEMPERATURE:
-        case SensorType::SENSOR_TYPE_PROXIMITY:
-        case SensorType::SENSOR_TYPE_RELATIVE_HUMIDITY:
-        case SensorType::SENSOR_TYPE_AMBIENT_TEMPERATURE:
-        case SensorType::SENSOR_TYPE_SIGNIFICANT_MOTION:
-        case SensorType::SENSOR_TYPE_STEP_DETECTOR:
-        case SensorType::SENSOR_TYPE_TILT_DETECTOR:
-        case SensorType::SENSOR_TYPE_WAKE_GESTURE:
-        case SensorType::SENSOR_TYPE_GLANCE_GESTURE:
-        case SensorType::SENSOR_TYPE_PICK_UP_GESTURE:
-        case SensorType::SENSOR_TYPE_WRIST_TILT_GESTURE:
-        case SensorType::SENSOR_TYPE_STATIONARY_DETECT:
-        case SensorType::SENSOR_TYPE_MOTION_DETECT:
-        case SensorType::SENSOR_TYPE_HEART_BEAT:
-        {
-            dst->u.scalar = src.data[0];
-            break;
-        }
+      case SensorType::DEVICE_ORIENTATION:
+      case SensorType::LIGHT:
+      case SensorType::PRESSURE:
+      case SensorType::TEMPERATURE:
+      case SensorType::PROXIMITY:
+      case SensorType::RELATIVE_HUMIDITY:
+      case SensorType::AMBIENT_TEMPERATURE:
+      case SensorType::SIGNIFICANT_MOTION:
+      case SensorType::STEP_DETECTOR:
+      case SensorType::TILT_DETECTOR:
+      case SensorType::WAKE_GESTURE:
+      case SensorType::GLANCE_GESTURE:
+      case SensorType::PICK_UP_GESTURE:
+      case SensorType::WRIST_TILT_GESTURE:
+      case SensorType::STATIONARY_DETECT:
+      case SensorType::MOTION_DETECT:
+      case SensorType::HEART_BEAT:
+      {
+          dst->u.scalar = src.data[0];
+          break;
+      }
 
-        case SensorType::SENSOR_TYPE_STEP_COUNTER:
-        {
-            dst->u.stepCount = src.u64.step_counter;
-            break;
-        }
+      case SensorType::STEP_COUNTER:
+      {
+          dst->u.stepCount = src.u64.step_counter;
+          break;
+      }
 
-        case SensorType::SENSOR_TYPE_HEART_RATE:
-        {
-            dst->u.heartRate.bpm = src.heart_rate.bpm;
-            dst->u.heartRate.status = (SensorStatus)src.heart_rate.status;
-            break;
-        }
+      case SensorType::HEART_RATE:
+      {
+          dst->u.heartRate.bpm = src.heart_rate.bpm;
+          dst->u.heartRate.status = (SensorStatus)src.heart_rate.status;
+          break;
+      }
 
-        case SensorType::SENSOR_TYPE_POSE_6DOF:  // 15 floats
-        {
-            for (size_t i = 0; i < 15; ++i) {
-                dst->u.pose6DOF[i] = src.data[i];
-            }
-            break;
-        }
+      case SensorType::POSE_6DOF:  // 15 floats
+      {
+          for (size_t i = 0; i < 15; ++i) {
+              dst->u.pose6DOF[i] = src.data[i];
+          }
+          break;
+      }
 
-        case SensorType::SENSOR_TYPE_DYNAMIC_SENSOR_META:
-        {
-            dst->u.dynamic.connected = src.dynamic_sensor_meta.connected;
-            dst->u.dynamic.sensorHandle = src.dynamic_sensor_meta.handle;
+      case SensorType::DYNAMIC_SENSOR_META:
+      {
+          dst->u.dynamic.connected = src.dynamic_sensor_meta.connected;
+          dst->u.dynamic.sensorHandle = src.dynamic_sensor_meta.handle;
 
-            memcpy(dst->u.dynamic.uuid.data(),
-                   src.dynamic_sensor_meta.uuid,
-                   16);
+          memcpy(dst->u.dynamic.uuid.data(),
+                 src.dynamic_sensor_meta.uuid,
+                 16);
 
-            break;
-        }
+          break;
+      }
 
-        case SensorType::SENSOR_TYPE_ADDITIONAL_INFO:
-        {
-            ::android::hardware::sensors::V1_0::AdditionalInfo *dstInfo =
-                &dst->u.additional;
+      case SensorType::ADDITIONAL_INFO:
+      {
+          ::android::hardware::sensors::V1_0::AdditionalInfo *dstInfo =
+              &dst->u.additional;
 
-            const additional_info_event_t &srcInfo = src.additional_info;
+          const additional_info_event_t &srcInfo = src.additional_info;
 
-            dstInfo->type =
-                (::android::hardware::sensors::V1_0::AdditionalInfoType)
-                    srcInfo.type;
+          dstInfo->type =
+              (::android::hardware::sensors::V1_0::AdditionalInfoType)
+                  srcInfo.type;
 
-            dstInfo->serial = srcInfo.serial;
+          dstInfo->serial = srcInfo.serial;
 
-            CHECK_EQ(sizeof(dstInfo->u), sizeof(srcInfo.data_int32));
-            memcpy(&dstInfo->u, srcInfo.data_int32, sizeof(srcInfo.data_int32));
-            break;
-        }
+          CHECK_EQ(sizeof(dstInfo->u), sizeof(srcInfo.data_int32));
+          memcpy(&dstInfo->u, srcInfo.data_int32, sizeof(srcInfo.data_int32));
+          break;
+      }
 
-        default:
-        {
-            CHECK_GE((int32_t)dst->sensorType,
-                     (int32_t)SensorType::SENSOR_TYPE_DEVICE_PRIVATE_BASE);
+      default:
+      {
+          CHECK_GE((int32_t)dst->sensorType,
+                   (int32_t)SensorType::DEVICE_PRIVATE_BASE);
 
-            memcpy(dst->u.data.data(), src.data, 16 * sizeof(float));
-            break;
-        }
-    }
+          memcpy(dst->u.data.data(), src.data, 16 * sizeof(float));
+          break;
+      }
+  }
 }
 
 void convertToSensorEvent(const Event &src, sensors_event_t *dst) {
-    dst->version = sizeof(sensors_event_t);
-    dst->sensor = src.sensorHandle;
-    dst->type = (int32_t)src.sensorType;
-    dst->reserved0 = 0;
-    dst->timestamp = src.timestamp;
-    dst->flags = 0;
-    dst->reserved1[0] = dst->reserved1[1] = dst->reserved1[2] = 0;
+  dst->version = sizeof(sensors_event_t);
+  dst->sensor = src.sensorHandle;
+  dst->type = (int32_t)src.sensorType;
+  dst->reserved0 = 0;
+  dst->timestamp = src.timestamp;
+  dst->flags = 0;
+  dst->reserved1[0] = dst->reserved1[1] = dst->reserved1[2] = 0;
 
-    switch (src.sensorType) {
-        case SensorType::SENSOR_TYPE_META_DATA:
-        {
-            dst->meta_data.what = (int32_t)src.u.meta.what;
-            dst->meta_data.sensor = dst->sensor;
-            break;
-        }
+  switch (src.sensorType) {
+      case SensorType::META_DATA:
+      {
+          dst->meta_data.what = (int32_t)src.u.meta.what;
+          dst->meta_data.sensor = dst->sensor;
+          break;
+      }
 
-        case SensorType::SENSOR_TYPE_ACCELEROMETER:
-        case SensorType::SENSOR_TYPE_GEOMAGNETIC_FIELD:
-        case SensorType::SENSOR_TYPE_ORIENTATION:
-        case SensorType::SENSOR_TYPE_GYROSCOPE:
-        case SensorType::SENSOR_TYPE_GRAVITY:
-        case SensorType::SENSOR_TYPE_LINEAR_ACCELERATION:
-        {
-            dst->acceleration.x = src.u.vec3.x;
-            dst->acceleration.y = src.u.vec3.y;
-            dst->acceleration.z = src.u.vec3.z;
-            dst->acceleration.status = (int8_t)src.u.vec3.status;
-            break;
-        }
+      case SensorType::ACCELEROMETER:
+      case SensorType::MAGNETIC_FIELD:
+      case SensorType::ORIENTATION:
+      case SensorType::GYROSCOPE:
+      case SensorType::GRAVITY:
+      case SensorType::LINEAR_ACCELERATION:
+      {
+          dst->acceleration.x = src.u.vec3.x;
+          dst->acceleration.y = src.u.vec3.y;
+          dst->acceleration.z = src.u.vec3.z;
+          dst->acceleration.status = (int8_t)src.u.vec3.status;
+          break;
+      }
 
-        case SensorType::SENSOR_TYPE_ROTATION_VECTOR:
-        case SensorType::SENSOR_TYPE_GAME_ROTATION_VECTOR:
-        case SensorType::SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR:
-        {
-            dst->data[0] = src.u.vec4.x;
-            dst->data[1] = src.u.vec4.y;
-            dst->data[2] = src.u.vec4.z;
-            dst->data[3] = src.u.vec4.w;
-            break;
-        }
+      case SensorType::ROTATION_VECTOR:
+      case SensorType::GAME_ROTATION_VECTOR:
+      case SensorType::GEOMAGNETIC_ROTATION_VECTOR:
+      {
+          dst->data[0] = src.u.vec4.x;
+          dst->data[1] = src.u.vec4.y;
+          dst->data[2] = src.u.vec4.z;
+          dst->data[3] = src.u.vec4.w;
+          break;
+      }
 
-        case SensorType::SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED:
-        case SensorType::SENSOR_TYPE_GYROSCOPE_UNCALIBRATED:
-        case SensorType::SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED:
+      case SensorType::MAGNETIC_FIELD_UNCALIBRATED:
+        case SensorType::GYROSCOPE_UNCALIBRATED:
+        case SensorType::ACCELEROMETER_UNCALIBRATED:
         {
             dst->uncalibrated_gyro.x_uncalib = src.u.uncal.x;
             dst->uncalibrated_gyro.y_uncalib = src.u.uncal.y;
@@ -255,42 +255,42 @@
             break;
         }
 
-        case SensorType::SENSOR_TYPE_DEVICE_ORIENTATION:
-        case SensorType::SENSOR_TYPE_LIGHT:
-        case SensorType::SENSOR_TYPE_PRESSURE:
-        case SensorType::SENSOR_TYPE_TEMPERATURE:
-        case SensorType::SENSOR_TYPE_PROXIMITY:
-        case SensorType::SENSOR_TYPE_RELATIVE_HUMIDITY:
-        case SensorType::SENSOR_TYPE_AMBIENT_TEMPERATURE:
-        case SensorType::SENSOR_TYPE_SIGNIFICANT_MOTION:
-        case SensorType::SENSOR_TYPE_STEP_DETECTOR:
-        case SensorType::SENSOR_TYPE_TILT_DETECTOR:
-        case SensorType::SENSOR_TYPE_WAKE_GESTURE:
-        case SensorType::SENSOR_TYPE_GLANCE_GESTURE:
-        case SensorType::SENSOR_TYPE_PICK_UP_GESTURE:
-        case SensorType::SENSOR_TYPE_WRIST_TILT_GESTURE:
-        case SensorType::SENSOR_TYPE_STATIONARY_DETECT:
-        case SensorType::SENSOR_TYPE_MOTION_DETECT:
-        case SensorType::SENSOR_TYPE_HEART_BEAT:
+        case SensorType::DEVICE_ORIENTATION:
+        case SensorType::LIGHT:
+        case SensorType::PRESSURE:
+        case SensorType::TEMPERATURE:
+        case SensorType::PROXIMITY:
+        case SensorType::RELATIVE_HUMIDITY:
+        case SensorType::AMBIENT_TEMPERATURE:
+        case SensorType::SIGNIFICANT_MOTION:
+        case SensorType::STEP_DETECTOR:
+        case SensorType::TILT_DETECTOR:
+        case SensorType::WAKE_GESTURE:
+        case SensorType::GLANCE_GESTURE:
+        case SensorType::PICK_UP_GESTURE:
+        case SensorType::WRIST_TILT_GESTURE:
+        case SensorType::STATIONARY_DETECT:
+        case SensorType::MOTION_DETECT:
+        case SensorType::HEART_BEAT:
         {
             dst->data[0] = src.u.scalar;
             break;
         }
 
-        case SensorType::SENSOR_TYPE_STEP_COUNTER:
+        case SensorType::STEP_COUNTER:
         {
             dst->u64.step_counter = src.u.stepCount;
             break;
         }
 
-        case SensorType::SENSOR_TYPE_HEART_RATE:
+        case SensorType::HEART_RATE:
         {
             dst->heart_rate.bpm = src.u.heartRate.bpm;
             dst->heart_rate.status = (int8_t)src.u.heartRate.status;
             break;
         }
 
-        case SensorType::SENSOR_TYPE_POSE_6DOF:  // 15 floats
+        case SensorType::POSE_6DOF:  // 15 floats
         {
             for (size_t i = 0; i < 15; ++i) {
                 dst->data[i] = src.u.pose6DOF[i];
@@ -298,7 +298,7 @@
             break;
         }
 
-        case SensorType::SENSOR_TYPE_DYNAMIC_SENSOR_META:
+        case SensorType::DYNAMIC_SENSOR_META:
         {
             dst->dynamic_sensor_meta.connected = src.u.dynamic.connected;
             dst->dynamic_sensor_meta.handle = src.u.dynamic.sensorHandle;
@@ -311,7 +311,7 @@
             break;
         }
 
-        case SensorType::SENSOR_TYPE_ADDITIONAL_INFO:
+        case SensorType::ADDITIONAL_INFO:
         {
             const ::android::hardware::sensors::V1_0::AdditionalInfo &srcInfo =
                 src.u.additional;
@@ -332,7 +332,7 @@
         default:
         {
             CHECK_GE((int32_t)src.sensorType,
-                     (int32_t)SensorType::SENSOR_TYPE_DEVICE_PRIVATE_BASE);
+                     (int32_t)SensorType::DEVICE_PRIVATE_BASE);
 
             memcpy(dst->data, src.u.data.data(), 16 * sizeof(float));
             break;
diff --git a/sensors/1.0/types.hal b/sensors/1.0/types.hal
index d93fabd..c8c8dfc 100644
--- a/sensors/1.0/types.hal
+++ b/sensors/1.0/types.hal
@@ -34,10 +34,10 @@
 /*
  * Sensor HAL modes used in setOperationMode method
  */
-@export(name="")
+@export(name="", value_prefix="SENSOR_HAL_", value_suffix="_MODE")
 enum OperationMode : int32_t {
-    SENSOR_HAL_NORMAL_MODE              = 0,
-    SENSOR_HAL_DATA_INJECTION_MODE      = 1,
+    NORMAL                          = 0,
+    DATA_INJECTION                  = 1,
 };
 
 /*
@@ -52,21 +52,22 @@
  * Device manufacturers (OEMs) can define their own sensor types, for
  * their private use by applications or services provided by them. Such
  * sensor types are specific to an OEM and can't be exposed in the SDK.
- * These types must start at SENSOR_TYPE_DEVICE_PRIVATE_BASE.
+ * These types must start at SensorType::DEVICE_PRIVATE_BASE.
  *
  * All sensors defined outside of the device private range must correspond to
  * a type defined in this file, and must satisfy the characteristics listed in
  * the description of the sensor type.
  *
  * Each sensor also has a "typeAsString".
- *  - StringType of sensors inside of the device private range MUST be prefixed
+ *  - string type of sensors defined in this file is overridden by Android to
+ *    values defined in Android API with "android.sensor." prefix.
+ *    Example: for an accelerometer,
+ *      type = SensorType::Acclerometer
+ *      typeAsString = "" (will be replace by "android.sensor.accelerometer" by
+ *                         Android frameowrk)
+ *  - string type of sensors inside of the device private range MUST be prefixed
  *    by the sensor provider's or OEM reverse domain name. In particular, they
- *    cannot use the "android.sensor" prefix.
- *  - StringType of sensors outside of the device private range MUST correspond
- *    to the one defined in this file (starting with "android.sensor").
- *    For example, accelerometers must have
- *      type=SENSOR_TYPE_ACCELEROMETER and
- *      stringType=SENSOR_STRING_TYPE_ACCELEROMETER
+ *    cannot use the "android.sensor." prefix.
  *
  * When android introduces a new sensor type that can replace an OEM-defined
  * sensor type, the OEM must use the official sensor type and stringType on
@@ -76,13 +77,14 @@
  * detecting that Glass is on a head.
  *  - Such a sensor is not officially supported in android KitKat
  *  - Glass devices launching on KitKat can implement a sensor with
- *    type = 0x10001 and stringType = "com.google.glass.onheaddetector"
+ *      type = 0x10001
+ *      typeAsString = "com.google.glass.onheaddetector"
  *  - In L android release, if android decides to define
- *    SENSOR_TYPE_ON_HEAD_DETECTOR and STRING_SENSOR_TYPE_ON_HEAD_DETECTOR,
+ *    SensorType::ON_HEAD_DETECTOR and STRING_SensorType::ON_HEAD_DETECTOR,
  *    those types should replace the Glass-team-specific types in all future
  *    launches.
  *  - When launching Glass on the L release, Google should now use the official
- *    type (SENSOR_TYPE_ON_HEAD_DETECTOR) and stringType.
+ *    type (SensorType::ON_HEAD_DETECTOR) and stringType.
  *  - This way, all applications can now use this sensor.
  */
 
@@ -102,27 +104,27 @@
  * previous releases are also wake-up sensors and must be treated as such.
  * Wake-up one-shot sensors like SIGNIFICANT_MOTION cannot be batched, hence
  * the text about batch above doesn't apply to them. See the definitions of
- * SENSOR_TYPE_PROXIMITY and SENSOR_TYPE_SIGNIFICANT_MOTION for more info.
+ * SensorType::PROXIMITY and SensorType::SIGNIFICANT_MOTION for more info.
  *
  * Set SENSOR_FLAG_WAKE_UP flag for all wake-up sensors.
  *
- * For example, A device can have two sensors both of SENSOR_TYPE_ACCELEROMETER
+ * For example, A device can have two sensors both of SensorType::ACCELEROMETER
  * and one of them can be a wake_up sensor (with SENSOR_FLAG_WAKE_UP flag set)
  * and the other can be a regular non wake_up sensor. Both of these sensors
  * must be activated/deactivated independently of the other.
  */
 
-@export(name="")
+@export(name="", value_prefix="SENSOR_TYPE_")
 enum SensorType : int32_t {
     /* META_DATA is a special event type used to populate the MetaData
      * structure. It doesn't correspond to a physical sensor. Events of this
      * type exist only inside the HAL, their primary purpose is to signal the
      * completion of a flush request.
      */
-    SENSOR_TYPE_META_DATA                       = 0,
+    META_DATA                       = 0,
 
     /*
-     * SENSOR_TYPE_ACCELEROMETER
+     * ACCELEROMETER
      * reporting-mode: continuous
      *
      * All values are in SI units (m/s^2) and measure the acceleration of the
@@ -131,10 +133,10 @@
      * Implement the non-wake-up version of this sensor and implement the
      * wake-up version if the system possesses a wake up fifo.
      */
-    SENSOR_TYPE_ACCELEROMETER                   = 1,
+    ACCELEROMETER                   = 1,
 
     /*
-     * SENSOR_TYPE_GEOMAGNETIC_FIELD
+     * MAGNETIC_FIELD
      * reporting-mode: continuous
      *
      * All values are in micro-Tesla (uT) and measure the geomagnetic
@@ -143,10 +145,10 @@
      * Implement the non-wake-up version of this sensor and implement the
      * wake-up version if the system possesses a wake up fifo.
      */
-    SENSOR_TYPE_GEOMAGNETIC_FIELD               = 2,
+    MAGNETIC_FIELD                  = 2,
 
     /*
-     * SENSOR_TYPE_ORIENTATION
+     * ORIENTATION
      * reporting-mode: continuous
      *
      * All values are angles in degrees.
@@ -157,10 +159,10 @@
      * Implement the non-wake-up version of this sensor and implement the
      * wake-up version if the system possesses a wake up fifo.
      */
-    SENSOR_TYPE_ORIENTATION                     = 3,
+    ORIENTATION                     = 3,
 
     /*
-     * SENSOR_TYPE_GYROSCOPE
+     * GYROSCOPE
      * reporting-mode: continuous
      *
      * All values are in radians/second and measure the rate of rotation
@@ -169,20 +171,20 @@
      * Implement the non-wake-up version of this sensor and implement the
      * wake-up version if the system possesses a wake up fifo.
      */
-    SENSOR_TYPE_GYROSCOPE                       = 4,
+    GYROSCOPE                       = 4,
 
     /*
-     * SENSOR_TYPE_LIGHT
+     * LIGHT
      * reporting-mode: on-change
      *
      * The light sensor value is returned in SI lux units.
      *
      * Both wake-up and non wake-up versions are useful.
      */
-    SENSOR_TYPE_LIGHT                           = 5,
+    LIGHT                           = 5,
 
     /*
-     * SENSOR_TYPE_PRESSURE
+     * PRESSURE
      * reporting-mode: continuous
      *
      * The pressure sensor return the athmospheric pressure in hectopascal (hPa)
@@ -190,13 +192,13 @@
      * Implement the non-wake-up version of this sensor and implement the
      * wake-up version if the system possesses a wake up fifo.
      */
-    SENSOR_TYPE_PRESSURE                        = 6,
+    PRESSURE                        = 6,
 
-    /* SENSOR_TYPE_TEMPERATURE is deprecated in the HAL */
-    SENSOR_TYPE_TEMPERATURE                     = 7,
+    /* TEMPERATURE is deprecated in the HAL */
+    TEMPERATURE                     = 7,
 
     /*
-     * SENSOR_TYPE_PROXIMITY
+     * PROXIMITY
      * reporting-mode: on-change
      *
      * The proximity sensor which turns the screen off and back on during calls
@@ -206,10 +208,10 @@
      * The value corresponds to the distance to the nearest object in
      * centimeters.
      */
-    SENSOR_TYPE_PROXIMITY                       = 8,
+    PROXIMITY                       = 8,
 
     /*
-     * SENSOR_TYPE_GRAVITY
+     * GRAVITY
      * reporting-mode: continuous
      *
      * A gravity output indicates the direction of and magnitude of gravity in
@@ -218,10 +220,10 @@
      * Implement the non-wake-up version of this sensor and implement the
      * wake-up version if the system possesses a wake up fifo.
      */
-    SENSOR_TYPE_GRAVITY                         = 9,
+    GRAVITY                         = 9,
 
     /*
-     * SENSOR_TYPE_LINEAR_ACCELERATION
+     * LINEAR_ACCELERATION
      * reporting-mode: continuous
      *
      * Indicates the linear acceleration of the device in device coordinates,
@@ -230,10 +232,10 @@
      * Implement the non-wake-up version of this sensor and implement the
      * wake-up version if the system possesses a wake up fifo.
      */
-    SENSOR_TYPE_LINEAR_ACCELERATION             = 10,
+    LINEAR_ACCELERATION             = 10,
 
     /*
-     * SENSOR_TYPE_ROTATION_VECTOR
+     * ROTATION_VECTOR
      * reporting-mode: continuous
      *
      * The rotation vector symbolizes the orientation of the device relative to
@@ -242,10 +244,10 @@
      * Implement the non-wake-up version of this sensor and implement the
      * wake-up version if the system possesses a wake up fifo.
      */
-    SENSOR_TYPE_ROTATION_VECTOR                 = 11,
+    ROTATION_VECTOR                 = 11,
 
     /*
-     * SENSOR_TYPE_RELATIVE_HUMIDITY
+     * RELATIVE_HUMIDITY
      * reporting-mode: on-change
      *
      * A relative humidity sensor measures relative ambient air humidity and
@@ -253,44 +255,44 @@
      *
      * Both wake-up and non wake-up versions are useful.
      */
-    SENSOR_TYPE_RELATIVE_HUMIDITY               = 12,
+    RELATIVE_HUMIDITY               = 12,
 
     /*
-     * SENSOR_TYPE_AMBIENT_TEMPERATURE
+     * AMBIENT_TEMPERATURE
      * reporting-mode: on-change
      *
      * The ambient (room) temperature in degree Celsius.
      *
      * Both wake-up and non wake-up versions are useful.
      */
-    SENSOR_TYPE_AMBIENT_TEMPERATURE             = 13,
+    AMBIENT_TEMPERATURE             = 13,
 
     /*
-     * SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED
+     * MAGNETIC_FIELD_UNCALIBRATED
      * reporting-mode: continuous
      *
-     * Similar to SENSOR_TYPE_MAGNETIC_FIELD, but the hard iron calibration is
+     * Similar to MAGNETIC_FIELD, but the hard iron calibration is
      * reported separately instead of being included in the measurement.
      *
      * Implement the non-wake-up version of this sensor and implement the
      * wake-up version if the system possesses a wake up fifo.
      */
-    SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED     = 14,
+    MAGNETIC_FIELD_UNCALIBRATED     = 14,
 
     /*
-     * SENSOR_TYPE_GAME_ROTATION_VECTOR
+     * GAME_ROTATION_VECTOR
      * reporting-mode: continuous
      *
-     * Similar to SENSOR_TYPE_ROTATION_VECTOR, but not using the geomagnetic
+     * Similar to ROTATION_VECTOR, but not using the geomagnetic
      * field.
      *
      * Implement the non-wake-up version of this sensor and implement the
      * wake-up version if the system possesses a wake up fifo.
      */
-    SENSOR_TYPE_GAME_ROTATION_VECTOR            = 15,
+    GAME_ROTATION_VECTOR            = 15,
 
     /*
-     * SENSOR_TYPE_GYROSCOPE_UNCALIBRATED
+     * GYROSCOPE_UNCALIBRATED
      * reporting-mode: continuous
      *
      * All values are in radians/second and measure the rate of rotation
@@ -299,10 +301,10 @@
      * Implement the non-wake-up version of this sensor and implement the
      * wake-up version if the system possesses a wake up fifo.
      */
-    SENSOR_TYPE_GYROSCOPE_UNCALIBRATED          = 16,
+    GYROSCOPE_UNCALIBRATED          = 16,
 
     /*
-     * SENSOR_TYPE_SIGNIFICANT_MOTION
+     * SIGNIFICANT_MOTION
      * reporting-mode: one-shot
      *
      * A sensor of this type triggers an event each time significant motion
@@ -312,10 +314,10 @@
      * significant motion sensor. A non wake-up version is not useful.
      * The only allowed value to return is 1.0.
      */
-    SENSOR_TYPE_SIGNIFICANT_MOTION              = 17,
+    SIGNIFICANT_MOTION              = 17,
 
     /*
-     * SENSOR_TYPE_STEP_DETECTOR
+     * STEP_DETECTOR
      * reporting-mode: special
      *
      * A sensor of this type triggers an event each time a step is taken
@@ -324,10 +326,10 @@
      *
      * Both wake-up and non wake-up versions are useful.
      */
-    SENSOR_TYPE_STEP_DETECTOR                   = 18,
+    STEP_DETECTOR                   = 18,
 
     /*
-     * SENSOR_TYPE_STEP_COUNTER
+     * STEP_COUNTER
      * reporting-mode: on-change
      *
      * A sensor of this type returns the number of steps taken by the user since
@@ -337,22 +339,22 @@
      * Implement the non-wake-up version of this sensor and implement the
      * wake-up version if the system possesses a wake up fifo.
      */
-    SENSOR_TYPE_STEP_COUNTER                    = 19,
+    STEP_COUNTER                    = 19,
 
     /*
-     * SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR
+     * GEOMAGNETIC_ROTATION_VECTOR
      * reporting-mode: continuous
      *
-     *  Similar to SENSOR_TYPE_ROTATION_VECTOR, but using a magnetometer instead
+     *  Similar to ROTATION_VECTOR, but using a magnetometer instead
      *  of using a gyroscope.
      *
      * Implement the non-wake-up version of this sensor and implement the
      * wake-up version if the system possesses a wake up fifo.
      */
-    SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR     = 20,
+    GEOMAGNETIC_ROTATION_VECTOR     = 20,
 
     /*
-     * SENSOR_TYPE_HEART_RATE
+     * HEART_RATE
      * reporting-mode: on-change
      *
      *  A sensor of this type returns the current heart rate.
@@ -364,7 +366,7 @@
      *  when heart_rate.bpm or heart_rate.status have changed since the last
      *  event. In particular, upon the first activation, unless the device is
      *  known to not be on the body, the status field of the first event must be
-     *  set to SENSOR_STATUS_UNRELIABLE. The event must not be generated faster
+     *  set to SensorStatus::UNRELIABLE. The event should be generated no faster
      *  than every period_ns passed to setDelay() or to batch().
      *  See the definition of the on-change reporting mode for more information.
      *
@@ -373,10 +375,10 @@
      *
      *  Both wake-up and non wake-up versions are useful.
      */
-    SENSOR_TYPE_HEART_RATE                      = 21,
+    HEART_RATE                      = 21,
 
     /*
-     * SENSOR_TYPE_WAKE_UP_TILT_DETECTOR
+     * WAKE_UP_TILT_DETECTOR
      * reporting-mode: special (setDelay has no impact)
      *
      * A sensor of this type generates an event each time a tilt event is
@@ -412,10 +414,10 @@
      *
      * Implement only the wake-up version of this sensor.
      */
-    SENSOR_TYPE_TILT_DETECTOR                   = 22,
+    TILT_DETECTOR                   = 22,
 
     /*
-     * SENSOR_TYPE_WAKE_GESTURE
+     * WAKE_GESTURE
      * reporting-mode: one-shot
      *
      * A sensor enabling waking up the device based on a device specific motion.
@@ -433,10 +435,10 @@
      *
      * Implement only the wake-up version of this sensor.
      */
-    SENSOR_TYPE_WAKE_GESTURE                    = 23,
+    WAKE_GESTURE                    = 23,
 
     /*
-     * SENSOR_TYPE_GLANCE_GESTURE
+     * GLANCE_GESTURE
      * reporting-mode: one-shot
      *
      * A sensor enabling briefly turning the screen on to enable the user to
@@ -458,10 +460,10 @@
      *
      * Implement only the wake-up version of this sensor.
      */
-    SENSOR_TYPE_GLANCE_GESTURE                  = 24,
+    GLANCE_GESTURE                  = 24,
 
     /**
-     * SENSOR_TYPE_PICK_UP_GESTURE
+     * PICK_UP_GESTURE
      * reporting-mode: one-shot
      *
      * A sensor of this type triggers when the device is picked up regardless of
@@ -470,10 +472,10 @@
      *
      * Implement only the wake-up version of this sensor.
      */
-    SENSOR_TYPE_PICK_UP_GESTURE                 = 25,
+    PICK_UP_GESTURE                 = 25,
 
     /*
-     * SENSOR_TYPE_WRIST_TILT_GESTURE
+     * WRIST_TILT_GESTURE
      * trigger-mode: special
      * wake-up sensor: yes
      *
@@ -485,10 +487,10 @@
      *
      * Implement only the wake-up version of this sensor.
      */
-    SENSOR_TYPE_WRIST_TILT_GESTURE              = 26,
+    WRIST_TILT_GESTURE              = 26,
 
     /*
-     * SENSOR_TYPE_DEVICE_ORIENTATION
+     * DEVICE_ORIENTATION
      * reporting-mode: on-change
      *
      * The current orientation of the device. The value is reported in
@@ -519,10 +521,10 @@
      *
      * Both wake-up and non wake-up versions are useful.
      */
-    SENSOR_TYPE_DEVICE_ORIENTATION              = 27,
+    DEVICE_ORIENTATION              = 27,
 
     /*
-     * SENSOR_TYPE_POSE_6DOF
+     * POSE_6DOF
      * trigger-mode: continuous
      *
      * A sensor of this type returns the pose of the device.
@@ -537,10 +539,10 @@
      *           . Depth Camera
      *
      */
-    SENSOR_TYPE_POSE_6DOF                       = 28,
+    POSE_6DOF                       = 28,
 
     /*
-     * SENSOR_TYPE_STATIONARY_DETECT
+     * STATIONARY_DETECT
      * trigger mode: one shot
      *
      * A sensor of this type returns an event if the device is still/stationary
@@ -551,10 +553,10 @@
      *
      * The only allowed value to return is 1.0.
      */
-    SENSOR_TYPE_STATIONARY_DETECT               = 29,
+    STATIONARY_DETECT               = 29,
 
     /*
-     * SENSOR_TYPE_MOTION_DETECT
+     * MOTION_DETECT
      * trigger mode: one shot
      *
      * A sensor of this type returns an event if the device is not still for
@@ -569,10 +571,10 @@
      *
      * The only allowed value to return is 1.0.
      */
-    SENSOR_TYPE_MOTION_DETECT                   = 30,
+    MOTION_DETECT                   = 30,
 
     /*
-     * SENSOR_TYPE_HEART_BEAT
+     * HEART_BEAT
      * trigger mode: continuous
      *
      * A sensor of this type returns an event everytime a hear beat peak is
@@ -589,10 +591,10 @@
      * of the peak where 0.0 represent no information at all, and 1.0 represents
      * certainty.
      */
-    SENSOR_TYPE_HEART_BEAT                      = 31,
+    HEART_BEAT                      = 31,
 
     /**
-     * SENSOR_TYPE_DYNAMIC_SENSOR_META
+     * DYNAMIC_SENSOR_META
      * trigger-mode: special
      *
      * A sensor event of this type is received when a dynamic sensor is added to
@@ -607,7 +609,7 @@
      * A dynamic sensor connection indicates connection of a physical device or
      * instantiation of a virtual sensor backed by algorithm; and a dynamic
      * sensor disconnection indicates the the opposite. A sensor event of
-     * SENSOR_TYPE_DYNAMIC_SENSOR_META type must be delivered regardless of
+     * DYNAMIC_SENSOR_META type should be delivered regardless of
      * the activation status of the sensor in the event of dynamic sensor
      * connection and disconnection. In the sensor event, besides the common
      * data entries, "dynamic_sensor_meta", which includes fields for connection
@@ -636,10 +638,10 @@
      * unit.
      *
      */
-    SENSOR_TYPE_DYNAMIC_SENSOR_META             = 32,
+    DYNAMIC_SENSOR_META             = 32,
 
     /**
-     * SENSOR_TYPE_ADDITIONAL_INFO
+     * ADDITIONAL_INFO
      * reporting-mode: N/A
      *
      * This sensor type is for delivering additional sensor information aside
@@ -652,7 +654,7 @@
      * sensor list can have the type SENSOR_TYPE_ADDITIONAL_INFO. If a
      * sensor HAL supports sensor additional information feature, it reports
      * sensor_event_t with "sensor" field set to handle of the reporting sensor
-     * and "type" field set to SENSOR_TYPE_ADDITIONAL_INFO. Delivery of
+     * and "type" field set to ADDITIONAL_INFO. Delivery of
      * additional information events is triggered under two conditions: an
      * enable activate() call or a flush() call to the corresponding sensor.
      * Besides, time varying parameters can update infrequently without being
@@ -675,10 +677,10 @@
      * If flush() was triggering the report, all additional information frames
      * must be delivered after flush complete event.
      */
-    SENSOR_TYPE_ADDITIONAL_INFO                 = 33,
+    ADDITIONAL_INFO                 = 33,
 
     /*
-     * SENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT
+     * LOW_LATENCY_OFFBODY_DETECT
      * trigger-mode: on-change
      * wake-up sensor: yes
      *
@@ -698,10 +700,10 @@
      *    1.0 for on-body
      *
      */
-    SENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT      = 34,
+    LOW_LATENCY_OFFBODY_DETECT      = 34,
 
     /*
-     * SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED
+     * ACCELEROMETER_UNCALIBRATED
      * reporting-mode: continuous
      *
      * All values are in SI units (m/s^2) and measure the acceleration of the
@@ -710,17 +712,17 @@
      * Implement the non-wake-up version of this sensor and implement the
      * wake-up version if the system possesses a wake up fifo.
      */
-    SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED      = 35,
+    ACCELEROMETER_UNCALIBRATED      = 35,
 
     /*
      * Base for device manufacturers private sensor types.
      * These sensor types can't be exposed in the SDK.
      */
-    SENSOR_TYPE_DEVICE_PRIVATE_BASE             = 0x10000
+    DEVICE_PRIVATE_BASE             = 0x10000
 };
 
-@export(name="")
-enum SensorFlagBits : uint64_t {
+@export(name="", value_prefix="SENSOR_FLAG_")
+enum SensorFlagBits : uint32_t {
     /*
      * Whether this sensor wakes up the AP from suspend mode when data is
      * available.  Whenever sensor events are delivered from a wake_up sensor,
@@ -730,7 +732,7 @@
      * SensorService, the driver can safely release the wake_lock. SensorService
      * will continue to hold a wake_lock till the app actually reads the events.
      */
-    SENSOR_FLAG_WAKE_UP                     = 1,
+    WAKE_UP                     = 1,
 
     /*
      * Reporting modes for various sensors. Each sensor will have exactly one of
@@ -738,10 +740,10 @@
      * The least significant 2nd, 3rd and 4th bits are used to represent four
      * possible reporting modes.
      */
-    SENSOR_FLAG_CONTINUOUS_MODE             = 0,
-    SENSOR_FLAG_ON_CHANGE_MODE              = 2,
-    SENSOR_FLAG_ONE_SHOT_MODE               = 4,
-    SENSOR_FLAG_SPECIAL_REPORTING_MODE      = 6,
+    CONTINUOUS_MODE             = 0,
+    ON_CHANGE_MODE              = 2,
+    ONE_SHOT_MODE               = 4,
+    SPECIAL_REPORTING_MODE      = 6,
 
     /*
      * Set this flag if the sensor supports data_injection mode and allows data
@@ -751,48 +753,58 @@
      * can be set with this flag and SensorService will inject accelerometer
      * data and read the corresponding step counts.
      */
-    SENSOR_FLAG_SUPPORTS_DATA_INJECTION     = 0x10,
+    DATA_INJECTION              = 0x10,
 
     /*
      * Set this flag if the sensor is a dynamically connected sensor. See
      * DynamicSensorInfo and DYNAMIC_SENSOR_META for details.
      */
-    SENSOR_FLAG_DYNAMIC_SENSOR              = 0x20,
+    DYNAMIC_SENSOR              = 0x20,
 
     /*
      * Set this flag if sensor additional information is supported.
      * See ADDITIONAL_INFO and AdditionalInfo for details.
      */
-    SENSOR_FLAG_ADDITIONAL_INFO             = 0x40,
+    ADDITIONAL_INFO             = 0x40,
 
     /*
      * Set this flag if sensor suppor direct channel backed by ashmem.
      * See SharedMemType and registerDirectChannel for more details.
      */
-    SENSOR_FLAG_DIRECT_CHANNEL_ASHMEM       = 0x400,
+    DIRECT_CHANNEL_ASHMEM       = 0x400,
 
     /*
      * Set this flag if sensor suppor direct channel backed by gralloc HAL memory.
      * See SharedMemType and registerDirectChannel for more details.
      */
-    SENSOR_FLAG_DIRECT_CHANNEL_GRALLOC      = 0x800,
+    DIRECT_CHANNEL_GRALLOC      = 0x800,
 
     /*
      * Flags mask for reporting mode of sensor.
      */
-    SENSOR_FLAG_MASK_REPORTING_MODE         = 0xE,
+    MASK_REPORTING_MODE         = 0xE,
 
     /*
      * Flags mask for direct report maximum rate level support.
      * See RateLevel.
      */
-    SENSOR_FLAG_MASK_DIRECT_REPORT          = 0x380,
+    MASK_DIRECT_REPORT          = 0x380,
 
     /*
      * Flags mask for all direct channel support bits.
      * See SharedMemType.
      */
-    SENSOR_FLAG_MASK_DIRECT_CHANNEL         = 0xC00,
+    MASK_DIRECT_CHANNEL         = 0xC00,
+};
+
+@export(name="sensor_flag_shift_t", value_prefix="SENSOR_FLAG_SHIFT_")
+enum SensorFlagShift : uint8_t {
+    REPORTING_MODE              = 1,
+    DATA_INJECTION              = 4,
+    DYNAMIC_SENSOR              = 5,
+    ADDITIONAL_INFO             = 6,
+    DIRECT_REPORT               = 7,
+    DIRECT_CHANNEL              = 10,
 };
 
 struct SensorInfo {
@@ -819,13 +831,14 @@
     /* this sensor's type. */
     SensorType type;
 
-    /* type of this sensor as a string. Set to corresponding
-     * SENSOR_STRING_TYPE_*.
+    /* type of this sensor as a string.
+     *
      * When defining an OEM specific sensor or sensor manufacturer specific
      * sensor, use your reserve domain name as a prefix.
-     * ex: com.google.glass.onheaddetector
-     * For sensors of known type, the android framework might overwrite this
-     * string automatically.
+     * e.g. com.google.glass.onheaddetector
+     *
+     * For sensors of known type defined in SensorType (value <
+     * SensorType::DEVICE_PRIVATE_BASE), this can be an empty string.
      */
     string typeAsString;
 
@@ -888,16 +901,16 @@
     int32_t maxDelay;
 
     /* Bitmask of SensorFlagBits */
-    uint64_t flags;
+    bitfield<SensorFlagBits> flags;
 };
 
-@export(name="")
+@export(name="", value_prefix="SENSOR_STATUS_")
 enum SensorStatus : int8_t {
-    SENSOR_STATUS_NO_CONTACT      = -1,
-    SENSOR_STATUS_UNRELIABLE      = 0,
-    SENSOR_STATUS_ACCURACY_LOW    = 1,
-    SENSOR_STATUS_ACCURACY_MEDIUM = 2,
-    SENSOR_STATUS_ACCURACY_HIGH   = 3,
+    NO_CONTACT          = -1,
+    UNRELIABLE          = 0,
+    ACCURACY_LOW        = 1,
+    ACCURACY_MEDIUM     = 2,
+    ACCURACY_HIGH       = 3,
 };
 
 struct Vec3 {
@@ -924,8 +937,9 @@
 };
 
 struct HeartRate {
-    /* Heart rate in beats per minute. Set to 0 when status is
-     * SENSOR_STATUS_UNRELIABLE or SENSOR_STATUS_NO_CONTACT.
+    /* Heart rate in beats per minute.
+     * Set to 0 when status is SensorStatus::UNRELIABLE or
+     * SensorStatus::NO_CONTACT
      */
     float bpm;
 
@@ -1106,53 +1120,53 @@
  * relative humidity in percent
  */
 union EventPayload {
-    /* SENSOR_TYPE_ACCELEROMETER, SENSOR_TYPE_GEOMAGNETIC_FIELD,
-     * SENSOR_TYPE_ORIENTATION, SENSOR_TYPE_GYROSCOPE, SENSOR_TYPE_GRAVITY,
-     * SENSOR_TYPE_LINEAR_ACCELERATION
+    /* SensorType::ACCELEROMETER, SensorType::MAGNETIC_FIELD,
+     * SensorType::ORIENTATION, SensorType::GYROSCOPE, SensorType::GRAVITY,
+     * SensorType::LINEAR_ACCELERATION
      */
     Vec3 vec3;
 
-    /* SENSOR_TYPE_ROTATION_VECTOR, SENSOR_TYPE_GAME_ROTATION_VECTOR,
-     * SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR
+    /* SensorType::ROTATION_VECTOR, SensorType::GAME_ROTATION_VECTOR,
+     * SensorType::GEOMAGNETIC_ROTATION_VECTOR
      */
     Vec4 vec4;
 
-    /* SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED,
-     * SENSOR_TYPE_GYROSCOPE_UNCALIBRATED
-     * SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED
+    /* SensorType::MAGNETIC_FIELD_UNCALIBRATED,
+     * SensorType::GYROSCOPE_UNCALIBRATED
+     * SensorType::ACCELEROMETER_UNCALIBRATED
      */
     Uncal uncal;
 
-    /* SENSOR_TYPE_META_DATA */
+    /* SensorType::META_DATA */
     MetaData meta;
 
-    /* SENSOR_TYPE_DEVICE_ORIENTATION, SENSOR_TYPE_LIGHT, SENSOR_TYPE_PRESSURE,
-     * SENSOR_TYPE_TEMPERATURE, SENSOR_TYPE_PROXIMITY,
-     * SENSOR_TYPE_RELATIVE_HUMIDITY, SENSOR_TYPE_AMBIENT_TEMPERATURE,
-     * SENSOR_TYPE_SIGNIFICANT_MOTION, SENSOR_TYPE_STEP_DETECTOR,
-     * SENSOR_TYPE_TILT_DETECTOR, SENSOR_TYPE_WAKE_GESTURE,
-     * SENSOR_TYPE_GLANCE_GESTURE, SENSOR_TYPE_PICK_UP_GESTURE,
-     * SENSOR_TYPE_WRIST_TILT_GESTURE, SENSOR_TYPE_STATIONARY_DETECT,
-     * SENSOR_TYPE_MOTION_DETECT, SENSOR_TYPE_HEART_BEAT
+    /* SensorType::DEVICE_ORIENTATION, SensorType::LIGHT, SensorType::PRESSURE,
+     * SensorType::TEMPERATURE, SensorType::PROXIMITY,
+     * SensorType::RELATIVE_HUMIDITY, SensorType::AMBIENT_TEMPERATURE,
+     * SensorType::SIGNIFICANT_MOTION, SensorType::STEP_DETECTOR,
+     * SensorType::TILT_DETECTOR, SensorType::WAKE_GESTURE,
+     * SensorType::GLANCE_GESTURE, SensorType::PICK_UP_GESTURE,
+     * SensorType::WRIST_TILT_GESTURE, SensorType::STATIONARY_DETECT,
+     * SensorType::MOTION_DETECT, SensorType::HEART_BEAT
      */
     float scalar;
 
-    /* SENSOR_TYPE_STEP_COUNTER */
+    /* SensorType::STEP_COUNTER */
     uint64_t stepCount;
 
-    /* SENSOR_TYPE_HEART_RATE */
+    /* SensorType::HEART_RATE */
     HeartRate heartRate;
 
-    /* SENSOR_TYPE_POSE_6DOF */
+    /* SensorType::POSE_6DOF */
     float[15] pose6DOF;
 
-    /* SENSOR_TYPE_DYNAMIC_SENSOR_META */
+    /* SensorType::DYNAMIC_SENSOR_META */
     DynamicSensorInfo dynamic;
 
-    /* SENSOR_TYPE_ADDITIONAL_INFO */
+    /* SensorType::ADDITIONAL_INFO */
     AdditionalInfo additional;
 
-    /* undefined/custom sensor type, >= SENSOR_TYPE_DEVICE_PRIVATE_BASE */
+    /* undefined/custom sensor type >= SensorType::DEVICE_PRIVATE_BASE */
     float[16] data;
 };
 
diff --git a/sensors/1.0/vts/Sensors.vts b/sensors/1.0/vts/Sensors.vts
index f80fff5..9e90755 100644
--- a/sensors/1.0/vts/Sensors.vts
+++ b/sensors/1.0/vts/Sensors.vts
@@ -47,22 +47,6 @@
     }
 
     api: {
-        name: "setDelay"
-        return_type_hidl: {
-            type: TYPE_ENUM
-            predefined_type: "::android::hardware::sensors::V1_0::Result"
-        }
-        arg: {
-            type: TYPE_SCALAR
-            scalar_type: "int32_t"
-        }
-        arg: {
-            type: TYPE_SCALAR
-            scalar_type: "int64_t"
-        }
-    }
-
-    api: {
         name: "poll"
         return_type_hidl: {
             type: TYPE_ENUM
@@ -100,10 +84,6 @@
         }
         arg: {
             type: TYPE_SCALAR
-            scalar_type: "int32_t"
-        }
-        arg: {
-            type: TYPE_SCALAR
             scalar_type: "int64_t"
         }
         arg: {
@@ -136,4 +116,56 @@
         }
     }
 
+    api: {
+        name: "registerDirectChannel"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::sensors::V1_0::Result"
+        }
+        return_type_hidl: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+        arg: {
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::sensors::V1_0::SharedMemInfo"
+        }
+    }
+
+    api: {
+        name: "unregisterDirectChannel"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::sensors::V1_0::Result"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+    }
+
+    api: {
+        name: "configDirectReport"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::sensors::V1_0::Result"
+        }
+        return_type_hidl: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+        arg: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::sensors::V1_0::RateLevel"
+        }
+    }
+
 }
diff --git a/sensors/1.0/vts/functional/sensors_hidl_hal_test.cpp b/sensors/1.0/vts/functional/sensors_hidl_hal_test.cpp
index 17c439e..2edc5c3 100644
--- a/sensors/1.0/vts/functional/sensors_hidl_hal_test.cpp
+++ b/sensors/1.0/vts/functional/sensors_hidl_hal_test.cpp
@@ -203,16 +203,16 @@
 
   inline static SensorFlagBits extractReportMode(uint64_t flag) {
     return (SensorFlagBits) (flag
-        & ((uint64_t) SensorFlagBits::SENSOR_FLAG_CONTINUOUS_MODE
-          | (uint64_t) SensorFlagBits::SENSOR_FLAG_ON_CHANGE_MODE
-          | (uint64_t) SensorFlagBits::SENSOR_FLAG_ONE_SHOT_MODE
-          | (uint64_t) SensorFlagBits::SENSOR_FLAG_SPECIAL_REPORTING_MODE));
+        & ((uint64_t) SensorFlagBits::CONTINUOUS_MODE
+          | (uint64_t) SensorFlagBits::ON_CHANGE_MODE
+          | (uint64_t) SensorFlagBits::ONE_SHOT_MODE
+          | (uint64_t) SensorFlagBits::SPECIAL_REPORTING_MODE));
   }
 
   inline static bool isMetaSensorType(SensorType type) {
-    return (type == SensorType::SENSOR_TYPE_META_DATA
-            || type == SensorType::SENSOR_TYPE_DYNAMIC_SENSOR_META
-            || type == SensorType::SENSOR_TYPE_ADDITIONAL_INFO);
+    return (type == SensorType::META_DATA
+            || type == SensorType::DYNAMIC_SENSOR_META
+            || type == SensorType::ADDITIONAL_INFO);
   }
 
   inline static bool isValidType(SensorType type) {
@@ -225,14 +225,14 @@
 
 bool SensorsHidlTest::typeMatchStringType(SensorType type, const hidl_string& stringType) {
 
-  if (type >= SensorType::SENSOR_TYPE_DEVICE_PRIVATE_BASE) {
+  if (type >= SensorType::DEVICE_PRIVATE_BASE) {
     return true;
   }
 
   bool res = true;
   switch (type) {
 #define CHECK_TYPE_STRING_FOR_SENSOR_TYPE(type) \
-    case SensorType::SENSOR_TYPE_ ## type: res = stringType == SENSOR_STRING_TYPE_ ## type;\
+    case SensorType::type: res = stringType == SENSOR_STRING_TYPE_ ## type;\
       break;\
 
     CHECK_TYPE_STRING_FOR_SENSOR_TYPE(ACCELEROMETER);
@@ -277,7 +277,7 @@
 }
 
 bool SensorsHidlTest::typeMatchReportMode(SensorType type, SensorFlagBits reportMode) {
-  if (type >= SensorType::SENSOR_TYPE_DEVICE_PRIVATE_BASE) {
+  if (type >= SensorType::DEVICE_PRIVATE_BASE) {
     return true;
   }
 
@@ -290,19 +290,21 @@
     int32_t minDelay, int32_t maxDelay, SensorFlagBits reportMode) {
   bool res = true;
   switch(reportMode) {
-    case SensorFlagBits::SENSOR_FLAG_CONTINUOUS_MODE:
+    case SensorFlagBits::CONTINUOUS_MODE:
       res = (minDelay > 0) && (maxDelay >= 0);
       break;
-    case SensorFlagBits::SENSOR_FLAG_ON_CHANGE_MODE:
+    case SensorFlagBits::ON_CHANGE_MODE:
       //TODO: current implementation does not satisfy minDelay == 0 on Proximity
       res = (minDelay >= 0) && (maxDelay >= 0);
       //res = (minDelay == 0) && (maxDelay >= 0);
       break;
-    case SensorFlagBits::SENSOR_FLAG_ONE_SHOT_MODE:
+    case SensorFlagBits::ONE_SHOT_MODE:
       res = (minDelay == -1) && (maxDelay == 0);
       break;
-    case SensorFlagBits::SENSOR_FLAG_SPECIAL_REPORTING_MODE:
+    case SensorFlagBits::SPECIAL_REPORTING_MODE:
       res = (minDelay == 0) && (maxDelay == 0);
+    default:
+      res = false;
   }
 
   return res;
@@ -310,44 +312,44 @@
 
 SensorFlagBits SensorsHidlTest::expectedReportModeForType(SensorType type) {
   switch (type) {
-    case SensorType::SENSOR_TYPE_ACCELEROMETER:
-    case SensorType::SENSOR_TYPE_GYROSCOPE:
-    case SensorType::SENSOR_TYPE_GEOMAGNETIC_FIELD:
-    case SensorType::SENSOR_TYPE_ORIENTATION:
-    case SensorType::SENSOR_TYPE_PRESSURE:
-    case SensorType::SENSOR_TYPE_TEMPERATURE:
-    case SensorType::SENSOR_TYPE_GRAVITY:
-    case SensorType::SENSOR_TYPE_LINEAR_ACCELERATION:
-    case SensorType::SENSOR_TYPE_ROTATION_VECTOR:
-    case SensorType::SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED:
-    case SensorType::SENSOR_TYPE_GAME_ROTATION_VECTOR:
-    case SensorType::SENSOR_TYPE_GYROSCOPE_UNCALIBRATED:
-    case SensorType::SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR:
-    case SensorType::SENSOR_TYPE_POSE_6DOF:
-    case SensorType::SENSOR_TYPE_HEART_BEAT:
-      return SensorFlagBits::SENSOR_FLAG_CONTINUOUS_MODE;
+    case SensorType::ACCELEROMETER:
+    case SensorType::GYROSCOPE:
+    case SensorType::MAGNETIC_FIELD:
+    case SensorType::ORIENTATION:
+    case SensorType::PRESSURE:
+    case SensorType::TEMPERATURE:
+    case SensorType::GRAVITY:
+    case SensorType::LINEAR_ACCELERATION:
+    case SensorType::ROTATION_VECTOR:
+    case SensorType::MAGNETIC_FIELD_UNCALIBRATED:
+    case SensorType::GAME_ROTATION_VECTOR:
+    case SensorType::GYROSCOPE_UNCALIBRATED:
+    case SensorType::GEOMAGNETIC_ROTATION_VECTOR:
+    case SensorType::POSE_6DOF:
+    case SensorType::HEART_BEAT:
+      return SensorFlagBits::CONTINUOUS_MODE;
 
-    case SensorType::SENSOR_TYPE_LIGHT:
-    case SensorType::SENSOR_TYPE_PROXIMITY:
-    case SensorType::SENSOR_TYPE_RELATIVE_HUMIDITY:
-    case SensorType::SENSOR_TYPE_AMBIENT_TEMPERATURE:
-    case SensorType::SENSOR_TYPE_HEART_RATE:
-    case SensorType::SENSOR_TYPE_DEVICE_ORIENTATION:
-    case SensorType::SENSOR_TYPE_MOTION_DETECT:
-    case SensorType::SENSOR_TYPE_STEP_COUNTER:
-      return SensorFlagBits::SENSOR_FLAG_ON_CHANGE_MODE;
+    case SensorType::LIGHT:
+    case SensorType::PROXIMITY:
+    case SensorType::RELATIVE_HUMIDITY:
+    case SensorType::AMBIENT_TEMPERATURE:
+    case SensorType::HEART_RATE:
+    case SensorType::DEVICE_ORIENTATION:
+    case SensorType::MOTION_DETECT:
+    case SensorType::STEP_COUNTER:
+      return SensorFlagBits::ON_CHANGE_MODE;
 
-    case SensorType::SENSOR_TYPE_SIGNIFICANT_MOTION:
-    case SensorType::SENSOR_TYPE_WAKE_GESTURE:
-    case SensorType::SENSOR_TYPE_GLANCE_GESTURE:
-    case SensorType::SENSOR_TYPE_PICK_UP_GESTURE:
-      return SensorFlagBits::SENSOR_FLAG_ONE_SHOT_MODE;
+    case SensorType::SIGNIFICANT_MOTION:
+    case SensorType::WAKE_GESTURE:
+    case SensorType::GLANCE_GESTURE:
+    case SensorType::PICK_UP_GESTURE:
+      return SensorFlagBits::ONE_SHOT_MODE;
 
-    case SensorType::SENSOR_TYPE_STEP_DETECTOR:
-    case SensorType::SENSOR_TYPE_TILT_DETECTOR:
-    case SensorType::SENSOR_TYPE_WRIST_TILT_GESTURE:
-    case SensorType::SENSOR_TYPE_DYNAMIC_SENSOR_META:
-      return SensorFlagBits::SENSOR_FLAG_SPECIAL_REPORTING_MODE;
+    case SensorType::STEP_DETECTOR:
+    case SensorType::TILT_DETECTOR:
+    case SensorType::WRIST_TILT_GESTURE:
+    case SensorType::DYNAMIC_SENSOR_META:
+      return SensorFlagBits::SPECIAL_REPORTING_MODE;
 
     default:
       ALOGW("Type %d is not implemented in expectedReportModeForType", (int)type);
@@ -399,8 +401,8 @@
 
           // Info type, should have no sensor
           ASSERT_FALSE(
-              s.type == SensorType::SENSOR_TYPE_ADDITIONAL_INFO
-              || s.type == SensorType::SENSOR_TYPE_META_DATA);
+              s.type == SensorType::ADDITIONAL_INFO
+              || s.type == SensorType::META_DATA);
 
           // Test fifoMax >= fifoReserved
           ALOGV("max reserve = %d, %d", s.fifoMaxEventCount, s.fifoReservedEventCount);
@@ -426,7 +428,7 @@
   constexpr int64_t batchingPeriodInNs = 0; // no batching
   constexpr useconds_t minTimeUs = 5*1000*1000;  // 5 s
   constexpr size_t minNEvent = 100;  // at lease 100 events
-  constexpr SensorType type = SensorType::SENSOR_TYPE_ACCELEROMETER;
+  constexpr SensorType type = SensorType::ACCELEROMETER;
 
   SensorInfo sensor = defaultSensorByType(type);
 
@@ -437,7 +439,7 @@
 
   int32_t handle = sensor.sensorHandle;
 
-  S()->batch(handle, 0, samplingPeriodInNs, batchingPeriodInNs);
+  S()->batch(handle, samplingPeriodInNs, batchingPeriodInNs);
   S()->activate(handle, 1);
   events = collectEvents(minTimeUs, minNEvent, true /*clearBeforeStart*/);
   S()->activate(handle, 0);
@@ -480,7 +482,7 @@
   constexpr int64_t batchingPeriodInNs = 0; // no batching
   constexpr useconds_t minTimeUs = 5*1000*1000;  // 5 s
   constexpr size_t minNEvent = 200;
-  constexpr SensorType type = SensorType::SENSOR_TYPE_GYROSCOPE;
+  constexpr SensorType type = SensorType::GYROSCOPE;
 
   SensorInfo sensor = defaultSensorByType(type);
 
@@ -491,7 +493,7 @@
 
   int32_t handle = sensor.sensorHandle;
 
-  S()->batch(handle, 0, samplingPeriodInNs, batchingPeriodInNs);
+  S()->batch(handle, samplingPeriodInNs, batchingPeriodInNs);
   S()->activate(handle, 1);
   events = collectEvents(minTimeUs, minNEvent, true /*clearBeforeStart*/);
   S()->activate(handle, 0);
@@ -533,7 +535,7 @@
   constexpr int64_t batchingPeriodInNs = 0; // no batching
   constexpr useconds_t minTimeUs = 5*1000*1000;  // 5 s
   constexpr size_t minNEvent = 50;
-  constexpr SensorType type = SensorType::SENSOR_TYPE_ACCELEROMETER;
+  constexpr SensorType type = SensorType::ACCELEROMETER;
 
   SensorInfo sensor = defaultSensorByType(type);
 
@@ -551,13 +553,13 @@
     return;
   }
 
-  S()->batch(handle, 0, minSamplingPeriodInNs, batchingPeriodInNs);
+  S()->batch(handle, minSamplingPeriodInNs, batchingPeriodInNs);
   S()->activate(handle, 1);
 
   usleep(500000); // sleep 0.5 sec to wait for change rate to happen
   events1 = collectEvents(sensor.minDelay * minNEvent, minNEvent, true /*clearBeforeStart*/);
 
-  S()->batch(handle, 0, maxSamplingPeriodInNs, batchingPeriodInNs);
+  S()->batch(handle, maxSamplingPeriodInNs, batchingPeriodInNs);
 
   usleep(500000); // sleep 0.5 sec to wait for change rate to happen
   events2 = collectEvents(sensor.maxDelay * minNEvent, minNEvent, true /*clearBeforeStart*/);
@@ -620,7 +622,7 @@
   constexpr int64_t oneSecondInNs = 1ull * 1000 * 1000 * 1000;
   constexpr useconds_t minTimeUs = 5*1000*1000;  // 5 s
   constexpr size_t minNEvent = 50;
-  constexpr SensorType type = SensorType::SENSOR_TYPE_ACCELEROMETER;
+  constexpr SensorType type = SensorType::ACCELEROMETER;
   constexpr int64_t maxBatchingTestTimeNs = 30ull * 1000 * 1000 * 1000;
 
   SensorInfo sensor = defaultSensorByType(type);
@@ -647,7 +649,7 @@
   int64_t allowedBatchDeliverTimeNs =
       std::max(oneSecondInNs, batchingPeriodInNs / 10);
 
-  S()->batch(handle, 0, minSamplingPeriodInNs, INT64_MAX);
+  S()->batch(handle, minSamplingPeriodInNs, INT64_MAX);
   S()->activate(handle, 1);
 
   usleep(500000); // sleep 0.5 sec to wait for initialization
diff --git a/sensors/1.0/vts/types.vts b/sensors/1.0/vts/types.vts
index 37271fd..2980507 100644
--- a/sensors/1.0/vts/types.vts
+++ b/sensors/1.0/vts/types.vts
@@ -15,17 +15,21 @@
         scalar_value: {
             int32_t: 0
         }
-        enumerator: "BAD_VALUE"
-        scalar_value: {
-            int32_t: 1
-        }
         enumerator: "PERMISSION_DENIED"
         scalar_value: {
-            int32_t: 2
+            int32_t: -1
+        }
+        enumerator: "NO_MEMORY"
+        scalar_value: {
+            int32_t: -12
+        }
+        enumerator: "BAD_VALUE"
+        scalar_value: {
+            int32_t: -22
         }
         enumerator: "INVALID_OPERATION"
         scalar_value: {
-            int32_t: 3
+            int32_t: -38
         }
     }
 }
@@ -36,11 +40,11 @@
     enum_value: {
         scalar_type: "int32_t"
 
-        enumerator: "SENSOR_HAL_NORMAL_MODE"
+        enumerator: "NORMAL"
         scalar_value: {
             int32_t: 0
         }
-        enumerator: "SENSOR_HAL_DATA_INJECTION_MODE"
+        enumerator: "DATA_INJECTION"
         scalar_value: {
             int32_t: 1
         }
@@ -53,147 +57,151 @@
     enum_value: {
         scalar_type: "int32_t"
 
-        enumerator: "SENSOR_TYPE_META_DATA"
+        enumerator: "META_DATA"
         scalar_value: {
             int32_t: 0
         }
-        enumerator: "SENSOR_TYPE_ACCELEROMETER"
+        enumerator: "ACCELEROMETER"
         scalar_value: {
             int32_t: 1
         }
-        enumerator: "SENSOR_TYPE_GEOMAGNETIC_FIELD"
+        enumerator: "MAGNETIC_FIELD"
         scalar_value: {
             int32_t: 2
         }
-        enumerator: "SENSOR_TYPE_ORIENTATION"
+        enumerator: "ORIENTATION"
         scalar_value: {
             int32_t: 3
         }
-        enumerator: "SENSOR_TYPE_GYROSCOPE"
+        enumerator: "GYROSCOPE"
         scalar_value: {
             int32_t: 4
         }
-        enumerator: "SENSOR_TYPE_LIGHT"
+        enumerator: "LIGHT"
         scalar_value: {
             int32_t: 5
         }
-        enumerator: "SENSOR_TYPE_PRESSURE"
+        enumerator: "PRESSURE"
         scalar_value: {
             int32_t: 6
         }
-        enumerator: "SENSOR_TYPE_TEMPERATURE"
+        enumerator: "TEMPERATURE"
         scalar_value: {
             int32_t: 7
         }
-        enumerator: "SENSOR_TYPE_PROXIMITY"
+        enumerator: "PROXIMITY"
         scalar_value: {
             int32_t: 8
         }
-        enumerator: "SENSOR_TYPE_GRAVITY"
+        enumerator: "GRAVITY"
         scalar_value: {
             int32_t: 9
         }
-        enumerator: "SENSOR_TYPE_LINEAR_ACCELERATION"
+        enumerator: "LINEAR_ACCELERATION"
         scalar_value: {
             int32_t: 10
         }
-        enumerator: "SENSOR_TYPE_ROTATION_VECTOR"
+        enumerator: "ROTATION_VECTOR"
         scalar_value: {
             int32_t: 11
         }
-        enumerator: "SENSOR_TYPE_RELATIVE_HUMIDITY"
+        enumerator: "RELATIVE_HUMIDITY"
         scalar_value: {
             int32_t: 12
         }
-        enumerator: "SENSOR_TYPE_AMBIENT_TEMPERATURE"
+        enumerator: "AMBIENT_TEMPERATURE"
         scalar_value: {
             int32_t: 13
         }
-        enumerator: "SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED"
+        enumerator: "MAGNETIC_FIELD_UNCALIBRATED"
         scalar_value: {
             int32_t: 14
         }
-        enumerator: "SENSOR_TYPE_GAME_ROTATION_VECTOR"
+        enumerator: "GAME_ROTATION_VECTOR"
         scalar_value: {
             int32_t: 15
         }
-        enumerator: "SENSOR_TYPE_GYROSCOPE_UNCALIBRATED"
+        enumerator: "GYROSCOPE_UNCALIBRATED"
         scalar_value: {
             int32_t: 16
         }
-        enumerator: "SENSOR_TYPE_SIGNIFICANT_MOTION"
+        enumerator: "SIGNIFICANT_MOTION"
         scalar_value: {
             int32_t: 17
         }
-        enumerator: "SENSOR_TYPE_STEP_DETECTOR"
+        enumerator: "STEP_DETECTOR"
         scalar_value: {
             int32_t: 18
         }
-        enumerator: "SENSOR_TYPE_STEP_COUNTER"
+        enumerator: "STEP_COUNTER"
         scalar_value: {
             int32_t: 19
         }
-        enumerator: "SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR"
+        enumerator: "GEOMAGNETIC_ROTATION_VECTOR"
         scalar_value: {
             int32_t: 20
         }
-        enumerator: "SENSOR_TYPE_HEART_RATE"
+        enumerator: "HEART_RATE"
         scalar_value: {
             int32_t: 21
         }
-        enumerator: "SENSOR_TYPE_TILT_DETECTOR"
+        enumerator: "TILT_DETECTOR"
         scalar_value: {
             int32_t: 22
         }
-        enumerator: "SENSOR_TYPE_WAKE_GESTURE"
+        enumerator: "WAKE_GESTURE"
         scalar_value: {
             int32_t: 23
         }
-        enumerator: "SENSOR_TYPE_GLANCE_GESTURE"
+        enumerator: "GLANCE_GESTURE"
         scalar_value: {
             int32_t: 24
         }
-        enumerator: "SENSOR_TYPE_PICK_UP_GESTURE"
+        enumerator: "PICK_UP_GESTURE"
         scalar_value: {
             int32_t: 25
         }
-        enumerator: "SENSOR_TYPE_WRIST_TILT_GESTURE"
+        enumerator: "WRIST_TILT_GESTURE"
         scalar_value: {
             int32_t: 26
         }
-        enumerator: "SENSOR_TYPE_DEVICE_ORIENTATION"
+        enumerator: "DEVICE_ORIENTATION"
         scalar_value: {
             int32_t: 27
         }
-        enumerator: "SENSOR_TYPE_POSE_6DOF"
+        enumerator: "POSE_6DOF"
         scalar_value: {
             int32_t: 28
         }
-        enumerator: "SENSOR_TYPE_STATIONARY_DETECT"
+        enumerator: "STATIONARY_DETECT"
         scalar_value: {
             int32_t: 29
         }
-        enumerator: "SENSOR_TYPE_MOTION_DETECT"
+        enumerator: "MOTION_DETECT"
         scalar_value: {
             int32_t: 30
         }
-        enumerator: "SENSOR_TYPE_HEART_BEAT"
+        enumerator: "HEART_BEAT"
         scalar_value: {
             int32_t: 31
         }
-        enumerator: "SENSOR_TYPE_DYNAMIC_SENSOR_META"
+        enumerator: "DYNAMIC_SENSOR_META"
         scalar_value: {
             int32_t: 32
         }
-        enumerator: "SENSOR_TYPE_ADDITIONAL_INFO"
+        enumerator: "ADDITIONAL_INFO"
         scalar_value: {
             int32_t: 33
         }
-        enumerator: "SENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT"
+        enumerator: "LOW_LATENCY_OFFBODY_DETECT"
         scalar_value: {
             int32_t: 34
         }
-        enumerator: "SENSOR_TYPE_DEVICE_PRIVATE_BASE"
+        enumerator: "ACCELEROMETER_UNCALIBRATED"
+        scalar_value: {
+            int32_t: 35
+        }
+        enumerator: "DEVICE_PRIVATE_BASE"
         scalar_value: {
             int32_t: 65536
         }
@@ -204,39 +212,92 @@
     name: "::android::hardware::sensors::V1_0::SensorFlagBits"
     type: TYPE_ENUM
     enum_value: {
-        scalar_type: "uint64_t"
+        scalar_type: "uint32_t"
 
-        enumerator: "SENSOR_FLAG_WAKE_UP"
+        enumerator: "WAKE_UP"
         scalar_value: {
-            uint64_t: 1
+            uint32_t: 1
         }
-        enumerator: "SENSOR_FLAG_CONTINUOUS_MODE"
+        enumerator: "CONTINUOUS_MODE"
         scalar_value: {
-            uint64_t: 0
+            uint32_t: 0
         }
-        enumerator: "SENSOR_FLAG_ON_CHANGE_MODE"
+        enumerator: "ON_CHANGE_MODE"
         scalar_value: {
-            uint64_t: 2
+            uint32_t: 2
         }
-        enumerator: "SENSOR_FLAG_ONE_SHOT_MODE"
+        enumerator: "ONE_SHOT_MODE"
         scalar_value: {
-            uint64_t: 4
+            uint32_t: 4
         }
-        enumerator: "SENSOR_FLAG_SPECIAL_REPORTING_MODE"
+        enumerator: "SPECIAL_REPORTING_MODE"
         scalar_value: {
-            uint64_t: 6
+            uint32_t: 6
         }
-        enumerator: "SENSOR_FLAG_SUPPORTS_DATA_INJECTION"
+        enumerator: "DATA_INJECTION"
         scalar_value: {
-            uint64_t: 16
+            uint32_t: 16
         }
-        enumerator: "SENSOR_FLAG_DYNAMIC_SENSOR"
+        enumerator: "DYNAMIC_SENSOR"
         scalar_value: {
-            uint64_t: 32
+            uint32_t: 32
         }
-        enumerator: "SENSOR_FLAG_ADDITIONAL_INFO"
+        enumerator: "ADDITIONAL_INFO"
         scalar_value: {
-            uint64_t: 64
+            uint32_t: 64
+        }
+        enumerator: "DIRECT_CHANNEL_ASHMEM"
+        scalar_value: {
+            uint32_t: 1024
+        }
+        enumerator: "DIRECT_CHANNEL_GRALLOC"
+        scalar_value: {
+            uint32_t: 2048
+        }
+        enumerator: "MASK_REPORTING_MODE"
+        scalar_value: {
+            uint32_t: 14
+        }
+        enumerator: "MASK_DIRECT_REPORT"
+        scalar_value: {
+            uint32_t: 896
+        }
+        enumerator: "MASK_DIRECT_CHANNEL"
+        scalar_value: {
+            uint32_t: 3072
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::sensors::V1_0::SensorFlagShift"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "uint8_t"
+
+        enumerator: "REPORTING_MODE"
+        scalar_value: {
+            uint8_t: 1
+        }
+        enumerator: "DATA_INJECTION"
+        scalar_value: {
+            uint8_t: 4
+        }
+        enumerator: "DYNAMIC_SENSOR"
+        scalar_value: {
+            uint8_t: 5
+        }
+        enumerator: "ADDITIONAL_INFO"
+        scalar_value: {
+            uint8_t: 6
+        }
+        enumerator: "DIRECT_REPORT"
+        scalar_value: {
+            uint8_t: 7
+        }
+        enumerator: "DIRECT_CHANNEL"
+        scalar_value: {
+            uint8_t: 10
         }
     }
 }
@@ -312,8 +373,11 @@
     }
     struct_value: {
         name: "flags"
-        type: TYPE_SCALAR
-        scalar_type: "uint64_t"
+        type: TYPE_MASK
+        enum_value: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::sensors::V1_0::SensorFlagBits"
+        }
     }
 }
 
@@ -323,23 +387,23 @@
     enum_value: {
         scalar_type: "int8_t"
 
-        enumerator: "SENSOR_STATUS_NO_CONTACT"
+        enumerator: "NO_CONTACT"
         scalar_value: {
             int8_t: -1
         }
-        enumerator: "SENSOR_STATUS_UNRELIABLE"
+        enumerator: "UNRELIABLE"
         scalar_value: {
             int8_t: 0
         }
-        enumerator: "SENSOR_STATUS_ACCURACY_LOW"
+        enumerator: "ACCURACY_LOW"
         scalar_value: {
             int8_t: 1
         }
-        enumerator: "SENSOR_STATUS_ACCURACY_MEDIUM"
+        enumerator: "ACCURACY_MEDIUM"
         scalar_value: {
             int8_t: 2
         }
-        enumerator: "SENSOR_STATUS_ACCURACY_HIGH"
+        enumerator: "ACCURACY_HIGH"
         scalar_value: {
             int8_t: 3
         }
@@ -697,3 +761,82 @@
     }
 }
 
+attribute: {
+    name: "::android::hardware::sensors::V1_0::RateLevel"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "STOP"
+        scalar_value: {
+            int32_t: 0
+        }
+        enumerator: "NORMAL"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "FAST"
+        scalar_value: {
+            int32_t: 2
+        }
+        enumerator: "VERY_FAST"
+        scalar_value: {
+            int32_t: 3
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::sensors::V1_0::SharedMemType"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "ASHMEM"
+        scalar_value: {
+            int32_t: 1
+        }
+        enumerator: "GRALLOC"
+        scalar_value: {
+            int32_t: 2
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::sensors::V1_0::SharedMemFormat"
+    type: TYPE_ENUM
+    enum_value: {
+        scalar_type: "int32_t"
+
+        enumerator: "SENSORS_EVENT"
+        scalar_value: {
+            int32_t: 1
+        }
+    }
+}
+
+attribute: {
+    name: "::android::hardware::sensors::V1_0::SharedMemInfo"
+    type: TYPE_STRUCT
+    struct_value: {
+        name: "type"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::sensors::V1_0::SharedMemType"
+    }
+    struct_value: {
+        name: "format"
+        type: TYPE_ENUM
+        predefined_type: "::android::hardware::sensors::V1_0::SharedMemFormat"
+    }
+    struct_value: {
+        name: "size"
+        type: TYPE_SCALAR
+        scalar_type: "uint32_t"
+    }
+    struct_value: {
+        name: "memoryHandle"
+        type: TYPE_HANDLE
+    }
+}
+