4 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
22 #include <sensor_internal.h>
23 #include <sensor_utils.h>
27 #include "test_bench.h"
29 #define MYSENSOR_URI "http://example.org/sensor/general/mysensor/mysensor"
30 #define MYSENSOR_NAME "mysensor"
31 #define MYSENSOR_VENDOR "tizen"
33 static bool started = false;
34 static bool added = false;
35 static bool called = false;
37 static void event_cb(sensor_t sensor, unsigned int event_type, sensor_data_t *data, void *user_data)
39 _I("[%llu] %f %f %f\n", data->timestamp, data->values[0], data->values[1], data->values[2]);
42 static void start_cb(sensord_provider_h provider, void *user_data)
48 static void stop_cb(sensord_provider_h provider, void *user_data)
54 static void interval_cb(sensord_provider_h provider, unsigned int interval_ms, void *user_data)
56 _N("Interval : %d\n", interval_ms);
59 static gboolean publish(gpointer gdata)
61 if (!started) return TRUE;
63 sensord_provider_h *provider = reinterpret_cast<sensord_provider_h *>(gdata);
67 data.timestamp = sensor::utils::get_timestamp();
73 _N("[%llu] %f %f %f\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
74 sensord_provider_publish(provider, data);
78 static void add_mysensor(void)
80 sensord_provider_h provider;
82 sensord_create_provider(MYSENSOR_URI, &provider);
83 sensord_provider_set_name(provider, MYSENSOR_NAME);
84 sensord_provider_set_vendor(provider, MYSENSOR_VENDOR);
85 sensord_provider_set_range(provider, 0.0f, 1.0f);
86 sensord_provider_set_resolution(provider, 0.01f);
88 sensord_add_provider(provider);
89 sensord_remove_provider(provider);
91 sensord_destroy_provider(provider);
94 static void added_cb(const char *uri, void *user_data)
96 _I("[ ADDED ] %s\n", uri);
100 static void removed_cb(const char *uri, void *user_data)
102 _I("[ REMOVED ] %s\n", uri);
107 TESTCASE(sensor_provider, check_uri)
110 sensord_provider_h provider;
112 const char *uri_p1 = "http://example.org/sensor/general/mysensor_type/mysensor";
113 const char *uri_p2 = "http://developer.samsung.com/sensor/general/mysensor_type/mysensor";
114 const char *uri_n1 = "http://tizen.org/sensor/general/accelerometer/mysensor";
115 const char *uri_n2 = "http://tizen.org/mysensor/general/accelerometer/mysensor";
116 const char *uri_n3 = "http:/example.org/sensor/general/mysensor_type/mysensor";
117 const char *uri_n5 = "http://example.org/sensor/general/mysensor_type";
118 const char *uri_n4 = "http://example.org/sensor/general/mysensor_type/mysensor/mysensor";
120 err = sensord_create_provider(uri_p1, &provider);
122 err = sensord_create_provider(uri_p2, &provider);
124 err = sensord_create_provider(uri_n1, &provider);
125 EXPECT_EQ(err, -EINVAL);
126 err = sensord_create_provider(uri_n2, &provider);
127 EXPECT_EQ(err, -EINVAL);
128 err = sensord_create_provider(uri_n3, &provider);
129 EXPECT_EQ(err, -EINVAL);
130 err = sensord_create_provider(uri_n4, &provider);
131 EXPECT_EQ(err, -EINVAL);
132 err = sensord_create_provider(uri_n5, &provider);
133 EXPECT_EQ(err, -EINVAL);
138 /* TODO: change it from manual test to auto-test */
139 TESTCASE(skip_sensor_provider, mysensor_added_removed_cb_p_1)
141 int ret = sensord_add_sensor_added_cb(added_cb, NULL);
143 ret = sensord_add_sensor_removed_cb(removed_cb, NULL);
150 ret = sensord_remove_sensor_added_cb(added_cb);
152 ret = sensord_remove_sensor_removed_cb(removed_cb);
158 /* TODO: change it from manual test to auto-test */
159 TESTCASE(skip_sensor_provider, mysensor_p)
163 sensord_provider_h provider;
165 err = sensord_create_provider(MYSENSOR_URI, &provider);
168 err = sensord_provider_set_name(provider, MYSENSOR_NAME);
170 err = sensord_provider_set_vendor(provider, MYSENSOR_VENDOR);
172 err = sensord_provider_set_range(provider, 0.0f, 1.0f);
174 err = sensord_provider_set_resolution(provider, 0.01f);
177 err = sensord_add_provider(provider);
180 err = sensord_provider_set_start_cb(provider, start_cb, NULL);
182 err = sensord_provider_set_stop_cb(provider, stop_cb, NULL);
184 err = sensord_provider_set_interval_changed_cb(provider, interval_cb, NULL);
187 err = sensord_get_default_sensor_by_uri(MYSENSOR_URI, &sensor);
190 g_timeout_add_seconds(1, publish, provider);
193 err = sensord_remove_provider(provider);
195 err = sensord_destroy_provider(provider);
201 /* TODO: change it from manual test to auto-test */
202 TESTCASE(skip_sensor_provider, mysensor_with_listener_p_1)
211 err = sensord_get_default_sensor_by_uri(MYSENSOR_URI, &sensor);
214 handle = sensord_connect(sensor);
217 ret = sensord_register_event(handle, 1, 100, 100, event_cb, NULL);
220 ret = sensord_start(handle, 0);
223 ret = sensord_change_event_interval(handle, 0, 100);
228 ret = sensord_stop(handle);
231 ret = sensord_unregister_event(handle, 1);
234 ret = sensord_disconnect(handle);