Adding AK8975 geo-sensor info in sensors.xml.in required by geo-plugin
[platform/core/system/sensord.git] / src / sensor_fusion / standalone / test / orientation_sensor_test / orientation_sensor_main.cpp
1 /*
2  * sensord
3  *
4  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
5  *
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
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
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.
17  *
18  */
19
20 #include "../../orientation_sensor.h"
21 #include <stdlib.h>
22 #include <iostream>
23 #include <fstream>
24 #include <string>
25 using namespace std;
26
27 #define ORIENTATION_DATA_PATH "../../../design/data/100ms/orientation/roll_pitch_yaw/"
28 #define ORIENTATION_DATA_SIZE 1095
29
30 int main()
31 {
32         int data_available = ORIENTATION_DATA_SIZE;
33         ifstream accel_in, gyro_in, mag_in;
34         ofstream orien_file;
35         string line_accel, line_gyro, line_magnetic;
36         float sdata[3];
37         unsigned long long time_stamp;
38         euler_angles<float> orientation;
39         rotation_matrix<float> orientation_mat;
40         orientation_sensor orien_sensor1, orien_sensor2;
41
42         accel_in.open(((string)ORIENTATION_DATA_PATH + (string)"accel.txt").c_str());
43         gyro_in.open(((string)ORIENTATION_DATA_PATH + (string)"gyro.txt").c_str());
44         mag_in.open(((string)ORIENTATION_DATA_PATH + (string)"magnetic.txt").c_str());
45
46         orien_file.open(((string)"orientation.txt").c_str());
47
48         char *token = NULL;
49
50         while (data_available-- > 0)
51         {
52                 getline(accel_in, line_accel);
53                 sdata[0] = strtof(line_accel.c_str(), &token);
54                 sdata[1] = strtof(token, &token);
55                 sdata[2] = strtof(token, &token);
56                 time_stamp = strtoull (token, NULL, 10);
57                 sensor_data<float> accel_data(sdata[0], sdata[1], sdata[2], time_stamp);
58
59                 cout << "Accel Data\t" << accel_data.m_data << "\t Time Stamp\t" << accel_data.m_time_stamp << "\n\n";
60
61                 getline(gyro_in, line_gyro);
62                 sdata[0] = strtof(line_gyro.c_str(), &token);
63                 sdata[1] = strtof(token, &token);
64                 sdata[2] = strtof(token, &token);
65                 time_stamp = strtoull (token, NULL, 10);
66                 sensor_data<float> gyro_data(sdata[0], sdata[1], sdata[2], time_stamp);
67
68                 cout << "Gyro Data\t" << gyro_data.m_data << "\t Time Stamp\t" << gyro_data.m_time_stamp << "\n\n";
69
70                 getline(mag_in, line_magnetic);
71                 sdata[0] = strtof(line_magnetic.c_str(), &token);
72                 sdata[1] = strtof(token, &token);
73                 sdata[2] = strtof(token, &token);
74                 time_stamp = strtoull (token, NULL, 10);
75                 sensor_data<float> magnetic_data(sdata[0], sdata[1], sdata[2], time_stamp);
76
77                 cout << "Magnetic Data\t" << magnetic_data.m_data << "\t Time Stamp\t" << magnetic_data.m_time_stamp << "\n\n";
78
79                 orientation = orien_sensor1.get_orientation(accel_data, gyro_data, magnetic_data);
80
81                 orien_file << orientation.m_ang;
82
83                 cout << "Orientation angles\t" << orientation.m_ang << "\n\n";
84
85                 orientation_mat = orien_sensor1.get_rotation_matrix(accel_data, gyro_data, magnetic_data);
86
87                 cout << "Orientation matrix\t" << orientation_mat.m_rot_mat << "\n\n";
88         }
89
90         accel_in.close();
91         gyro_in.close();
92         mag_in.close();
93         orien_file.close();
94
95         return 0;
96 }