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

Commit c8d0f5ea authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Adds conversion for quaternion data with accuracy"

parents 190473b0 fa2fcddb
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);