Protocol Documentation

Table of Contents

Top

common.proto

Ack

DEPRECATED. Represents an “ack” message informing the drone application that a media part has been correctly received. Generated by the backend server. The drone application should always wait to receive an ack before sending the next media part.

Field

Type

Label

Description

media_id

int64

media ID of the received part

Attitude

Represents the attitude of a drone’s gimbal

Field

Type

Label

Description

roll

float

Z axis: gimbal rotates

pitch

float

X axis: gimbal moves up (+) or down (-)

yaw

float

Y axis: gimbal moves right (+) or left (-)

has_roll

bool

tells if the “roll” parameter should be used

has_pitch

bool

tells if the “pitch” parameter should be used

has_yaw

bool

tells if the “yaw” parameter should be used

CameraMode

Represents a command to set the camera mode

Field

Type

Label

Description

camera_type

CameraSettings.CameraType

camera type

mode

CameraMode.Mode

camera mode

CameraSettings

Represents the camera settings that the user can get/set

Field

Type

Label

Description

camera_type

CameraSettings.CameraType

camera type

stream_quality

CameraSettings.StreamQuality

quality of stream

media_resolution

CameraSettings.MediaResolution

resolution of media (photos and videos)

video_frame_rate

CameraSettings.VideoFrameRate

frame rate for videos

photo_format

CameraSettings.PhotoFormat

format of photos to be taken by the drone (JPEG, RAW, etc.)

video_format

CameraSettings.VideoFormat

format of videos to be taken by the drone (MP4, MOV, etc.)

photo_mode

CameraSettings.PhotoMode

mode of photos to be taken by the drone (single, interval, etc.)

video_mode

CameraSettings.VideoMode

mode of videos to be taken by the drone (normal, slow motion, etc.)

photo_count

int32

number of photos to take. 0: unknown/unchanged. -1: unlimited. Only used with PHOTO_MODE_INTERVAL, PHOTO_MODE_BURST, and PHOTO_MODE_AEB

photo_interval

uint32

interval between photos, in seconds. 0: unknown/unchanged. Only used with PHOTO_MODE_INTERVAL and PHOTO_MODE_TIME_LAPSE (default: 2)

photo_duration

int32

duration of the command, in seconds. 0: unknown/unchanged. -1: unlimited. Only used with PHOTO_MODE_TIME_LAPSE

photo_capture_mode

CameraSettings.PhotoCaptureMode

capture mode of photos to be taken by the drone (RGB, MS, etc.)

video_capture_mode

CameraSettings.VideoCaptureMode

capture mode of videos to be taken by the drone (RGB, NDVI, etc.)

stream_mode

CameraSettings.StreamMode

mode of stream (RGB, NDVI, thermal, etc.)

Circle

Represents a command to make the drone make a circle around a GPS coordinate

Field

Type

Label

Description

speed

Movement

speed of movement

duration

uint64

duration of circle, in milliseconds

degrees

int64

number of degrees to circle

radius

float

distance between drone and center, in meters

position

Coordinates

GPS coordinates of center

ClientData

Represents the generic data object that is sent from client to drone. Each ClientData message must contain the current session, and only one of the other parameters.

Field

Type

Label

Description

session

ClientSession

current session

error

Error

notifies when an error occurred

command

Command

contains a command for the drone

flight_plan

FlightPlan

Deprecated. contains a flight plan. Deprecated: use the flight_plans parameter

ack

Ack

Deprecated. informs the drone application that a media part has been received. sent by backend

heartbeat

Empty

(optionally) used to keep the connection alive

media_upload_response

MediaUploadResponse

contains the URL to upload a media to

flight_plans

FlightPlanList

contains a list of flight plans to run

ClientDataList

Field

Type

Label

Description

data

ClientData

repeated

ClientSession

Represents a session between a client and the server

Field

Type

Label

Description

id

string

droneId

string

Command

Represents a command that can be sent to the drone

Field

Type

Label

Description

id

Command.CommandCode

command ID

blocking

bool

if true, the drone will not accept any other command until this one is completed

empty

Empty

some commands do not require parameters

return_home

ReturnHome

used by RETURN_HOME

hover

Hover

used by HOVER

move_speed

MoveSpeed

used by MOVE_SPEED

move_gps

MoveGPS

used by MOVE_GPS

circle

Circle

used by CIRCLE

rotate

Rotate

used by ROTATE

tilt_camera

TiltCamera

used by TILT_CAMERA

land

Land

used by LAND

stop

