Paparazzi UAS  v6.2_unstable
Paparazzi is a free software Unmanned Aircraft System.
copilot.h File Reference
+ Include dependency graph for copilot.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  CameraPayload
struct  CameraSnapshot
struct  CopilotStatus


 PPRZ_MUTEX_DECL (copilot_cam_snapshot_mtx)
 PPRZ_MUTEX_DECL (copilot_cam_payload_mtx)
 PPRZ_MUTEX_DECL (copilot_status_mtx)
void copilot_init (void)
 Init function. More...
void copilot_periodic (void)
 Periodic function. More...
void copilot_parse_cam_snapshot_dl (uint8_t *buf)
 Message processing functions. More...
void copilot_parse_cam_payload_dl (uint8_t *buf)
 copy CAMERA_PAYLOAD message and mark it to be sent More...
void copilot_parse_copilot_status_dl (uint8_t *buf)
 copy COPILOT_STATUS message and mark it to be sent More...
void copilot_parse_move_wp_dl (uint8_t *buf)
 If MOVE_WP from GCS. More...
void copilot_parse_payload_command_dl (uint8_t *buf)
 Pass through PAYLOAD_COMMAND message and send it as PAYLOAD msg over telemetry. More...


bool send_cam_snapshot
bool send_cam_payload
bool send_copilot_status

Detailed Description

Mission Computer module, interfacing the mission computer (also known as Copilot), based losely on ISaAC: The Intelligent Safety and Airworthiness Co-Pilot module Based on paper "A Payload Verification and Management Framework for Small UAV-based Personal Remote Sensing Systems" by Cal Coopmans and Chris Coffin. Link:

More info can be found on

Copilot is intended mainly for mapping applications.

This module processes messages from Copilot, and either forwards them to the GCS (such as CAMERA_SNAPSHOT or CAMERA_PAYLOAD messages), or responds to them as necessary (such as MOVE_WP).

The module assumes the source of the messages is trusted (i.e. not authentication besides AC_ID check is performed).

Definition in file copilot.h.

Data Structure Documentation

◆ CameraPayload

struct CameraPayload

Definition at line 55 of file copilot.h.

Data Fields
uint8_t door_status
uint8_t error_code
float timestamp
uint8_t used_disk
uint8_t used_mem

◆ CameraSnapshot

struct CameraSnapshot

Definition at line 63 of file copilot.h.

Data Fields
float array_temp
uint16_t cam_id
uint8_t cam_state
float lens_temp
uint16_t snapshot_num
uint8_t snapshot_valid

◆ CopilotStatus

struct CopilotStatus

Definition at line 72 of file copilot.h.

Data Fields
uint8_t error_code
uint8_t status
float timestamp
uint8_t used_disk
uint8_t used_mem

Function Documentation

◆ copilot_init()

void copilot_init ( void  )

◆ copilot_parse_cam_payload_dl()

void copilot_parse_cam_payload_dl ( uint8_t buf)

◆ copilot_parse_cam_snapshot_dl()

void copilot_parse_cam_snapshot_dl ( uint8_t buf)

Message processing functions.

Message processing functions.

In case of multiple cameras, it is up to the payload computer to send CAMERA_SNAPSHOT messages for each camera at proper interval, so the values don't get overwritten.

Definition at line 127 of file copilot_common.c.

References CameraSnapshot::array_temp, CameraSnapshot::cam_id, cam_snapshot, CameraSnapshot::cam_state, CameraSnapshot::lens_temp, PPRZ_MUTEX_LOCK, PPRZ_MUTEX_UNLOCK, send_cam_snapshot, CameraSnapshot::snapshot_num, and CameraSnapshot::snapshot_valid.

◆ copilot_parse_copilot_status_dl()

void copilot_parse_copilot_status_dl ( uint8_t buf)

◆ copilot_parse_move_wp_dl()

void copilot_parse_move_wp_dl ( uint8_t buf)

If MOVE_WP from GCS.

  • processed in firmware_parse_msg(dev, trans, buf); with regular buffer
  • reponse over telemetry (regular buffer)
  • here send WP_MOVED over extra_dl

If MOVE_WP from extra_dl

  • processed in firmware_parse_msg(dev, trans, buf); with extra buffer
  • response over extra_dl
  • send an update to GCS

In both cases, the MOVE_WP message was already processed in firmware_parse here we are taking care only about propagating the change

Definition at line 67 of file copilot_fixedwing.c.

References LlaCoor_f::alt, LlaCoor_i::alt, UtmCoor_f::alt, DefaultChannel, DefaultDevice, dl_buffer, UtmCoor_f::east, extra_dl_buffer, extra_pprz_tp, LtpDef_i::hmsl, LlaCoor_f::lat, LlaCoor_i::lat, LtpDef_i::lla, LlaCoor_f::lon, LlaCoor_i::lon, nav_utm_east0, nav_utm_north0, nav_utm_zone0, nb_waypoint, State::ned_origin_i, UtmCoor_f::north, state, stateIsLocalCoordinateValid(), utm_of_lla_f(), waypoint_is_global(), waypoints, point::x, point::y, and UtmCoor_f::zone.

+ Here is the call graph for this function:

◆ copilot_parse_payload_command_dl()

void copilot_parse_payload_command_dl ( uint8_t buf)

Pass through PAYLOAD_COMMAND message and send it as PAYLOAD msg over telemetry.

Definition at line 184 of file copilot_common.c.

References DefaultChannel, DefaultDevice, dl_buffer, extra_dl_buffer, and extra_pprz_tp.

◆ copilot_periodic()


PPRZ_MUTEX_DECL ( copilot_cam_payload_mtx  )


PPRZ_MUTEX_DECL ( copilot_cam_snapshot_mtx  )


PPRZ_MUTEX_DECL ( copilot_status_mtx  )

Variable Documentation

◆ send_cam_payload

bool send_cam_payload

Definition at line 48 of file copilot_common.c.

Referenced by copilot_init(), copilot_parse_cam_payload_dl(), and copilot_periodic().

◆ send_cam_snapshot

bool send_cam_snapshot

Definition at line 47 of file copilot_common.c.

Referenced by copilot_init(), copilot_parse_cam_snapshot_dl(), and copilot_periodic().

◆ send_copilot_status

bool send_copilot_status