Add new APIs and Deprecate a old API 17/224617/1
authorBoram Bae <boram21.bae@samsung.com>
Wed, 5 Feb 2020 07:26:04 +0000 (16:26 +0900)
committerBoram Bae <boram21.bae@samsung.com>
Wed, 12 Feb 2020 04:01:23 +0000 (13:01 +0900)
* Add int sensor_listener_read_data_list(sensor_listener_h listener, sensor_event_s **events, int *count);
* Add int sensor_listener_flush(sensor_listener_h listener);
* Deprecate int sensor_listener_read_data(sensor_listener_h listener, sensor_event_s *event);
* Use sensor_listener_read_data_list instead of sensor_listener_read_data

Change-Id: I730643557c2650a6447090b0b0ce5b16672969ed
Signed-off-by: Boram Bae <boram21.bae@samsung.com>
include/sensor.h
src/sensor.cpp

index 563fe13..5b152af 100644 (file)
@@ -976,6 +976,7 @@ int sensor_listener_unset_accuracy_cb(sensor_listener_h listener);
 
 
 /**
+ * @deprecated Deprecated since 5.5. Use sensor_listener_read_data_list() instead.
  * @brief   Reads the current sensor data via a given sensor listener.
  * @details This function synchronously reads the sensor reading of the corresponding sensor, if available.
  *          Otherwise, if the sensor is not ready to report its values, this function fails and returns
@@ -998,8 +999,35 @@ int sensor_listener_unset_accuracy_cb(sensor_listener_h listener);
  * @retval  #SENSOR_ERROR_INVALID_PARAMETER    Invalid parameter
  * @retval  #SENSOR_ERROR_OPERATION_FAILED     Operation failed
  */
-int sensor_listener_read_data(sensor_listener_h listener, sensor_event_s *event);
+int sensor_listener_read_data(sensor_listener_h listener, sensor_event_s *event) TIZEN_DEPRECATED_API;
 
+/**
+ * @brief   Reads the current sensor data list via a given sensor listener.
+ * @details This function synchronously reads the sensor reading of the corresponding sensor, if available.
+ *          Otherwise, if the sensor is not ready to report its values, this function fails and returns
+ *          #SENSOR_ERROR_OPERATION_FAILED.
+ * @since_tizen 5.5
+ *
+ * @remarks  As a sensor usually works in an event-driven manner, it may not be able to read its data on demand.
+ *          Then this function tries to return the last known values.@n
+ *          When there are last known values that are caused by multi-event publishing, the @a count is greater than or equal to 1.@n
+ *          To be able to read the current values or the last known values, the sensor needs to be enabled in advance.
+ *          As an application cannot be sure that the sensor is already enabled by other applications,
+ *          it is recommended to start the sensor explicitly by using sensor_listener_start().@n
+ *          But note that, even if the sensor is started, on-demand reading can fail always,
+ *          thus it would be better to use the asynchronous callback approach.
+ *          The @a events must be released using free(), if not being used anymore.@n
+ *
+ * @param[in]   listener    A listener handle
+ * @param[out]  events      The retrieved sensor data list
+ * @param[out]  count       The number of event contained in @a events
+ *
+ * @return  #SENSOR_ERROR_NONE on success, otherwise a negative error value
+ * @retval  #SENSOR_ERROR_NONE                 Successful
+ * @retval  #SENSOR_ERROR_INVALID_PARAMETER    Invalid parameter
+ * @retval  #SENSOR_ERROR_OPERATION_FAILED     Operation failed
+ */
+int sensor_listener_read_data_list(sensor_listener_h listener, sensor_event_s **events, int *count);
 
 /**
  * @brief   Changes the update interval of a sensor.
@@ -1092,6 +1120,21 @@ int sensor_listener_set_attribute_int(sensor_listener_h listener, sensor_attribu
 int sensor_listener_set_option(sensor_listener_h listener, sensor_option_e option);
 
 /**
+ * @brief   Flushes stored data of a sensor.
+ * @details  Flushes all data of a sensor as if the max batch latency has expired.
+ *          Data are delivered in the usual way through the event callback function. @n
+ *          In cases of non-batching sensors, this function returns #SENSOR_ERROR_NONE
+ * @since_tizen 5.5
+ *
+ * @param[in]   listener        A listener handle
+ * @return  #SENSOR_ERROR_NONE on success, otherwise a negative error value
+ * @retval  #SENSOR_ERROR_NONE                 Successful
+ * @retval  #SENSOR_ERROR_INVALID_PARAMETER    Invalid parameter
+ * @retval  #SENSOR_ERROR_OPERATION_FAILED     Operation failed
+ */
+int sensor_listener_flush(sensor_listener_h listener);
+
+/**
  * @}
  */
 
index 2be62af..80a84b0 100644 (file)
@@ -730,6 +730,7 @@ int sensor_listener_read_data(sensor_listener_h listener, sensor_event_s *event)
        sensor_data_t data;
        unsigned int data_id;
 
+       _W("DEPRECATION WARNING: sensor_listener_read_data() is deprecated and will be removed from next release. Use sensor_listener_read_data_list() instead.");
        _D("called sensor_read_data : listener[%p]", listener);
 
        if (!listener || !event)
@@ -757,6 +758,59 @@ int sensor_listener_read_data(sensor_listener_h listener, sensor_event_s *event)
        return SENSOR_ERROR_NONE;
 }
 
+int sensor_listener_read_data_list(sensor_listener_h listener, sensor_event_s **events, int *count)
+{
+       int id;
+       int type;
+       sensor_data_t* data_list = NULL;
+       int data_list_count = 0;
+       unsigned int data_id;
+
+       _D("called sensor_get_data_list : listener[%p]", listener);
+
+       if (!listener || !events || !count)
+               return SENSOR_ERROR_INVALID_PARAMETER;
+
+       if (listener->magic != SENSOR_LISTENER_MAGIC)
+               return SENSOR_ERROR_INVALID_PARAMETER;
+
+       id = listener->id;
+       type = (int)listener->type;
+       data_id = type << SENSOR_SHIFT_TYPE | 0x1;
+
+       if (!sensord_get_data_list(id, data_id, &data_list, &data_list_count))
+               return SENSOR_ERROR_OPERATION_FAILED;
+
+       *events = (sensor_event_s *)data_list;
+       *count = data_list_count;
+
+       _D("success sensor_get_data_list");
+
+       return SENSOR_ERROR_NONE;
+}
+
+int sensor_listener_flush(sensor_listener_h listener)
+{
+       int id;
+
+       _D("called sensor_flush : listener[%p]", listener);
+
+       if (!listener)
+               return SENSOR_ERROR_INVALID_PARAMETER;
+
+       if (listener->magic != SENSOR_LISTENER_MAGIC)
+               return SENSOR_ERROR_INVALID_PARAMETER;
+
+       id = listener->id;
+
+       if (!sensord_flush(id))
+               return SENSOR_ERROR_OPERATION_FAILED;
+
+       _D("success sensor_flush");
+
+       return SENSOR_ERROR_NONE;;
+}
+
 int sensor_get_uri(sensor_h sensor, char **uri)
 {
        if (!sensor || !uri)