Stop

used by STOP_MOVEMENT, STOP_FLIGHT_PLAN, STOP_ALL

start_stream

StartStream

used by START_STREAM

stop_stream

StopStream

used by STOP_STREAM

take_photo

TakePhoto

used by TAKE_PHOTO

start_recording

StartRecording

used by START_RECORDING

stop_recording

StopRecording

used by STOP_RECORDING

manual_control

ManualControl

used by MANUAL_CONTROL

move_altitude

MoveAltitude

used by MOVE_ALTITUDE

download_media

DownloadMedia

used by DOWNLOAD_MEDIA

stop_camera

StopCamera

used by STOP_CAMERA

takeoff

Takeoff

used by TAKEOFF

camera_settings

CameraSettings

used by UPDATE_CAMERA_SETTINGS, CALIBRATE_GIMBAL

camera_mode

CameraMode

used by SET_CAMERA_MODE

obstacle_avoidance_mode

ObstacleAvoidanceMode

used by SET_OBSTACLE_AVOIDANCE_MODE

configure_rtk

ConfigureRtk

used by CONFIGURE_RTK

CommandList

Represents a list of commands that can be sent to the drone

Field

Type

Label

Description

commands

Command

repeated

ConfigureRtk

Represents a command to configure the RTK module

Field

Type

Label

Description

enable

bool

Coordinates

Represents a coordinate system

Field

Type

Label

Description

latitude

float

GPS latitude

longitude

float

GPS longitude

altitude

float

relative altitude (default: 1.0)

heading

float

heading in degrees [-180,180]. 0 means north, 90 east

DownloadMedia

Represents a command to make the drone download media from the SD card

Field

Type

Label

Description

media_type

DownloadMedia.MediaType

type of media to download

camera_type

DownloadMedia.CameraType

type of camera to download media from

not_before

uint64

download media taken after this time. A value of zero means unrestricted (i.e. no lower bound)

not_after

uint64

download media taken before this time. A value of zero means unrestricted (i.e. no upper bound)

max_downloads

uint32

maximum number of media to download. A value of zero means unlimited

upload_to_client

bool

if true, the media will not be stored on the server. Instead, the client will be responsible for processing MediaUpload requests and providing the upload URLs in MediaUploadResponse

DroneCapabilities

Represents the drone’s capabilities.

Field

Type

Label

Description

stream_qualities

CameraSettings.StreamQuality

repeated

supported stream qualities

video_resolutions_framerates

DroneCapabilities.ResolutionAndFrameRate

repeated

supported video resolutions and frame rates

photo_formats

CameraSettings.PhotoFormat

repeated

supported photo formats

video_formats

CameraSettings.VideoFormat

repeated

supported video formats

photo_modes

CameraSettings.PhotoMode

repeated

supported photo modes

video_modes

CameraSettings.VideoMode

repeated

supported video modes

photo_capture_modes

CameraSettings.PhotoCaptureMode

repeated

supported photo capture modes

video_capture_modes

CameraSettings.VideoCaptureMode

repeated

supported video capture modes

stream_modes

CameraSettings.StreamMode

repeated

supported stream modes

obstacle_avoidance_modes

ObstacleAvoidanceMode.Mode

repeated

supported obstacle avoidance modes

DroneCapabilities.ResolutionAndFrameRate

Field

Type

Label

Description

resolution

CameraSettings.MediaResolution

resolution

frame_rate

CameraSettings.VideoFrameRate

frame rate

DroneData

Represents the generic data object that is sent from drone to client. Each DroneData message must contain the current session, and only one of the other parameters.

Field

Type

Label

Description

session

DroneSession

current session

error

Error

notifies when an error occurred

media

Media

Deprecated. contains either a media part, or notifies update abortion

metrics

Metrics

contains the current state of the drone

command

Command

(optionally) used to notify about drone’s current action

heartbeat

Empty

(optionally) used to keep the connection alive

log

Log

contains a log message

flight_plan_status

FlightPlanStatus

contains info about the latest flight plan executed

media_upload

MediaUpload

contains a request to upload a media

flight_plan_request

FlightPlanRequest

contains a request for flight plans

DroneSession

Represents a session between a drone and the server

Field

Type

Label

Description

id

string

droneId

string

Deprecated.

Empty

Represents an empty message

Error

Represents an error message

Field

Type

Label

Description

code

Error.Code

error code

description

string

textual description

FlightPlan

