[ITC][sensor][ACR-1498][Added Read data list and flush API] 64/226064/1
authorPriya Kohli <priya.kohli@samsung.com>
Wed, 26 Feb 2020 06:23:16 +0000 (11:53 +0530)
committerPriya Kohli <priya.kohli@samsung.com>
Wed, 26 Feb 2020 10:13:39 +0000 (10:13 +0000)
Change-Id: I48e8c3beefa68ce7dc973be10d199ca24f03003d
Signed-off-by: Priya Kohli <priya.kohli@samsung.com>
(cherry picked from commit 5c0cef1f8d00d04affaeb21a56c705df54e4139f)

src/itc/sensor/ITs-sensor.c
src/itc/sensor/tct-sensor-native_mobile.h
src/itc/sensor/tct-sensor-native_tizeniot.h
src/itc/sensor/tct-sensor-native_wearable.h

index 61200d1ec1ed4bf37095e7eb24e37e09479cc336..f4d04417b900af5de497f5251f4e2b7b71ee76f9 100755 (executable)
@@ -1190,28 +1190,29 @@ int ITc_sensor_listener_start_stop_p(void)
        return 0;
 }
 
-//& purpose: To get sensor data
+//& purpose: To read the current sensor data list via a given sensor listener.
 //& type: auto
 /**
-* @testcase                    ITc_sensor_listener_read_data_p
+* @testcase                    ITc_sensor_listener_read_data_list_p
 * @type                                auto
-* @author                              SRID(gupta.sanjay)
-* @reviewer                            SRID(ravi.kumar2)
-* @since_tizen                         2.3
-* @description                 To get sensor data
-* @scenario                            Get the listener handle\n
-*                                              Get event information
-* @apicovered                  sensor_listener_read_data
-* @passcase                            When sensor_listener_read_data is successful
-* @failcase                            If target API sensor_listener_read_data fails or any precondition API fails
-* @precondition                        Sensor handle must be created
+* @author                              SRID(priya.kohli)
+* @reviewer                            SRID(shobhit.v)
+* @since_tizen                         6.0
+* @description                 Reads the current sensor data list via a given sensor listener.
+* @scenario                            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
+* @apicovered                  sensor_listener_read_data_list
+* @passcase                            When sensor_listener_read_data_list is successful
+* @failcase                            If target API sensor_listener_read_data_list fails
+* @precondition                        NA
 * @postcondition               NA
 */
