* adding first files (API draft)
[libnomaccel] / src / global_p.h
1 /* ============================================================================
2     Copyright (C) 2010 nomrasco
3     Nom Rasco <nomrasco@gmail.com>
4
5     This file is part of libnomaccel.
6
7     libnomaccel is free software: you can redistribute it and/or modify
8     it under the terms of the GNU Lesser General Public License as published by
9     the Free Software Foundation, either version 3 of the License, or
10     (at your option) any later version.
11
12     libnomaccel is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15     GNU Lesser General Public License for more details.
16
17     You should have received a copy of the GNU Lesser General Public License
18     along with libnomaccel.  If not, see <http://www.gnu.org/licenses/>.
19 ============================================================================ */
20 #ifndef _NOM_GLOBAL_H_
21 #define _NOM_GLOBAL_H_
22 #include <math.h>
23
24 #define YZ_TO_PITCH(y,z) atan2((y),(-z))
25 #define XY_TO_ROLL(x,y)  atan2((x),(-y))
26 #define XYZ_TO_PITCH(x,y,z) YZ_TO_PITCH(y,z)
27 #define XYZ_TO_ROLL(x,y,z)  XY_TO_ROLL(x,y)
28
29 typedef struct _NomAccelProxy NomAccelProxy;
30 struct _NomAccelProxy {
31         value x;
32         value y;
33         value z;
34         angle pitch;
35         angle roll;
36 };
37
38 void _accel_proxy_init ();
39 void _accel_proxy_finit ();
40 void _accel_read_real_values ();
41 void _accel_recalculate_pitch ();
42 void _accel_recalculate_roll ();
43 #define _accel_recalculate_pitch_roll() _accel_recalculate_pitch(); _accel_recalculate_roll()
44
45 const char* const _accel_device_file_name = "/sys/class/i2c-adapter/i2c-3/3-001d/coord";
46 NomAccelProxy     _accel_proxy = {0};
47
48 #endif