Represents a flight plan that can be executed by the drone A flight plan can be referenced by ID if previously created from web app. Otherwise, a list of commands can be directly specified in this message, either as list of Command objects or in JSON format.

Field

Type

Label

Description

id

string

ID of flight plan

commands

CommandList

list of commands contained in the flight plan

json

bytes

JSON representation of flight plan

empty

Empty

use default flight plan assigned to drone in web app

fp_id

string

(optional) a custom identifier that can be used to keep track of which flight plan is running at a certain time. The drone application will use this value in Metrics and FlightPlanStatus messages

auto_home

bool

(optional) if true, the drone will return home after executing the flight plan, or if an error occurs

command_index

uint32

(optional) command index to start from (default: 0)

FlightPlanList

Represents a list of FlightPlan objects

Field

Type

Label

Description

flight_plans

FlightPlan

repeated

list of flight plans

store

bool

(optional) indicates if the flight plans will be executed immediately (if false) or if they will be stored on the device for later use (if true)

sync

bool

(optional) indicates if a time sync between device and drone will happen before running the flight plan

FlightPlanRequest

Represents a message asking for one or more flight plans. This message is sent from the drone to the server. The server will respond with a corresponding FlightPlan message, containing the flight plans associated to the IDs specified in this message.

Field

Type

Label

Description

fp_ids

string

repeated

(optional) identifiers of the flight plans that the drone wants to run. If not specified, the server will send the flight plan currently linked to the drone.

store

bool

(optional) the drone indicates if the flight plans will be ran immediately (if false) or stored on the device (if true). The server’s reply should set the corresponding parameter to the same value in FlightPlanList

FlightPlanStatus

Represents a message containing information about a flight plan

Field

Type

Label

Description

fp_id

string

identifier of the flight plan, as provided in the FlightPlan message

status

FlightPlanStatus.Status

current status of flight plan

current_command

uint32

index of the command currently executing

timestamp

uint64

timestamp (in milliseconds) of the message

Hover

Represents a command to make the drone hover in place

Field

Type

Label

Description

duration

uint64

duration of hover, in seconds

Land

Represents a land command

Field

Type

Label

Description

force

bool

force landing if sensor is off or ground is unstable

Log

Represents a log message

Field

Type

Label

Description

timestamp

uint64

timestamp (in milliseconds) of the generated log

level

Log.Level

log level

tag

string

can be used to give a specific context on the log

message

string

actual mesaage

ManualControl

Represents a command to make the drone enable/disable manual control

Field

Type

Label

Description

enable

bool

true: enable manual control, false: disable manual control

Media

DEPRECATED. Represents a media object, containing either a (part of) media being uploaded by the drone, or notifies the server that the upload has been aborted

Field

Type

Label

Description

data

bytes

raw data

format

string

Deprecated.

persist

bool

informs the server that there may be multiple parts

size

int64

total size of the media being uploaded

part_number

int64

index of the current part

total_parts

int64

total number of parts

content_type

Media.ContentType

type of media being uploaded

id

int64

unique per-session ID of the media

abort

bool

notifies the server that upload has been aborted

MediaUpload

Represents a request or a result for a media upload

Field

Type

Label

Description

request

MediaUpload.Request

request to upload a media

result

MediaUpload.Result

result of an upload

MediaUpload.Request

Represents a request to upload a media

Field

Type

Label

Description

size

int64

total size of the media being uploaded

photo_format

CameraSettings.PhotoFormat

format of photos to be uploaded by the drone (JPEG, RAW, etc.)

video_format

CameraSettings.VideoFormat

format of videos to be uploaded by the drone (MP4, MOV, etc.)

upload_to_client

bool

specifies if the client will handle the upload of this media. This variable should contain the same value as in the DownloadMedia message previously received

group_id

string

(optional) Group ID of the media. Multiple media can be grouped by using the same ID (e.g., multispectral images). Empty string means that the media is not part of a group

download_index

uint32

(optional) index of the media in the list of media to download.

download_count

uint32

(optional) total number of media to download

flight_id

string

(optional) a unique identifier of the flight. Used when uploading media from a folder (usually, this is a randomly-generated string)

flight_name

string

(optional) a (non-unique) name of the flight. Used when uploading media from a folder (usually, this is the folder name)

MediaUpload.Result

Represents a result of a media upload

Field

Type

Label

Description

id

string

unique ID of the media

result_code

MediaUpload.Result.ResultCode

result of the upload

description

string

(optional) additional information regarding the upload (e.g., if an error occurred)

MediaUploadResponse

