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 <sensor_info.h>
21 #include <sensor_log.h>
29 sensor_type_t sensor_info::get_type(void)
34 sensor_id_t sensor_info::get_id(void)
39 sensor_privilege_t sensor_info::get_privilege(void)
44 const char* sensor_info::get_name(void)
46 return m_name.c_str();
49 const char* sensor_info::get_vendor(void)
51 return m_vendor.c_str();
54 float sensor_info::get_min_range(void)
59 float sensor_info::get_max_range(void)
64 float sensor_info::get_resolution(void)
69 int sensor_info::get_min_interval(void)
71 return m_min_interval;
74 int sensor_info::get_fifo_count(void)
79 int sensor_info::get_max_batch_count(void)
81 return m_max_batch_count;
84 unsigned int sensor_info::get_supported_event(void)
86 return m_supported_event;
89 bool sensor_info::is_supported_event(unsigned int event)
91 if (event != m_supported_event)
97 bool sensor_info::is_wakeup_supported(void)
99 return m_wakeup_supported;
102 void sensor_info::set_type(sensor_type_t type)
107 void sensor_info::set_id(sensor_id_t id)
112 void sensor_info::set_privilege(sensor_privilege_t privilege)
114 m_privilege = privilege;
117 void sensor_info::set_name(const char *name)
122 void sensor_info::set_vendor(const char *vendor)
127 void sensor_info::set_min_range(float min_range)
129 m_min_range = min_range;
132 void sensor_info::set_max_range(float max_range)
134 m_max_range = max_range;
137 void sensor_info::set_resolution(float resolution)
139 m_resolution = resolution;
142 void sensor_info::set_min_interval(int min_interval)
144 m_min_interval = min_interval;
147 void sensor_info::set_fifo_count(int fifo_count)
149 m_fifo_count = fifo_count;
152 void sensor_info::set_max_batch_count(int max_batch_count)
154 m_max_batch_count = max_batch_count;
157 void sensor_info::set_supported_event(unsigned int event)
159 m_supported_event = event;
162 void sensor_info::set_wakeup_supported(bool supported)
164 m_wakeup_supported = supported;
167 void sensor_info::get_raw_data(raw_data_t &data)
169 put(data, (int) m_type);
171 put(data, (int) m_privilege);
174 put(data, m_min_range);
175 put(data, m_max_range);
176 put(data, m_resolution);
177 put(data, m_min_interval);
178 put(data, m_fifo_count);
179 put(data, m_max_batch_count);
180 put(data, m_supported_event);
181 put(data, m_wakeup_supported);
184 void sensor_info::set_raw_data(const char *data, int data_len)
186 raw_data_t raw_data(&data[0], &data[data_len]);
188 auto it_r_data = raw_data.begin();
193 it_r_data = get(it_r_data, type);
194 m_type = (sensor_type_t) type;
195 it_r_data = get(it_r_data, id);
196 m_id = (sensor_id_t) id;
197 it_r_data = get(it_r_data, privilege);
198 m_privilege = (sensor_privilege_t) privilege;
199 it_r_data = get(it_r_data, m_name);
200 it_r_data = get(it_r_data, m_vendor);
201 it_r_data = get(it_r_data, m_min_range);
202 it_r_data = get(it_r_data, m_max_range);
203 it_r_data = get(it_r_data, m_resolution);
204 it_r_data = get(it_r_data, m_min_interval);
205 it_r_data = get(it_r_data, m_fifo_count);
206 it_r_data = get(it_r_data, m_max_batch_count);
207 it_r_data = get(it_r_data, m_supported_event);
208 it_r_data = get(it_r_data, m_wakeup_supported);
211 void sensor_info::show(void)
213 _I("Type = %d", m_type);
214 _I("ID = %#llx", (int64_t)m_id);
215 _I("Privilege = %d", (int)m_privilege);
216 _I("Name = %s", m_name.c_str());
217 _I("Vendor = %s", m_vendor.c_str());
218 _I("Min_range = %f", m_min_range);
219 _I("Max_range = %f", m_max_range);
220 _I("Resolution = %f", m_resolution);
221 _I("Min_interval = %d", m_min_interval);
222 _I("Fifo_count = %d", m_fifo_count);
223 _I("Max_batch_count = %d", m_max_batch_count);
224 _I("Supported_event = %#x", m_supported_event);
225 _I("Wakeup_supported = %d", m_wakeup_supported);
228 void sensor_info::clear(void)
230 m_type = UNKNOWN_SENSOR;
232 m_privilege = SENSOR_PRIVILEGE_PUBLIC;
240 m_max_batch_count = 0;
241 m_supported_event = 0;
242 m_wakeup_supported = false;
245 void sensor_info::put(raw_data_t &data, int value)
247 char buffer[sizeof(value)];
249 int *temp = (int *)buffer;
252 copy(&buffer[0], &buffer[sizeof(buffer)], back_inserter(data));
255 void sensor_info::put(raw_data_t &data, unsigned int value)
257 char buffer[sizeof(value)];
259 unsigned int *temp = (unsigned int *)buffer;
262 copy(&buffer[0], &buffer[sizeof(buffer)], back_inserter(data));
265 void sensor_info::put(raw_data_t &data, int64_t value)
267 char buffer[sizeof(value)];
269 int64_t *temp = (int64_t *) buffer;
272 copy(&buffer[0], &buffer[sizeof(buffer)], back_inserter(data));
275 void sensor_info::put(raw_data_t &data, float value)
277 char buffer[sizeof(value)];
279 float *temp = (float *) buffer;
282 copy(&buffer[0], &buffer[sizeof(buffer)], back_inserter(data));
285 void sensor_info::put(raw_data_t &data, string &value)
287 put(data, (int) value.size());
289 copy(value.begin(), value.end(), back_inserter(data));
292 void sensor_info::put(raw_data_t &data, bool value)
294 char buffer[sizeof(value)];
296 bool *temp = (bool *) buffer;
299 copy(&buffer[0], &buffer[sizeof(buffer)], back_inserter(data));
302 raw_data_iterator sensor_info::get(raw_data_iterator it, int &value)
304 copy(it, it + sizeof(value), (char*) &value);
306 return it + sizeof(value);
309 raw_data_iterator sensor_info::get(raw_data_iterator it, unsigned int &value)
311 copy(it, it + sizeof(value), (char*) &value);
313 return it + sizeof(value);
316 raw_data_iterator sensor_info::get(raw_data_iterator it, int64_t &value)
318 copy(it, it + sizeof(value), (char*) &value);
320 return it + sizeof(value);
323 raw_data_iterator sensor_info::get(raw_data_iterator it, float &value)
325 copy(it, it + sizeof(value), (char*) &value);
327 return it + sizeof(value);
330 raw_data_iterator sensor_info::get(raw_data_iterator it, string &value)
336 copy(it, it + len, back_inserter(value));
341 raw_data_iterator sensor_info::get(raw_data_iterator it, bool &value)
343 copy(it, it + sizeof(value), (char*) &value);
345 return it + sizeof(value);