4 * Copyright (c) 2014 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_logs.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()
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 = 0x%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 = 0x%x", m_supported_event);
226 _I("Wakeup_supported = %d", m_wakeup_supported);
230 void sensor_info::clear(void)
232 m_type = UNKNOWN_SENSOR;
234 m_privilege = SENSOR_PRIVILEGE_PUBLIC;
242 m_max_batch_count = 0;
243 m_supported_event = 0;
244 m_wakeup_supported = false;
248 void sensor_info::put(raw_data_t &data, int value)
250 char buffer[sizeof(value)];
252 int *temp = (int *) buffer;
255 copy(&buffer[0], &buffer[sizeof(buffer)], back_inserter(data));
258 void sensor_info::put(raw_data_t &data, unsigned int value)
260 char buffer[sizeof(value)];
262 unsigned int *temp = (unsigned int *) buffer;
265 copy(&buffer[0], &buffer[sizeof(buffer)], back_inserter(data));
268 void sensor_info::put(raw_data_t &data, int64_t value)
270 char buffer[sizeof(value)];
272 int64_t *temp = (int64_t *) buffer;
275 copy(&buffer[0], &buffer[sizeof(buffer)], back_inserter(data));
278 void sensor_info::put(raw_data_t &data, float value)
280 char buffer[sizeof(value)];
282 float *temp = (float *) buffer;
285 copy(&buffer[0], &buffer[sizeof(buffer)], back_inserter(data));
288 void sensor_info::put(raw_data_t &data, string &value)
290 put(data, (int) value.size());
292 copy(value.begin(), value.end(), back_inserter(data));
295 void sensor_info::put(raw_data_t &data, bool value)
297 char buffer[sizeof(value)];
299 bool *temp = (bool *) buffer;
302 copy(&buffer[0], &buffer[sizeof(buffer)], back_inserter(data));
305 raw_data_iterator sensor_info::get(raw_data_iterator it, int &value)
307 copy(it, it + sizeof(value), (char*) &value);
309 return it + sizeof(value);
312 raw_data_iterator sensor_info::get(raw_data_iterator it, unsigned int &value)
314 copy(it, it + sizeof(value), (char*) &value);
316 return it + sizeof(value);
319 raw_data_iterator sensor_info::get(raw_data_iterator it, int64_t &value)
321 copy(it, it + sizeof(value), (char*) &value);
323 return it + sizeof(value);
326 raw_data_iterator sensor_info::get(raw_data_iterator it, float &value)
328 copy(it, it + sizeof(value), (char*) &value);
330 return it + sizeof(value);
333 raw_data_iterator sensor_info::get(raw_data_iterator it, string &value)
339 copy(it, it + len, back_inserter(value));
344 raw_data_iterator sensor_info::get(raw_data_iterator it, bool &value)
346 copy(it, it + sizeof(value), (char*) &value);
348 return it + sizeof(value);