Represents a response to a media upload request

Field

Type

Label

Description

id

string

unique ID of the media

url

string

URL to upload the media to with an HTTP PUT request

Metrics

Represents the current drone’s state. All fields are optional

Field

Type

Label

Description

timestamp

uint64

timestamp (in milliseconds) of the drone state

battery

uint32

battery percentage [0,100]

state

Metrics.State

current state

position

Coordinates

current position

gps_level

Metrics.GPSLevel

current GPS level

uplink_level

Metrics.SignalLevel

level of uplink signal

downlink_level

Metrics.SignalLevel

level of downlink signal

gimbal_attitude

Attitude

attitude of primary gimbal

flight_plan_id

string

if state is FLIGHT_PLAN, identifier of the current flight plan as provided in the FlightPlan message

thermal_gimbal_attitude

Attitude

attitude of thermal camera’s gimbal

camera_state

Metrics.CameraState

state of primary camera

thermal_camera_state

Metrics.CameraState

state of thermal camera

home_position

Coordinates

home (i.e., takeoff) position

drone_type

string

drone model

client_type

string

client (e.g., smartphone) model

capabilities

Metrics.Capability

repeated

Deprecated. capabilities of drone

velocity

Velocity

velocity of drone

controller_position

Coordinates

position of controller

controller_battery

uint32

battery percentage of controller [0,100]

live_stream_state

Metrics.LiveStreamState

state of live streaming

available_storage

uint64

available storage, in bytes

recording_time

uint32

current video’s recording time of primary camera, in seconds

camera_settings

CameraSettings

current camera settings of the drone

drone_capabilities

DroneCapabilities

drone capabilities

camera_mode

CameraMode.Mode

mode of primary camera

gps_satellite_count

uint32

number of satellites

upgradable_components

string

components that can be upgraded

obstacle_avoidance_mode

ObstacleAvoidanceMode.Mode

obstacle avoidance type

rtk_state

Metrics.RTKState

RTK state

MoveAltitude

Represents a command to make the drone move to a specific altitude

Field

Type

Label

Description

altitude

float

altitude to move to, in meters (default: 1.0)

speed

Movement

speed of movement

constant_speed

bool

(optional) if true, drone does not decelerate while approaching destination

MoveGPS

Represents a command to make the drone move to a specific GPS coordinate

Field

Type

Label

Description

position

Coordinates

GPS coordinates of destination

speed

Movement

speed of movement

auto_heading

bool

if true, heading is towards the destination

constant_speed

bool

(optional) if true, drone does not decelerate while approaching destination

heading_speed

Movement

(optional) speed of heading. If not specified, drone will use the speed parameter

up_speed

Movement

(optional) speed of up/down. If not specified, drone will use the speed parameter

MoveSpeed

Represents a command to make the drone move in a specific direction, relative to the drone itself

Field

Type

Label

Description

forward

Movement

forward/backward movement

right

Movement

right/left movement

up

Movement

up/down movement

rotate

Movement

clockwise/counter-clockwise rotation

duration

uint64

duration of movement, in milliseconds (default: 10000)

Movement

Represents a movement command that can be sent to the drone

Field

Type

Label

Description

speed

Movement.Speed

speed of movement (default: 1)

reversed

bool

Deprecated. (deprecated)

direction

Movement.Direction

direction of movement

absolute_speed

float

(optional) absolute speed value, either in m/s (for movement) or deg/s (for rotation). If non-zero, the speed value is ignored and this is used instead

ObstacleAvoidanceMode

Represents a command to set the obstacle avoidance mode

Field

Type

Label

Description

mode

ObstacleAvoidanceMode.Mode

ReturnHome

Represents a command to make the drone return to its takeoff point and land

Field

Type

Label

Description

altitude

float

altitude (relative to takeoff point) to return to, in meters (default: 20.0)

force_land

bool

force landing if sensor is off or ground is unstable

return_to_controller

bool

(optional) return to controller position

Rotate

Represents a command to make the drone rotate in place

Field

Type

Label

Description

heading

float

heading to rotate to, in degrees

speed

Movement

speed of rotation

relative_heading

bool

if true: “heading” is relative to current heading. If false: heading is relative to the north

forward

Movement

optional forward movement used to make the drone do an arc

right

Movement

optional right movement used to make the drone do a “reverse” arc

up

Movement

optional up movement to make the drone go up or down

constant_speed

bool

(optional) if true, drone does not decelerate while approaching destination

StartRecording

