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.
20 #ifndef __SENSOR_PROVIDER_H__
21 #define __SENSOR_PROVIDER_H__
24 #include <channel-handler.h>
25 #include <event-loop.h>
26 #include <sensor-internal.h>
27 #include <sensor-info.h>
28 #include <sensor-types-private.h>
34 class sensor_provider {
36 sensor_provider(const char *uri);
37 virtual ~sensor_provider();
39 const char *get_uri(void);
40 sensor_info *get_sensor_info(void);
43 bool disconnect(void);
46 void set_start_cb(sensord_provider_start_cb cb, void *user_data);
47 void set_stop_cb(sensord_provider_stop_cb cb, void *user_data);
48 void set_interval_cb(sensord_provider_interval_changed_cb cb, void *user_data);
49 void set_attribute_str_cb(sensord_provider_attribute_str_cb cb, void *user_data);
51 int publish(const sensor_data_t &data);
52 int publish(const sensor_data_t data[], const int count);
55 class channel_handler;
57 bool init(const char *uri);
60 bool is_connected(void);
62 int serialize(sensor_info *info, char **bytes);
63 int send_sensor_info(sensor_info *info);
67 ipc::channel *m_channel;
68 ipc::event_loop m_loop;
69 channel_handler *m_handler;
70 std::atomic<bool> m_connected;
75 #endif /* __SENSOR_PROVIDER_H__ */