Remove garbage value in rotation vector 39/275939/3
authorTaeminYeom <taemin.yeom@samsung.com>
Tue, 7 Jun 2022 05:39:51 +0000 (14:39 +0900)
committerTaeminYeom <taemin.yeom@samsung.com>
Wed, 8 Jun 2022 02:18:17 +0000 (11:18 +0900)
After sensord restarts, the clients don't get the value "0 0 0 0" in rv

Change-Id: Iea0e590927c75290a2f906991ca3245962b461d8
Signed-off-by: TaeminYeom <taemin.yeom@samsung.com>
src/fusion-sensor/rotation_vector/gyro_rv_sensor.cpp
src/fusion-sensor/rotation_vector/magnetic_rv_sensor.cpp
src/fusion-sensor/rotation_vector/rv_sensor.cpp

index 77e617e8ef2625d3bd731781c89a9b0b3e78dab4..6f6d842dd98244ce42e5373c7e3062ef620420df 100644 (file)
@@ -104,6 +104,11 @@ int gyro_rv_sensor::update(uint32_t id, sensor_data_t *data, int len)
 
 int gyro_rv_sensor::get_data(sensor_data_t **data, int *length)
 {
+       if (m_w == 0.0f && m_x == 0.0f && m_y == 0.0f && m_z == 0.0f) {
+               _D("Gyroscope rotation vector value is not calculated yet");
+               return -1;
+       }
+
        sensor_data_t *sensor_data;
        sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t));
        retvm_if(!sensor_data, -ENOMEM, "Failed to allocate memory");
index 141266497dc01ad3323f1913c2424cd266997270..c0c8ab2f1201357b34fbae91be7c0f40eb014fc7 100644 (file)
@@ -104,6 +104,11 @@ int magnetic_rv_sensor::update(uint32_t id, sensor_data_t *data, int len)
 
 int magnetic_rv_sensor::get_data(sensor_data_t **data, int *length)
 {
+       if (m_w == 0.0f && m_x == 0.0f && m_y == 0.0f && m_z == 0.0f) {
+               _D("Magnetic rotation vector value is not calculated yet");
+               return -1;
+       }
+
        sensor_data_t *sensor_data;
        sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t));
        retvm_if(!sensor_data, -ENOMEM, "Failed to allocate memory");
index 2dca0597456434d4f64dc5c1fb6c82836eca59a1..2f43eddf07d37adb0d13ade4a6179de4647e6bf0 100644 (file)
@@ -110,6 +110,11 @@ int rv_sensor::update(uint32_t id, sensor_data_t *data, int len)
 
 int rv_sensor::get_data(sensor_data_t **data, int *length)
 {
+       if (m_w == 0.0f && m_x == 0.0f && m_y == 0.0f && m_z == 0.0f) {
+               _D("Rotation vector value is not calculated yet");
+               return -1;
+       }
+
        sensor_data_t *sensor_data;
        sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t));
        retvm_if(!sensor_data, -ENOMEM, "Failed to allocate memory");