Represents a command to make the drone start recording a video

Field

Type

Label

Description

camera_settings

CameraSettings

camera settings to use

StartStream

Represents a command to make the drone start a live stream video to a specific URL

Field

Type

Label

Description

camera_settings

CameraSettings

camera settings to use

url

string

URL to stream to

Stop

Represents a command to make the drone stop doing whatever it’s doing

Field

Type

Label

Description

go_home

bool

if true, drone will automatically return to takeoff point and land

StopCamera

Represents a command to make the drone stop taking photos and videos, and also stops any gimbal movements

Field

Type

Label

Description

camera_settings

CameraSettings

camera settings to use

StopRecording

Represents a command to make the drone stop recording a video

Field

Type

Label

Description

camera_settings

CameraSettings

camera settings to use

StopStream

Represents a command to make the drone stop streaming video

Field

Type

Label

Description

camera_settings

CameraSettings

camera settings to use

TakePhoto

Represents a command to make the drone take a photo

Field

Type

Label

Description

camera_settings

CameraSettings

camera settings to use

count

uint32

Deprecated. number of photos to take. 0: unlimited. Only used with PHOTO_MODE_INTERVAL, PHOTO_MODE_BURST, and PHOTO_MODE_AEB

interval

uint32

Deprecated. interval between photos, in seconds. Only used with PHOTO_MODE_INTERVAL and PHOTO_MODE_TIME_LAPSE (default: 2)

duration

uint32

Deprecated. duration of the command, in seconds. 0: unlimited. Only used with PHOTO_MODE_TIME_LAPSE

Takeoff

Represents a takeoff command

Field

Type

Label

Description

altitude

float

altitude to reach, in meters (default: 1.0)

speed

Movement

speed to reach the desired altitude

TiltCamera

Represents a command to make the camera’s gimbal tilt

Field

Type

Label

Description

yaw

float

Deprecated. yaw to tilt to, in degrees

pitch

float

Deprecated. pitch to tilt to, in degrees

roll

float

Deprecated. roll to tilt to, in degrees

speed

Movement

speed of movement

camera_settings

CameraSettings

camera settings to use

attitude

Attitude

gimbal attitude

Velocity

Represents a velocity vector using the NED coordinate system

Field

Type

Label

Description

x

float

velocity in north direction, in m/s

y

float

velocity in east direction, in m/s

z

float

velocity in down direction, in m/s

CameraMode.Mode

Name

Number

Description

MODE_UNKNOWN

0

unknown mode

MODE_PHOTO

1

photo mode

MODE_VIDEO

2

video mode

CameraSettings.CameraType

Name

Number

Description

CAMERA_PRIMARY

0

drone’s primary camera (e.g., RGB)

CAMERA_SECONDARY

1

drone’s secondary camera (e.g., thermal)

CameraSettings.MediaResolution

Name

Number

Description

RESOLUTION_NONE

0

unknown (if get) / unchanged (if set)

RESOLUTION_DEFAULT

1

use default resolution

RESOLUTION_720P

2

use 720p resolution

RESOLUTION_1080P

3

use 1080p resolution

RESOLUTION_1440P

4

use 1440p resolution

RESOLUTION_2160P

5

use 2160p resolution

CameraSettings.PhotoCaptureMode

Name

Number

Description

PHOTO_CAPTURE_MODE_NONE

0

unknown (if get) / unchanged (if set)

PHOTO_CAPTURE_MODE_DEFAULT

1

use default capture mode

PHOTO_CAPTURE_MODE_RGB

2

capture only RGB

PHOTO_CAPTURE_MODE_RGB_MS

3

capture RGB and multispectral

PHOTO_CAPTURE_MODE_INFRARED

4

capture infrared

CameraSettings.PhotoFormat

Name

Number

Description

PHOTO_FORMAT_NONE

0

unknown (if get) / unchanged (if set)

PHOTO_FORMAT_DEFAULT

1

use default photo format

PHOTO_FORMAT_JPEG

2

use JPEG photo format

PHOTO_FORMAT_RAW

3

use RAW photo format

PHOTO_FORMAT_RAW_AND_JPEG

4

use RAW and JPEG photo format

PHOTO_FORMAT_TIFF

5

use TIFF photo format

CameraSettings.PhotoMode

Name

Number

Description

PHOTO_MODE_NONE

0

unknown (if get) / unchanged (if set)

PHOTO_MODE_SINGLE

1

shoot a single photo

PHOTO_MODE_INTERVAL

2

