Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa2fcddb authored by Arthur Ishiguro's avatar Arthur Ishiguro
Browse files

Adds conversion for quaternion data with accuracy

Also applies formatter.

Bug: 116874058
Test: Compile and verify apps can receive the accuracy
      field

Change-Id: I2535a5a9315ac3d343dcdf6010d3ae74288dfcd4
parent 8ad3e78d
Loading
Loading
Loading
Loading
+151 −164
Original line number Diff line number Diff line
@@ -74,8 +74,7 @@ void convertFromSensorEvent(const sensors_event_t &src, Event *dst) {
    };

    switch (dst->sensorType) {
        case SensorType::META_DATA:
        {
        case SensorType::META_DATA: {
            dst->u.meta.what = (MetaDataEventType)src.meta_data.what;
            // Legacy HALs contain the handle reference in the meta data field.
            // Copy that over to the handle of the event. In legacy HALs this
@@ -89,8 +88,7 @@ void convertFromSensorEvent(const sensors_event_t &src, Event *dst) {
        case SensorType::ORIENTATION:
        case SensorType::GYROSCOPE:
        case SensorType::GRAVITY:
        case SensorType::LINEAR_ACCELERATION:
        {
        case SensorType::LINEAR_ACCELERATION: {
            dst->u.vec3.x = src.acceleration.x;
            dst->u.vec3.y = src.acceleration.y;
            dst->u.vec3.z = src.acceleration.z;
@@ -98,10 +96,7 @@ void convertFromSensorEvent(const sensors_event_t &src, Event *dst) {
            break;
        }

        case SensorType::ROTATION_VECTOR:
        case SensorType::GAME_ROTATION_VECTOR:
        case SensorType::GEOMAGNETIC_ROTATION_VECTOR:
        {
        case SensorType::GAME_ROTATION_VECTOR: {
            dst->u.vec4.x = src.data[0];
            dst->u.vec4.y = src.data[1];
            dst->u.vec4.z = src.data[2];
@@ -109,10 +104,19 @@ void convertFromSensorEvent(const sensors_event_t &src, Event *dst) {
            break;
        }

        case SensorType::ROTATION_VECTOR:
        case SensorType::GEOMAGNETIC_ROTATION_VECTOR: {
            dst->u.data[0] = src.data[0];
            dst->u.data[1] = src.data[1];
            dst->u.data[2] = src.data[2];
            dst->u.data[3] = src.data[3];
            dst->u.data[4] = src.data[4];
            break;
        }

        case SensorType::MAGNETIC_FIELD_UNCALIBRATED:
        case SensorType::GYROSCOPE_UNCALIBRATED:
      case SensorType::ACCELEROMETER_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;
@@ -139,55 +143,44 @@ void convertFromSensorEvent(const sensors_event_t &src, Event *dst) {
        case SensorType::STATIONARY_DETECT:
        case SensorType::MOTION_DETECT:
        case SensorType::HEART_BEAT:
      case SensorType::LOW_LATENCY_OFFBODY_DETECT:
      {
        case SensorType::LOW_LATENCY_OFFBODY_DETECT: {
            dst->u.scalar = src.data[0];
            break;
        }

      case SensorType::STEP_COUNTER:
      {
        case SensorType::STEP_COUNTER: {
            dst->u.stepCount = src.u64.step_counter;
            break;
        }

      case SensorType::HEART_RATE:
      {
        case SensorType::HEART_RATE: {
            dst->u.heartRate.bpm = src.heart_rate.bpm;
            dst->u.heartRate.status = (SensorStatus)src.heart_rate.status;
            break;
        }

      case SensorType::POSE_6DOF:  // 15 floats
      {
        case SensorType::POSE_6DOF: {  // 15 floats
            for (size_t i = 0; i < 15; ++i) {
                dst->u.pose6DOF[i] = src.data[i];
            }
            break;
        }

      case SensorType::DYNAMIC_SENSOR_META:
      {
        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;
        }

      case SensorType::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;

          dstInfo->type =
              (::android::hardware::sensors::V1_0::AdditionalInfoType)
                  srcInfo.type;
            dstInfo->type = (::android::hardware::sensors::V1_0::AdditionalInfoType)srcInfo.type;

            dstInfo->serial = srcInfo.serial;

@@ -196,10 +189,8 @@ void convertFromSensorEvent(const sensors_event_t &src, Event *dst) {
            break;
        }

      default:
      {
          CHECK_GE((int32_t)dst->sensorType,
                   (int32_t)SensorType::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;
@@ -208,17 +199,14 @@ void convertFromSensorEvent(const sensors_event_t &src, Event *dst) {
}

void convertToSensorEvent(const Event &src, sensors_event_t *dst) {
  *dst = {
      .version = sizeof(sensors_event_t),
    *dst = {.version = sizeof(sensors_event_t),
            .sensor = src.sensorHandle,
            .type = (int32_t)src.sensorType,
            .reserved0 = 0,
      .timestamp = src.timestamp
  };
            .timestamp = src.timestamp};

    switch (src.sensorType) {
      case SensorType::META_DATA:
      {
        case SensorType::META_DATA: {
            // Legacy HALs expect the handle reference in the meta data field.
            // Copy it over from the handle of the event.
            dst->meta_data.what = (int32_t)src.u.meta.what;
@@ -233,8 +221,7 @@ void convertToSensorEvent(const Event &src, sensors_event_t *dst) {
        case SensorType::ORIENTATION:
        case SensorType::GYROSCOPE:
        case SensorType::GRAVITY:
      case SensorType::LINEAR_ACCELERATION:
      {
        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;
@@ -242,10 +229,7 @@ void convertToSensorEvent(const Event &src, sensors_event_t *dst) {
            break;
        }

      case SensorType::ROTATION_VECTOR:
      case SensorType::GAME_ROTATION_VECTOR:
      case SensorType::GEOMAGNETIC_ROTATION_VECTOR:
      {
        case SensorType::GAME_ROTATION_VECTOR: {
            dst->data[0] = src.u.vec4.x;
            dst->data[1] = src.u.vec4.y;
            dst->data[2] = src.u.vec4.z;
@@ -253,6 +237,16 @@ void convertToSensorEvent(const Event &src, sensors_event_t *dst) {
            break;
        }

        case SensorType::ROTATION_VECTOR:
        case SensorType::GEOMAGNETIC_ROTATION_VECTOR: {
            dst->data[0] = src.u.data[0];
            dst->data[1] = src.u.data[1];
            dst->data[2] = src.u.data[2];
            dst->data[3] = src.u.data[3];
            dst->data[4] = src.u.data[4];
            break;
        }

        case SensorType::MAGNETIC_FIELD_UNCALIBRATED:
        case SensorType::GYROSCOPE_UNCALIBRATED:
        case SensorType::ACCELEROMETER_UNCALIBRATED:
@@ -283,35 +277,30 @@ void convertToSensorEvent(const Event &src, sensors_event_t *dst) {
        case SensorType::STATIONARY_DETECT:
        case SensorType::MOTION_DETECT:
        case SensorType::HEART_BEAT:
        case SensorType::LOW_LATENCY_OFFBODY_DETECT:
        {
        case SensorType::LOW_LATENCY_OFFBODY_DETECT: {
            dst->data[0] = src.u.scalar;
            break;
        }

        case SensorType::STEP_COUNTER:
        {
        case SensorType::STEP_COUNTER: {
            dst->u64.step_counter = src.u.stepCount;
            break;
        }

        case SensorType::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::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];
            }
            break;
        }

        case SensorType::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;
            dst->dynamic_sensor_meta.sensor = NULL;  // to be filled in later
@@ -323,8 +312,7 @@ void convertToSensorEvent(const Event &src, sensors_event_t *dst) {
            break;
        }

        case SensorType::ADDITIONAL_INFO:
        {
        case SensorType::ADDITIONAL_INFO: {
            const ::android::hardware::sensors::V1_0::AdditionalInfo &srcInfo =
                src.u.additional;

@@ -341,8 +329,7 @@ void convertToSensorEvent(const Event &src, sensors_event_t *dst) {
            break;
        }

        default:
        {
        default: {
            CHECK_GE((int32_t)src.sensorType,
                     (int32_t)SensorType::DEVICE_PRIVATE_BASE);