/**
+ * @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
* @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.
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);
+
+/**
* @}
*/
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)
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)