shoot photos in sequence, with a specific interval

PHOTO_MODE_BURST

3

shoot photos in rapid succession

PHOTO_MODE_HDR

4

HDR mode

PHOTO_MODE_EHDR

5

Enhanced HDR mode

PHOTO_MODE_HYPER_LIGHT

6

HyperLight mode for low-light environments

PHOTO_MODE_AEB

7

Automatic Exposure Bracketing mode. Shoot multiple photos at different exposures

PHOTO_MODE_TIME_LAPSE

8

Time-Lapse mode. Takes a series of photos with specific interval, then outputs a video

PHOTO_MODE_PANORAMA

9

Takes a series of photos for panorama mode

PHOTO_MODE_HIGH_RESOLUTION

10

High-Resolution mode

CameraSettings.StreamMode

Name

Number

Description

STREAM_MODE_NONE

0

unknown (if get) / unchanged (if set)

STREAM_MODE_DEFAULT

1

use default stream type

STREAM_MODE_RGB

2

use RGB stream

STREAM_MODE_NDVI

3

use NDVI stream

STREAM_MODE_INFRARED

4

use infrared stream

CameraSettings.StreamQuality

Name

Number

Description

STREAM_QUALITY_NONE

0

unknown (if get) / unchanged (if set)

STREAM_QUALITY_NORMAL

1

use normal stream quality

STREAM_QUALITY_HIGH

2

use high stream quality

STREAM_QUALITY_LOW

3

use low stream quality

CameraSettings.VideoCaptureMode

Name

Number

Description

VIDEO_CAPTURE_MODE_NONE

0

unknown (if get) / unchanged (if set)

VIDEO_CAPTURE_MODE_DEFAULT

1

use default capture mode

VIDEO_CAPTURE_MODE_RGB

2

capture only RGB

VIDEO_CAPTURE_MODE_RGB_NDVI

3

capture both RGB and NDVI

VIDEO_CAPTURE_MODE_INFRARED

4

capture infrared

CameraSettings.VideoFormat

Name

Number

Description

VIDEO_FORMAT_NONE

0

unknown (if get) / unchanged (if set)

VIDEO_FORMAT_DEFAULT

1

use default video format

VIDEO_FORMAT_MP4

2

use MP4 video format

VIDEO_FORMAT_MOV

3

use MOV video format

VIDEO_FORMAT_TIFF_SEQ

4

use TIFF sequence video format

VIDEO_FORMAT_SEQ

5

use sequence video format

CameraSettings.VideoFrameRate

Name

Number

Description

FRAME_RATE_NONE

0

unknown (if get) / unchanged (if set)

FRAME_RATE_DEFAULT

1

use default frame rate

FRAME_RATE_24FPS

2

use 24 fps frame rate

FRAME_RATE_30FPS

3

use 30 fps frame rate

FRAME_RATE_48FPS

4

use 48 fps frame rate

FRAME_RATE_60FPS

5

use 60 fps frame rate

FRAME_RATE_120FPS

6

use 120 fps frame rate

CameraSettings.VideoMode

Name

Number

Description

VIDEO_MODE_NONE

0

unknown (if get) / unchanged (if set)

VIDEO_MODE_NORMAL

1

normal video mode

VIDEO_MODE_SLOW_MOTION

2

slow motion mode

VIDEO_MODE_HDR

3

HDR video mode

Command.CommandCode

Name

Number

Description

NONE

0

default invalid value

TAKEOFF

1

LAND

2

drone lands

RETURN_HOME

3

drone returns to home position and lands

HOVER

4

wait for a specified amount of time

SET_OBSTACLE_AVOIDANCE_MODE

10

CONFIGURE_RTK

11

configure RTK

MOVE_SPEED

20

MOVE_GPS

21

move to a specific GPS location

STOP_MOVEMENT

22

stop all current movements

STOP_FLIGHT_PLAN

23

stop current flight plan

CIRCLE

24

performs a circle around a fixed GPS location

ROTATE

25

rotate drone while hovering

MOVE_ALTITUDE

26

move drone up or down

START_STREAM

30

STOP_STREAM

31

stop streaming

TAKE_PHOTO

32

take one or more photos

START_RECORDING

33

start recording

STOP_RECORDING

34

stop recording

TILT_CAMERA

35

move camera’s gimbal

STOP_CAMERA

36

stops all operations on camera

UPDATE_CAMERA_SETTINGS

37

update camera settings

SET_CAMERA_MODE

38

set camera mode

