[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
This commit is contained in:
Peng Xu
2017-01-11 11:08:45 -08:00
parent ef57875746
commit 1f12c7a338
8 changed files with 641 additions and 479 deletions

View File

@@ -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);

View File

@@ -142,15 +142,6 @@ Return<Result> Sensors::activate(
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<void> Sensors::poll(int32_t maxCount, poll_cb _hidl_cb) {
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));
}

View File

@@ -39,14 +39,10 @@ struct Sensors : public ::android::hardware::sensors::V1_0::ISensors {
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;

View File

@@ -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;

View File

@@ -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<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 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;
};

View File

@@ -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"
}
}
}

View File

@@ -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

View File

@@ -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
}
}