From 1f12c7a338884479cbc274094ca834bee1bb98ca Mon Sep 17 00:00:00 2001 From: Peng Xu Date: Wed, 11 Jan 2017 11:08:45 -0800 Subject: [PATCH] [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, and use uint32_t since only low 32 bits are used. Test: all sensor works(in marlin), tested with sensorlogger. Change-Id: I93a4d13c5d2e054857d1e400d15002aeb9a47368 --- sensors/1.0/ISensors.hal | 15 - sensors/1.0/default/Sensors.cpp | 12 +- sensors/1.0/default/Sensors.h | 4 - sensors/1.0/default/convert.cpp | 308 +++++++++--------- sensors/1.0/types.hal | 308 +++++++++--------- sensors/1.0/vts/Sensors.vts | 72 ++-- .../vts/functional/sensors_hidl_hal_test.cpp | 122 +++---- sensors/1.0/vts/types.vts | 279 ++++++++++++---- 8 files changed, 641 insertions(+), 479 deletions(-) diff --git a/sensors/1.0/ISensors.hal b/sensors/1.0/ISensors.hal index c929ef8c88..c56da29cf5 100644 --- a/sensors/1.0/ISensors.hal +++ b/sensors/1.0/ISensors.hal @@ -51,20 +51,6 @@ interface ISensors { */ 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 @@ interface ISensors { * @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 f9f1ca6ecf..8903397a2b 100644 --- a/sensors/1.0/default/Sensors.cpp +++ b/sensors/1.0/default/Sensors.cpp @@ -142,15 +142,6 @@ Return Sensors::activate( enabled)); } -Return Sensors::setDelay( - int32_t sensor_handle, int64_t sampling_period_ns) { - return ResultFromStatus( - mSensorDevice->setDelay( - reinterpret_cast(mSensorDevice), - sensor_handle, - sampling_period_ns)); -} - Return Sensors::poll(int32_t maxCount, poll_cb _hidl_cb) { hidl_vec out; hidl_vec dynamicSensorsAdded; @@ -206,14 +197,13 @@ Return Sensors::poll(int32_t maxCount, poll_cb _hidl_cb) { Return 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 a33f2831d9..e8bd98dcfe 100644 --- a/sensors/1.0/default/Sensors.h +++ b/sensors/1.0/default/Sensors.h @@ -39,14 +39,10 @@ struct Sensors : public ::android::hardware::sensors::V1_0::ISensors { Return activate( int32_t sensor_handle, bool enabled) override; - Return setDelay( - int32_t sensor_handle, int64_t sampling_period_ns) override; - Return poll(int32_t maxCount, poll_cb _hidl_cb) override; Return 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 68fb75c786..6735e96890 100644 --- a/sensors/1.0/default/convert.cpp +++ b/sensors/1.0/default/convert.cpp @@ -72,18 +72,18 @@ void convertFromSensorEvent(const sensors_event_t &src, Event *dst) { 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 @@ void convertFromSensorEvent(const sensors_event_t &src, Event *dst) { 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 @@ void convertFromSensorEvent(const sensors_event_t &src, Event *dst) { 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 @@ void convertToSensorEvent(const Event &src, sensors_event_t *dst) { 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 @@ void convertToSensorEvent(const Event &src, sensors_event_t *dst) { 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 @@ void convertToSensorEvent(const Event &src, sensors_event_t *dst) { 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 @@ void convertToSensorEvent(const Event &src, sensors_event_t *dst) { 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 d93fabdaeb..c8c8dfcde0 100644 --- a/sensors/1.0/types.hal +++ b/sensors/1.0/types.hal @@ -34,10 +34,10 @@ enum Result : int32_t { /* * 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 @@ enum OperationMode : int32_t { * 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 @@ enum OperationMode : int32_t { * 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 @@ enum OperationMode : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * * 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 @@ enum SensorType : int32_t { * * 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 @@ enum SensorType : int32_t { * * 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 @@ enum SensorType : int32_t { * * 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 @@ enum SensorType : int32_t { * * 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 @@ enum SensorType : int32_t { * * 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 @@ enum SensorType : int32_t { * * 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 @@ enum SensorType : int32_t { * . 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 @@ enum SensorType : int32_t { * * 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 @@ enum SensorType : int32_t { * * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorType : int32_t { * 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 @@ enum SensorFlagBits : uint64_t { * 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 @@ enum SensorFlagBits : uint64_t { * 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 @@ enum SensorFlagBits : uint64_t { * 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 @@ struct SensorInfo { /* 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 @@ struct SensorInfo { int32_t maxDelay; /* Bitmask of SensorFlagBits */ - uint64_t flags; + bitfield 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 Uncal { }; 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 @@ struct AdditionalInfo { * 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 f80fff5dc6..9e90755a5c 100644 --- a/sensors/1.0/vts/Sensors.vts +++ b/sensors/1.0/vts/Sensors.vts @@ -46,22 +46,6 @@ interface: { } } - 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: { @@ -98,10 +82,6 @@ interface: { type: TYPE_SCALAR scalar_type: "int32_t" } - arg: { - type: TYPE_SCALAR - scalar_type: "int32_t" - } arg: { type: TYPE_SCALAR scalar_type: "int64_t" @@ -136,4 +116,56 @@ interface: { } } + 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 17c439e7df..2edc5c370f 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 @@ class SensorsHidlTest : public ::testing::Test { 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 @@ class SensorsHidlTest : public ::testing::Test { 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::typeMatchStringType(SensorType type, const hidl_string& st } 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 @@ bool SensorsHidlTest::delayMatchReportMode( 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 @@ bool SensorsHidlTest::delayMatchReportMode( 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 @@ TEST_F(SensorsHidlTest, SensorListValid) { // 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 @@ TEST_F(SensorsHidlTest, NormalAccelerometerStreamingOperation) { 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 @@ TEST_F(SensorsHidlTest, NormalAccelerometerStreamingOperation) { 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 @@ TEST_F(SensorsHidlTest, NormalGyroscopeStreamingOperation) { 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 @@ TEST_F(SensorsHidlTest, NormalGyroscopeStreamingOperation) { 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 @@ TEST_F(SensorsHidlTest, AccelerometerSamplingPeriodHotSwitchOperation) { 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 @@ TEST_F(SensorsHidlTest, AccelerometerSamplingPeriodHotSwitchOperation) { 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 @@ TEST_F(SensorsHidlTest, AccelerometerBatchingOperation) { 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 @@ TEST_F(SensorsHidlTest, AccelerometerBatchingOperation) { 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 37271fdaa6..29805079e1 100644 --- a/sensors/1.0/vts/types.vts +++ b/sensors/1.0/vts/types.vts @@ -15,17 +15,21 @@ attribute: { 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 @@ attribute: { 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 @@ attribute: { 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 @@ attribute: { 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 @@ attribute: { } 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 @@ attribute: { 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: { } } +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 + } +} +