DELETE_ALL_MEDIA

50

REBOOT_DRONE

51

reboot drone

CALIBRATE_COMPASS

52

calibrate drone’s compass

MANUAL_CONTROL

53

(optional) force enabling manual control

DOWNLOAD_MEDIA

54

download some or all medias from drone’s storage

STOP_ALL

55

stop all current operations (movements, camera, flight plan)

TIME_SYNC

56

synchronizes the drone time with the device time

CALIBRATE_GIMBAL

57

calibrate drone’s gimbal

DownloadMedia.CameraType

Name

Number

Description

CAMERA_TYPE_ALL

0

CAMERA_TYPE_NORMAL

1

CAMERA_TYPE_THERMAL

2

DownloadMedia.MediaType

Name

Number

Description

MEDIA_TYPE_ALL

0

MEDIA_TYPE_PHOTO

1

MEDIA_TYPE_VIDEO

2

Error.Code

Name

Number

Description

UNKNOWN

0

DRONE

100

1xx: Drone

DRONE_NOT_CONNECTED

101

DRONE_NOT_READY

102

DRONE_NOT_CALIBRATED

103

DRONE_CONNECTION_ERROR

104

DRONE_STATE_NOT_LANDED

110

DRONE_STATE_NOT_HOVERING

111

DRONE_STATE_NOT_FLYING

112

DRONE_STATE_NOT_FLIGHT_PLAN

113

DRONE_STATE_NOT_DOWNLOADING

114

DRONE_STATE_NOT_IDLE

115

either landed or hovering

DRONE_STATE_NOT_IN_AIR

116

either hovering or flying

DRONE_NO_SENSOR_INFO

117

DRONE_LOW_BATTERY

118

DRONE_BAD_SIGNAL

119

DRONE_BAD_GPS

120

DRONE_COMMAND_BAD_PARAMETERS

140

DRONE_COMMAND_FAILED_TO_EXECUTE

141

DRONE_LANDING_NEED_CONFIRMATION

142

DRONE_DISTANCE_TOO_FAR

143

DRONE_CAMERA_NOT_FOUND

160

DRONE_CAMERA_NOT_IDLE

161

DRONE_CAMERA_NOT_RECORDING

162

DRONE_STREAM_START_FAILED

163

DRONE_FLIGHT_PLAN_PARSING_ERROR

170

DRONE_FLIGHT_PLAN_IN_PROGRESS

171

DRONE_FLIGHT_PLAN_FAILED

172

DRONE_DOWNLOAD_ERROR

180

DRONE_MEDIA_DELETE_FAILED

181

DRONE_MEDIA_NOT_FOUND

182

DRONE_FEATURE_NOT_IMPLEMENTED

190

DRONE_FEATURE_NOT_SUPPORTED

191

DRONE_UNEXPECTED_ERROR

192

CLIENT

200

2xx: Client

BAD_REQUEST

201

UNKNOWN_REQUEST

202

AUTHENTICATION_ERROR

300

3xx: Backend

DB_ERROR

301

FlightPlanStatus.Status

Name

Number

Description

UNKNOWN

0

flight plan has not started or no info has been received from the drone yet

STARTED

1

flight plan has started

COMPLETED

2

flight plan has completed successfully

FAILED

3

flight plan has failed

Log.Level

Name

Number

Description

CRITICAL

0

ERROR

1

WARNING

2

INFO

3

DEBUG

4

TRACE

5

Media.ContentType

Name

Number

Description

UNKNOWN

0

VIDEO_MP4

10

VIDEO_RAW

11

PHOTO_JPEG

20

PHOTO_PNG

21

PHOTO_RAW

22

MediaUpload.Result.ResultCode

Name

Number

Description

SUCCESS

0

media uploaded successfully

ERROR_GENERIC

1

generic error

ERROR_DOWNLOAD

2

failed to download the media from the drone

ERROR_UPLOAD

3

failed to upload the media to the specified URL

Metrics.CameraState

Name

Number

Description

CAMERA_UNKNOWN

0

camera not available or unknown state

CAMERA_IDLE

1

camera is ready to accept commands

CAMERA_PHOTO

2

camera is shooting photo

CAMERA_VIDEO

3

camera is recording video

CAMERA_DOWNLOAD

4

camera cannot be used, download in progress

Metrics.Capability

Name

Number

Description

THERMAL_CAMERA

0

thermal camera available

RESOLUTION_1440P

1

2K resolution available

RESOLUTION_2160P

2

4K resoliution available

