From 3c8de602f59d57234c2b9ea152fd2a47c4eec4fa Mon Sep 17 00:00:00 2001 From: Boram Bae Date: Wed, 5 Feb 2020 16:26:04 +0900 Subject: [PATCH] Add new APIs and Deprecate a old API * 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 --- include/sensor.h | 45 +++++++++++++++++++++++++++++++++++++++- src/sensor.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 1 deletion(-) diff --git a/include/sensor.h b/include/sensor.h index 563fe13..5b152af 100644 --- a/include/sensor.h +++ b/include/sensor.h @@ -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. @@ -1091,6 +1119,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); + /** * @} */ diff --git a/src/sensor.cpp b/src/sensor.cpp index 2be62af..80a84b0 100644 --- a/src/sensor.cpp +++ b/src/sensor.cpp @@ -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) -- 2.34.1