Paparazzi UAS
v5.12_stable-4-g9b43e9b
Paparazzi is a free software Unmanned Aircraft System.
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
Pages
main.c
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2017 Gautier Hattenberger <gautier.hattenberger@enac.fr>
3
*
4
* This file is part of Paparazzi.
5
*
6
* Paparazzi is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2, or (at your option)
9
* any later version.
10
*
11
* Paparazzi is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with paparazzi; see the file COPYING. If not, see
18
* <http://www.gnu.org/licenses/>.
19
*
20
*/
21
31
#if FBW
32
#include "
firmwares/rotorcraft/main_fbw.h
"
33
#else
34
#include "
firmwares/rotorcraft/main_ap.h
"
35
#endif
36
37
#include "
mcu_periph/sys_time.h
"
38
39
#ifndef SITL
40
int
main
(
void
)
41
{
42
main_init
();
43
44
#if LIMIT_EVENT_POLLING
45
/* Limit main loop frequency to 1kHz.
46
* This is a kludge until we can better leverage threads and have real events.
47
* Without this limit the event flags will constantly polled as fast as possible,
48
* resulting on 100% cpu load on boards with an (RT)OS.
49
* On bare metal boards this is not an issue, as you have nothing else running anyway.
50
*/
51
uint32_t
t_begin = 0;
52
uint32_t
t_diff = 0;
53
while
(1) {
54
t_begin =
get_sys_time_usec
();
55
56
handle_periodic_tasks
();
57
main_event
();
58
59
/* sleep remaining time to limit to 1kHz */
60
t_diff =
get_sys_time_usec
() - t_begin;
61
if
(t_diff < 1000) {
62
sys_time_usleep
(1000 - t_diff);
63
}
64
}
65
#else
66
while
(1) {
67
handle_periodic_tasks
();
68
main_event
();
69
}
70
#endif
71
72
return
0;
73
}
74
#endif
/* SITL */
75
handle_periodic_tasks
STATIC_INLINE void handle_periodic_tasks(void)
Definition:
main_ap.c:200
sys_time_usleep
void sys_time_usleep(uint32_t us)
sys_time_usleep(uint32_t us)
Definition:
sys_time_arch.c:95
sys_time.h
Architecture independent timing functions.
main_event
static void main_event(void)
Definition:
uart_tunnel.c:85
uint32_t
unsigned long uint32_t
Definition:
types.h:18
main
int main(void)
Definition:
main.c:42
main_ap.h
Rotorcraft main loop.
main_fbw.h
Fly By Wire:
main_init
static void main_init(void)
Definition:
demo_ahrs_actuators.c:87
get_sys_time_usec
uint32_t get_sys_time_usec(void)
Get the time in microseconds since startup.
Definition:
sys_time_arch.c:68
sw
airborne
firmwares
rotorcraft
main.c
Generated on Sat Feb 9 2019 06:43:49 for Paparazzi UAS by
1.8.8