Metrics.GPSLevel

Name

Number

Description

GPS_UNKNOWN

0

GPS level is unknown

BAD

1

bad signal, not allowed to takeoff

OK

2

takeoff allowed but position may be imprecise, use caution

GOOD

3

good signal, position is precise

Metrics.LiveStreamState

Name

Number

Description

STREAM_UNKNOWN

0

unknown state

STREAM_NOT_CONNECTED

1

not connected (i.e., live stream is disabled)

STREAM_INITIALIZING

2

initializing

STREAM_INITIALIZED

3

initialized

STREAM_CONNECTION_STARTED

4

connection to server has started

STREAM_AUTHENTICATED

5

authenticated to server

STREAM_CONNECTED

6

connected to server (streaming is ongoing)

STREAM_DISCONNECTED

7

disconnected from server

STREAM_AUTHENTICATION_ERROR

8

authentication error

STREAM_CONNECTION_ERROR

9

connection error

STREAM_START_ERROR

10

start stream error

STREAM_INITIALIZATION_ERROR

11

initialization error

STREAM_RESTARTING

12

trying to reconnect

Metrics.RTKState

Name

Number

Description

RTK_UNKNOWN

0

unknown state

RTK_DISCONNECTED

1

RTK disconnected

RTK_CONNECTED

2

RTK connected

RTK_DISABLED

3

RTK module is disabled in drone

Metrics.SignalLevel

Name

Number

Description

SIGNAL_UNKNOWN

0

radio signal is unknown

SIGNAL_BAD

1

bad signal, connection unstable

SIGNAL_OK

2

connection is stable but data may be lost

SIGNAL_GOOD

3

good signal

Metrics.State

Name

Number

Description

UNKNOWN

0

missing connection

LANDED

1

drone is landed

HOVERING

2

drone is in air, hovering

FLYING

3

drone is in air, moving

FLIGHT_PLAN

4

drone is executing a flight plan

DOWNLOADING

5

drone is landed, media are being downloaded

OTHER

6

other state (e.g., calibrating compass)

Movement.Direction

Name

Number

Description

DIRECTION_AUTO

0

the drone application decides the most appropriate direction

DIRECTION_NORMAL

1

either forward, right, up, or clockwise

DIRECTION_REVERSED

2

either backward, left, down, or counter-clockwise

Movement.Speed

Name

Number

Description

NONE

0

VERY_SLOW

1

SLOW

2

NORMAL

3

FAST

4

VERY_FAST

5

MAX_SPEED

6

ObstacleAvoidanceMode.Mode

Name

Number

Description

MODE_UNKNOWN

0

unknown type

MODE_OFF

1

obstacle avoidance is off

MODE_BRAKE

2

drone will brake

MODE_BYPASS

3

drone will try to avoid obstacle

Scalar Value Types

.proto Type

Notes

C++

Java

Python

Go

C#

PHP

Ruby

double

double

double

float

float64

double

float

Float

float

float

float

float

float32

float

float

Float

int32

Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.

int32

int

int

int32

int

integer

Bignum or Fixnum (as required)

int64

Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.

int64

long

int/long

int64

long

integer/string

Bignum

uint32

Uses variable-length encoding.

uint32

int

int/long

uint32

uint

integer

Bignum or Fixnum (as required)

uint64

Uses variable-length encoding.

uint64

long

int/long

uint64

ulong

integer/string

Bignum or Fixnum (as required)

sint32

Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.

int32

int

int

int32

int

integer

Bignum or Fixnum (as required)

sint64

Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.

int64

long

int/long

int64

long

integer/string

Bignum

fixed32

Always four bytes. More efficient than uint32 if values are often greater than 2^28.

uint32

int

int

uint32

uint

integer

Bignum or Fixnum (as required)

fixed64

Always eight bytes. More efficient than uint64 if values are often greater than 2^56.

uint64

long

int/long

uint64

ulong

integer/string

Bignum

sfixed32

Always four bytes.

int32

int

int

int32

int

integer

Bignum or Fixnum (as required)

sfixed64

Always eight bytes.

int64

long

int/long

int64

long

integer/string

Bignum

bool

bool

boolean

boolean

bool

bool

boolean

TrueClass/FalseClass

string

A string must always contain UTF-8 encoded or 7-bit ASCII text.

string

String

str/unicode

string

string

string

String (UTF-8)

bytes

May contain any arbitrary sequence of bytes.

string

ByteString

str

[]byte

ByteString

string

String (ASCII-8BIT)