-int ITc_sensor_listener_read_data_p(void)
+int ITc_sensor_listener_read_data_list_p(void)
 {
        START_TEST;
 
        int nSensorTimeoutId = 0;
+       int nRet = -1;
 
        for ( enum_counter=0; enum_counter<enum_size; enum_counter++ )
        {
@@ -1233,76 +1234,38 @@ int ITc_sensor_listener_read_data_p(void)
                }
                else if ( eFeatureCheck == FEATURE_SUPPORTED )
                {
-                       int nRet = sensor_get_default_sensor(stSensor[enum_counter].eSensorType, &g_pstSensorHandle);
-                       if ( nRet != SENSOR_ERROR_NONE )
-                       {
-                               FPRINTF("[Line : %d][%s] sensor_get_default_sensor failed for sensor %s, error returned = %s\\n", __LINE__, API_NAMESPACE, SensorGetType(stSensor[enum_counter].eSensorType), SensorsGetError(nRet));
-                               return 1;
-                       }
+                       nRet = sensor_get_default_sensor(stSensor[enum_counter].eSensorType, &g_pstSensorHandle);
+                       PRINT_RESULT(SENSOR_ERROR_NONE, nRet, "sensor_get_default_sensor", SensorsGetError(nRet));
                        CHECK_HANDLE(g_pstSensorHandle, "sensor_get_default_sensor");
 
                        nRet = sensor_create_listener(g_pstSensorHandle, &g_pstSensorListener);
-                       if ( nRet != SENSOR_ERROR_NONE )
-                       {
-                               FPRINTF("[Line : %d][%s] Support API sensor_create_listener failed for sensor %s, error returned = %s\\n", __LINE__, API_NAMESPACE, SensorGetType(stSensor[enum_counter].eSensorType), SensorsGetError(nRet));
-                               return 1;
-                       }
-                       if ( g_pstSensorListener == NULL)
-                       {
-                               FPRINTF("[Line : %d][%s] Support API sensor_create_listener failed to create listener of sensor %s\\n", __LINE__, API_NAMESPACE, SensorGetType(stSensor[enum_counter].eSensorType));
-                               return 1;
-                       }
+                       PRINT_RESULT(SENSOR_ERROR_NONE, nRet, "sensor_create_listener", SensorsGetError(nRet));
+                       CHECK_HANDLE(g_pstSensorHandle, "sensor_create_listener");
 
                        nRet = sensor_listener_set_option(g_pstSensorListener, SENSOR_OPTION_ALWAYS_ON);
-                       if ( nRet != SENSOR_ERROR_NONE )
-                       {
-                               FPRINTF("[Line : %d][%s] Support API sensor_listener_set_option is failed for sensor %s, error returned = %s\\n", __LINE__, API_NAMESPACE, SensorGetType(stSensor[enum_counter].eSensorType), SensorsGetError(nRet));
-                               sensor_destroy_listener(g_pstSensorListener);
-                               return 1;
-                       }
+                       PRINT_RESULT_CLEANUP(SENSOR_ERROR_NONE, nRet, "sensor_listener_set_option", SensorsGetError(nRet), sensor_destroy_listener(g_pstSensorListener));
 
                        nRet = sensor_listener_set_events_cb(g_pstSensorListener, SensorEventCallback, NULL);
-                       if ( nRet != SENSOR_ERROR_NONE )
-                       {
-                               FPRINTF("[Line : %d][%s] Support API sensor_listener_set_events_cb failed for sensor %s, error returned = %s\\n", __LINE__, API_NAMESPACE, SensorGetType(stSensor[enum_counter].eSensorType), SensorsGetError(nRet));
-                               sensor_listener_set_option(g_pstSensorListener, SENSOR_OPTION_DEFAULT);
-                               sensor_destroy_listener(g_pstSensorListener);
-                               return 1;
-                       }
+                       PRINT_RESULT_CLEANUP(SENSOR_ERROR_NONE, nRet, "sensor_listener_set_events_cb", SensorsGetError(nRet), sensor_listener_set_option(g_pstSensorListener, SENSOR_OPTION_DEFAULT);sensor_destroy_listener(g_pstSensorListener));
 
                        nRet = sensor_listener_start(g_pstSensorListener);
-                       if ( nRet != SENSOR_ERROR_NONE )
-                       {
-                               FPRINTF("[Line : %d][%s] Support API sensor_listener_start failed for sensor %s, error returned = %s\\n", __LINE__, API_NAMESPACE, SensorGetType(stSensor[enum_counter].eSensorType), SensorsGetError(nRet));
-                               sensor_listener_unset_events_cb(g_pstSensorListener);
-                               sensor_listener_set_option(g_pstSensorListener, SENSOR_OPTION_DEFAULT);
-                               sensor_destroy_listener(g_pstSensorListener);
-                               return 1;
-                       }
+                       PRINT_RESULT_CLEANUP(SENSOR_ERROR_NONE, nRet, "sensor_listener_start", SensorsGetError(nRet), sensor_listener_unset_events_cb(g_pstSensorListener);sensor_listener_set_option(g_pstSensorListener, SENSOR_OPTION_DEFAULT);sensor_destroy_listener(g_pstSensorListener));
 
                        RUN_POLLING_LOOP;
 
-                       sensor_event_s pstSensorEvent;
-                       pstSensorEvent.accuracy = -1;
-                       pstSensorEvent.timestamp = 0;
-                       pstSensorEvent.value_count = -1;
+                       sensor_event_s *pstSensorEvent;
+                       int nCount = 0;
 
                        // Target API
-                       nRet = sensor_listener_read_data(g_pstSensorListener, &pstSensorEvent);
-                       if ( nRet != SENSOR_ERROR_NONE )
-                       {
-                               FPRINTF("[Line : %d][%s] sensor_listener_read_data failed for sensor %s, error returned = %s\\n", __LINE__, API_NAMESPACE, SensorGetType(stSensor[enum_counter].eSensorType), SensorsGetError(nRet));
-                               sensor_listener_stop(g_pstSensorListener);
-                               sensor_listener_unset_events_cb(g_pstSensorListener);
-                               sensor_listener_set_option(g_pstSensorListener, SENSOR_OPTION_DEFAULT);
-                               sensor_destroy_listener(g_pstSensorListener);
-                               return 1;
-                       }
-                       else if ( pstSensorEvent.accuracy < SENSOR_DATA_ACCURACY_UNDEFINED
-                               || pstSensorEvent.accuracy > SENSOR_DATA_ACCURACY_VERYGOOD
-                               ||  pstSensorEvent.value_count < 0 )
+                       nRet = sensor_listener_read_data_list(g_pstSensorListener, &pstSensorEvent, &nCount);//check for nCount
+                       PRINT_RESULT_CLEANUP(SENSOR_ERROR_NONE, nRet, "sensor_listener_read_data_list", SensorsGetError(nRet), sensor_listener_stop(g_pstSensorListener);sensor_listener_unset_events_cb(g_pstSensorListener);sensor_listener_set_option(g_pstSensorListener, SENSOR_OPTION_DEFAULT);sensor_destroy_listener(g_pstSensorListener));
+
+                       if ( pstSensorEvent->accuracy < SENSOR_DATA_ACCURACY_UNDEFINED
+                               || pstSensorEvent->accuracy > SENSOR_DATA_ACCURACY_VERYGOOD
+                               ||  pstSensorEvent->value_count < 0
+                               || nCount <= 0 )
                        {
-                               FPRINTF("[Line : %d][%s] sensor_listener_read_data retrieved wrong pstSensorEvent for sensor %s: accuracy = %d, timestamp = %llu, value_count = %d, values = %f\\n", __LINE__, API_NAMESPACE, SensorGetType(stSensor[enum_counter].eSensorType), pstSensorEvent.accuracy, pstSensorEvent.timestamp, pstSensorEvent.value_count, *(pstSensorEvent.values));
+                               FPRINTF("[Line : %d][%s] sensor_listener_read_data_list retrieved wrong pstSensorEvent for sensor %s: accuracy = %d, timestamp = %llu, value_count = %d, values = %f, nCount = %d\\n", __LINE__, API_NAMESPACE, SensorGetType(stSensor[enum_counter].eSensorType), pstSensorEvent->accuracy, pstSensorEvent->timestamp, pstSensorEvent->value_count, *(pstSensorEvent->values), nCount);
                                sensor_listener_stop(g_pstSensorListener);
                                sensor_listener_unset_events_cb(g_pstSensorListener);
                                sensor_listener_set_option(g_pstSensorListener, SENSOR_OPTION_DEFAULT);
@@ -1311,39 +1274,87 @@ int ITc_sensor_listener_read_data_p(void)
                        }
 
                        nRet = sensor_listener_stop(g_pstSensorListener);
-                       if ( nRet != SENSOR_ERROR_NONE )
-                       {
-                               FPRINTF("[Line : %d][%s] Support API sensor_listener_stop failed for sensor %s, error returned = %s\\n", __LINE__, API_NAMESPACE, SensorGetType(stSensor[enum_counter].eSensorType), SensorsGetError(nRet));
-                               sensor_listener_unset_events_cb(g_pstSensorListener);
-                               sensor_listener_set_option(g_pstSensorListener, SENSOR_OPTION_DEFAULT);
-                               sensor_destroy_listener(g_pstSensorListener);
-                               return 1;
-                       }
+                       PRINT_RESULT_CLEANUP(SENSOR_ERROR_NONE, nRet, "sensor_listener_stop", SensorsGetError(nRet), sensor_listener_set_option(g_pstSensorListener, SENSOR_OPTION_DEFAULT);sensor_listener_unset_events_cb(g_pstSensorListener);sensor_destroy_listener(g_pstSensorListener));
 
                        nRet = sensor_listener_unset_events_cb(g_pstSensorListener);
-                       if ( nRet != SENSOR_ERROR_NONE )
-                       {
-                               FPRINTF("[Line : %d][%s] Support API sensor_listener_unset_events_cb failed for sensor %s, error returned = %s\\n", __LINE__, API_NAMESPACE, SensorGetType(stSensor[enum_counter].eSensorType), SensorsGetError(nRet));
-                               sensor_listener_set_option(g_pstSensorListener, SENSOR_OPTION_DEFAULT);
-                               sensor_destroy_listener(g_pstSensorListener);
-                               return 1;
-                       }
+PRINT_RESULT_CLEANUP(SENSOR_ERROR_NONE, nRet, "sensor_listener_unset_events_cb", SensorsGetError(nRet), sensor_listener_set_option(g_pstSensorListener, SENSOR_OPTION_DEFAULT);sensor_destroy_listener(g_pstSensorListener));
 
                        //Reset option
                        nRet = sensor_listener_set_option(g_pstSensorListener, SENSOR_OPTION_DEFAULT);
-                       if ( nRet != SENSOR_ERROR_NONE )
-                       {
-                               FPRINTF("[Line : %d][%s] Support API sensor_listener_set_option is failed for sensor %s, error returned = %s\\n", __LINE__, API_NAMESPACE, SensorGetType(stSensor[enum_counter].eSensorType), SensorsGetError(nRet));
-                               sensor_destroy_listener(g_pstSensorListener);
-                               return 1;
-                       }
+                       PRINT_RESULT_CLEANUP(SENSOR_ERROR_NONE, nRet, "sensor_listener_set_option", SensorsGetError(nRet), sensor_destroy_listener(g_pstSensorListener));
 
                        nRet = sensor_destroy_listener(g_pstSensorListener);
-                       if ( nRet != SENSOR_ERROR_NONE )
-                       {
-                               FPRINTF("[Line : %d][%s] Support API sensor_destroy_listener failed for sensor %s, error returned = %s\\n", __LINE__, API_NAMESPACE, SensorGetType(stSensor[enum_counter].eSensorType), SensorsGetError(nRet));
-                               return 1;
-                       }
+                       PRINT_RESULT(SENSOR_ERROR_NONE, nRet, "sensor_destroy_listener", SensorsGetError(nRet));
+               }
+       }
+
+       return 0;
+}
+
+//& purpose: To flush stored data of a sensor.
+//& type: auto
+/**
+* @testcase                    ITc_sensor_listener_flush_p
+* @type                                auto
+* @author                              SRID(priya.kohli)
+* @reviewer                            SRID(shobhit.v)
+* @since_tizen                         6.0
+* @description                 Flushes stored data of a sensor.
+* @scenario                            Flushes all data of a sensor as if the max batch latency has expired.
+*                                              Data is delivered in the usual way through the event callback function.
+*                                              In case of non-batching sensors, this function does nothing and returns #SENSOR_ERROR_NONE.
+* @apicovered                  sensor_listener_flush
+* @passcase                            When sensor_listener_flush is successful
+* @failcase                            If target API sensor_listener_flush fails
+* @precondition                        NA
+* @postcondition               NA
+*/
+int ITc_sensor_listener_flush_p(void)
+{
+       START_TEST;
+
+       int nSensorTimeoutId = 0;
+       int nRet = -1;
+
+       for ( enum_counter=0; enum_counter<enum_size; enum_counter++ )
+       {
+               if ( SENSOR_PROXIMITY == stSensor[enum_counter].eSensorType )
+               {
+                       //For SENSOR_PROXIMITY type sensor, sensor_listener_read_data() will not return the sensor_event_s
+                       //Instead read the value of sensor_proximity_e in some way
+                       continue;
+               }
+
+               feature_check_e eFeatureCheck = SensorCheckFeature(stSensor[enum_counter].eSensorType, stSensor[enum_counter].szFeature);
+               if ( eFeatureCheck == FEATURE_MISMATCH )
+               {
+                       return 1;
+               }
+               else if ( eFeatureCheck == FEATURE_UNSUPPORTED )
+               {
+                       continue;
+               }
+               else if ( eFeatureCheck == FEATURE_SUPPORTED )
+               {
+                       nRet = sensor_get_default_sensor(stSensor[enum_counter].eSensorType, &g_pstSensorHandle);
+                       PRINT_RESULT(SENSOR_ERROR_NONE, nRet, "sensor_get_default_sensor", SensorsGetError(nRet));
+                       CHECK_HANDLE(g_pstSensorHandle, "sensor_get_default_sensor");
+
+                       nRet = sensor_create_listener(g_pstSensorHandle, &g_pstSensorListener);
+                       PRINT_RESULT(SENSOR_ERROR_NONE, nRet, "sensor_create_listener", SensorsGetError(nRet));
+                       CHECK_HANDLE(g_pstSensorHandle, "sensor_create_listener");
+
+                       nRet = sensor_listener_start(g_pstSensorListener);
+                       PRINT_RESULT_CLEANUP(SENSOR_ERROR_NONE, nRet, "sensor_listener_start", SensorsGetError(nRet), sensor_destroy_listener(g_pstSensorListener));
+
+                       nRet = sensor_listener_flush(g_pstSensorListener);
+                       PRINT_RESULT_CLEANUP(SENSOR_ERROR_NONE, nRet, "sensor_listener_flush", SensorsGetError(nRet), sensor_destroy_listener(g_pstSensorListener));
+
+                       nRet = sensor_listener_stop(g_pstSensorListener);
+                       PRINT_RESULT_CLEANUP(SENSOR_ERROR_NONE, nRet, "sensor_listener_stop", SensorsGetError(nRet), sensor_destroy_listener(g_pstSensorListener));
+
+                       nRet = sensor_destroy_listener(g_pstSensorListener);
+                       PRINT_RESULT(SENSOR_ERROR_NONE, nRet, "sensor_destroy_listener", SensorsGetError(nRet));
                }
        }
 
index d3e0b31ea26b6d9805395b8668d5bba92a853b3d..e4b2f61626556478470f1e06f2a59cf0805a5c00 100755 (executable)
@@ -45,7 +45,8 @@ extern int ITc_sensor_create_destroy_listener_p(void);
 extern int ITc_sensor_listener_set_interval_p(void);
 extern int ITc_sensor_listener_set_option_p(void);
 extern int ITc_sensor_listener_start_stop_p(void);
-extern int ITc_sensor_listener_read_data_p(void);
+extern int ITc_sensor_listener_read_data_list_p(void);
+extern int ITc_sensor_listener_flush_p(void);
 extern int ITc_sensor_listener_set_unset_events_cb_p(void);
 extern int ITc_sensor_is_wake_up_p(void);
 extern int ITc_sensor_listener_set_attribute_int_p(void);
@@ -103,7 +104,8 @@ testcase tc_array[] = {
        {"ITc_sensor_listener_set_interval_p",ITc_sensor_listener_set_interval_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_listener_set_option_p",ITc_sensor_listener_set_option_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_listener_start_stop_p",ITc_sensor_listener_start_stop_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
-       {"ITc_sensor_listener_read_data_p",ITc_sensor_listener_read_data_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
+       {"ITc_sensor_listener_read_data_list_p",ITc_sensor_listener_read_data_list_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
+       {"ITc_sensor_listener_flush_p",ITc_sensor_listener_flush_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_listener_set_unset_events_cb_p",ITc_sensor_listener_set_unset_events_cb_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_is_wake_up_p",ITc_sensor_is_wake_up_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_listener_set_attribute_int_p",ITc_sensor_listener_set_attribute_int_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
index d3e0b31ea26b6d9805395b8668d5bba92a853b3d..e4b2f61626556478470f1e06f2a59cf0805a5c00 100755 (executable)
@@ -45,7 +45,8 @@ extern int ITc_sensor_create_destroy_listener_p(void);
 extern int ITc_sensor_listener_set_interval_p(void);
 extern int ITc_sensor_listener_set_option_p(void);
 extern int ITc_sensor_listener_start_stop_p(void);
-extern int ITc_sensor_listener_read_data_p(void);
+extern int ITc_sensor_listener_read_data_list_p(void);
+extern int ITc_sensor_listener_flush_p(void);
 extern int ITc_sensor_listener_set_unset_events_cb_p(void);
 extern int ITc_sensor_is_wake_up_p(void);
 extern int ITc_sensor_listener_set_attribute_int_p(void);
@@ -103,7 +104,8 @@ testcase tc_array[] = {
        {"ITc_sensor_listener_set_interval_p",ITc_sensor_listener_set_interval_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_listener_set_option_p",ITc_sensor_listener_set_option_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_listener_start_stop_p",ITc_sensor_listener_start_stop_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
-       {"ITc_sensor_listener_read_data_p",ITc_sensor_listener_read_data_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
+       {"ITc_sensor_listener_read_data_list_p",ITc_sensor_listener_read_data_list_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
+       {"ITc_sensor_listener_flush_p",ITc_sensor_listener_flush_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_listener_set_unset_events_cb_p",ITc_sensor_listener_set_unset_events_cb_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_is_wake_up_p",ITc_sensor_is_wake_up_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_listener_set_attribute_int_p",ITc_sensor_listener_set_attribute_int_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
index 0fe1f5d68a30db8d04bb9fd66870a023b9024528..ea28b2b56719522d5ba045432937c5b5e279c59f 100755 (executable)
@@ -44,7 +44,8 @@ extern int ITc_sensor_create_destroy_listener_p(void);
 extern int ITc_sensor_listener_set_interval_p(void);
 extern int ITc_sensor_listener_set_option_p(void);
 extern int ITc_sensor_listener_start_stop_p(void);
-extern int ITc_sensor_listener_read_data_p(void);
+extern int ITc_sensor_listener_read_data_list_p(void);
+extern int ITc_sensor_listener_flush_p(void);
 extern int ITc_sensor_listener_set_unset_events_cb_p(void);
 extern int ITc_sensor_is_wake_up_p(void);
 extern int ITc_sensor_listener_set_attribute_int_p(void);
@@ -102,7 +103,8 @@ testcase tc_array[] = {
        {"ITc_sensor_listener_set_interval_p",ITc_sensor_listener_set_interval_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_listener_set_option_p",ITc_sensor_listener_set_option_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_listener_start_stop_p",ITc_sensor_listener_start_stop_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
-       {"ITc_sensor_listener_read_data_p",ITc_sensor_listener_read_data_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
+       {"ITc_sensor_listener_read_data_list_p",ITc_sensor_listener_read_data_list_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
+       {"ITc_sensor_listener_flush_p",ITc_sensor_listener_flush_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_listener_set_unset_events_cb_p",ITc_sensor_listener_set_unset_events_cb_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_is_wake_up_p",ITc_sensor_is_wake_up_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},
        {"ITc_sensor_listener_set_attribute_int_p",ITc_sensor_listener_set_attribute_int_p,ITs_sensor_listener_startup,ITs_sensor_listener_cleanup},