Remove garbage value in rotation vector 76/275976/1
authorTaeminYeom <taemin.yeom@samsung.com>
Tue, 7 Jun 2022 05:39:51 +0000 (14:39 +0900)
committerHyotaek Shim <hyotaek.shim@samsung.com>
Wed, 8 Jun 2022 02:27:49 +0000 (02:27 +0000)
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 9f280ad3ac90fd2498597f525e88aee72862e267..a3057766973e404098670c93ab1eafbdf2b236ec 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 45127243a39e5cfdf66dfb2f2e0b0bf23f451a5e..225ca239b07d304ca47a8ff0758b2564ea03c4a2 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 8f4007e79ed8e80a10bf42d26b7a384ddcea3469..ef57a40ca1409b7e6f64747a102fdb1ea7cb7c6c 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");