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 #include "sensor_provider_channel_handler.h"
22 #include <command_types.h>
23 #include <sensor_log.h>
24 #include "sensor_provider.h"
26 using namespace sensor;
28 sensor_provider::channel_handler::channel_handler(sensor_provider *provider)
29 : m_provider(provider)
32 , m_interval_changed_cb(NULL)
33 , m_start_user_data(NULL)
34 , m_stop_user_data(NULL)
35 , m_interval_changed_user_data(NULL)
39 void sensor_provider::channel_handler::connected(ipc::channel *ch)
44 void sensor_provider::channel_handler::disconnected(ipc::channel *ch)
47 /* m_provider->restore(); */
50 void sensor_provider::channel_handler::read(ipc::channel *ch, ipc::message &msg)
53 case CMD_PROVIDER_START:
55 m_start_cb(m_provider, m_start_user_data);
57 case CMD_PROVIDER_STOP:
59 m_stop_cb(m_provider, m_stop_user_data);
61 case CMD_PROVIDER_ATTR_INT:
62 cmd_provider_attr_int_t buf;
63 msg.disclose((char *)&buf);
65 if (buf.attribute == SENSORD_ATTRIBUTE_INTERVAL && m_interval_changed_cb)
66 m_interval_changed_cb(m_provider, buf.value, m_interval_changed_user_data);
71 void sensor_provider::channel_handler::read_complete(ipc::channel *ch)
75 void sensor_provider::channel_handler::error_caught(ipc::channel *ch, int error)
79 void sensor_provider::channel_handler::set_start_cb(sensord_provider_start_cb cb, void *user_data)
82 m_start_user_data = user_data;
85 void sensor_provider::channel_handler::set_stop_cb(sensord_provider_stop_cb cb, void *user_data)
88 m_stop_user_data = user_data;
91 void sensor_provider::channel_handler::set_interval_cb(sensord_provider_interval_changed_cb cb, void *user_data)
93 m_interval_changed_cb = cb;
94 m_interval_changed_user_data = user_data;