4 * Copyright (c) 2013 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 <client_sensor_record.h>
21 #include <sensor_log.h>
26 client_sensor_record::client_sensor_record()
29 , m_permission(SENSOR_PERMISSION_NONE)
33 client_sensor_record::~client_sensor_record()
35 m_sensor_usages.clear();
39 bool client_sensor_record::register_event(sensor_id_t sensor_id, unsigned int event_type)
41 auto it_usage = m_sensor_usages.find(sensor_id);
43 if (it_usage == m_sensor_usages.end()) {
45 usage.register_event(event_type);
46 m_sensor_usages.insert(pair<sensor_id_t, sensor_usage>(sensor_id, usage));
50 if (!it_usage->second.register_event(event_type)) {
51 _E("Event[%#x] is already registered", event_type);
58 bool client_sensor_record::unregister_event(sensor_id_t sensor_id, unsigned int event_type)
60 auto it_usage = m_sensor_usages.find(sensor_id);
62 if (it_usage == m_sensor_usages.end()) {
63 _E("Sensor[%#x] is not registered", sensor_id);
67 if (!it_usage->second.unregister_event(event_type)) {
68 _E("Event[%#x] is already registered", event_type);
75 bool client_sensor_record::set_pause_policy(sensor_id_t sensor_id, int pause_policy)
77 auto it_usage = m_sensor_usages.find(sensor_id);
79 if (it_usage == m_sensor_usages.end()) {
81 usage.m_pause_policy = pause_policy;
82 m_sensor_usages.insert(pair<sensor_id_t, sensor_usage>(sensor_id, usage));
84 it_usage->second.m_pause_policy = pause_policy;
90 bool client_sensor_record::set_start(sensor_id_t sensor_id, bool start)
92 auto it_usage = m_sensor_usages.find(sensor_id);
94 if (it_usage == m_sensor_usages.end()) {
96 usage.m_start = start;
97 m_sensor_usages.insert(pair<sensor_id_t, sensor_usage>(sensor_id, usage));
99 it_usage->second.m_start = start;
105 bool client_sensor_record::is_started(sensor_id_t sensor_id)
107 auto it_usage = m_sensor_usages.find(sensor_id);
109 if (it_usage == m_sensor_usages.end())
112 return it_usage->second.m_start;
115 bool client_sensor_record::set_batch(sensor_id_t sensor_id, unsigned int interval, unsigned int latency)
117 auto it_usage = m_sensor_usages.find(sensor_id);
119 if (it_usage == m_sensor_usages.end()) {
121 usage.m_interval = interval;
122 usage.m_latency = latency;
123 m_sensor_usages.insert(pair<sensor_id_t, sensor_usage>(sensor_id, usage));
125 it_usage->second.m_interval = interval;
126 it_usage->second.m_latency = latency;
132 bool client_sensor_record::get_batch(sensor_id_t sensor_id, unsigned int &interval, unsigned int &latency)
134 auto it_usage = m_sensor_usages.find(sensor_id);
136 if (it_usage == m_sensor_usages.end()) {
137 _E("Sensor[%#x] is not found", sensor_id);
141 interval = it_usage->second.m_interval;
142 latency = it_usage->second.m_latency;
147 bool client_sensor_record::is_listening_event(sensor_id_t sensor_id, unsigned int event_type)
149 auto it_usage = m_sensor_usages.find(sensor_id);
151 if (it_usage == m_sensor_usages.end())
154 if (it_usage->second.is_event_registered(event_type))
160 bool client_sensor_record::add_sensor_usage(sensor_id_t sensor_id)
162 auto it_usage = m_sensor_usages.find(sensor_id);
164 if (it_usage != m_sensor_usages.end()) {
165 _E("Sensor[%#x] is already registered", sensor_id);
170 m_sensor_usages.insert(pair<sensor_id_t, sensor_usage>(sensor_id, usage));
174 bool client_sensor_record::remove_sensor_usage(sensor_id_t sensor_id)
176 auto it_usage = m_sensor_usages.find(sensor_id);
178 if (it_usage == m_sensor_usages.end()) {
179 _E("Sensor[%#x] is not found", sensor_id);
182 m_sensor_usages.erase(it_usage);
186 bool client_sensor_record::has_sensor_usage(void)
188 if (m_sensor_usages.empty())
194 bool client_sensor_record::has_sensor_usage(sensor_id_t sensor_id)
196 auto it_usage = m_sensor_usages.find(sensor_id);
198 if (it_usage == m_sensor_usages.end()) {
199 _D("Sensor[%#x] is not found", sensor_id);
206 bool client_sensor_record::get_registered_events(sensor_id_t sensor_id, event_type_vector &event_vec)
208 auto it_usage = m_sensor_usages.find(sensor_id);
210 if (it_usage == m_sensor_usages.end()) {
211 _D("Sensor[%#x] is not found", sensor_id);
215 copy(it_usage->second.m_reg_events.begin(), it_usage->second.m_reg_events.end(), back_inserter(event_vec));
220 void client_sensor_record::set_client_id(int client_id)
222 m_client_id = client_id;
225 void client_sensor_record::set_client_info(pid_t pid, const string &name)
227 char client_info[NAME_MAX + 32];
230 snprintf(client_info, sizeof(client_info), "%s[pid=%d, id=%d]", name.c_str(), m_pid, m_client_id);
231 m_client_info.assign(client_info);
234 const char* client_sensor_record::get_client_info(void)
236 return m_client_info.c_str();
239 void client_sensor_record::set_permission(int permission)
241 m_permission = permission;
244 int client_sensor_record::get_permission(void)
249 void client_sensor_record::set_event_socket(const csocket &socket)
251 m_event_socket = socket;
254 void client_sensor_record::get_event_socket(csocket &socket)
256 socket = m_event_socket;
259 bool client_sensor_record::close_event_socket(void)
261 return m_event_socket.close();