Paparazzi UAS  v5.10_stable-5-g83a0da5-dirty
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
main_fbw.c File Reference

Rotorcraft FBW main loop. More...

#include <inttypes.h>
#include "mcu.h"
#include "led.h"
#include "mcu_periph/sys_time.h"
#include "subsystems/commands.h"
#include "subsystems/actuators.h"
#include "subsystems/electrical.h"
#include "subsystems/radio_control.h"
#include "subsystems/intermcu/intermcu_fbw.h"
#include "firmwares/rotorcraft/main_fbw.h"
#include "firmwares/rotorcraft/autopilot_rc_helpers.h"
#include "generated/modules.h"
+ Include dependency graph for main_fbw.c:

Go to the source code of this file.

Macros

#define MODULES_C
 
#define And(x, y)   ((x) && (y))
 
#define Or(x, y)   ((x) || (y))
 
#define Min(x, y)   (x < y ? x : y)
 
#define Max(x, y)   (x > y ? x : y)
 
#define LessThan(_x, _y)   ((_x) < (_y))
 
#define MoreThan(_x, _y)   ((_x) > (_y))
 

Enumerations

enum  fbw_mode_enum { FBW_MODE_MANUAL = 0, FBW_MODE_AUTO = 1, FBW_MODE_FAILSAFE = 2 }
 Fly by wire modes. More...
 

Functions

int main (void)
 Real main function handling initialization, periodic- and event functions. More...
 
STATIC_INLINE void main_init (void)
 Main initialization. More...
 
STATIC_INLINE void handle_periodic_tasks (void)
 
STATIC_INLINE void telemetry_periodic (void)
 
STATIC_INLINE void fbw_safety_check (void)
 
STATIC_INLINE void main_periodic (void)
 
static void fbw_on_rc_frame (void)
 Callback when we received an RC frame. More...
 
static void fbw_on_ap_command (void)
 Callback when receive commands from the AP. More...
 
STATIC_INLINE void main_event (void)
 

Variables

fbw_mode_enum fbw_mode
 
bool fbw_motors_on = false
 
tid_t main_periodic_tid
 id for main_periodic() timer More...
 
tid_t modules_tid
 id for modules_periodic_task() timer More...
 
tid_t radio_control_tid
 id for radio_control_periodic_task() timer More...
 
tid_t electrical_tid
 id for electrical_periodic() timer More...
 
tid_t telemetry_tid
 id for telemetry_periodic() timer More...
 

Detailed Description

Rotorcraft FBW main loop.

Definition in file main_fbw.c.

Macro Definition Documentation

#define And (   x,
 
)    ((x) && (y))

Definition at line 50 of file main_fbw.c.

#define LessThan (   _x,
  _y 
)    ((_x) < (_y))

Definition at line 54 of file main_fbw.c.

#define MODULES_C

Definition at line 46 of file main_fbw.c.

#define MoreThan (   _x,
  _y 
)    ((_x) > (_y))

Definition at line 55 of file main_fbw.c.

#define Or (   x,
 
)    ((x) || (y))

Definition at line 51 of file main_fbw.c.

Enumeration Type Documentation

Fly by wire modes.

Enumerator
FBW_MODE_MANUAL 
FBW_MODE_AUTO 
FBW_MODE_FAILSAFE 

Definition at line 59 of file main_fbw.c.

Function Documentation

static void fbw_on_ap_command ( void  )
static

Callback when receive commands from the AP.

Definition at line 275 of file main_fbw.c.

References fbw_mode, FBW_MODE_AUTO, intermcu_commands, and SetCommands.

Referenced by main_event().

+ Here is the caller graph for this function:

static void fbw_on_rc_frame ( void  )
static

Callback when we received an RC frame.

Definition at line 244 of file main_fbw.c.

References AP_LOST_FBW_MODE, commands, commands_failsafe, fbw_mode, FBW_MODE_AUTO, FBW_MODE_MANUAL, fbw_motors_on, intermcu, INTERMCU_LOST, intermcu_on_rc_frame(), MIN_PPRZ, radio_control, RADIO_FBW_MODE, SetCommands, intermcu_t::status, and RadioControl::values.

Referenced by main_event().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

STATIC_INLINE void fbw_safety_check ( void  )
STATIC_INLINE void handle_periodic_tasks ( void  )

Definition at line 123 of file main_fbw.c.

References baro_periodic(), electrical_periodic(), electrical_tid, failsafe_check(), main_periodic(), main_periodic_tid, modules_tid, radio_control_periodic_task(), radio_control_tid, sys_time_check_and_ack_timer(), telemetry_periodic(), and telemetry_tid.

Referenced by main().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int main ( void  )

Real main function handling initialization, periodic- and event functions.

Definition at line 75 of file main_fbw.c.

References handle_periodic_tasks(), main_event(), and main_init().

+ Here is the call graph for this function:

STATIC_INLINE void main_event ( void  )
inline

Definition at line 283 of file main_fbw.c.

References autopilot_on_rc_frame(), autopilot_rc, BaroEvent, DatalinkEvent, DetectGroundEvent(), fbw_on_ap_command(), fbw_on_rc_frame(), InterMcuEvent(), mcu_event(), and RadioControlEvent.

Referenced by main().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

STATIC_INLINE void telemetry_periodic ( void  )

Definition at line 142 of file main_fbw.c.

References DefaultChannel, DefaultDevice, DefaultPeriodic, fbw_mode, intermcu_send_status(), and send_autopilot_version().

Referenced by handle_periodic_tasks().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

tid_t electrical_tid

id for electrical_periodic() timer

Definition at line 71 of file main_fbw.c.

fbw_mode_enum fbw_mode

Definition at line 60 of file main_fbw.c.

bool fbw_motors_on = false

Definition at line 61 of file main_fbw.c.

Referenced by fbw_on_rc_frame(), and main_periodic().

tid_t main_periodic_tid

id for main_periodic() timer

Definition at line 68 of file main_fbw.c.

Referenced by handle_periodic_tasks(), and main_init().

tid_t modules_tid

id for modules_periodic_task() timer

Definition at line 69 of file main_fbw.c.

Referenced by handle_periodic_tasks(), and main_init().

tid_t radio_control_tid

id for radio_control_periodic_task() timer

Definition at line 70 of file main_fbw.c.

Referenced by handle_periodic_tasks(), and main_init().

tid_t telemetry_tid

id for telemetry_periodic() timer

Definition at line 72 of file main_fbw.c.

Referenced by handle_periodic_tasks(), and main_init().