PX4 Firmware
PX4 Autopilot Software http://px4.io
ecl.h
Go to the documentation of this file.
1 /****************************************************************************
2  *
3  * Copyright (c) 2013 Estimation and Control Library (ECL). All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * 1. Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in
13  * the documentation and/or other materials provided with the
14  * distribution.
15  * 3. Neither the name APL nor the names of its contributors may be
16  * used to endorse or promote products derived from this software
17  * without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
26  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30  * POSSIBILITY OF SUCH DAMAGE.
31  *
32  ****************************************************************************/
33 
34 /**
35  * @file ecl.h
36  * Adapter / shim layer for system calls needed by ECL
37  *
38  */
39 #pragma once
40 
41 #if defined(__PX4_POSIX) || defined(__PX4_NUTTX)
42 
43 #include <drivers/drv_hrt.h>
44 #include <px4_log.h>
45 
46 #define ecl_absolute_time hrt_absolute_time
47 #define ecl_elapsed_time hrt_elapsed_time
48 using ecl_abstime = hrt_abstime;
49 
50 #define ECL_INFO PX4_INFO
51 #define ECL_WARN PX4_WARN
52 #define ECL_ERR PX4_ERR
53 
54 #if defined(__PX4_POSIX)
55 #define ECL_INFO_TIMESTAMPED(X) PX4_INFO("%llu: " X, (unsigned long long)_imu_sample_delayed.time_us)
56 #define ECL_WARN_TIMESTAMPED(X) PX4_WARN("%llu: " X, (unsigned long long)_imu_sample_delayed.time_us)
57 #define ECL_ERR_TIMESTAMPED(X) PX4_ERR("%llu: " X, (unsigned long long)_imu_sample_delayed.time_us)
58 #else
59 #define ECL_INFO_TIMESTAMPED PX4_INFO
60 #define ECL_WARN_TIMESTAMPED PX4_WARN
61 #define ECL_ERR_TIMESTAMPED PX4_ERR
62 #endif
63 
64 #elif defined(__PAPARAZZI)
65 
66 #include "std.h"
67 
68 #define ecl_absolute_time() (0)
69 #define ecl_elapsed_time(t) (*t * 0UL) // TODO: add simple time functions
70 
71 using ecl_abstime = uint64_t;
72 
73 #define ECL_INFO(...)
74 #define ECL_WARN(...)
75 #define ECL_ERR(...)
76 #define ECL_INFO_TIMESTAMPED PX4_INFO
77 #define ECL_WARN_TIMESTAMPED PX4_WARN
78 #define ECL_ERR_TIMESTAMPED PX4_ERR
79 
80 #else
81 
82 #include <cstdio>
83 #include <cstdint>
84 
85 #define ecl_absolute_time() (0)
86 #define ecl_elapsed_time(t) (*t * 0UL) // TODO: add simple time functions
87 
88 using ecl_abstime = uint64_t;
89 
90 #define ECL_INFO printf
91 #define ECL_WARN printf
92 #define ECL_ERR printf
93 #define ECL_INFO_TIMESTAMPED printf
94 #define ECL_WARN_TIMESTAMPED printf
95 #define ECL_ERR_TIMESTAMPED printf
96 
97 #endif /* PX4_POSIX || PX4_NUTTX */
98 
99 #include <math.h>
100 #define ISFINITE(x) __builtin_isfinite(x)
High-resolution timer with callouts and timekeeping.
__BEGIN_DECLS typedef uint64_t hrt_abstime
Absolute time, in microsecond units.
Definition: drv_hrt.h:58
uint64_t ecl_abstime
Definition: ecl.h:88