Skip to content

Instantly share code, notes, and snippets.

@agrublev
Created June 24, 2018 14:36
Show Gist options
  • Save agrublev/bc768aa13e4facf0bcde521218ce15de to your computer and use it in GitHub Desktop.
Save agrublev/bc768aa13e4facf0bcde521218ce15de to your computer and use it in GitHub Desktop.
DOCS
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2017 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<feature id="144" name="animation">
All messages related to the animations
<enums>
<enum name="type">
Animation type.
<value name="none">
No animation
</value>
<value name="flip">
The drone makes a flip
</value>
<value name="horizontal_panorama">
The drone horizontaly rotates on itself
</value>
<value name="dronie">
The drone flies away on a given distance with a computed angle
</value>
<value name="horizontal_reveal">
The drone starts looking down, then moves forward while slowly looking at the horizon
</value>
<value name="vertical_reveal">
The drone starts looking down, then moves up while slowly looking at the horizon.
When it reaches its target altitude, it rotates on itself to do a panorama.
</value>
<value name="spiral">
The drone circles around its target.
</value>
<value name="parabola">
The drone makes a parabola on top of its target and ends on the other side of it.
</value>
<value name="candle">
The drone flies horizontally in direction of the target then flies up.
</value>
<value name="dolly_slide">
The drone slides horizontally.
</value>
</enum>
<enum name="state">
Animation state.
<value name="idle">
The animation is not running.
</value>
<value name="running">
The animation is running.
</value>
<value name="canceling">
The current animation is canceling.
</value>
</enum>
<enum name="play_mode">
Animation play mode.
<value name="normal">
Animation is played once, normally.
</value>
<value name="once_then_mirrored">
Animation is played once and then the animation is played mirrored.
</value>
</enum>
<enum name="flip_type">
Animation flip type.
<value name="front">
The drone makes a front flip
</value>
<value name="back">
The drone makes a back flip
</value>
<value name="left">
The drone makes a left flip (its left side goes up)
</value>
<value name="right">
The drone makes a right flip (its right side goes up)
</value>
</enum>
<enum name="horizontal_panorama_config_param">
Horizontal panorama configuration parameter.
<value name="rotation_angle">
Rotation angle parameter.
</value>
<value name="rotation_speed">
Rotation speed parameter.
</value>
</enum>
<enum name="dronie_config_param">
Dronie animation configuration parameter.
<value name="speed">
Speed parameter.
</value>
<value name="distance">
Distance parameter.
</value>
<value name="play_mode">
Play mode parameter.
</value>
</enum>
<enum name="horizontal_reveal_config_param">
Horizontal reveal animation configuration parameter.
<value name="speed">
Speed parameter.
</value>
<value name="distance">
Distance parameter.
</value>
<value name="play_mode">
Play mode parameter.
</value>
</enum>
<enum name="vertical_reveal_config_param">
Vertical reveal animation configuration parameter.
<value name="speed">
Speed parameter.
</value>
<value name="vertical_distance">
Vertical distance parameter.
</value>
<value name="rotation_angle">
Rotation angle parameter.
</value>
<value name="rotation_speed">
Rotation speed parameter.
</value>
<value name="play_mode">
Play mode parameter.
</value>
</enum>
<enum name="spiral_config_param">
Spiral animation configuration parameter.
<value name="speed">
Speed parameter.
</value>
<value name="radius_variation">
Radius variation parameter.
</value>
<value name="vertical_distance">
Vertical distance parameter.
</value>
<value name="revolution_nb">
Revolution number parameter.
</value>
<value name="play_mode">
Play mode parameter.
</value>
</enum>
<enum name="parabola_config_param">
Parabola animation configuration parameter.
<value name="speed">
Speed parameter.
</value>
<value name="vertical_distance">
Vertical distance parameter.
</value>
<value name="play_mode">
Play mode parameter.
</value>
</enum>
<enum name="candle_config_param">
Candle animation configuration parameter.
<value name="speed">
Speed parameter.
</value>
<value name="vertical_distance">
Vertical distance parameter.
</value>
<value name="play_mode">
Play mode parameter.
</value>
</enum>
<enum name="dolly_slide_config_param">
Dolly slide animation configuration parameter.
<value name="speed">
Speed parameter.
</value>
<value name="angle">
Angle parameter.
</value>
<value name="horizontal_distance">
Horizontal distance parameter.
</value>
<value name="play_mode">
Play mode parameter.
</value>
</enum>
</enums>
<msgs>
<evt name="availability" id="1">
<comment
title="Availability of the animations"
comment="Availability of the animations."
support="090c:4.3.0"
triggered="when the list of available animations changes."/>
<arg name="values" type="bitfield:u32:type">
Bitfield of available animation types
</arg>
</evt>
<evt name="state" id="2">
<comment
title="State of the animation"
comment="State of the animation."
support="090c:4.3.0"
triggered="when the state of the animation changes."/>
<arg name="type" type="enum:type">
Type of the animation. None if no animation is currently running or canceling.
</arg>
<arg name="percent" type="u8">
Percentage of the animation (only accurate if type is not none) (from 0 to 100).
</arg>
</evt>
<cmd name="cancel" id="3">
<comment
title="Cancel current animation"
desc="Cancel current animation."
support="090c:4.3.0"
result="The state of the current animation (for example [FlipState](#144-5)) changes to canceling.
Then, as soon as possible, the current animation is stopped
and [State](#144-2) is triggered with type equals to none."/>
</cmd>
<cmd name="start_flip" id="4">
<comment
title="Start flip animation"
desc="Start a flip animation.\n
Starting this animation when another animation is started (or canceling),
will cancel the current one to start this one."
support="090c:4.3.0"
result="If an animation was running, this animation is canceling, then canceled.
Then, this animation is started, [FlipState](#144-5) is triggered with state equals to running
and [State](#144-2) is triggered with type equals to flip."/>
<arg name="type" type="enum:flip_type">
Type of the flip
</arg>
</cmd>
<evt name="flip_state" id="5">
<comment
title="Flip state"
comment="Flip animation state."
support="090c:4.3.0"
triggered="by [StartFlip](#144-4) and when the state changes."/>
<arg name="state" type="enum:state">
State of the animation
</arg>
<arg name="type" type="enum:flip_type">
Type of the flip (only accurate if state is not idle)
</arg>
</evt>
<cmd name="start_horizontal_panorama" id="6">
<comment
title="Start horizontal panorama"
desc="Start an horizontal panorama animation.\n
Starting this animation when another animation is started (or canceling),
will cancel the current one to start this one.\n
This animation will make the drone horizontaly rotates on itself."
support="090c:4.3.0"
result="If an animation was running, this animation is canceling, then canceled.
Then, this animation is started, [HorizontalPanoramaState](#144-7) is triggered with state equals
to running and [State](#144-2) is triggered with type equals to HorizontalPanorama."/>
<arg name="provided_params" type="bitfield:u8:horizontal_panorama_config_param">
Bitfield of the config parameters on which given values should be used.
Setting a bit to 1 means that the corresponding parameter should be used,
otherwise default value should be used.
</arg>
<arg name="rotation_angle" type="float">
Desired rotation angle in rad. Positive value makes a clockwise panorama, negative is anti-clockwise.
Not used when rotation angle of provided_params param is 0.
</arg>
<arg name="rotation_speed" type="float">
The desired rotation speed of the anim in rad/s
Not used when rotation speed of provided_params param is 0.
</arg>
</cmd>
<evt name="horizontal_panorama_state" id="7">
<comment
title="Horizontal panorama state"
comment="Horizontal panorama animation state.\n
When the animation is started, all piloting commands are ignored."
support="090c:4.3.0"
triggered="by [StartHorizontalPanorama](#144-6) and when the state changes."/>
<arg name="state" type="enum:state">
State of the animation
</arg>
<arg name="rotation_angle" type="float">
Rotation angle in rad. Positive value makes a clockwise panorama, negative is anti-clockwise.
(only accurate if state is not idle)
</arg>
<arg name="rotation_speed" type="float">
The rotation speed of the anim in rad/s
(only accurate if state is not idle)
</arg>
</evt>
<cmd name="start_dronie" id="8">
<comment
title="Start dronie"
desc="Start a dronie animation.\n
Starting this animation when another animation is started (or canceling),
will cancel the current one to start this one.\n
This animation will make the drone flies away on a given distance with a computed angle."
support="090c:4.3.0"
result="If an animation was running, this animation is canceling, then canceled.
Then, this animation is started, [DronieState](#144-9) is triggered with state equals to running
and [State](#144-2) is triggered with type equals to Dronie."/>
<arg name="provided_params" type="bitfield:u8:dronie_config_param">
Bitfield of the config parameters on which given values should be used.
Setting a bit to 1 means that the corresponding parameter should be used,
otherwise default value should be used.
</arg>
<arg name="speed" type="float">
Desired speed in m/s.
Not used when speed of provided_params param is 0.
</arg>
<arg name="distance" type="float">
Desired dronie distance in m (length of the hypotenuse).
Not used when distance of provided_params param is 0.
</arg>
<arg name="play_mode" type="enum:play_mode">
Desired play mode.
Not used when play mode of provided_params param is 0.
</arg>
</cmd>
<evt name="dronie_state" id="9">
<comment
title="Dronie state"
comment="Dronie animation state.\n
When the animation is started, all piloting commands are ignored."
support="090c:4.3.0"
triggered="by [StartDronie](#144-8) and when the state changes."/>
<arg name="state" type="enum:state">
State of the animation
</arg>
<arg name="speed" type="float">
Speed in m/s.
(only accurate if state is not idle)
</arg>
<arg name="distance" type="float">
Dronie distance in m.
(only accurate if state is not idle)
</arg>
<arg name="play_mode" type="enum:play_mode">
Play mode.
(only accurate if state is not idle)
</arg>
</evt>
<cmd name="start_horizontal_reveal" id="10">
<comment
title="Start horizontal reveal"
desc="Start an horizontal reveal animation.\n
Starting this animation when another animation is started (or canceling),
will cancel the current one to start this one.\n
This animation will make the drone starts looking down, then moves forward
while slowly looking at the horizon."
support="090c:4.3.0"
result="If an animation was running, this animation is canceling, then canceled.
Then, this animation is started, [HorizontalRevealState](#144-11) is triggered with state equals
to running and [State](#144-2) is triggered with type equals to HorizontalReveal."/>
<arg name="provided_params" type="bitfield:u8:horizontal_reveal_config_param">
Bitfield of the config parameters on which given values should be used.
Setting a bit to 1 means that the corresponding parameter should be used,
otherwise default value should be used.
</arg>
<arg name="speed" type="float">
Desired speed in m/s.
Not used when speed of provided_params param is 0.
</arg>
<arg name="distance" type="float">
Desired distance in m.
Not used when distance of provided_params param is 0.
</arg>
<arg name="play_mode" type="enum:play_mode">
Desired play mode.
Not used when play mode of provided_params param is 0.
</arg>
</cmd>
<evt name="horizontal_reveal_state" id="11">
<comment
title="Horizontal reveal state"
comment="Horizontal reveal animation state.\n
When the animation is started, all piloting commands are ignored."
support="090c:4.3.0"
triggered="by [StartHorizontalReveal](#144-10) and when the state changes."/>
<arg name="state" type="enum:state">
State of the animation
</arg>
<arg name="speed" type="float">
Speed in m/s.
(only accurate if state is not idle)
</arg>
<arg name="distance" type="float">
Distance in m.
(only accurate if state is not idle)
</arg>
<arg name="play_mode" type="enum:play_mode">
Play mode.
(only accurate if state is not idle)
</arg>
</evt>
<cmd name="start_vertical_reveal" id="12">
<comment
title="Start vertical reveal"
desc="Start a vertical reveal animation.\n
Starting this animation when another animation is started (or canceling),
will cancel the current one to start this one.\n
This animation will make the drone starts looking down,
then moves up while slowly looking at the horizon.
When it reaches its target altitude, it rotates on itself to do a panorama."
support="090c:4.3.0"
result="If an animation was running, this animation is canceling, then canceled.
Then, this animation is started, [VerticalRevealState](#144-13) is triggered with state equals
to running and [State](#144-2) is triggered with type equals to VerticalReveal."/>
<arg name="provided_params" type="bitfield:u8:vertical_reveal_config_param">
Bitfield of the config parameters on which given values should be used.
Setting a bit to 1 means that the corresponding parameter should be used,
otherwise default value should be used.
</arg>
<arg name="speed" type="float">
Desired speed in m/s.
Not used when speed of provided_params param is 0.
</arg>
<arg name="vertical_distance" type="float">
Desired vertical distance in m.
Not used when vertical distance of provided_params param is 0.
</arg>
<arg name="rotation_angle" type="float">
Desired rotation angle in rad. Positive value makes a clockwise panorama, negative is anti-clockwise.
Not used when rotation angle of provided_params param is 0.
</arg>
<arg name="rotation_speed" type="float">
The desired rotation speed of the anim in rad/s
Not used when rotation speed of provided_params param is 0.
</arg>
<arg name="play_mode" type="enum:play_mode">
Desired play mode.
Not used when play mode of provided_params param is 0.
</arg>
</cmd>
<evt name="vertical_reveal_state" id="13">
<comment
title="Vertical reveal state"
comment="Vertical reveal animation state.\n
When the animation is started, all piloting commands are ignored."
support="090c:4.3.0"
triggered="by [StartVerticalReveal](#144-12) and when the state changes."/>
<arg name="state" type="enum:state">
State of the animation
</arg>
<arg name="speed" type="float">
Speed in m/s.
(only accurate if state is not idle)
</arg>
<arg name="vertical_distance" type="float">
Vertical distance in m.
(only accurate if state is not idle)
</arg>
<arg name="rotation_angle" type="float">
Rotation angle in rad. Positive value makes a clockwise panorama, negative is anti-clockwise.
(only accurate if state is not idle)
</arg>
<arg name="rotation_speed" type="float">
The rotation speed of the anim in rad/s
(only accurate if state is not idle)
</arg>
<arg name="play_mode" type="enum:play_mode">
Play mode.
(only accurate if state is not idle)
</arg>
</evt>
<cmd name="start_spiral" id="14">
<comment
title="Start spiral"
desc="Start a spiral animation.\n
Starting this animation when another animation is started (or canceling),
will cancel the current one to start this one.\n
This animation will make the drone circles around its target."
support="090c:4.3.0"
result="If an animation was running, this animation is canceling, then canceled.
Then, this animation is started, [SpiralState](#144-15) is triggered with state equals to running
and [State](#144-2) is triggered with type equals to Spiral."/>
<arg name="provided_params" type="bitfield:u8:spiral_config_param">
Bitfield of the config parameters on which given values should be used.
Setting a bit to 1 means that the corresponding parameter should be used,
otherwise default value should be used.
</arg>
<arg name="speed" type="float">
Desired speed in m/s.
Not used when speed of provided_params param is 0.
</arg>
<arg name="radius_variation" type="float">
Desired relative radius variation in m.
A value of 2 means that the ending radius will be twice as big as the starting radius.
A value of -2 means that the ending radius will half of the size of the starting radius.
A value of 1 means that the radius will not change during the animation.
Not used when radius variation of provided_params param is 0.
</arg>
<arg name="vertical_distance" type="float">
Desired vertical distance in m.
If negative, the spiral will be directed to the ground.
Not used when vertical distance of provided_params param is 0.
</arg>
<arg name="revolution_nb" type="float">
The number of revolution (in turn).
Positive value makes a clockwise spiral, negative is anti-clockwise.
Example: 1.5 makes an entire turn plus half of a turn
</arg>
<arg name="play_mode" type="enum:play_mode">
Desired play mode.
Not used when play mode of provided_params param is 0.
</arg>
</cmd>
<evt name="spiral_state" id="15">
<comment
title="Spiral state"
comment="Spiral animation state.\n
When the animation is started, all piloting commands are ignored."
support="090c:4.3.0"
triggered="by [StartSpiral](#144-14) and when the state changes."/>
<arg name="state" type="enum:state">
State of the animation
</arg>
<arg name="speed" type="float">
Speed in m/s.
(only accurate if state is not idle)
</arg>
<arg name="radius_variation" type="float">
Relative radius variation in m.
(only accurate if state is not idle)
</arg>
<arg name="vertical_distance" type="float">
Vertical distance in m. Negative value means the animation is directed toward the ground.
(only accurate if state is not idle)
</arg>
<arg name="revolution_nb" type="float">
The number of revolution (in turn).
(only accurate if state is not idle)
</arg>
<arg name="play_mode" type="enum:play_mode">
Play mode.
(only accurate if state is not idle)
</arg>
</evt>
<cmd name="start_parabola" id="16">
<comment
title="Start parabola"
desc="Start a parabola animation.\n
Starting this animation when another animation is started (or canceling),
will cancel the current one to start this one.\n
This animation will make the drone makes a parabola on top of its target and
ends on the other side of it."
support="090c:4.3.0"
result="If an animation was running, this animation is canceling, then canceled.
Then, this animation is started, [ParabolaState](#144-17) is triggered with state equals
to running and [State](#144-2) is triggered with type equals to Parabola."/>
<arg name="provided_params" type="bitfield:u8:parabola_config_param">
Bitfield of the config parameters on which given values should be used.
Setting a bit to 1 means that the corresponding parameter should be used,
otherwise default value should be used.
</arg>
<arg name="speed" type="float">
Desired speed in m/s.
Not used when speed of provided_params param is 0.
</arg>
<arg name="vertical_distance" type="float">
Desired vertical distance in m.
Not used when vertical distance of provided_params param is 0.
</arg>
<arg name="play_mode" type="enum:play_mode">
Desired play mode.
Not used when play mode of provided_params param is 0.
</arg>
</cmd>
<evt name="parabola_state" id="17">
<comment
title="Parabola state"
comment="Parabola animation state.\n
When the animation is started, all piloting commands are ignored."
support="090c:4.3.0"
triggered="by [StartParabola](#144-16) and when the state changes."/>
<arg name="state" type="enum:state">
State of the animation
</arg>
<arg name="speed" type="float">
Speed in m/s.
(only accurate if state is not idle)
</arg>
<arg name="vertical_distance" type="float">
Vertical distance in m.
(only accurate if state is not idle)
</arg>
<arg name="play_mode" type="enum:play_mode">
Play mode.
(only accurate if state is not idle)
</arg>
</evt>
<cmd name="start_candle" id="18">
<comment
title="Start candle"
desc="Start a candle animation.\n
Starting this animation when another animation is started (or canceling),
will cancel the current one to start this one.\n
This animation will make the drone flies horizontally
in direction of the target then flies up."
support="090c:4.3.0"
result="If an animation was running, this animation is canceling, then canceled.
Then, this animation is started, [CandleState](#144-19) is triggered with state equals
to running and [State](#144-2) is triggered with type equals to Candle."/>
<arg name="provided_params" type="bitfield:u8:candle_config_param">
Bitfield of the config parameters on which given values should be used.
Setting a bit to 1 means that the corresponding parameter should be used,
otherwise default value should be used.
</arg>
<arg name="speed" type="float">
Desired speed in m/s.
Not used when speed of provided_params param is 0.
</arg>
<arg name="vertical_distance" type="float">
Desired vertical distance in m.
Not used when vertical distance of provided_params param is 0.
</arg>
<arg name="play_mode" type="enum:play_mode">
Desired play mode.
Not used when play mode of provided_params param is 0.
</arg>
</cmd>
<evt name="candle_state" id="19">
<comment
title="Candle state"
comment="Candle animation state.\n
When the animation is started, all piloting commands are ignored."
support="090c:4.3.0"
triggered="by [StartCandle](#144-18) and when the state changes."/>
<arg name="state" type="enum:state">
State of the animation
</arg>
<arg name="speed" type="float">
Speed in m/s.
(only accurate if state is not idle)
</arg>
<arg name="vertical_distance" type="float">
Vertical distance in m.
(only accurate if state is not idle)
</arg>
<arg name="play_mode" type="enum:play_mode">
Play mode.
(only accurate if state is not idle)
</arg>
</evt>
<cmd name="start_dolly_slide" id="20">
<comment
title="Start a dolly slide"
desc="Start a dolly slide animation.\n
Starting this animation when another animation is started (or canceling),
will cancel the current one to start this one.\n
This animation will make the drone slides horizontally."
support="090c:4.3.0"
result="If an animation was running, this animation is canceling, then canceled.
Then, this animation is started, [DollySlideState](#144-21) is triggered with state equals
to running and [State](#144-2) is triggered with type equals to DollySlide."/>
<arg name="provided_params" type="bitfield:u8:dolly_slide_config_param">
Bitfield of the config parameters on which given values should be used.
Setting a bit to 1 means that the corresponding parameter should be used,
otherwise default value should be used.
</arg>
<arg name="speed" type="float">
Desired speed in m/s.
Not used when speed of provided_params param is 0.
</arg>
<arg name="angle" type="float">
Desired drone-target-destination angle in rad.
Not used when angle of provided_params param is 0.
</arg>
<arg name="horizontal_distance" type="float">
Desired horizontal distance in m..
Not used when angle of provided_params param is 0.
</arg>
<arg name="play_mode" type="enum:play_mode">
Desired play mode.
Not used when play mode of provided_params param is 0.
</arg>
</cmd>
<evt name="dolly_slide_state" id="21">
<comment
title="Dolly slide state"
comment="Dolly slide animation state.\n
When the animation is started, all piloting commands are ignored."
support="090c:4.3.0"
triggered="by [StartDollySlide](#144-20) and when the state changes."/>
<arg name="state" type="enum:state">
State of the animation
</arg>
<arg name="speed" type="float">
Speed in m/s.
(only accurate if state is not idle)
</arg>
<arg name="angle" type="float">
Drone-target-destination angle in rad.
(only accurate if state is not idle)
</arg>
<arg name="horizontal_distance" type="float">
Horizontal distance in m.
(only accurate if state is not idle)
</arg>
<arg name="play_mode" type="enum:play_mode">
Play mode.
(only accurate if state is not idle)
</arg>
</evt>
</msgs>
</feature>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<project name="ardrone3" id="1">
All ARDrone3-only commands
<class name="Piloting" id="0">
All commands related to piloting the drone
<cmd name="FlatTrim" id="0">
<comment
title="Do a flat trim"
desc="Do a flat trim of the accelerometer/gyro.\n
Could be useful when the drone is sliding in hover mode."
support="0901;090c;090e"
result="Accelerometer and gyroscope are calibrated then event [FlatTrimChanged](#1-4-0) is triggered."/>
</cmd>
<cmd name="TakeOff" id="1">
<comment
title="Take off"
desc="Ask the drone to take off.\n
On the fixed wings (such as Disco): not used except to cancel a land."
support="0901;090c;090e"
result="On the quadcopters: the drone takes off if its [FlyingState](#1-4-1) was landed.\n
On the fixed wings, the landing process is aborted if the [FlyingState](#1-4-1) was landing.\n
Then, event [FlyingState](#1-4-1) is triggered."/>
</cmd>
<cmd name="PCMD" id="2" buffer="NON_ACK">
<comment
title="Move the drone"
desc="Move the drone.\n
The libARController is sending the command each 50ms.\n\n
**Please note that you should call setPilotingPCMD and not sendPilotingPCMD because the libARController is handling the periodicity and the buffer on which it is sent.**"
support="0901;090c;090e"
result="The drone moves! Yaaaaay!\n
Event [SpeedChanged](#1-4-5), [AttitudeChanged](#1-4-6) and [PositionChanged](#1-4-4) (only if gps of the drone has fixed) are triggered."/>
<arg name="flag" type="u8">
Boolean flag: 1 if the roll and pitch values should be taken in consideration. 0 otherwise
</arg>
<arg name="roll" type="i8">
Roll angle as signed percentage.
On copters:
Roll angle expressed as signed percentage of the max pitch/roll setting, in range [-100, 100]
-100 corresponds to a roll angle of max pitch/roll to the left (drone will fly left)
100 corresponds to a roll angle of max pitch/roll to the right (drone will fly right)
This value may be clamped if necessary, in order to respect the maximum supported physical tilt of the copter.
On fixed wings:
Roll angle expressed as signed percentage of the physical max roll of the wing, in range [-100, 100]
Negative value makes the plane fly to the left
Positive value makes the plane fly to the right
</arg>
<arg name="pitch" type="i8">
Pitch angle as signed percentage.
On copters:
Expressed as signed percentage of the max pitch/roll setting, in range [-100, 100]
-100 corresponds to a pitch angle of max pitch/roll towards sky (drone will fly backward)
100 corresponds to a pitch angle of max pitch/roll towards ground (drone will fly forward)
This value may be clamped if necessary, in order to respect the maximum supported physical tilt of the copter.
On fixed wings:
Expressed as signed percentage of the physical max pitch of the wing, in range [-100, 100]
Negative value makes the plane fly in direction of the sky
Positive value makes the plane fly in direction of the ground
</arg>
<arg name="yaw" type="i8">
Yaw rotation speed as signed percentage.
On copters:
Expressed as signed percentage of the max yaw rotation speed setting, in range [-100, 100].
-100 corresponds to a counter-clockwise rotation of max yaw rotation speed
100 corresponds to a clockwise rotation of max yaw rotation speed
This value may be clamped if necessary, in order to respect the maximum supported physical tilt of the copter.
On fixed wings:
Giving more than a fixed value (75% for the moment) triggers a circle.
Positive value will trigger a clockwise circling
Negative value will trigger a counter-clockwise circling
</arg>
<arg name="gaz" type="i8">
Throttle as signed percentage.
On copters:
Expressed as signed percentage of the max vertical speed setting, in range [-100, 100]
-100 corresponds to a max vertical speed towards ground
100 corresponds to a max vertical speed towards sky
This value may be clamped if necessary, in order to respect the maximum supported physical tilt of the copter.
During the landing phase, putting some positive gaz will cancel the land.
On fixed wings:
Expressed as signed percentage of the physical max throttle, in range [-100, 100]
Negative value makes the plane fly slower
Positive value makes the plane fly faster
</arg>
<arg name="timestampAndSeqNum" type="u32">
Command timestamp in milliseconds (low 24 bits) + command sequence number (high 8 bits) [0;255].
</arg>
</cmd>
<cmd name="Landing" id="3">
<comment
title="Land"
desc="Land.\n
Please note that on copters, if you put some positive gaz (in the [PilotingCommand](#1-0-2)) during the landing, it will cancel it."
support="0901;090c;090e"
result="On the copters, the drone lands if its [FlyingState](#1-4-1) was taking off, hovering or flying.\n
On the fixed wings, the drone lands if its [FlyingState](#1-4-1) was hovering or flying.\n
Then, event [FlyingState](#1-4-1) is triggered."/>
</cmd>
<cmd name="Emergency" id="4" buffer="HIGH_PRIO" timeout="RETRY">
<comment
title="Cut out the motors"
desc="Cut out the motors.\n
This cuts immediatly the motors. The drone will fall.\n
This command is sent on a dedicated high priority buffer which will infinitely retry to send it if the command is not delivered."
support="0901;090c;090e"
result="The drone immediatly cuts off its motors.\n
Then, event [FlyingState](#1-4-1) is triggered."/>
</cmd>
<cmd name="NavigateHome" id="5">
<comment
title="Return home"
desc="Return home.\n
Ask the drone to fly to its [HomePosition](#1-24-0).\n
The availability of the return home can be get from [ReturnHomeState](#1-4-3).\n
Please note that the drone will wait to be hovering to start its return home. This means that it will wait to have a [flag](#1-0-2) set at 0."
support="0901;090c;090e"
result="The drone will fly back to its home position.\n
Then, event [ReturnHomeState](#1-4-3) is triggered.\n
You can get a state pending if the drone is not ready to start its return home process but will do it as soon as it is possible."/>
<arg name="start" type="u8">
1 to start the navigate home, 0 to stop it
</arg>
</cmd>
<cmd name="AutoTakeOffMode" id="6" deprecated="true">
<comment
title="Auto take off mode"
desc="Auto take off mode."/>
<arg name="state" type="u8">
State of automatic take off mode (1 for autotake off enabled)
</arg>
</cmd>
<cmd name="moveBy" id="7">
<comment
title="Move the drone to a relative position"
desc="Move the drone to a relative position and rotate heading by a given angle.\n
Moves are relative to the current drone orientation, (drone's reference).\n
Also note that the given rotation will not modify the move (i.e. moves are always rectilinear)."
support="0901:3.3.0;090c:3.3.0"
result="The drone will move of the given offsets.\n
Then, event [RelativeMoveEnded](#1-34-0) is triggered.\n
If you send a second relative move command, the drone will trigger a [RelativeMoveEnded](#1-34-0) with the offsets it managed to do before this new command and the value of error set to interrupted."/>
<arg name="dX" type="float">
Wanted displacement along the front axis [m]
</arg>
<arg name="dY" type="float">
Wanted displacement along the right axis [m]
</arg>
<arg name="dZ" type="float">
Wanted displacement along the down axis [m]
</arg>
<arg name="dPsi" type="float">
Wanted rotation of heading [rad]
</arg>
</cmd>
<cmd name="UserTakeOff" id="8">
<comment
title="Prepare the drone to take off"
desc="Prepare the drone to take off.\n
On copters: initiates the thrown takeoff. Note that the drone will do the thrown take off
even if it is steady.\n
On fixed wings: initiates the take off process on the fixed wings.\n\n
Setting the state to 0 will cancel the preparation. You can cancel it before that the drone takes off."
support="090e;090c:4.3.0"
result="The drone will arm its motors if not already armed.\n
Then, event [FlyingState](#1-4-1) is triggered with state set at motor ramping.\n
Then, event [FlyingState](#1-4-1) is triggered with state set at userTakeOff.\n
Then user can throw the drone to make it take off."/>
<arg name="state" type="u8">
State of user take off mode
- 1 to enter in user take off.
- 0 to exit from user take off.
</arg>
</cmd>
<cmd name="Circle" id="9">
<comment
title="Circle"
desc="Make the fixed wing circle.\n
The circle will use the [CirclingAltitude](#1-6-14) and the [CirclingRadius](#1-6-13)"
support="090e"
result="The fixed wing will circle in the given direction.\n
Then, event [FlyingState](#1-4-1) is triggered with state set at hovering."/>
<arg name="direction" type="enum">
The circling direction
<enum name="CW">
Circling ClockWise
</enum>
<enum name="CCW">
Circling Counter ClockWise
</enum>
<enum name="default">
Use drone default Circling direction set by CirclingDirection cmd
</enum>
</arg>
</cmd>
<cmd name="moveTo" id="10">
<comment
title="Move to a location"
desc="Move the drone to a specified location.\n
If a new command moveTo is sent, the drone will immediatly run it (no cancel will be issued).\n
If a [CancelMoveTo](#1-0-11) command is sent, the moveTo is stopped.\n
During the moveTo, all pitch, roll and gaz values of the piloting command
will be ignored by the drone.\n
However, the yaw value can be used."
support="090c:4.3.0"
result="Event [MovingTo](#1-4-12) is triggered with state running.
Then, the drone will move to the given location.\n
Then, event [MoveToChanged](#1-4-12) is triggered with state succeed."/>
<arg name="latitude" type="double">
Latitude of the location (in degrees) to reach
</arg>
<arg name="longitude" type="double">
Longitude of the location (in degrees) to reach
</arg>
<arg name="altitude" type="double">
Altitude above sea level (in m) to reach
</arg>
<arg name="orientation_mode" type="enum">
Orientation mode of the move to
<enum name="NONE">
The drone won't change its orientation
</enum>
<enum name="TO_TARGET">
The drone will make a rotation to look in direction of the given location
</enum>
<enum name="HEADING_START">
The drone will orientate itself to the given heading before moving to the location
</enum>
<enum name="HEADING_DURING">
The drone will orientate itself to the given heading while moving to the location
</enum>
</arg>
<arg name="heading" type="float">
Heading (relative to the North in degrees).
This value is only used if the orientation mode is HEADING_START or HEADING_DURING
</arg>
</cmd>
<cmd name="CancelMoveTo" id="11">
<comment
title="Cancel the moveTo"
desc="Cancel the current moveTo.\n
If there is no current moveTo, this command has no effect."
support="090c:4.3.0"
result="Event [MoveToChanged](#1-4-12) is triggered with state canceled."/>
</cmd>
<cmd name="StartPilotedPOI" id="12">
<comment
title="Start a piloted POI"
desc="Start a piloted Point Of Interest.\n
During a piloted POI, the drone will always look at the given POI but can be piloted normally.
However, yaw value is ignored. Camera tilt and pan command is also ignored.\n
Ignored if [PilotedPOI](#1-4-14) state is UNAVAILABLE."
support="090c:4.3.0"
result="If the drone is hovering, event [PilotedPOI](#1-4-14) is triggered with state RUNNING.
If the drone is not hovering, event [PilotedPOI](#1-4-14) is triggered with state PENDING,
waiting to hover. When the drone hovers, the state will change to RUNNING.
If the drone does not hover for a given time, piloted POI is canceled by the drone and state
will change to AVAILABLE.
Then, the drone will look at the given location."/>
<arg name="latitude" type="double">
Latitude of the location (in degrees) to look at
</arg>
<arg name="longitude" type="double">
Longitude of the location (in degrees) to look at
</arg>
<arg name="altitude" type="double">
Altitude above sea level (in m) to look at
</arg>
</cmd>
<cmd name="StopPilotedPOI" id="13">
<comment
title="Stop the piloted POI"
desc="Stop the piloted Point Of Interest.\n
If [PilotedPOI](#1-4-14) state is RUNNING or PENDING, stop it."
support="090c:4.3.0"
result="Event [PilotedPOI](#1-4-14) is triggered with state AVAILABLE."/>
</cmd>
</class>
<class name="Animations" id="5">
Animation commands
<cmd name="Flip" id="0">
<comment
title="Make a flip"
desc="Make a flip."
support="0901;090c"
result="The drone will make a flip if it has enough battery."/>
<arg name="direction" type="enum">
Direction for the flip
<enum name="front">
Flip direction front
</enum>
<enum name="back">
Flip direction back
</enum>
<enum name="right">
Flip direction right
</enum>
<enum name="left">
Flip direction left
</enum>
</arg>
</cmd>
</class>
<class name="Camera" id="1">
Ask the drone to move camera
<cmd name="Orientation" id="0" buffer="NON_ACK" deprecated="true">
<comment
title="Move the camera"
desc="Move the camera.\n
You can get min and max values for tilt and pan using [CameraInfo](#0-15-0)."
support="0901;090c;090e"
result="The drone moves its camera.\n
Then, event [CameraOrientation](#1-25-0) is triggered."/>
<arg name="tilt" type="i8">
Tilt camera consign for the drone (in degree)
The value is saturated by the drone.
Saturation value is sent by thre drone through CameraSettingsChanged command.
</arg>
<arg name="pan" type="i8">
Pan camera consign for the drone (in degree)
The value is saturated by the drone.
Saturation value is sent by thre drone through CameraSettingsChanged command.
</arg>
</cmd>
<cmd name="OrientationV2" id="1" buffer="NON_ACK">
<comment
title="Move the camera"
desc="Move the camera.\n
You can get min and max values for tilt and pan using [CameraInfo](#0-15-0)."
support="0901;090c;090e"
result="The drone moves its camera.\n
Then, event [CameraOrientationV2](#1-25-2) is triggered."/>
<arg name="tilt" type="float">
Tilt camera consign for the drone (in degree)
The value is saturated by the drone.
Saturation value is sent by thre drone through CameraSettingsChanged command.
</arg>
<arg name="pan" type="float">
Pan camera consign for the drone (in degree)
The value is saturated by the drone.
Saturation value is sent by thre drone through CameraSettingsChanged command.
</arg>
</cmd>
<cmd name="Velocity" id="2" buffer="NON_ACK">
<comment
title="Move the camera using velocity"
desc="Move the camera given velocity consign.\n
You can get min and max values for tilt and pan using [CameraVelocityRange](#1-25-4)."
support="0901;090c;090e"
result="The drone moves its camera.\n
Then, event [CameraOrientationV2](#1-25-2) is triggered."/>
<arg name="tilt" type="float">
Tilt camera velocity consign [deg/s]
Negative tilt velocity move camera to bottom
Positive tilt velocity move camera to top
</arg>
<arg name="pan" type="float">
Pan camera velocity consign [deg/s]
Negative pan velocity move camera to left
Positive pan velocity move camera to right
</arg>
</cmd>
</class>
<class name="MediaRecord" id="7">
Media recording management
<cmd name="Picture" id="0" deprecated="true">
<comment
title="Take a picture"
desc="Take a picture."/>
<arg name="mass_storage_id" type="u8">
Mass storage id to take picture
</arg>
</cmd>
<cmd name="Video" id="1" deprecated="true">
<comment
title="Record a video"
desc="Record a video."/>
<arg name="record" type="enum">
Command to record video
<enum name="stop">
Stop the video recording
</enum>
<enum name="start">
Start the video recording
</enum>
</arg>
<arg name="mass_storage_id" type="u8">
Mass storage id to record
</arg>
</cmd>
<cmd name="PictureV2" id="2">
<comment
title="Take a picture"
desc="Take a picture.\n
The type of picture taken is related to the picture setting.\n
You can set the picture format by sending the command [SetPictureFormat](#1-19-0). You can also get the current picture format with [PictureFormat](#1-20-0).\n
Please note that the time required to take the picture is highly related to this format.\n\n
You can check if the picture taking is available with [PictureState](#1-8-2).\n
Also, please note that if your picture format is different from snapshot, picture taking will stop video recording (it will restart after that the picture has been taken)."
support="0901:2.0.1;090c;090e"
result="Event [PictureState](#1-8-2) will be triggered with a state busy.\n
The drone will take a picture.\n
Then, when picture has been taken, notification [PictureEvent](#1-3-0) is triggered.\n
And normally [PictureState](#1-8-2) will be triggered with a state ready."/>
</cmd>
<cmd name="VideoV2" id="3">
<comment
title="Record a video"
desc="Record a video (or start timelapse).\n
You can check if the video recording is available with [VideoState](#1-8-3).\n
This command can start a video (obvious huh?), but also a timelapse if the timelapse mode is set. You can check if the timelapse mode is set with the event [TimelapseMode](#1-20-4).\n
Also, please note that if your picture format is different from snapshot, picture taking will stop video recording (it will restart after the picture has been taken)."
support="0901:2.0.1;090c;090e"
result="The drone will begin or stop to record the video (or timelapse).\n
Then, event [VideoState](#1-8-3) will be triggered. Also, notification [VideoEvent](#1-3-1) is triggered."/>
<arg name="record" type="enum">
Command to record video
<enum name="stop">
Stop the video recording
</enum>
<enum name="start">
Start the video recording
</enum>
</arg>
</cmd>
</class>
<class name="MediaRecordState" id="8">
State of media recording
<cmd name="PictureStateChanged" id="0" deprecated="true">
<comment
title="Picture state"
desc="Picture state."/>
<arg name="state" type="u8">
1 if picture has been taken, 0 otherwise
</arg>
<arg name="mass_storage_id" type="u8">
Mass storage id where the picture was recorded
</arg>
</cmd>
<cmd name="VideoStateChanged" id="1" deprecated="true">
<comment
title="Video record state"
desc="Picture record state."/>
<arg name="state" type="enum">
State of video
<enum name="stopped">
Video was stopped
</enum>
<enum name="started">
Video was started
</enum>
<enum name="failed">
Video was failed
</enum>
<enum name="autostopped">
Video was auto stopped
</enum>
</arg>
<arg name="mass_storage_id" type="u8">
Mass storage id where the video was recorded
</arg>
</cmd>
<cmd name="PictureStateChangedV2" id="2">
<comment
title="Picture state"
desc="Picture state."
support="0901:2.0.1;090c;090e"
triggered="by [TakePicture](#1-7-2) or by a change in the picture state"/>
<arg name="state" type="enum">
State of device picture recording
<enum name="ready">
The picture recording is ready
</enum>
<enum name="busy">
The picture recording is busy
</enum>
<enum name="notAvailable">
The picture recording is not available
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the state
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error
</enum>
<enum name="camera_ko">
Picture camera is out of order
</enum>
<enum name="memoryFull">
Memory full ; cannot save one additional picture
</enum>
<enum name="lowBattery">
Battery is too low to start/keep recording.
</enum>
</arg>
</cmd>
<cmd name="VideoStateChangedV2" id="3">
<comment
title="Video record state"
desc="Video record state."
support="0901:2.0.1;090c;090e"
triggered="by [RecordVideo](#1-7-3) or by a change in the video state"/>
<arg name="state" type="enum">
State of device video recording
<enum name="stopped">
Video is stopped
</enum>
<enum name="started">
Video is started
</enum>
<enum name="notAvailable">
The video recording is not available
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the state
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error
</enum>
<enum name="camera_ko">
Video camera is out of order
</enum>
<enum name="memoryFull">
Memory full ; cannot save one additional video
</enum>
<enum name="lowBattery">
Battery is too low to start/keep recording.
</enum>
</arg>
</cmd>
<cmd name="VideoResolutionState" id="4" deprecated="true">
<comment
title="Video resolution"
desc="Video resolution.\n
Informs about streaming and recording video resolutions.\n
Note that this is only an indication about what the resolution should be. To know the real resolution, you should get it from the frame."
support="none"
triggered="when the resolution changes."/>
<arg name="streaming" type="enum">
Streaming resolution
<enum name="res360p">
360p resolution.
</enum>
<enum name="res480p">
480p resolution.
</enum>
<enum name="res720p">
720p resolution.
</enum>
<enum name="res1080p">
1080p resolution.
</enum>
</arg>
<arg name="recording" type="enum">
Recording resolution
<enum name="res360p">
360p resolution.
</enum>
<enum name="res480p">
480p resolution.
</enum>
<enum name="res720p">
720p resolution.
</enum>
<enum name="res1080p">
1080p resolution.
</enum>
</arg>
</cmd>
</class>
<class name="MediaRecordEvent" id="3">
Events of media recording
<cmd name="PictureEventChanged" id="0" content="NOTIFICATION">
<comment
title="Picture taken"
desc="Picture taken.\n\n
**This event is a notification, you can't retrieve it in the cache of the device controller.**"
support="0901:2.0.1;090c;090e"
triggered="after a [TakePicture](#1-7-2), when the picture has been taken (or it has failed)."/>
<arg name="event" type="enum">
Last event of picture recording
<enum name="taken">
Picture taken and saved
</enum>
<enum name="failed">
Picture failed
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the event
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error ; only when state is failed
</enum>
<enum name="busy">
Picture recording is busy ; only when state is failed
</enum>
<enum name="notAvailable">
Picture recording not available ; only when state is failed
</enum>
<enum name="memoryFull">
Memory full ; only when state is failed
</enum>
<enum name="lowBattery">
Battery is too low to record.
</enum>
</arg>
</cmd>
<cmd name="VideoEventChanged" id="1" content="NOTIFICATION">
<comment
title="Video record notification"
desc="Video record notification.\n\n
**This event is a notification, you can't retrieve it in the cache of the device controller.**"
support="0901:2.0.1;090c;090e"
triggered="by [RecordVideo](#1-7-3) or a change in the video state."/>
<arg name="event" type="enum">
Event of video recording
<enum name="start">
Video start
</enum>
<enum name="stop">
Video stop and saved
</enum>
<enum name="failed">
Video failed
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the event
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error ; only when state is failed
</enum>
<enum name="busy">
Video recording is busy ; only when state is failed
</enum>
<enum name="notAvailable">
Video recording not available ; only when state is failed
</enum>
<enum name="memoryFull">
Memory full
</enum>
<enum name="lowBattery">
Battery is too low to record.
</enum>
<enum name="autoStopped">
Video was auto stopped
</enum>
</arg>
</cmd>
</class>
<class name="PilotingState" id="4">
State from drone
<cmd name="FlatTrimChanged" id="0">
<comment
title="Flat trim changed"
desc="Drone acknowledges that flat trim was correctly processed."
support="0901;090c;090e"
triggered="by [FlatTrim](#1-0-0)."/>
</cmd>
<cmd name="FlyingStateChanged" id="1">
<comment
title="Flying state"
desc="Flying state."
support="0901;090c;090e"
triggered="when the flying state changes."/>
<arg name="state" type="enum">
Drone flying state
<enum name="landed">
Landed state
</enum>
<enum name="takingoff">
Taking off state
</enum>
<enum name="hovering">
Hovering / Circling (for fixed wings) state
</enum>
<enum name="flying">
Flying state
</enum>
<enum name="landing">
Landing state
</enum>
<enum name="emergency">
Emergency state
</enum>
<enum name="usertakeoff">
User take off state. Waiting for user action to take off.
</enum>
<enum name="motor_ramping">
Motor ramping state.
</enum>
<enum name="emergency_landing">
Emergency landing state.
Drone autopilot has detected defective sensor(s).
Only Yaw argument in PCMD is taken into account.
All others flying commands are ignored.
</enum>
</arg>
</cmd>
<cmd name="AlertStateChanged" id="2">
<comment
title="Alert state"
desc="Alert state."
support="0901;090c;090e"
triggered="when an alert happens on the drone."/>
<arg name="state" type="enum">
Drone alert state
<enum name="none">
No alert
</enum>
<enum name="user">
User emergency alert
</enum>
<enum name="cut_out">
Cut out alert
</enum>
<enum name="critical_battery">
Critical battery alert
</enum>
<enum name="low_battery">
Low battery alert
</enum>
<enum name="too_much_angle">
The angle of the drone is too high
</enum>
</arg>
</cmd>
<cmd name="NavigateHomeStateChanged" id="3">
<comment
title="Return home state"
desc="Return home state.\n
Availability is related to gps fix, magnetometer calibration."
support="0901;090c;090e"
triggered="by [ReturnHome](#1-0-5) or when the state of the return home changes."/>
<arg name="state" type="enum">
State of navigate home
<enum name="available">
Navigate home is available
</enum>
<enum name="inProgress">
Navigate home is in progress
</enum>
<enum name="unavailable">
Navigate home is not available
</enum>
<enum name="pending">
Navigate home has been received, but its process is pending
</enum>
</arg>
<arg name="reason" type="enum">
Reason of the state
<enum name="userRequest">
User requested a navigate home (available->inProgress)
</enum>
<enum name="connectionLost">
Connection between controller and product lost (available->inProgress)
</enum>
<enum name="lowBattery">
Low battery occurred (available->inProgress)
</enum>
<enum name="finished">
Navigate home is finished (inProgress->available)
</enum>
<enum name="stopped">
Navigate home has been stopped (inProgress->available)
</enum>
<enum name="disabled">
Navigate home disabled by product (inProgress->unavailable or available->unavailable)
</enum>
<enum name="enabled">
Navigate home enabled by product (unavailable->available)
</enum>
</arg>
</cmd>
<cmd name="PositionChanged" id="4" buffer="NON_ACK">
<comment
title="Drone's position changed"
desc="Drone's position changed."
support="0901;090c;090e"
triggered="regularly."/>
<arg name="latitude" type="double">
Latitude position in decimal degrees (500.0 if not available)
</arg>
<arg name="longitude" type="double">
Longitude position in decimal degrees (500.0 if not available)
</arg>
<arg name="altitude" type="double">
Altitude in meters (from GPS)
</arg>
</cmd>
<cmd name="SpeedChanged" id="5" buffer="NON_ACK">
<comment
title="Drone's speed changed"
desc="Drone's speed changed.\n
Expressed in the NED referential (North-East-Down)."
support="0901;090c;090e"
triggered="regularly."/>
<arg name="speedX" type="float">
Speed relative to the North (when drone moves to the north, speed is > 0) (in m/s)
</arg>
<arg name="speedY" type="float">
Speed relative to the East (when drone moves to the east, speed is > 0) (in m/s)
</arg>
<arg name="speedZ" type="float">
Speed on the z axis (when drone moves down, speed is > 0) (in m/s)
</arg>
</cmd>
<cmd name="AttitudeChanged" id="6" buffer="NON_ACK">
<comment
title="Drone's attitude changed"
desc="Drone's attitude changed."
support="0901;090c;090e"
triggered="regularly."/>
<arg name="roll" type="float">
roll value (in radian)
</arg>
<arg name="pitch" type="float">
Pitch value (in radian)
</arg>
<arg name="yaw" type="float">
Yaw value (in radian)
</arg>
</cmd>
<cmd name="AutoTakeOffModeChanged" id="7" deprecated="true">
<comment
title="Auto takeoff mode"
desc="Auto takeoff mode"/>
<arg name="state" type="u8">
State of automatic take off mode (1 if enabled)
</arg>
</cmd>
<cmd name="AltitudeChanged" id="8" buffer="NON_ACK">
<comment
title="Drone's altitude changed"
desc="Drone's altitude changed.\n
The altitude reported is the altitude above the take off point.\n
To get the altitude above sea level, see [PositionChanged](#1-4-4)."
support="0901;090c;090e"
triggered="regularly."/>
<arg name="altitude" type="double">
Altitude in meters
</arg>
</cmd>
<cmd name="GpsLocationChanged" id="9" buffer="NON_ACK">
<comment
title="Drone's location changed"
desc="Drone's location changed.\n
This event is meant to replace [PositionChanged](#1-4-4)."
support="0901:4.0.0;090c:4.0.0"
triggered="regularly."/>
<arg name="latitude" type="double">
Latitude location in decimal degrees (500.0 if not available)
</arg>
<arg name="longitude" type="double">
Longitude location in decimal degrees (500.0 if not available)
</arg>
<arg name="altitude" type="double">
Altitude location in meters.
</arg>
<arg name="latitude_accuracy" type="i8">
Latitude location error in meters (1 sigma/standard deviation)
-1 if not available.
</arg>
<arg name="longitude_accuracy" type="i8">
Longitude location error in meters (1 sigma/standard deviation)
-1 if not available.
</arg>
<arg name="altitude_accuracy" type="i8">
Altitude location error in meters (1 sigma/standard deviation)
-1 if not available.
</arg>
</cmd>
<cmd name="LandingStateChanged" id="10">
<comment
title="Landing state"
desc="Landing state.\n
Only available for fixed wings (which have two landing modes)."
support="090e"
triggered="when the landing state changes."/>
<arg name="state" type="enum">
Drone landing state
<enum name="linear">
Linear landing
</enum>
<enum name="spiral">
Spiral landing
</enum>
</arg>
</cmd>
<cmd name="AirSpeedChanged" id="11" buffer="NON_ACK">
<comment
title="Drone's air speed changed"
desc="Drone's air speed changed\n
Expressed in the drone's referential."
support="090e:1.2.0"
triggered="regularly."/>
<arg name="airSpeed" type="float">
Speed relative to air on x axis
(speed is always > 0) (in m/s)
</arg>
</cmd>
<cmd name="moveToChanged" id="12">
<comment
title="Move to changed"
desc="The drone moves or moved to a given location."
support="090c:4.3.0"
triggered="by [MoveTo](#1-0-10) or when the drone did reach the given position."/>
<arg name="latitude" type="double">
Latitude of the location (in degrees) to reach
</arg>
<arg name="longitude" type="double">
Longitude of the location (in degrees) to reach
</arg>
<arg name="altitude" type="double">
Altitude above sea level (in m) to reach
</arg>
<arg name="orientation_mode" type="enum">
Orientation mode of the move to
<enum name="NONE">
The drone won't change its orientation
</enum>
<enum name="TO_TARGET">
The drone will make a rotation to look in direction of the given location
</enum>
<enum name="HEADING_START">
The drone will orientate itself to the given heading before moving to the location
</enum>
<enum name="HEADING_DURING">
The drone will orientate itself to the given heading while moving to the location
</enum>
</arg>
<arg name="heading" type="float">
Heading (relative to the North in degrees).
This value is only used if the orientation mode is HEADING_START or HEADING_DURING
</arg>
<arg name="status" type="enum">
Status of the move to
<enum name="RUNNING">
The drone is actually flying to the given position
</enum>
<enum name="DONE">
The drone has reached the target
</enum>
<enum name="CANCELED">
The move to has been canceled, either by a CancelMoveTo command
or when a disconnection appears.
</enum>
<enum name="ERROR">
The move to has not been finished or started because of an error.
</enum>
</arg>
</cmd>
<cmd name="MotionState" id="13">
<comment
title="Motion state"
desc="Motion state.\n
If [MotionDetection](#1-6-16) is disabled, motion is steady.\n
This information is only valid when the drone is not flying."
support="090c:4.3.0"
triggered="when the [FlyingState](#1-4-1) is landed and the [MotionDetection](#1-6-16) is enabled
and the motion state changes.\n
This event is triggered at a filtered rate."/>
<arg name="state" type="enum">
Motion state
<enum name="steady">
Drone is steady
</enum>
<enum name="moving">
Drone is moving
</enum>
</arg>
</cmd>
<cmd name="PilotedPOI" id="14">
<comment
title="Piloted POI state"
desc="Piloted POI state."
support="090c:4.3.0"
triggered="by [StartPilotedPOI](#1-0-12) or [StopPilotedPOI](#1-0-13)
or when piloted POI becomes unavailable."/>
<arg name="latitude" type="double">
Latitude of the location (in degrees) to look at.
This information is only valid when the state is pending or running.
</arg>
<arg name="longitude" type="double">
Longitude of the location (in degrees) to look at.
This information is only valid when the state is pending or running.
</arg>
<arg name="altitude" type="double">
Altitude above sea level (in m) to look at.
This information is only valid when the state is pending or running.
</arg>
<arg name="status" type="enum">
Status of the move to
<enum name="UNAVAILABLE">
The piloted POI is not available
</enum>
<enum name="AVAILABLE">
The piloted POI is available
</enum>
<enum name="PENDING">
Piloted POI has been requested. Waiting to be in state that allow the piloted POI to start
</enum>
<enum name="RUNNING">
Piloted POI is running
</enum>
</arg>
</cmd>
<cmd name="ReturnHomeBatteryCapacity" id="15">
<comment
title="Return home battery capacity"
desc="Battery capacity status to return home."
support="090c:4.3.0"
triggered="when the status of the battery capacity to do a return home changes.
This means that it is triggered either when the battery level changes, when the distance
to the home changes or when the position of the home changes."/>
<arg name="status" type="enum">
Status of battery to return home
<enum name="OK">
The battery is full enough to do a return home
</enum>
<enum name="WARNING">
The battery is about to be too discharged to do a return home
</enum>
<enum name="CRITICAL">
The battery level is too low to return to the home position
</enum>
<enum name="UNKNOWN">
Battery capacity to do a return home is unknown.
This can be either because the home is unknown or the position of the drone is unknown,
or the drone has not enough information to determine how long it takes to fly home.
</enum>
</arg>
</cmd>
</class>
<class name="PilotingEvent" id="34">
Events of Piloting
<cmd name="moveByEnd" id="0" content="NOTIFICATION">
<comment
title="Relative move ended"
desc="Relative move ended.\n
Informs about the move that the drone managed to do and why it stopped."
support="0901:3.3.0;090c:3.3.0"
triggered="when the drone reaches its target or when it is interrupted by another
[moveBy command](#1-0-7) or when an error occurs."/>
<arg name="dX" type="float">
Distance traveled along the front axis [m]
</arg>
<arg name="dY" type="float">
Distance traveled along the right axis [m]
</arg>
<arg name="dZ" type="float">
Distance traveled along the down axis [m]
</arg>
<arg name="dPsi" type="float">
Applied angle on heading [rad]
</arg>
<arg name="error" type="enum">
Error to explain the event
<enum name="ok">
No Error ; The relative displacement
</enum>
<enum name="unknown">
Unknown generic error
</enum>
<enum name="busy">
The Device is busy ; command moveBy ignored
</enum>
<enum name="notAvailable">
Command moveBy is not available ; command moveBy ignored
</enum>
<enum name="interrupted">
Command moveBy interrupted
</enum>
</arg>
</cmd>
</class>
<class name="Network" id="13">
Network related commands
<cmd name="WifiScan" id="0">
<comment
title="Scan wifi network"
desc="Scan wifi network to get a list of all networks found by the drone"
support="0901;090c;090e"
result="Event [WifiScanResults](#1-14-0) is triggered with all networks found.\n
When all networks have been sent, event [WifiScanEnded](#1-14-1) is triggered."/>
<arg name="band" type="enum">
The band(s) : 2.4 Ghz, 5 Ghz, or both
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
<enum name="all">
Both 2.4 and 5 GHz bands
</enum>
</arg>
</cmd>
<cmd name="WifiAuthChannel" id="1">
<comment
title="Ask for available wifi channels"
desc="Ask for available wifi channels.\n
The list of available Wifi channels is related to the country of the drone. You can get this country from the event [CountryChanged](#0-3-6)."
support="0901;090c;090e"
result="Event [AvailableWifiChannels](#1-14-2) is triggered with all available channels. When all channels have been sent, event [AvailableWifiChannelsCompleted](#1-14-3) is triggered."/>
</cmd>
</class>
<class name="NetworkState" id="14">
Network state from Product
<cmd name="WifiScanListChanged" id="0" type="MAP_ITEM">
<comment
title="Wifi scan results"
desc="Wifi scan results.\n
Please note that the list is not complete until you receive the event [WifiScanEnded](#1-14-1)."
support="0901;090c;090e"
triggered="for each wifi network scanned after a [ScanWifi](#1-13-0)"/>
<arg name="ssid" type="string">
SSID of the AP
</arg>
<arg name="rssi" type="i16">
RSSI of the AP in dbm (negative value)
</arg>
<arg name="band" type="enum">
The band : 2.4 GHz or 5 GHz
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
</arg>
<arg name="channel" type="u8">
Channel of the AP
</arg>
</cmd>
<cmd name="AllWifiScanChanged" id="1">
<comment
title="Wifi scan ended"
desc="Wifi scan ended.\n
When receiving this event, the list of [WifiScanResults](#1-14-0) is complete."
support="0901;090c;090e"
triggered="after the last [WifiScanResult](#1-14-0) has been sent."/>
</cmd>
<cmd name="WifiAuthChannelListChanged" id="2" type="LIST_ITEM">
<comment
title="Available wifi channels"
desc="Available wifi channels.\n
Please note that the list is not complete until you receive the event [AvailableWifiChannelsCompleted](#1-14-3)."
support="0901;090c;090e"
triggered="for each available channel after a [GetAvailableWifiChannels](#1-13-1)."/>
<arg name="band" type="enum">
The band of this channel : 2.4 GHz or 5 GHz
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
</arg>
<arg name="channel" type="u8">
The authorized channel.
</arg>
<arg name="in_or_out" type="u8">
Bit 0 is 1 if channel is authorized outside (0 otherwise) ; Bit 1 is 1 if channel is authorized inside (0 otherwise)
</arg>
</cmd>
<cmd name="AllWifiAuthChannelChanged" id="3">
<comment
title="Available wifi channels completed"
desc="Available wifi channels completed.\n
When receiving this event, the list of [AvailableWifiChannels](#1-14-2) is complete."
support="0901;090c;090e"
triggered="after the last [AvailableWifiChannel](#1-14-2) has been sent."/>
</cmd>
</class>
<class name="PilotingSettings" id="2">
Piloting Settings commands
<cmd name="MaxAltitude" id="0">
<comment
title="Set max altitude"
desc="Set max altitude.\n
The drone will not fly over this max altitude when it is in manual piloting.\n
Please note that if you set a max altitude which is below the current drone altitude, the drone will not go to given max altitude.\n
You can get the bounds in the event [MaxAltitude](#1-6-0)."
support="0901;090c;090e"
result="The max altitude is set.\n
Then, event [MaxAltitude](#1-6-0) is triggered."/>
<arg name="current" type="float">
Current altitude max in m
</arg>
</cmd>
<cmd name="MaxTilt" id="1">
<comment
title="Set max pitch/roll"
desc="Set max pitch/roll.\n
This represent the max inclination allowed by the drone.\n
You can get the bounds with the commands [MaxPitchRoll](#1-6-1)."
support="0901;090c"
result="The max pitch/roll is set.\n
Then, event [MaxPitchRoll](#1-6-1) is triggered."/>
<arg name="current" type="float">
Current tilt max in degree
</arg>
</cmd>
<cmd name="AbsolutControl" id="2" deprecated="true">
<comment
title="Set absolut control"
desc="Set absolut control."/>
<arg name="on" type="u8">
1 to enable, 0 to disable
</arg>
</cmd>
<cmd name="MaxDistance" id="3">
<comment
title="Set max distance"
desc="Set max distance.\n
You can get the bounds from the event [MaxDistance](#1-6-3).\n\n
If [Geofence](#1-6-4) is activated, the drone won't fly over the given max distance."
support="0901;090c;090e"
result="The max distance is set.\n
Then, event [MaxDistance](#1-6-3) is triggered."/>
<arg name="value" type="float">
Current max distance in meter
</arg>
</cmd>
<cmd name="NoFlyOverMaxDistance" id="4">
<comment
title="Enable geofence"
desc="Enable geofence.\n
If geofence is enabled, the drone won't fly over the given max distance.\n
You can get the max distance from the event [MaxDistance](#1-6-3). \n
For copters: the distance is computed from the controller position, if this position is not known, it will use the take off.\n
For fixed wings: the distance is computed from the take off position."
support="0901;090c;090e"
result="Geofencing is enabled or disabled.\n
Then, event [Geofencing](#1-6-4) is triggered."/>
<arg name="shouldNotFlyOver" type="u8">
1 if the drone can't fly further than max distance, 0 if no limitation on the drone should be done
</arg>
</cmd>
<cmd name="setAutonomousFlightMaxHorizontalSpeed" id="5">
<comment
title="Set autonomous flight max horizontal speed"
desc="Set autonomous flight max horizontal speed.\n
This will only be used during autonomous flights such as moveBy."
support="0901:3.3.0;090c:3.3.0"
result="The max horizontal speed is set.\n
Then, event [AutonomousFlightMaxHorizontalSpeed](#1-6-5) is triggered."/>
<arg name="value" type="float">
maximum horizontal speed [m/s]
</arg>
</cmd>
<cmd name="setAutonomousFlightMaxVerticalSpeed" id="6">
<comment
title="Set autonomous flight max vertical speed"
desc="Set autonomous flight max vertical speed.\n
This will only be used during autonomous flights such as moveBy."
support="0901:3.3.0;090c:3.3.0"
result="The max vertical speed is set.\n
Then, event [AutonomousFlightMaxVerticalSpeed](#1-6-6) is triggered."/>
<arg name="value" type="float">
maximum vertical speed [m/s]
</arg>
</cmd>
<cmd name="setAutonomousFlightMaxHorizontalAcceleration" id="7">
<comment
title="Set autonomous flight max horizontal acceleration"
desc="Set autonomous flight max horizontal acceleration.\n
This will only be used during autonomous flights such as moveBy."
support="0901:3.3.0;090c:3.3.0"
result="The max horizontal acceleration is set.\n
Then, event [AutonomousFlightMaxHorizontalAcceleration](#1-6-7) is triggered."/>
<arg name="value" type="float">
maximum horizontal acceleration [m/s2]
</arg>
</cmd>
<cmd name="setAutonomousFlightMaxVerticalAcceleration" id="8">
<comment
title="Set autonomous flight max vertical acceleration"
desc="Set autonomous flight max vertical acceleration.\n
This will only be used during autonomous flights such as moveBy."
support="0901:3.3.0;090c:3.3.0"
result="The max vertical acceleration is set.\n
Then, event [AutonomousFlightMaxVerticalAcceleration](#1-6-8) is triggered."/>
<arg name="value" type="float">
maximum vertical acceleration [m/s2]
</arg>
</cmd>
<cmd name="setAutonomousFlightMaxRotationSpeed" id="9">
<comment
title="Set autonomous flight max rotation speed"
desc="Set autonomous flight max rotation speed.\n
This will only be used during autonomous flights such as moveBy."
support="0901:3.3.0;090c:3.3.0"
result="The max rotation speed is set.\n
Then, event [AutonomousFlightMaxRotationSpeed](#1-6-9) is triggered."/>
<arg name="value" type="float">
maximum yaw rotation speed [deg/s]
</arg>
</cmd>
<cmd name="BankedTurn" id="10">
<comment
title="Set banked turn mode"
desc="Set banked turn mode.\n
When banked turn mode is enabled, the drone will use yaw values from the piloting command to infer with roll and pitch on the drone when its horizontal speed is not null."
support="0901:3.2.0;090c:3.2.0"
result="The banked turn mode is enabled or disabled.\n
Then, event [BankedTurnMode](#1-6-10) is triggered."/>
<arg name="value" type="u8">
1 to enable, 0 to disable
</arg>
</cmd>
<cmd name="MinAltitude" id="11">
<comment
title="Set minimum altitude"
desc="Set minimum altitude.\n
Only available for fixed wings."
support="090e"
result="The minimum altitude is set.\n
Then, event [MinimumAltitude](#1-6-11) is triggered."/>
<arg name="current" type="float">
Current altitude min in m
</arg>
</cmd>
<cmd name="CirclingDirection" id="12">
<comment
title="Set default circling direction"
desc="Set default circling direction. This direction will be used when the drone use an automatic circling or when [CIRCLE](#1-0-9) is sent with direction *default*.\n
Only available for fixed wings."
support="090e"
result="The circling direction is set.\n
Then, event [DefaultCirclingDirection](#1-6-12) is triggered."/>
<arg name="value" type="enum">
The circling direction
<enum name="CW">
Circling ClockWise
</enum>
<enum name="CCW">
Circling Counter ClockWise
</enum>
</arg>
</cmd>
<cmd name="CirclingRadius" id="13" deprecated="true">
<comment
title="Set circling radius"
desc="Set circling radius.\n
Only available for fixed wings."
support="none"
result="The circling radius is set.\n
Then, event [CirclingRadius](#1-6-13) is triggered."/>
<arg name="value" type="u16">
The circling radius in meter
</arg>
</cmd>
<cmd name="CirclingAltitude" id="14">
<comment
title="Set min circling altitude"
desc="Set min circling altitude (not used during take off).\n
Only available for fixed wings."
support="090e"
result="The circling altitude is set.\n
Then, event [CirclingAltitude](#1-6-14) is triggered."/>
<arg name="value" type="u16">
The circling altitude in meter
</arg>
</cmd>
<cmd name="PitchMode" id="15">
<comment
title="Set pitch mode"
desc="Set pitch mode.\n
Only available for fixed wings."
support="090e"
result="The pitch mode is set.\n
Then, event [PitchMode](#1-6-15) is triggered."/>
<arg name="value" type="enum">
The Pitch mode
<enum name="NORMAL">
Positive pitch values will make the drone lower its nose.
Negative pitch values will make the drone raise its nose.
</enum>
<enum name="INVERTED">
Pitch commands are inverted.
Positive pitch values will make the drone raise its nose.
Negative pitch values will make the drone lower its nose.
</enum>
</arg>
</cmd>
<cmd name="SetMotionDetectionMode" id="16">
<comment
title="Enable/disable the motion detection"
desc="Enable/disable the motion detection.\n
If the motion detection is enabled, the drone will send its [MotionState](#1-4-13)
when its [FlyingState](#1-4-1) is landed.
If the motion detection is disabled, [MotionState](#1-4-13) is steady."
support="090c:4.3.0"
result="The motion detection is enabled or disabled.\n
Then, event [MotionDetection](#1-6-16) is triggered.
After that, if enabled and [FlyingState](#1-4-1) is landed,
the [MotionState](#1-4-13) is triggered upon changes."/>
<arg name="enable" type="u8">
1 to enable the motion detection, 0 to disable it.
</arg>
</cmd>
</class>
<class name="PilotingSettingsState" id="6">
Piloting Settings state from product
<cmd name="MaxAltitudeChanged" id="0">
<comment
title="Max altitude"
desc="Max altitude.\n
The drone will not fly higher than this altitude (above take off point)."
support="0901;090c;090e"
triggered="by [SetMaxAltitude](#1-2-0)."/>
<arg name="current" type="float">
Current altitude max
</arg>
<arg name="min" type="float">
Range min of altitude
</arg>
<arg name="max" type="float">
Range max of altitude
</arg>
</cmd>
<cmd name="MaxTiltChanged" id="1">
<comment
title="Max pitch/roll"
desc="Max pitch/roll.\n
The drone will not fly higher than this altitude (above take off point)."
support="0901;090c"
triggered="by [SetMaxAltitude](#1-2-0)."/>
<arg name="current" type="float">
Current max tilt
</arg>
<arg name="min" type="float">
Range min of tilt
</arg>
<arg name="max" type="float">
Range max of tilt
</arg>
</cmd>
<cmd name="AbsolutControlChanged" id="2" deprecated="true">
<comment
title="Absolut control"
desc="Absolut control."/>
<arg name="on" type="u8">
1 if enabled, 0 if disabled
</arg>
</cmd>
<cmd name="MaxDistanceChanged" id="3">
<comment
title="Max distance"
desc="Max distance."
support="0901;090c;090e"
triggered="by [SetMaxDistance](#1-2-3)."/>
<arg name="current" type="float">
Current max distance in meter
</arg>
<arg name="min" type="float">
Minimal possible max distance
</arg>
<arg name="max" type="float">
Maximal possible max distance
</arg>
</cmd>
<cmd name="NoFlyOverMaxDistanceChanged" id="4">
<comment
title="Geofencing"
desc="Geofencing.\n
If set, the drone won't fly over the [MaxDistance](#1-6-3)."
support="0901;090c;090e"
triggered="by [EnableGeofence](#1-2-4)."/>
<arg name="shouldNotFlyOver" type="u8">
1 if the drone won't fly further than max distance, 0 if no limitation on the drone will be done
</arg>
</cmd>
<cmd name="AutonomousFlightMaxHorizontalSpeed" id="5">
<comment
title="Autonomous flight max horizontal speed"
desc="Autonomous flight max horizontal speed."
support="0901:3.3.0;090c:3.3.0"
triggered="by [SetAutonomousFlightMaxHorizontalSpeed](#1-2-5)."/>
<arg name="value" type="float">
maximum horizontal speed [m/s]
</arg>
</cmd>
<cmd name="AutonomousFlightMaxVerticalSpeed" id="6">
<comment
title="Autonomous flight max vertical speed"
desc="Autonomous flight max vertical speed."
support="0901:3.3.0;090c:3.3.0"
triggered="by [SetAutonomousFlightMaxVerticalSpeed](#1-2-6)."/>
<arg name="value" type="float">
maximum vertical speed [m/s]
</arg>
</cmd>
<cmd name="AutonomousFlightMaxHorizontalAcceleration" id="7">
<comment
title="Autonomous flight max horizontal acceleration"
desc="Autonomous flight max horizontal acceleration."
support="0901:3.3.0;090c:3.3.0"
triggered="by [SetAutonomousFlightMaxHorizontalAcceleration](#1-2-7)."/>
<arg name="value" type="float">
maximum horizontal acceleration [m/s2]
</arg>
</cmd>
<cmd name="AutonomousFlightMaxVerticalAcceleration" id="8">
<comment
title="Autonomous flight max vertical acceleration"
desc="Autonomous flight max vertical acceleration."
support="0901:3.3.0;090c:3.3.0"
triggered="by [SetAutonomousFlightMaxVerticalAcceleration](#1-2-8)."/>
<arg name="value" type="float">
maximum vertical acceleration [m/s2]
</arg>
</cmd>
<cmd name="AutonomousFlightMaxRotationSpeed" id="9">
<comment
title="Autonomous flight max rotation speed"
desc="Autonomous flight max rotation speed."
support="0901:3.3.0;090c:3.3.0"
triggered="by [SetAutonomousFlightMaxRotationSpeed](#1-2-9)."/>
<arg name="value" type="float">
maximum yaw rotation speed [deg/s]
</arg>
</cmd>
<cmd name="BankedTurnChanged" id="10">
<comment
title="Banked Turn mode"
desc="Banked Turn mode.\n
If banked turn mode is enabled, the drone will use yaw values from the piloting command to infer with roll and pitch on the drone when its horizontal speed is not null."
support="0901:3.2.0;090c:3.2.0"
triggered="by [SetBankedTurnMode](#1-2-10)."/>
<arg name="state" type="u8">
1 if enabled, 0 if disabled
</arg>
</cmd>
<cmd name="MinAltitudeChanged" id="11">
<comment
title="Min altitude"
desc="Min altitude.\n
Only sent by fixed wings."
support="090e"
triggered="by [SetMinAltitude](#1-2-11)."/>
<arg name="current" type="float">
Current altitude min
</arg>
<arg name="min" type="float">
Range min of altitude min
</arg>
<arg name="max" type="float">
Range max of altitude min
</arg>
</cmd>
<cmd name="CirclingDirectionChanged" id="12">
<comment
title="Circling direction"
desc="Circling direction.\n
Only sent by fixed wings."
support="090e"
triggered="by [SetCirclingDirection](#1-2-12)."/>
<arg name="value" type="enum">
The circling direction
<enum name="CW">
Circling ClockWise
</enum>
<enum name="CCW">
Circling Counter ClockWise
</enum>
</arg>
</cmd>
<cmd name="CirclingRadiusChanged" id="13" deprecated="true">
<comment
title="Circling radius"
desc="Circling radius.\n
Only sent by fixed wings."
support="none"
triggered="by [SetCirclingRadius](#1-2-13)."/>
<arg name="current" type="u16">
The current circling radius in meter
</arg>
<arg name="min" type="u16">
Range min of circling radius in meter
</arg>
<arg name="max" type="u16">
Range max of circling radius in meter
</arg>
</cmd>
<cmd name="CirclingAltitudeChanged" id="14">
<comment
title="Circling altitude"
desc="Circling altitude.\n
Bounds will be automatically adjusted according to the [MaxAltitude](#1-6-0).\n
Only sent by fixed wings."
support="090e"
triggered="by [SetCirclingRadius](#1-2-14) or when bounds change due to [SetMaxAltitude](#1-2-0)."/>
<arg name="current" type="u16">
The current circling altitude in meter
</arg>
<arg name="min" type="u16">
Range min of circling altitude in meter
</arg>
<arg name="max" type="u16">
Range max of circling altitude in meter
</arg>
</cmd>
<cmd name="PitchModeChanged" id="15">
<comment
title="Pitch mode"
desc="Pitch mode."
support="090e"
triggered="by [SetPitchMode](#1-2-15)."/>
<arg name="value" type="enum">
The Pitch mode
<enum name="NORMAL">
Positive pitch values will make the drone lower its nose.
Negative pitch values will make the drone raise its nose.
</enum>
<enum name="INVERTED">
Pitch commands are inverted.
Positive pitch values will make the drone raise its nose.
Negative pitch values will make the drone lower its nose.
</enum>
</arg>
</cmd>
<cmd name="MotionDetection" id="16">
<comment
title="State of the motion detection"
desc="State of the motion detection."
support="090c:4.3.0"
triggered="by [SetMotionDetectionMode](#1-2-16)"/>
<arg name="enabled" type="u8">
1 if motion detection is enabled, 0 otherwise.
</arg>
</cmd>
</class>
<class name="SpeedSettings" id="11">
Speed Settings commands
<cmd name="MaxVerticalSpeed" id="0">
<comment
title="Set max vertical speed"
desc="Set max vertical speed."
support="0901;090c"
result="The max vertical speed is set.\n
Then, event [MaxVerticalSpeed](#1-12-0) is triggered."/>
<arg name="current" type="float">
Current max vertical speed in m/s
</arg>
</cmd>
<cmd name="MaxRotationSpeed" id="1">
<comment
title="Set max rotation speed"
desc="Set max rotation speed."
support="0901;090c"
result="The max rotation speed is set.\n
Then, event [MaxRotationSpeed](#1-12-1) is triggered."/>
<arg name="current" type="float">
Current max yaw rotation speed in degree/s
</arg>
</cmd>
<cmd name="HullProtection" id="2">
<comment
title="Set the presence of hull protection"
desc="Set the presence of hull protection."
support="0901;090c"
result="The drone knows that it has a hull protection.\n
Then, event [HullProtection](#1-12-2) is triggered."/>
<arg name="present" type="u8">
1 if present, 0 if not present
</arg>
</cmd>
<cmd name="Outdoor" id="3" deprecated="true">
<comment
title="Set outdoor mode"
desc="Set outdoor mode."/>
<arg name="outdoor" type="u8">
1 if outdoor flight, 0 if indoor flight
</arg>
</cmd>
<cmd name="MaxPitchRollRotationSpeed" id="4">
<comment
title="Set max pitch/roll rotation speed"
desc="Set max pitch/roll rotation speed."
support="0901;090c"
result="The max pitch/roll rotation speed is set.\n
Then, event [MaxPitchRollRotationSpeed](#1-12-4) is triggered."/>
<arg name="current" type="float">
Current max pitch/roll rotation speed in degree/s
</arg>
</cmd>
</class>
<class name="SpeedSettingsState" id="12">
Speed Settings state from product
<cmd name="MaxVerticalSpeedChanged" id="0">
<comment
title="Max vertical speed"
desc="Max vertical speed."
support="0901;090c"
triggered="by [SetMaxVerticalSpeed](#1-11-0)."/>
<arg name="current" type="float">
Current max vertical speed in m/s
</arg>
<arg name="min" type="float">
Range min of vertical speed
</arg>
<arg name="max" type="float">
Range max of vertical speed
</arg>
</cmd>
<cmd name="MaxRotationSpeedChanged" id="1">
<comment
title="Max rotation speed"
desc="Max rotation speed."
support="0901;090c"
triggered="by [SetMaxRotationSpeed](#1-11-1)."/>
<arg name="current" type="float">
Current max yaw rotation speed in degree/s
</arg>
<arg name="min" type="float">
Range min of yaw rotation speed
</arg>
<arg name="max" type="float">
Range max of yaw rotation speed
</arg>
</cmd>
<cmd name="HullProtectionChanged" id="2">
<comment
title="Presence of hull protection"
desc="Presence of hull protection."
support="0901;090c"
triggered="by [SetHullProtectionPresence](#1-11-2)."/>
<arg name="present" type="u8">
1 if present, 0 if not present
</arg>
</cmd>
<cmd name="OutdoorChanged" id="3" deprecated="true">
<comment
title="Outdoor mode"
desc="Outdoor mode."/>
<arg name="outdoor" type="u8">
1 if outdoor flight, 0 if indoor flight
</arg>
</cmd>
<cmd name="MaxPitchRollRotationSpeedChanged" id="4">
<comment
title="Max pitch/roll rotation speed"
desc="Max pitch/roll rotation speed."
support="0901;090c"
triggered="by [SetMaxPitchRollRotationSpeed](#1-11-4)."/>
<arg name="current" type="float">
Current max pitch/roll rotation speed in degree/s
</arg>
<arg name="min" type="float">
Range min of pitch/roll rotation speed
</arg>
<arg name="max" type="float">
Range max of pitch/roll rotation speed
</arg>
</cmd>
</class>
<class name="NetworkSettings" id="9">
Network settings commands
<cmd name="WifiSelection" id="0">
<comment
title="Select Wifi"
desc="Select or auto-select channel of choosen band."
support="0901;090c;090e"
result="The wifi channel changes according to given parameters. Watch out, a disconnection might appear.\n
Then, event [WifiSelection](#1-10-0) is triggered."/>
<arg name="type" type="enum">
The type of wifi selection (auto, manual)
<enum name="auto">
Auto selection
</enum>
<enum name="manual">
Manual selection
</enum>
</arg>
<arg name="band" type="enum">
The allowed band(s) : 2.4 Ghz, 5 Ghz, or all
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
<enum name="all">
Both 2.4 and 5 GHz bands
</enum>
</arg>
<arg name="channel" type="u8">
The channel (not used in auto mode)
</arg>
</cmd>
<cmd name="wifiSecurity" id="1">
<comment
title="Set wifi security type"
desc="Set wifi security type.\n
The security will be changed on the next restart"
support="0901;090c;090e"
result="The wifi security is set (but not applied until next restart).\n
Then, event [WifiSecurityType](#1-10-2) is triggered."/>
<arg name="type" type="enum">
The type of wifi security (open, wpa2)
<enum name="open">
Wifi is not protected by any security (default)
</enum>
<enum name="wpa2">
Wifi is protected by wpa2
</enum>
</arg>
<arg name="key" type="string">
The key to secure the network (empty if type is open)
</arg>
<arg name="keyType" type="enum">
Type of the key
<enum name="plain">
Key is plain text, not encrypted
</enum>
</arg>
</cmd>
</class>
<class name="NetworkSettingsState" id="10">
Network settings state from product
<cmd name="WifiSelectionChanged" id="0">
<comment
title="Wifi selection"
desc="Wifi selection."
support="0901;090c;090e"
triggered="by [SelectWifi](#1-9-0)."/>
<arg name="type" type="enum">
The type of wifi selection settings
<enum name="auto_all">
Auto selection
</enum>
<enum name="auto_2_4ghz">
Auto selection 2.4ghz
</enum>
<enum name="auto_5ghz">
Auto selection 5 ghz
</enum>
<enum name="manual">
Manual selection
</enum>
</arg>
<arg name="band" type="enum">
The actual wifi band state
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
<enum name="all">
Both 2.4 and 5 GHz bands
</enum>
</arg>
<arg name="channel" type="u8">
The channel (depends of the band)
</arg>
</cmd>
<cmd name="wifiSecurityChanged" id="1" deprecated="true">
<comment
title="Wifi security type"
desc="Wifi security type."/>
<arg name="type" type="enum">
The type of wifi security (open, wpa2)
<enum name="open">
Wifi is not protected by any security (default)
</enum>
<enum name="wpa2">
Wifi is protected by wpa2
</enum>
</arg>
</cmd>
<cmd name="wifiSecurity" id="2">
<comment
title="Wifi security type"
desc="Wifi security type."
support="0901;090c;090e"
triggered="by [SetWifiSecurityType](#1-9-1)."/>
<arg name="type" type="enum">
The type of wifi security (open, wpa2)
<enum name="open">
Wifi is not protected by any security (default)
</enum>
<enum name="wpa2">
Wifi is protected by wpa2
</enum>
</arg>
<arg name="key" type="string">
The key used to secure the network (empty if type is open)
</arg>
<arg name="keyType" type="enum">
Type of the key
<enum name="plain">
Key is plain text, not encrypted
</enum>
</arg>
</cmd>
</class>
<class name="SettingsState" id="16">
Settings state from product
<cmd name="ProductMotorVersionListChanged" id="0" type="MAP_ITEM" deprecated="true">
<comment
title="Motor version"
desc="Motor version."/>
<arg name="motor_number" type="u8">
Product Motor number
</arg>
<arg name="type" type="string">
Product Motor type
</arg>
<arg name="software" type="string">
Product Motors software version
</arg>
<arg name="hardware" type="string">
Product Motors hardware version
</arg>
</cmd>
<cmd name="ProductGPSVersionChanged" id="1">
<comment
title="GPS version"
desc="GPS version."
support="0901;090c;090e"
triggered="at connection."/>
<arg name="software" type="string">
Product GPS software version
</arg>
<arg name="hardware" type="string">
Product GPS hardware version
</arg>
</cmd>
<cmd name="MotorErrorStateChanged" id="2">
<comment
title="Motor error"
desc="Motor error.\n
This event is sent back to *noError* as soon as the motor error disappear. To get the last motor error, see [LastMotorError](#1-16-5)"
support="0901;090c;090e"
triggered="when a motor error occurs."/>
<arg name="motorIds" type="u8">
Bit field for concerned motor. If bit 0 = 1, motor 1 is affected by this error. Same with bit 1, 2 and 3.
Motor 1: front left
Motor 2: front right
Motor 3: back right
Motor 4: back left
</arg>
<arg name="motorError" type="enum">
Enumeration of the motor error
<enum name="noError">
No error detected
</enum>
<enum name="errorEEPRom">
EEPROM access failure
</enum>
<enum name="errorMotorStalled">
Motor stalled
</enum>
<enum name="errorPropellerSecurity">
Propeller cutout security triggered
</enum>
<enum name="errorCommLost">
Communication with motor failed by timeout
</enum>
<enum name="errorRCEmergencyStop">
RC emergency stop
</enum>
<enum name="errorRealTime">
Motor controler scheduler real-time out of bounds
</enum>
<enum name="errorMotorSetting">
One or several incorrect values in motor settings
</enum>
<enum name="errorTemperature">
Too hot or too cold Cypress temperature
</enum>
<enum name="errorBatteryVoltage">
Battery voltage out of bounds
</enum>
<enum name="errorLipoCells">
Incorrect number of LIPO cells
</enum>
<enum name="errorMOSFET">
Defectuous MOSFET or broken motor phases
</enum>
<enum name="errorBootloader">
Not use for BLDC but useful for HAL
</enum>
<enum name="errorAssert">
Error Made by BLDC_ASSERT()
</enum>
</arg>
</cmd>
<cmd name="MotorSoftwareVersionChanged" id="3" deprecated="true">
<comment
title="Motor version"
desc="Motor version."/>
<arg name="version" type="string">
name of the version : dot separated fields (major version - minor version - firmware type - nb motors handled). Firmware types : Release, Debug, Alpha, Test-bench
</arg>
</cmd>
<cmd name="MotorFlightsStatusChanged" id="4">
<comment
title="Motor flight status"
desc="Motor flight status."
support="0901;090c;090e"
triggered="at connection."/>
<arg name="nbFlights" type="u16">
total number of flights
</arg>
<arg name="lastFlightDuration" type="u16">
Duration of the last flight (in seconds)
</arg>
<arg name="totalFlightDuration" type="u32">
Duration of all flights (in seconds)
</arg>
</cmd>
<cmd name="MotorErrorLastErrorChanged" id="5">
<comment
title="Last motor error"
desc="Last motor error.\n
This is a reminder of the last error. To know if a motor error is currently happening, see [MotorError](#1-16-2)."
support="0901;090c;090e"
triggered="at connection and when an error occurs."/>
<arg name="motorError" type="enum">
Enumeration of the motor error
<enum name="noError">
No error detected
</enum>
<enum name="errorEEPRom">
EEPROM access failure
</enum>
<enum name="errorMotorStalled">
Motor stalled
</enum>
<enum name="errorPropellerSecurity">
Propeller cutout security triggered
</enum>
<enum name="errorCommLost">
Communication with motor failed by timeout
</enum>
<enum name="errorRCEmergencyStop">
RC emergency stop
</enum>
<enum name="errorRealTime">
Motor controler scheduler real-time out of bounds
</enum>
<enum name="errorMotorSetting">
One or several incorrect values in motor settings
</enum>
<enum name="errorBatteryVoltage">
Battery voltage out of bounds
</enum>
<enum name="errorLipoCells">
Incorrect number of LIPO cells
</enum>
<enum name="errorMOSFET">
Defectuous MOSFET or broken motor phases
</enum>
<enum name="errorTemperature">
Too hot or too cold Cypress temperature
</enum>
<enum name="errorBootloader">
Not use for BLDC but useful for HAL
</enum>
<enum name="errorAssert">
Error Made by BLDC_ASSERT()
</enum>
</arg>
</cmd>
<cmd name="P7ID" id="6" deprecated="true">
<comment
title="P7ID"
desc="P7ID."/>
<arg name="serialID" type="string">
Product P7ID
</arg>
</cmd>
<cmd name="CPUID" id="7">
Product main cpu id
<arg name="id" type="string">
Product main cpu id
</arg>
</cmd>
</class>
<class name="PictureSettings" id="19">
Photo settings chosen by the user
<cmd name="PictureFormatSelection" id="0">
<comment
title="Set picture format"
desc="Set picture format.\n
Please note that the time required to take the picture is highly related to this format.\n
Also, please note that if your picture format is different from snapshot, picture taking will stop video recording (it will restart after the picture has been taken)."
support="0901;090c;090e"
result="The picture format is set.\n
Then, event [PictureFormat](#1-20-0) is triggered."/>
<arg name="type" type="enum">
The type of photo format
<enum name="raw">
Take raw image
</enum>
<enum name="jpeg">
Take a 4:3 jpeg photo
</enum>
<enum name="snapshot">
Take a 16:9 snapshot from camera
</enum>
<enum name="jpeg_fisheye">
Take jpeg fisheye image only
</enum>
</arg>
</cmd>
<cmd name="AutoWhiteBalanceSelection" id="1">
<comment
title="Set White Balance mode"
desc="Set White Balance mode."
support="0901;090c;090e"
result="The white balance mode is set.\n
Then, event [WhiteBalanceMode](#1-20-1) is triggered."/>
<arg name="type" type="enum">
The type auto white balance
<enum name="auto">
Auto guess of best white balance params
</enum>
<enum name="tungsten">
Tungsten white balance
</enum>
<enum name="daylight">
Daylight white balance
</enum>
<enum name="cloudy">
Cloudy white balance
</enum>
<enum name="cool_white">
White balance for a flash
</enum>
</arg>
</cmd>
<cmd name="ExpositionSelection" id="2">
<comment
title="Set image exposure"
desc="Set image exposure."
support="0901;090c;090e"
result="The exposure is set.\n
Then, event [ImageExposure](#1-20-2) is triggered."/>
<arg name="value" type="float">
Exposition value (bounds given by ExpositionChanged arg min and max, by default [-3:3])
</arg>
</cmd>
<cmd name="SaturationSelection" id="3">
<comment
title="Set image saturation"
desc="Set image saturation."
support="0901;090c;090e"
result="The saturation is set.\n
Then, event [ImageSaturation](#1-20-3) is triggered."/>
<arg name="value" type="float">
Saturation value (bounds given by SaturationChanged arg min and max, by default [-100:100])
</arg>
</cmd>
<cmd name="TimelapseSelection" id="4">
<comment
title="Set timelapse mode"
desc="Set timelapse mode.\n
If timelapse mode is set, instead of taking a video, the drone will take picture regularly.\n
Watch out, this command only configure the timelapse mode. Once it is configured, you can start/stop the timelapse with the [RecordVideo](#1-7-3) command."
support="0901;090c;090e"
result="The timelapse mode is set (but not started).\n
Then, event [TimelapseMode](#1-20-4) is triggered."/>
<arg name="enabled" type="u8">
1 if timelapse is enabled, 0 otherwise
</arg>
<arg name="interval" type="float">
interval in seconds for taking pictures
</arg>
</cmd>
<cmd name="VideoAutorecordSelection" id="5">
<comment
title="Set video autorecord mode"
desc="Set video autorecord mode.\n
If autorecord is set, video record will be automatically started when the drone takes off and stopped slightly after landing."
support="0901;090c;090e"
result="The autorecord mode is set.\n
Then, event [AutorecordMode](#1-20-5) is triggered."/>
<arg name="enabled" type="u8">
1 if video autorecord is enabled, 0 otherwise
</arg>
<arg name="mass_storage_id" type="u8">
Mass storage id to take video
</arg>
</cmd>
<cmd name="VideoStabilizationMode" id="6">
<comment
title="Set video stabilization mode"
desc="Set video stabilization mode."
support="0901:3.4.0;090c:3.4.0;090e"
result="The video stabilization mode is set.\n
Then, event [VideoStabilizationMode](#1-20-6) is triggered."/>
<arg name="mode" type="enum">
Video stabilization mode
<enum name="roll_pitch">
Video flat on roll and pitch
</enum>
<enum name="pitch">
Video flat on pitch only
</enum>
<enum name="roll">
Video flat on roll only
</enum>
<enum name="none">
Video follows drone angles
</enum>
</arg>
</cmd>
<cmd name="VideoRecordingMode" id="7">
<comment
title="Set video recording mode"
desc="Set video recording mode."
support="0901:3.4.0;090c:3.4.0;090e"
result="The video recording mode is set.\n
Then, event [VideoRecordingMode](#1-20-7) is triggered."/>
<arg name="mode" type="enum">
Video recording mode
<enum name="quality">
Maximize recording quality.
</enum>
<enum name="time">
Maximize recording time.
</enum>
</arg>
</cmd>
<cmd name="VideoFramerate" id="8">
<comment
title="Set video framerate"
desc="Set video framerate."
support="0901:3.4.0;090c:3.4.0;090e"
result="The video framerate is set.\n
Then, event [VideoFramerate](#1-20-8) is triggered."/>
<arg name="framerate" type="enum">
Video framerate
<enum name="24_FPS">
23.976 frames per second.
</enum>
<enum name="25_FPS">
25 frames per second.
</enum>
<enum name="30_FPS">
29.97 frames per second.
</enum>
</arg>
</cmd>
<cmd name="VideoResolutions" id="9">
<comment
title="Set video resolutions"
desc="Set video streaming and recording resolutions."
support="0901:3.4.0;090c:3.4.0;090e"
result="The video resolutions is set.\n
Then, event [VideoResolutions](#1-20-9) is triggered."/>
<arg name="type" type="enum">
Video streaming and recording resolutions
<enum name="rec1080_stream480">
1080p recording, 480p streaming.
</enum>
<enum name="rec720_stream720">
720p recording, 720p streaming.
</enum>
</arg>
</cmd>
</class>
<class name="PictureSettingsState" id="20">
Photo settings state from product
<cmd name="PictureFormatChanged" id="0">
<comment
title="Picture format"
desc="Picture format."
support="0901;090c;090e"
triggered="by [SetPictureFormat](#1-19-0)."/>
<arg name="type" type="enum">
The type of photo format
<enum name="raw">
Take raw image
</enum>
<enum name="jpeg">
Take a 4:3 jpeg photo
</enum>
<enum name="snapshot">
Take a 16:9 snapshot from camera
</enum>
<enum name="jpeg_fisheye">
Take jpeg fisheye image only
</enum>
</arg>
</cmd>
<cmd name="AutoWhiteBalanceChanged" id="1">
<comment
title="White balance mode"
desc="White balance mode."
support="0901;090c;090e"
triggered="by [SetWhiteBalanceMode](#1-19-1)."/>
<arg name="type" type="enum">
The type auto white balance
<enum name="auto">
Auto guess of best white balance params
</enum>
<enum name="tungsten">
Tungsten white balance
</enum>
<enum name="daylight">
Daylight white balance
</enum>
<enum name="cloudy">
Cloudy white balance
</enum>
<enum name="cool_white">
White balance for a flash
</enum>
</arg>
</cmd>
<cmd name="ExpositionChanged" id="2">
<comment
title="Image exposure"
desc="Image exposure."
support="0901;090c;090e"
triggered="by [SetImageExposure](#1-19-2)."/>
<arg name="value" type="float">
Exposure value
</arg>
<arg name="min" type="float">
Min exposure value
</arg>
<arg name="max" type="float">
Max exposure value
</arg>
</cmd>
<cmd name="SaturationChanged" id="3">
<comment
title="Image saturation"
desc="Image saturation."
support="0901;090c;090e"
triggered="by [SetImageSaturation](#1-19-3)."/>
<arg name="value" type="float">
Saturation value
</arg>
<arg name="min" type="float">
Min saturation value
</arg>
<arg name="max" type="float">
Max saturation value
</arg>
</cmd>
<cmd name="TimelapseChanged" id="4">
<comment
title="Timelapse mode"
desc="Timelapse mode."
support="0901;090c;090e"
triggered="by [SetTimelapseMode](#1-19-4)."/>
<arg name="enabled" type="u8">
1 if timelapse is enabled, 0 otherwise
</arg>
<arg name="interval" type="float">
interval in seconds for taking pictures
</arg>
<arg name="minInterval" type="float">
Minimal interval for taking pictures
</arg>
<arg name="maxInterval" type="float">
Maximal interval for taking pictures
</arg>
</cmd>
<cmd name="VideoAutorecordChanged" id="5">
<comment
title="Video Autorecord mode"
desc="Video Autorecord mode."
support="0901;090c;090e"
triggered="by [SetVideoAutorecordMode](#1-19-5)."/>
<arg name="enabled" type="u8">
1 if video autorecord is enabled, 0 otherwise
</arg>
<arg name="mass_storage_id" type="u8">
Mass storage id for the taken video
</arg>
</cmd>
<cmd name="VideoStabilizationModeChanged" id="6">
<comment
title="Video stabilization mode"
desc="Video stabilization mode."
support="0901:3.4.0;090c:3.4.0;090e"
triggered="by [SetVideoStabilizationMode](#1-19-6)."/>
<arg name="mode" type="enum">
Video stabilization mode
<enum name="roll_pitch">
Video flat on roll and pitch
</enum>
<enum name="pitch">
Video flat on pitch only
</enum>
<enum name="roll">
Video flat on roll only
</enum>
<enum name="none">
Video follows drone angles
</enum>
</arg>
</cmd>
<cmd name="VideoRecordingModeChanged" id="7">
<comment
title="Video recording mode"
desc="Video recording mode."
support="0901:3.4.0;090c:3.4.0;090e"
triggered="by [SetVideoRecordingMode](#1-19-7)."/>
<arg name="mode" type="enum">
Video recording mode
<enum name="quality">
Maximize recording quality.
</enum>
<enum name="time">
Maximize recording time.
</enum>
</arg>
</cmd>
<cmd name="VideoFramerateChanged" id="8">
<comment
title="Video framerate"
desc="Video framerate."
support="0901:3.4.0;090c:3.4.0;090e"
triggered="by [SetVideoFramerateMode](#1-19-8)."/>
<arg name="framerate" type="enum">
Video framerate
<enum name="24_FPS">
23.976 frames per second.
</enum>
<enum name="25_FPS">
25 frames per second.
</enum>
<enum name="30_FPS">
29.97 frames per second.
</enum>
</arg>
</cmd>
<cmd name="VideoResolutionsChanged" id="9">
<comment
title="Video resolutions"
desc="Video resolutions.\n
This event informs about the recording AND streaming resolutions."
support="0901:3.4.0;090c:3.4.0;090e"
triggered="by [SetVideResolutions](#1-19-9)."/>
<arg name="type" type="enum">
Video resolution type.
<enum name="rec1080_stream480">
1080p recording, 480p streaming.
</enum>
<enum name="rec720_stream720">
720p recording, 720p streaming.
</enum>
</arg>
</cmd>
</class>
<class name="MediaStreaming" id="21">
Control media streaming behavior.
<cmd name="VideoEnable" id="0">
<comment
title="Enable/disable video streaming"
desc="Enable/disable video streaming."
support="0901;090c;090e"
result="The video stream is started or stopped.\n
Then, event [VideoStreamState](#1-22-0) is triggered."/>
<arg name="enable" type="u8">
1 to enable, 0 to disable.
</arg>
</cmd>
<cmd name="VideoStreamMode" id="1">
<comment
title="Set the stream mode"
desc="Set the stream mode."
support="0901;090c;090e"
result="The stream mode is set.\n
Then, event [VideoStreamMode](#1-22-1) is triggered."/>
<arg name="mode" type="enum">
stream mode
<enum name="low_latency">
Minimize latency with average reliability (best for piloting).
</enum>
<enum name="high_reliability">
Maximize the reliability with an average latency (best when streaming quality is important but not the latency).
</enum>
<enum name="high_reliability_low_framerate">
Maximize the reliability using a framerate decimation with an average latency (best when streaming quality is important but not the latency).
</enum>
</arg>
</cmd>
</class>
<class name="MediaStreamingState" id="22">
Media streaming status.
<cmd name="VideoEnableChanged" id="0">
<comment
title="Video stream state"
desc="Video stream state."
support="0901;090c;090e"
triggered="by [EnableOrDisableVideoStream](#1-21-0)."/>
<arg name="enabled" type="enum">
Current video streaming status.
<enum name="enabled">
Video streaming is enabled.
</enum>
<enum name="disabled">
Video streaming is disabled.
</enum>
<enum name="error">
Video streaming failed to start.
</enum>
</arg>
</cmd>
<cmd name="VideoStreamModeChanged" id="1">
Video stream mode state
<arg name="mode" type="enum">
stream mode
<enum name="low_latency">
Minimize latency with average reliability (best for piloting).
</enum>
<enum name="high_reliability">
Maximize the reliability with an average latency (best when streaming quality is important but not the latency).
</enum>
<enum name="high_reliability_low_framerate">
Maximize the reliability using a framerate decimation with an average latency (best when streaming quality is important but not the latency).
</enum>
</arg>
</cmd>
</class>
<class name="GPSSettings" id="23">
GPS settings
<cmd name="SetHome" id="0" deprecated="true">
<comment
title="Set home position"
desc="Set home position."/>
<arg name="latitude" type="double">
Home latitude in decimal degrees
</arg>
<arg name="longitude" type="double">
Home longitude in decimal degrees
</arg>
<arg name="altitude" type="double">
Home altitude in meters
</arg>
</cmd>
<cmd name="ResetHome" id="1" deprecated="true">
<comment
title="Reset home position"
desc="Reset home position."
support="0901;090c"
result="The home position is reset.\n
Then, event [HomeLocationReset](#1-24-1) is triggered."/>
</cmd>
<cmd name="SendControllerGPS" id="2">
<comment
title="Set controller gps location"
desc="Set controller gps location.\n
The user location might be used in case of return home, according to the home type and the accuracy of the given position. You can get the current home type with the event [HomeType](#1-24-4)."
support="0901;090c;090e"
result="The controller position is known by the drone.\n
Then, event [HomeLocation](#1-24-2) is triggered."/>
<arg name="latitude" type="double">
GPS latitude in decimal degrees
</arg>
<arg name="longitude" type="double">
GPS longitude in decimal degrees
</arg>
<arg name="altitude" type="double">
GPS altitude in meters
</arg>
<arg name="horizontalAccuracy" type="double">
Horizontal Accuracy in meter ; equal -1 if no horizontal Accuracy
</arg>
<arg name="verticalAccuracy" type="double">
Vertical Accuracy in meter ; equal -1 if no vertical Accuracy
</arg>
</cmd>
<cmd name="HomeType" id="3">
<comment
title="Set the preferred home type"
desc="Set the preferred home type.\n
Please note that this is only a preference. The actual type chosen is given by the event [HomeType](#1-31-2).\n
You can get the currently available types with the event [HomeTypeAvailability](#1-31-1)."
support="0901;090c;090e"
result="The user choice is known by the drone.\n
Then, event [PreferredHomeType](#1-24-4) is triggered."/>
<arg name="type" type="enum">
The type of the home position
<enum name="TAKEOFF">
The drone will try to return to the take off position
</enum>
<enum name="PILOT">
The drone will try to return to the pilot position
</enum>
<enum name="FOLLOWEE">
The drone will try to return to the target of the current (or last) follow me
</enum>
</arg>
</cmd>
<cmd name="ReturnHomeDelay" id="4">
<comment
title="Set the return home delay"
desc="Set the delay after which the drone will automatically try to return home after a disconnection."
support="0901;090c;090e"
result="The delay of the return home is set.\n
Then, event [ReturnHomeDelay](#1-24-5) is triggered."/>
<arg name="delay" type="u16">
Delay in second
</arg>
</cmd>
</class>
<class name="GPSSettingsState" id="24">
GPS settings state
<cmd name="HomeChanged" id="0">
<comment
title="Home location"
desc="Home location."
support="0901;090c;090e"
triggered="when [HomeType](#1-31-2) changes.
Or by [SetHomeLocation](#1-23-2) when [HomeType](#1-31-2) is Pilot.
Or regularly after [SetControllerGPS](#140-1) when [HomeType](#1-31-2) is FollowMeTarget.
Or at take off [HomeType](#1-31-2) is Takeoff.
Or when the first fix occurs and the [HomeType](#1-31-2) is FirstFix."/>
<arg name="latitude" type="double">
Home latitude in decimal degrees
</arg>
<arg name="longitude" type="double">
Home longitude in decimal degrees
</arg>
<arg name="altitude" type="double">
Home altitude in meters
</arg>
</cmd>
<cmd name="ResetHomeChanged" id="1" deprecated="true">
<comment
title="Home location has been reset"
desc="Home location has been reset."
support="0901;090c"
triggered="by [ResetHomeLocation](#1-23-1)."/>
<arg name="latitude" type="double">
Home latitude in decimal degrees
</arg>
<arg name="longitude" type="double">
Home longitude in decimal degrees
</arg>
<arg name="altitude" type="double">
Home altitude in meters
</arg>
</cmd>
<cmd name="GPSFixStateChanged" id="2">
<comment
title="Gps fix info"
desc="Gps fix info."
support="0901;090c;090e"
triggered="on change."/>
<arg name="fixed" type="u8">
1 if gps on drone is fixed, 0 otherwise
</arg>
</cmd>
<cmd name="GPSUpdateStateChanged" id="3" deprecated="true">
<comment
title="Gps update state"
desc="Gps update state."
support="0901;090c;090e"
triggered="on change."/>
<arg name="state" type="enum">
The state of the gps update
<enum name="updated">
Drone GPS update succeed
</enum>
<enum name="inProgress">
Drone GPS update In progress
</enum>
<enum name="failed">
Drone GPS update failed
</enum>
</arg>
</cmd>
<cmd name="HomeTypeChanged" id="4">
<comment
title="Preferred home type"
desc="User preference for the home type.\n
See [HomeType](#1-31-2) to get the drone actual home type."
support="0901;090c;090e"
triggered="by [SetPreferredHomeType](#1-23-3)."/>
<arg name="type" type="enum">
The type of the home position
<enum name="TAKEOFF">
The drone will try to return to the take off position
</enum>
<enum name="PILOT">
The drone will try to return to the pilot position
</enum>
<enum name="FOLLOWEE">
The drone will try to return to the target of the current (or last) follow me
</enum>
</arg>
</cmd>
<cmd name="ReturnHomeDelayChanged" id="5">
<comment
title="Return home delay"
desc="Return home trigger delay. This delay represents the time after which the return home is automatically triggered after a disconnection."
support="0901;090c;090e"
triggered="by [SetReturnHomeDelay](#1-23-4)."/>
<arg name="delay" type="u16">
Delay in second
</arg>
</cmd>
<cmd name="GeofenceCenterChanged" id="6">
<comment
title="Geofence center"
desc="Geofence center location. This location represents the center of the geofence zone.
This is updated at a maximum frequency of 1 Hz."
triggered="when [HomeChanged](#1-24-0) and when [GpsLocationChanged](#1-4-9) before takeoff."/>
<arg name="latitude" type="double">
GPS latitude in decimal degrees
</arg>
<arg name="longitude" type="double">
GPS longitude in decimal degrees
</arg>
</cmd>
</class>
<class name="CameraState" id="25">
Camera state
<cmd name="Orientation" id="0" buffer="NON_ACK" deprecated="true">
<comment
title="Camera orientation"
desc="Camera orientation."
support="0901;090c;090e"
triggered="by [SetCameraOrientation](#1-1-0)."/>
<arg name="tilt" type="i8">
Tilt camera consign for the drone [-100;100]
</arg>
<arg name="pan" type="i8">
Pan camera consign for the drone [-100;100]
</arg>
</cmd>
<cmd name="defaultCameraOrientation" id="1" deprecated="true">
<comment
title="Orientation of the camera center"
desc="Orientation of the center of the camera.\n
This is the value to send when you want to center the camera."
support="0901;090c;090e"
triggered="at connection."/>
<arg name="tilt" type="i8">
Tilt value (in degree)
</arg>
<arg name="pan" type="i8">
Pan value (in degree)
</arg>
</cmd>
<cmd name="OrientationV2" buffer="NON_ACK" id="2">
<comment
title="Camera orientation"
desc="Camera orientation with float arguments."
support="0901;090c;090e"
triggered="by [SetCameraOrientationV2](#1-1-1)"/>
<arg name="tilt" type="float">
Tilt camera consign for the drone [deg]
</arg>
<arg name="pan" type="float">
Pan camera consign for the drone [deg]
</arg>
</cmd>
<cmd name="defaultCameraOrientationV2" id="3">
<comment
title="Orientation of the camera center"
desc="Orientation of the center of the camera.\n
This is the value to send when you want to center the camera."
support="0901;090c;090e"
triggered="at connection."/>
<arg name="tilt" type="float">
Tilt value [deg]
</arg>
<arg name="pan" type="float">
Pan value [deg]
</arg>
</cmd>
<cmd name="VelocityRange" id="4">
<comment
title="Camera velocity range"
desc="Camera Orientation velocity limits."
support="0901;090c;090e"
triggered="at connection."/>
<arg name="max_tilt" type="float">
Absolute max tilt velocity [deg/s]
</arg>
<arg name="max_pan" type="float">
Absolute max pan velocity [deg/s]
</arg>
</cmd>
</class>
<class name="Antiflickering" id="29">
Anti-flickering related commands
<cmd name="electricFrequency" id="0">
<comment
title="Set the electric frequency"
desc="Set the electric frequency of the surrounding lights.\n
This is used to avoid the video flickering in auto mode. You can get the current antiflickering mode with the event [AntiflickeringModeChanged](#1-30-1)."
support="0901;090c"
result="The electric frequency is set.\n
Then, event [ElectricFrequency](#1-30-0) is triggered."/>
<arg name="frequency" type="enum">
Type of the electric frequency
<enum name="fiftyHertz">
Electric frequency of the country is 50hz
</enum>
<enum name="sixtyHertz">
Electric frequency of the country is 60hz
</enum>
</arg>
</cmd>
<cmd name="setMode" id="1">
<comment
title="Set the antiflickering mode"
desc="Set the antiflickering mode.\n
If auto, the drone will detect when flickers appears on the video and trigger the antiflickering.\n
In this case, this electric frequency it will use will be the one specified in the event [ElectricFrequency](#1-29-0).\n
Forcing the antiflickering (FixedFiftyHertz or FixedFiftyHertz) can reduce luminosity of the video."
support="0901;090c"
result="The antiflickering mode is set.\n
Then, event [AntiflickeringMode](#1-30-1) is triggered."/>
<arg name="mode" type="enum">
Mode of the anti flickering functionnality
<enum name="auto">
Anti flickering based on the electric frequency previously sent
</enum>
<enum name="FixedFiftyHertz">
Anti flickering based on a fixed frequency of 50Hz
</enum>
<enum name="FixedSixtyHertz">
Anti flickering based on a fixed frequency of 60Hz
</enum>
</arg>
</cmd>
</class>
<class name="AntiflickeringState" id="30">
Anti-flickering related states
<cmd name="electricFrequencyChanged" id="0">
<comment
title="Electric frequency"
desc="Electric frequency.\n
This piece of information is used for the antiflickering when the [AntiflickeringMode](#1-30-1) is set to *auto*."
support="0901;090c"
triggered="by [SetElectricFrequency](#1-29-0)."/>
<arg name="frequency" type="enum">
Type of the electric frequency
<enum name="fiftyHertz">
Electric frequency of the country is 50hz
</enum>
<enum name="sixtyHertz">
Electric frequency of the country is 60hz
</enum>
</arg>
</cmd>
<cmd name="modeChanged" id="1">
<comment
title="Antiflickering mode"
desc="Antiflickering mode."
support="0901;090c"
triggered="by [SetAntiflickeringMode](#1-29-1)."/>
<arg name="mode" type="enum">
Mode of the anti flickering functionnality
<enum name="auto">
Anti flickering based on the electric frequency previously sent
</enum>
<enum name="FixedFiftyHertz">
Anti flickering based on a fixed frequency of 50Hz
</enum>
<enum name="FixedSixtyHertz">
Anti flickering based on a fixed frequency of 60Hz
</enum>
</arg>
</cmd>
</class>
<class name="GPSState" id="31">
GPS related States
<cmd name="NumberOfSatelliteChanged" id="0">
<comment
title="Number of GPS satellites"
desc="Number of GPS satellites."
support="0901;090c;090e"
triggered="on change."/>
<arg name="numberOfSatellite" type="u8">
The number of satellite
</arg>
</cmd>
<cmd name="HomeTypeAvailabilityChanged" id="1" type="MAP_ITEM">
<comment
title="Home type availability"
desc="Home type availability."
support="0901;090c;090e"
triggered="when the availability of, at least, one type changes.\n
This might be due to controller position availability, gps fix before take off or other reason."/>
<arg name="type" type="enum">
The type of the return home
<enum name="TAKEOFF">
The drone has enough information to return to the take off position
</enum>
<enum name="PILOT">
The drone has enough information to return to the pilot position
</enum>
<enum name="FIRST_FIX">
The drone has not enough information, it will return to the first GPS fix
</enum>
<enum name="FOLLOWEE">
The drone has enough information to return to the target of the current (or last) follow me
</enum>
</arg>
<arg name="available" type="u8">
1 if this type is available, 0 otherwise
</arg>
</cmd>
<cmd name="HomeTypeChosenChanged" id="2">
<comment
title="Home type"
desc="Home type.\n
This choice is made by the drone, according to the [PreferredHomeType](#1-24-4) and the [HomeTypeAvailability](#1-31-1). The drone will choose the type matching with the user preference only if this type is available. If not, it will chose a type in this order:\n
FOLLOWEE ; TAKEOFF ; PILOT ; FIRST_FIX"
support="0901;090c;090e"
triggered="when the return home type chosen by the drone changes.\n
This might be produced by a user preference triggered by [SetPreferedHomeType](#1-23-3) or by a change in the [HomeTypesAvailabilityChanged](#1-31-1)."/>
<arg name="type" type="enum">
The type of the return home chosen
<enum name="TAKEOFF">
The drone will return to the take off position
</enum>
<enum name="PILOT">
The drone will return to the pilot position
In this case, the drone will use the position given by ARDrone3-SendControllerGPS
</enum>
<enum name="FIRST_FIX">
The drone has not enough information, it will return to the first GPS fix
</enum>
<enum name="FOLLOWEE">
The drone will return to the target of the current (or last) follow me
In this case, the drone will use the position of the target of the followMe (given by ControllerInfo-GPS)
</enum>
</arg>
</cmd>
</class>
<class name="PROState" id="32">
Pro features enabled on the Bebop
<cmd name="Features" id="0" deprecated="true">
<comment
title="Pro features"
desc="Pro features."/>
<arg name="features" type="u64">
Bitfield representing enabled features.
</arg>
</cmd>
</class>
<class name="AccessoryState" id="33">
Information about the connected accessories
<cmd name="ConnectedAccessories" id="0" type="MAP_ITEM">
<comment
title="List of connected accessories"
desc="List of all connected accessories.
This event presents the list of all connected accessories. To actually use the component, use the
component dedicated feature."
support="090e:1.5.0"
triggered="at connection or when an accessory is connected."/>
<arg name="id" type="u8">
Id of the accessory for the session.
</arg>
<arg name="accessory_type" type="enum">
Accessory type
<enum name="sequoia">
Parrot Sequoia (multispectral camera for agriculture)
</enum>
<enum name="flir">
FLIR camera (thermal+rgb camera)
</enum>
</arg>
<arg name="uid" type="string">
Unique Id of the accessory.
This id is unique by accessory_type.
</arg>
<arg name="swVersion" type="string">
Software Version of the accessory.
</arg>
<arg name="list_flags" type="u8">
List entry attribute Bitfield.
0x01: First: indicate it's the first element of the list.
0x02: Last: indicate it's the last element of the list.
0x04: Empty: indicate the list is empty (implies First/Last). All other arguments should be ignored.
0x08: Remove: This value should be removed from the existing list.
</arg>
</cmd>
<cmd name="Battery" id="1" type="MAP_ITEM">
<comment
title="Connected accessories battery"
desc="Connected accessories battery."
support="none"/>
<arg name="id" type="u8">
Id of the accessory for the session.
</arg>
<arg name="batteryLevel" type="u8">
Battery level in percentage.
</arg>
<arg name="list_flags" type="u8">
List entry attribute Bitfield.
0x01: First: indicate it's the first element of the list.
0x02: Last: indicate it's the last element of the list.
0x04: Empty: indicate the list is empty (implies First/Last). All other arguments should be ignored.
0x08: Remove: This value should be removed from the existing list.
</arg>
</cmd>
</class>
<class name="Sound" id="35">
Sounds related commands
<cmd name="StartAlertSound" id="0">
<comment
title="Start alert sound"
desc="Start the alert sound.
The alert sound can only be started when the drone is not flying."
support="none"
result="The drone makes a sound
and send back [AlertSoundState](#1-36-0) with state playing."/>
</cmd>
<cmd name="StopAlertSound" id="1">
<comment
title="Stop alert sound"
desc="Stop the alert sound."
support="none"
result="The drone stops its alert sound
and send back [AlertSoundState](#1-36-0) with state stopped."/>
</cmd>
</class>
<class name="SoundState" id="36">
Sounds related events
<cmd name="AlertSound" id="0">
<comment
title="Alert sound state"
desc="Alert sound state."
support="none"
triggered="by [StartAlertSound](#1-35-0) or [StopAlertSound](#1-35-1)
or when the drone starts or stops to play an alert sound by itself."/>
<arg name="state" type="enum">
State of the alert sound
<enum name="stopped">
Alert sound is not playing
</enum>
<enum name="playing">
Alert sound is playing
</enum>
</arg>
</cmd>
</class>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<project name="common" id="0">
All common commands shared between all projects
<class name="Network" id="0">
Network related commands
<cmd name="Disconnect" id="0" deprecated="true">
<comment
title="Signals the remote that the host will disconnect"
desc="Signals the remote that the host will disconnect.\n"
support="none"
result="None"/>
</cmd>
</class>
<class name="NetworkEvent" id="1">
Network Event from product
<cmd name="Disconnection" id="0" content="NOTIFICATION">
<comment
title="Drone will disconnect"
desc="Drone will disconnect.\n
This event is mainly triggered when the user presses on the power button of the product.\n\n
**This event is a notification, you can't retrieve it in the cache of the device controller.**"
support="0901;090c"
triggered="mainly when the user presses the power button of the drone."/>
<arg name="cause" type="enum">
Cause of the disconnection of the product
<enum name="off_button">
The button off has been pressed
</enum>
<enum name="unknown">
Unknown generic cause
</enum>
</arg>
</cmd>
</class>
<class name="Settings" id="2">
Settings commands
<cmd name="AllSettings" id="0" timeout="RETRY">
<comment
title="Ask for all settings"
desc="Ask for all settings.\n\n
**Please note that you should not send this command if you are using the\n
libARController API as this library is handling the connection process for you.**"
support="drones"
result="The product will trigger all settings events (such as [CameraSettings](#0-15-0), or product specific settings as the [MaxAltitude](#1-6-0) for the Bebop).\n
Then, it will trigger [AllSettingsEnd](#0-3-0)."/>
</cmd>
<cmd name="Reset" id="1">
<comment
title="Reset all settings"
desc="Reset all settings."
support="drones"
result="It will trigger [ResetChanged](#0-3-1).\n
Then, the product will trigger all settings events (such as [CameraSettings](#0-15-0), or product specific settings as the [MaxAltitude](#1-6-0) for the Bebop) with factory values."/>
</cmd>
<cmd name="ProductName" id="2">
<comment
title="Set product name"
desc="Set the product name.\n
It also sets the name of the SSID for Wifi products and advertisement name for BLE products (changed after a reboot of the product)."
support="drones"
result="Name is changed.\n
Then, it will trigger [NameChanged](#0-3-2)."/>
<arg name="name" type="string">
Product name
</arg>
</cmd>
<cmd name="Country" id="3">
<comment
title="Set the country"
desc="Set the country for Wifi products.\n
This can modify Wifi band and/or channel.\n
**Please note that you might be disconnected from the product after changing the country as it changes Wifi parameters.**"
support="0901;0902;0905;0906;090c;090e"
result="The country is set.\n
Then, it will trigger [CountryChanged](#0-3-6)."/>
<arg name="code" type="string">
Country code with ISO 3166 format
</arg>
</cmd>
<cmd name="AutoCountry" id="4">
<comment
title="Enable auto-country"
desc="Enable auto-country.\n
If auto-country is set, the drone will guess its Wifi country by itself by checking other Wifi country around it.\n
**Please note that you might be disconnected from the product after changing the country as it changes Wifi parameters.**"
support="0901;0902;0905;0906;090c;090e"
result="The auto-country of the product is changed.\n
Then, it will trigger [AutoCountryChanged](#0-3-7) and [CountryChanged](#0-3-6)."/>
<arg name="automatic" type="u8">
Boolean : 0 : Manual / 1 : Auto
</arg>
</cmd>
</class>
<class name="SettingsState" id="3">
Settings state from product
<cmd name="AllSettingsChanged" id="0" timeout="RETRY">
<comment
title="All settings have been sent"
desc="All settings have been sent.\n\n
**Please note that you should not care about this event if you are using the libARController API as this library is handling the connection process for you.**"
support="drones"
triggered="when all settings values have been sent."/>
</cmd>
<cmd name="ResetChanged" id="1">
<comment
title="All settings have been reset"
desc="All settings have been reset."
support="drones"
triggered="by [ResetSettings](#0-2-1)."/>
</cmd>
<cmd name="ProductNameChanged" id="2">
<comment
title="Product name changed"
desc="Product name changed."
support="drones"
triggered="by [SetProductName](#0-2-2)."/>
<arg name="name" type="string">
Product name
</arg>
</cmd>
<cmd name="ProductVersionChanged" id="3">
<comment
title="Product version"
desc="Product version."
support="drones"
triggered="during the connection process."/>
<arg name="software" type="string">
Product software version
</arg>
<arg name="hardware" type="string">
Product hardware version
</arg>
</cmd>
<cmd name="ProductSerialHighChanged" id="4">
<comment
title="Product serial (1st part)"
desc="Product serial (1st part)."
support="drones"
triggered="during the connection process."/>
<arg name="high" type="string">
Serial high number (hexadecimal value)
</arg>
</cmd>
<cmd name="ProductSerialLowChanged" id="5">
<comment
title="Product serial (2nd part)"
desc="Product serial (2nd part)."
support="drones"
triggered="during the connection process."/>
<arg name="low" type="string">
Serial low number (hexadecimal value)
</arg>
</cmd>
<cmd name="CountryChanged" id="6" timeout="RETRY">
<comment
title="Country changed"
desc="Country changed."
support="drones"
triggered="by [SetCountry](#0-2-3)."/>
<arg name="code" type="string">
Country code with ISO 3166 format, empty string means unknown country.
</arg>
</cmd>
<cmd name="AutoCountryChanged" id="7">
<comment
title="Auto-country changed"
desc="Auto-country changed."
support="drones"
triggered="by [SetAutoCountry](#0-2-4)."/>
<arg name="automatic" type="u8">
Boolean : 0 : Manual / 1 : Auto
</arg>
</cmd>
</class>
<class name="Common" id="4">
Common commands
<cmd name="AllStates" id="0" timeout="RETRY">
<comment
title="Ask for all states"
desc="Ask for all states.\n\n
**Please note that you should not send this command if you are using the\n
libARController API as this library is handling the connection process for you.**"
support="drones"
result="The product will trigger all states events (such as [FlyingState](#1-4-1) for the Bebop).\n
Then, it will trigger [AllStatesEnd](#0-5-0)."/>
</cmd>
<cmd name="CurrentDate" id="1">
<comment
title="Set the date"
desc="Set the date.\n
This date is taken by the drone as its own date.\n
So medias and other files will be dated from this date\n\n
**Please note that you should not send this command if you are using the\n
libARController API as this library is handling the connection process for you.**"
support="drones"
result="The date of the product is set.\n
Then, it will trigger [DateChanged](#0-5-4)."/>
<arg name="date" type="string">
Date with ISO-8601 format
</arg>
</cmd>
<cmd name="CurrentTime" id="2">
<comment
title="Set the time"
desc="Set the time.\n
This time is taken by the drone as its own time.\n
So medias and other files will be dated from this time\n\n
**Please note that you should not send this command if you are using the\n
libARController API as this library is handling the connection process for you.**"
support="drones"
result="The time of the product is set.\n
Then, it will trigger [TimeChanged](#0-5-5)."/>
<arg name="time" type="string">
Time with ISO-8601 format
</arg>
</cmd>
<cmd name="Reboot" id="3">
<comment
title="Reboot"
desc="Reboot the product.\n
The product will accept this command only if is not flying."
support="drones"
result="The product will reboot if it can."/>
</cmd>
</class>
<class name="CommonState" id="5">
Common state from product
<cmd name="AllStatesChanged" id="0" timeout="RETRY">
<comment
title="All states have been sent"
desc="All states have been sent.\n\n
**Please note that you should not care about this event if you are using the libARController API as this library is handling the connection process for you.**"
support="drones"
triggered="when all states values have been sent."/>
</cmd>
<cmd name="BatteryStateChanged" id="1" buffer="NON_ACK">
<comment
title="Battery state"
desc="Battery state."
support="drones"
triggered="when the battery level changes."/>
<arg name="percent" type="u8">
Battery percentage
</arg>
</cmd>
<cmd name="MassStorageStateListChanged" id="2" type="MAP_ITEM">
<comment
title="Mass storage state list"
desc="Mass storage state list."
support="drones"
triggered="when a mass storage is inserted or ejected."/>
<arg name="mass_storage_id" type="u8">
Mass storage id (unique)
</arg>
<arg name="name" type="string">
Mass storage name
</arg>
</cmd>
<cmd name="MassStorageInfoStateListChanged" id="3" type="MAP_ITEM">
<comment
title="Mass storage info state list"
desc="Mass storage info state list."
support="drones"
triggered="when a mass storage info changes."/>
<arg name="mass_storage_id" type="u8">
Mass storage state id (unique)
</arg>
<arg name="size" type="u32">
Mass storage size in MBytes
</arg>
<arg name="used_size" type="u32">
Mass storage used size in MBytes
</arg>
<arg name="plugged" type="u8">
Mass storage plugged (1 if mass storage is plugged, otherwise 0)
</arg>
<arg name="full" type="u8">
Mass storage full information state (1 if mass storage full, 0 otherwise).
</arg>
<arg name="internal" type="u8">
Mass storage internal type state (1 if mass storage is internal, 0 otherwise)
</arg>
</cmd>
<cmd name="CurrentDateChanged" id="4">
<comment
title="Date changed"
desc="Date changed.\n
Corresponds to the latest date set on the drone.\n\n
**Please note that you should not care about this event if you are using the libARController API as this library is handling the connection process for you.**"
support="drones"
triggered="by [SetDate](#0-4-1)."/>
<arg name="date" type="string">
Date with ISO-8601 format
</arg>
</cmd>
<cmd name="CurrentTimeChanged" id="5">
<comment
title="Time changed"
desc="Time changed.\n
Corresponds to the latest time set on the drone.\n\n
**Please note that you should not care about this event if you are using the libARController API as this library is handling the connection process for you.**"
support="drones"
triggered="by [SetTime](#0-4-2)."/>
<arg name="time" type="string">
Time with ISO-8601 format
</arg>
</cmd>
<cmd name="MassStorageInfoRemainingListChanged" id="6" type="LIST_ITEM" deprecated="true">
<comment
title="Mass storage remaining data list"
desc="Mass storage remaining data list."/>
<arg name="free_space" type="u32">
Mass storage free space in MBytes
</arg>
<arg name="rec_time" type="u16">
Mass storage record time reamining in minute
</arg>
<arg name="photo_remaining" type="u32">
Mass storage photo remaining
</arg>
</cmd>
<cmd name="WifiSignalChanged" id="7" buffer="NON_ACK">
<comment
title="Rssi changed"
desc="Rssi (Wifi Signal between controller and product) changed."
support="0901;0902;0905;0906;090c;090e"
triggered="regularly."/>
<arg name="rssi" type="i16">
RSSI of the signal between controller and the product (in dbm)
</arg>
</cmd>
<cmd name="SensorsStatesListChanged" id="8" type="MAP_ITEM">
<comment
title="Sensors state list"
desc="Sensors state list."
support="0901:2.0.3;0902;0905;0906;0907;0909;090a;090c;090e"
triggered="at connection and when a sensor state changes."/>
<arg name="sensorName" type="enum">
Sensor name
<enum name="IMU">
Inertial Measurement Unit sensor
</enum>
<enum name="barometer">
Barometer sensor
</enum>
<enum name="ultrasound">
Ultrasonic sensor
</enum>
<enum name="GPS">
GPS sensor
</enum>
<enum name="magnetometer">
Magnetometer sensor
</enum>
<enum name="vertical_camera">
Vertical Camera sensor
</enum>
</arg>
<arg name="sensorState" type="u8">
Sensor state (1 if the sensor is OK, 0 if the sensor is NOT OK)
</arg>
</cmd>
<cmd name="ProductModel" id="9">
<comment
title="Product sub-model"
desc="Product sub-model.\n
This can be used to customize the UI depending on the product."
support="0905;0906;0907;0909"
triggered="at connection."/>
<arg name="model" type="enum">
The Model of the product.
<enum name="RS_TRAVIS">
Travis (RS taxi) model.
</enum>
<enum name="RS_MARS">
Mars (RS space) model
</enum>
<enum name="RS_SWAT">
SWAT (RS SWAT) model
</enum>
<enum name="RS_MCLANE">
Mc Lane (RS police) model
</enum>
<enum name="RS_BLAZE">
Blaze (RS fire) model
</enum>
<enum name="RS_ORAK">
Orak (RS carbon hydrofoil) model
</enum>
<enum name="RS_NEWZ">
New Z (RS wooden hydrofoil) model
</enum>
<enum name="JS_MARSHALL">
Marshall (JS fire) model
</enum>
<enum name="JS_DIESEL">
Diesel (JS SWAT) model
</enum>
<enum name="JS_BUZZ">
Buzz (JS space) model
</enum>
<enum name="JS_MAX">
Max (JS F1) model
</enum>
<enum name="JS_JETT">
Jett (JS flames) model
</enum>
<enum name="JS_TUKTUK">
Tuk-Tuk (JS taxi) model
</enum>
<enum name="SW_BLACK">
Swing black model
</enum>
<enum name="SW_WHITE">
Swing white model
</enum>
</arg>
</cmd>
<cmd name="CountryListKnown" id="10" type="LIST_ITEM" deprecated="true">
<comment
title="Country list"
desc="List of countries known by the drone."/>
<arg name="listFlags" type="u8">
List entry attribute Bitfield.
0x01: First: indicate it's the first element of the list.
0x02: Last: indicate it's the last element of the list.
0x04: Empty: indicate the list is empty (implies First/Last). All other arguments should be ignored.
</arg>
<arg name="countryCodes" type="string">
Following of country code with ISO 3166 format, separated by ";". Be careful of the command size allowed by the network used. If necessary, split the list in several commands.
</arg>
</cmd>
<cmd name="DeprecatedMassStorageContentChanged" id="11" type="MAP_ITEM" deprecated="true">
<comment
title="Mass storage content changed"
desc="Mass storage content changed."/>
<arg name="mass_storage_id" type="u8">
Mass storage id (unique)
</arg>
<arg name="nbPhotos" type="u16">
Number of photos (does not include raw photos)
</arg>
<arg name="nbVideos" type="u16">
Number of videos
</arg>
<arg name="nbPuds" type="u16">
Number of puds
</arg>
<arg name="nbCrashLogs" type="u16">
Number of crash logs
</arg>
</cmd>
<cmd name="MassStorageContent" id="12" type="MAP_ITEM">
<comment
title="Mass storage content"
desc="Mass storage content."
support="090c:4.0.0;090e:4.0.0"
triggered="when the content of the mass storage changes."/>
<arg name="mass_storage_id" type="u8">
Mass storage id (unique)
</arg>
<arg name="nbPhotos" type="u16">
Number of photos (does not include raw photos)
</arg>
<arg name="nbVideos" type="u16">
Number of videos
</arg>
<arg name="nbPuds" type="u16">
Number of puds
</arg>
<arg name="nbCrashLogs" type="u16">
Number of crash logs
</arg>
<arg name="nbRawPhotos" type="u16">
Number of raw photos
</arg>
</cmd>
<cmd name="MassStorageContentForCurrentRun" id="13" type="MAP_ITEM">
<comment
title="Mass storage content for current run"
desc="Mass storage content for current run.\n
Only counts the files related to the current run (see [RunId](#0-30-0))"
support="090c:4.0.0;090e:4.0.0"
triggered="when the content of the mass storage changes and this content is related to the current run."/>
<arg name="mass_storage_id" type="u8">
Mass storage id (unique)
</arg>
<arg name="nbPhotos" type="u16">
Number of photos (does not include raw photos)
</arg>
<arg name="nbVideos" type="u16">
Number of videos
</arg>
<arg name="nbRawPhotos" type="u16">
Number of raw photos
</arg>
</cmd>
<cmd name="VideoRecordingTimestamp" id="14">
<comment
title="Video recording timestamp"
desc="Current or last video recording timestamp.\n
Timestamp in milliseconds since 00:00:00 UTC on 1 January 1970.\n
**Please note that values don't persist after drone reboot**"
triggered="on video recording start and video recording stop or \n
after that the date/time of the drone changed."/>
<arg name="startTimestamp" type="u64">
Timestamp in milliseconds since 00:00:00 UTC on 1 January 1970.
</arg>
<arg name="stopTimestamp" type="u64">
Timestamp in milliseconds since 00:00:00 UTC on 1 January 1970. 0 mean that video is still recording.
</arg>
</cmd>
</class>
<class name="OverHeat" id="6">
Over heat commands
<cmd name="SwitchOff" id="0" deprecated="true">
<comment
title="Switch off after an overheat"
desc="Switch off after an overheat."
support="none"
result="None"/>
</cmd>
<cmd name="Ventilate" id="1" deprecated="true">
<comment
title="Ventilate after an overheat"
desc="Ventilate after an overheat."
support="none"
result="None"/>
</cmd>
</class>
<class name="OverHeatState" id="7">
Overheat state from product
<cmd name="OverHeatChanged" id="0" deprecated="true">
<comment
title="Overheat"
desc="Overheat temperature reached."/>
</cmd>
<cmd name="OverHeatRegulationChanged" id="1">
<comment
title="Overheat regulation type"
desc="Overheat regulation type."/>
<arg name="regulationType" type="u8">
Type of overheat regulation : 0 for ventilation, 1 for switch off
</arg>
</cmd>
</class>
<class name="Controller" id="8">
Notify the device about the state of the controller application.
<cmd name="isPiloting" id="0">
<comment
title="Inform about hud entering"
desc="Inform about hud entering.\n
Tell the drone that the controller enters/leaves the piloting hud.\n
On a non-flying products it is used to know when a run begins."
support="drones"
result="If yes, the product will begin a new session (so it should send a new [runId](#0-30-0)).\n
Also, on the JumpingSumos, if the video is in autorecord mode, it will start recording."/>
<arg name="piloting" type="u8">
0 when the application is not in the piloting HUD, 1 when it enters the HUD.
</arg>
</cmd>
</class>
<class name="WifiSettings" id="9">
Wifi settings commands
<cmd name="OutdoorSetting" id="0">
<comment
title="Set wifi outdoor mode"
desc="Set wifi indoor/outdoor mode.\n
**Please note that you might be disconnected from the product after changing the indoor/outdoor setting as it changes Wifi parameters.**"
support="0901;0902;0905;0906;090c;090e"
result="The product change its indoor/outdoor wifi settings.\n
Then, it will trigger [WifiOutdoorMode](#0-10-0)."/>
<arg name="outdoor" type="u8">
1 if it should use outdoor wifi settings, 0 otherwise
</arg>
</cmd>
</class>
<class name="WifiSettingsState" id="10">
Wifi settings state from product
<cmd name="outdoorSettingsChanged" id="0">
<comment
title="Wifi outdoor mode"
desc="Wifi outdoor mode."
support="0901;0902;0905;0906;090c;090e"
triggered="by [SetWifiOutdoorMode](#0-9-0)."/>
<arg name="outdoor" type="u8">
1 if it should use outdoor wifi settings, 0 otherwise
</arg>
</cmd>
</class>
<class name="Mavlink" id="11">
Mavlink flight plans commands
<cmd name="Start" id="0">
<comment
title="Start a FlightPlan"
desc="Start a FlightPlan based on a mavlink file existing on the drone.\n\n
Requirements are:\n
* Product is calibrated\n
* Product should be in outdoor mode\n
* Product has fixed its GPS\n"
support="0901:2.0.29;090c;090e"
result="If the FlightPlan has been started, event [FlightPlanPlayingStateChanged](#0-12-0) is triggered with param state set to *playing*.\n
Otherwise, event [FlightPlanPlayingStateChanged](#0-12-0) is triggered with param state set to stopped and event [MavlinkPlayErrorStateChanged](#0-12-1) is triggered with an explanation of the error."/>
<arg name="filepath" type="string">
flight plan file path from the mavlink ftp root
</arg>
<arg name="type" type="enum">
type of the played mavlink file
<enum name="flightPlan">
Mavlink file for FlightPlan
</enum>
<enum name="mapMyHouse">
Mavlink file for MapMyHouse
</enum>
</arg>
</cmd>
<cmd name="Pause" id="1">
<comment
title="Pause a FlightPlan"
desc="Pause a FlightPlan that was playing.\n
To unpause a FlightPlan, see [StartFlightPlan](#0-11-0)\n"
support="0901:2.0.29;090c;090e"
result="The currently playing FlightPlan will be paused. Then, event [FlightPlanPlayingStateChanged](#0-12-0) is triggered with param state set to the current state of the FlightPlan (should be *paused* if everything went well)."/>
</cmd>
<cmd name="Stop" id="2">
<comment
title="Stop a FlightPlan"
desc="Stop a FlightPlan that was playing.\n"
support="0901:2.0.29;090c;090e"
result="The currently playing FlightPlan will be stopped. Then, event [FlightPlanPlayingStateChanged](#0-12-0) is triggered with param state set to the current state of the FlightPlan (should be *stopped* if everything went well)."/>
</cmd>
</class>
<class name="MavlinkState" id="12">
Mavlink flight plans states commands
<cmd name="MavlinkFilePlayingStateChanged" id="0">
<comment
title="Playing state of a FlightPlan"
desc="Playing state of a FlightPlan."
support="0901:2.0.29;090c;090e"
triggered="by [StartFlightPlan](#0-11-0), [PauseFlightPlan](#0-11-1) or [StopFlightPlan](#0-11-2)."/>
<arg name="state" type="enum">
State of the mavlink
<enum name="playing">
Mavlink file is playing
</enum>
<enum name="stopped">
Mavlink file is stopped (arg filepath and type are useless in this state)
</enum>
<enum name="paused">
Mavlink file is paused
</enum>
<enum name="loaded">
Mavlink file is loaded (it will be played at take-off)
</enum>
</arg>
<arg name="filepath" type="string">
flight plan file path from the mavlink ftp root
</arg>
<arg name="type" type="enum">
type of the played mavlink file
<enum name="flightPlan">
Mavlink file for FlightPlan
</enum>
<enum name="mapMyHouse">
Mavlink file for MapMyHouse
</enum>
</arg>
</cmd>
<cmd name="MavlinkPlayErrorStateChanged" id="1" deprecated="true">
<comment
title="FlightPlan error"
desc="FlightPlan error."
support="0901:2.0.29;090c;090e"
triggered="by [StartFlightPlan](#0-11-0) if an error occurs."/>
<arg name="error" type="enum">
State of play error
<enum name="none">
There is no error
</enum>
<enum name="notInOutDoorMode">
The drone is not in outdoor mode
</enum>
<enum name="gpsNotFixed">
The gps is not fixed
</enum>
<enum name="notCalibrated">
The magnetometer of the drone is not calibrated
</enum>
</arg>
</cmd>
<cmd name="MissionItemExecuted" id="2" content="NOTIFICATION">
<comment
title="Mission item executed"
desc="Mission item has been executed."
support="090c:4.2.0;090e:1.4.0"
triggered="when a mission item has been executed during a flight plan."/>
<arg name="idx" type="u32">
Index of the mission item. This is the place of the mission item in the list of the items of the mission.
Begins at 0.
</arg>
</cmd>
</class>
<class name="FlightPlanSettings" id="32">
<cmd name="ReturnHomeOnDisconnect" id="0">
<comment
title="Set ReturnHome behavior during FlightPlan"
desc="Set ReturnHome behavior during FlightPlan\n
When set, drone will return home, after return home delay, if a disconnection occurs during execution of FlightPlan"
support="0901:4.1.0;090c:4.1.0;090e:1.4.0"
result="The return home mode is enabled or disabled.\n
Then, event [ReturnHomeOnDisconnectionChanged](#0-33-0) is triggered."/>
<arg name="value" type="u8">
1 to enable, 0 to disable
</arg>
</cmd>
</class>
<class name="FlightPlanSettingsState" id="33">
<cmd name="ReturnHomeOnDisconnectChanged" id="0">
<comment
title="ReturnHome behavior during FlightPlan"
desc="Define behavior of drone when disconnection occurs during a flight plan"
support="0901:4.1.0;090c:4.1.0;090e:1.4.0"
triggered="by [setReturnHomeOnDisconnectMode](#0-32-0)."/>
<arg name="state" type="u8">
1 if enabled, 0 if disabled
</arg>
<arg name="isReadOnly" type="u8">
1 if readOnly, 0 if writable
</arg>
</cmd>
</class>
<class name="Calibration" id="13">
Calibration commands
<cmd name="MagnetoCalibration" id="0">
<comment
title="Start/Abort magnetometer calibration"
desc="Start or abort magnetometer calibration process.\n"
support="0901;090c;090e"
result="The magnetometer calibration process is started or aborted. Then, event [MagnetoCalibrationStartedChanged](#0-14-3) is triggered.\n
If started, event [MagnetoCalibrationStateChanged](#0-14-3) is triggered with the current calibration state: a list of all axis and their calibration states.\n
It will also trigger [MagnetoCalibrationAxisToCalibrateChanged](#0-14-2), that will inform the controller about the current axis to calibrate."/>
<arg name="calibrate" type="u8">
1 if the calibration should be started, 0 if it should be aborted
</arg>
</cmd>
<cmd name="PitotCalibration" id="1">
<comment
title="Start/Abort Pitot calibration"
desc="Start or abort Pitot tube calibration process.\n"
support="090e:1.1.0"
result="The pitot calibration process is started or aborted. Then, event [PitotCalibrationStateChanged](#0-14-4) is triggered with the current calibration state."/>
<arg name="calibrate" type="u8">
1 if the calibration should be started, 0 if it should be aborted
</arg>
</cmd>
</class>
<class name="CalibrationState" id="14">
Status of the calibration
<cmd name="MagnetoCalibrationStateChanged" id="0">
<comment
title="Magneto calib process axis state"
desc="Magneto calib process axis state."
support="0901;090c;090e"
triggered="when the calibration process is started with [StartOrAbortMagnetoCalib](#0-13-0) and each time an axis calibration state changes."/>
<arg name="xAxisCalibration" type="u8">
State of the x axis (roll) calibration : 1 if calibration is done, 0 otherwise
</arg>
<arg name="yAxisCalibration" type="u8">
State of the y axis (pitch) calibration : 1 if calibration is done, 0 otherwise
</arg>
<arg name="zAxisCalibration" type="u8">
State of the z axis (yaw) calibration : 1 if calibration is done, 0 otherwise
</arg>
<arg name="calibrationFailed" type="u8">
1 if calibration has failed, 0 otherwise. If this arg is 1, consider all previous arg as 0
</arg>
</cmd>
<cmd name="MagnetoCalibrationRequiredState" id="1">
<comment
title="Calibration required"
desc="Calibration required."
support="0901;090c;090e"
triggered="when the calibration requirement changes."/>
<arg name="required" type="u8">
1 if calibration is required, 0 if current calibration is still valid
</arg>
</cmd>
<cmd name="MagnetoCalibrationAxisToCalibrateChanged" id="2">
<comment
title="Axis to calibrate during calibration process"
desc="Axis to calibrate during calibration process."
support="0901;090c;090e"
triggered="during the calibration process when the axis to calibrate changes."/>
<arg name="axis" type="enum">
The axis to calibrate
<enum name="xAxis">
If the current calibration axis should be the x axis
</enum>
<enum name="yAxis">
If the current calibration axis should be the y axis
</enum>
<enum name="zAxis">
If the current calibration axis should be the z axis
</enum>
<enum name="none">
If none of the axis should be calibrated
</enum>
</arg>
</cmd>
<cmd name="MagnetoCalibrationStartedChanged" id="3">
<comment
title="Calibration process state"
desc="Calibration process state."
support="0901;090c;090e"
triggered="by [StartOrAbortMagnetoCalib](#0-13-0) or when the process ends because it succeeded."/>
Status of the calibration process
<arg name="started" type="u8">
1 if calibration has started, 0 otherwise
</arg>
</cmd>
<cmd name="PitotCalibrationStateChanged" id="4">
Sent when the state of the pitot calibration has changed
<arg name="state" type="enum">
State of pitot calibration
<enum name="done">
Calibration is ok
</enum>
<enum name="ready">
Calibration is started, waiting user action
</enum>
<enum name="in_progress">
Calibration is in progress
</enum>
<enum name="required">
Calibration is required
</enum>
</arg>
<arg name="lastError" type="u8">
lastError : 1 if an error occured and 0 if not
</arg>
</cmd>
</class>
<class name="CameraSettingsState" id="15">
Status of the camera settings
<cmd name="CameraSettingsChanged" id="0">
<comment
title="Camera info"
desc="Camera info."
support="0901;090c;090e"
triggered="at connection."/>
<arg name="fov" type="float">
Value of the camera horizontal fov (in degree)
</arg>
<arg name="panMax" type="float">
Value of max pan (right pan) (in degree)
</arg>
<arg name="panMin" type="float">
Value of min pan (left pan) (in degree)
</arg>
<arg name="tiltMax" type="float">
Value of max tilt (top tilt) (in degree)
</arg>
<arg name="tiltMin" type="float">
Value of min tilt (bottom tilt) (in degree)
</arg>
</cmd>
</class>
<class name="GPS" id="16">
GPS related commands
<cmd name="ControllerPositionForRun" id="0">
<comment
title="Set the position of a run"
desc="Set the position of a run.\n
This will let the product know the controller location for the flight/run. The location is typically used to geotag medias.\n
Only used on products that have no gps.\n
Watch out, this command is not used by BLE products."
support="0902;0905;0906"
result="The position is set."/>
<arg name="latitude" type="double">
Controller latitude in decimal degrees
</arg>
<arg name="longitude" type="double">
Controller longitude in decimal degrees
</arg>
</cmd>
</class>
<class name="FlightPlanState" id="17">
FlightPlan state commands
<cmd name="AvailabilityStateChanged" id="0">
<comment
title="FlightPlan availability"
desc="FlightPlan availability.\n
Availability is linked to GPS fix, magnetometer calibration, sensor states..."
support="0901:2.0.29;090c;090e"
triggered="on change."/>
<arg name="AvailabilityState" type="u8">
Running a flightPlan file is available (1 running a flightPlan file is available, otherwise 0)
</arg>
</cmd>
<cmd name="ComponentStateListChanged" id="1" type="MAP_ITEM">
<comment
title="FlightPlan components state list"
desc="FlightPlan components state list."
support="0901:2.0.29;090c;090e"
triggered="when the state of required components changes. \n
GPS component is triggered when the availability of the GPS of the drone changes. \n
Calibration component is triggered when the calibration state of the drone sensors changes \n
Mavlink_File component is triggered when the command [StartFlightPlan](#0-11-0) is received. \n
Takeoff component is triggered when the drone needs to take-off to continue the FlightPlan. \n
WaypointsBeyondGeofence component is triggered when the command [StartFlightPlan](#0-11-0) is received."/>
<arg name="component" type="enum">
Drone FlightPlan component id (unique)
<enum name="GPS">
Drone GPS component.
State is 0 when the drone needs a GPS fix.
</enum>
<enum name="Calibration">
Drone Calibration component.
State is 0 when the sensors of the drone needs to be calibrated.
</enum>
<enum name="Mavlink_File">
Mavlink file component.
State is 0 when the mavlink file is missing or contains error.
</enum>
<enum name="TakeOff">
Drone Take off component.
State is 0 when the drone cannot take-off.
</enum>
<enum name="WaypointsBeyondGeofence">
Component for waypoints beyond the geofence.
State is 0 when one or more waypoints are beyond the geofence.
</enum>
</arg>
<arg name="State" type="u8">
State of the FlightPlan component (1 FlightPlan component OK, otherwise 0)
</arg>
</cmd>
<cmd name="LockStateChanged" id="2">
<comment
title="FlightPlan lock state"
desc="FlightPlan lock state.\n
Represents the fact that the controller is able or not to stop or pause a playing FlightPlan"
support="0901:2.0.29;090c;090e"
triggered="when the lock changes."/>
<arg name="LockState" type="u8">
1 if FlightPlan is locked: can't pause or stop FlightPlan.
0 if FlightPlan is unlocked: pause or stop available.
</arg>
</cmd>
</class>
<class name="FlightPlanEvent" id="19">
FlightPlan Event commands
<cmd name="StartingErrorEvent" id="0" content="NOTIFICATION">
<comment
title="FlightPlan start error"
desc="FlightPlan start error.\n\n
**This event is a notification, you can't retrieve it in the cache of the device controller.**"
support="0901:2.0.29;090c;090e"
triggered="on an error after a [StartFlightPlan](#0-11-0)."/>
</cmd>
<cmd name="SpeedBridleEvent" id="1" content="NOTIFICATION">
<comment
title="FlightPlan speed clamping"
desc="FlightPlan speed clamping.\n
Sent when a speed specified in the FlightPlan file is considered too high by the drone.\n\n
**This event is a notification, you can't retrieve it in the cache of the device controller.**"
support="none"
triggered="on an speed related clamping after a [StartFlightPlan](#0-11-0)."/>
</cmd>
</class>
<class name="ARLibsVersionsState" id="18">
ARlibs Versions Commands
<cmd name="ControllerLibARCommandsVersion" id="0">
Controller libARCommands version
<arg name="version" type="string">
version of libARCommands ("1.2.3.4" format)
</arg>
</cmd>
<cmd name="SkyControllerLibARCommandsVersion" id="1">
SkyController libARCommands version
<arg name="version" type="string">
version of libARCommands ("1.2.3.4" format)
</arg>
</cmd>
<cmd name="DeviceLibARCommandsVersion" id="2">
Device libARCommands version
<arg name="version" type="string">
version of libARCommands ("1.2.3.4" format)
</arg>
</cmd>
</class>
<class name="Audio" id="20">
Audio-related commands.
<cmd name="ControllerReadyForStreaming" id="0">
<comment
title="Set audio stream direction"
desc="Set audio stream direction."
support="0905;0906"
result="The audio stream direction is set.\n
Then, event [AudioStreamDirection](#0-21-0) is triggered."/>
<arg name="ready" type="u8">
Bit field for TX and RX ready.
bit 0 is 1 if controller is ready and wants to receive sound (Drone TX)
bit 1 is 1 if controller is ready and wants to send sound (Drone RX)
</arg>
</cmd>
</class>
<class name="AudioState" id="21">
Audio-related state updates.
<cmd name="AudioStreamingRunning" id="0">
<comment
title="Audio stream direction"
desc="Audio stream direction."
support="0905;0906"
triggered="by [SetAudioStreamDirection](#0-20-0)."/>
<arg name="running" type="u8">
Bit field for TX and RX running
bit 0 is 1 if Drone TX is running
bit 1 is 1 if Drone RX is running
</arg>
</cmd>
</class>
<class name="Headlights" id="22">
Controls the headlight LEDs of the Evo variants.
<cmd name="intensity" id="0">
<comment
title="Set LEDs intensity"
desc="Set lighting LEDs intensity."
support="0905;0906;0907"
result="The intensity of the LEDs is changed.\n
Then, event [LedIntensity](#0-23-0) is triggered."/>
<arg name="left" type="u8">
Set the left LED intensity value (0 through 255).
</arg>
<arg name="right" type="u8">
Set the right LED intensity value (0 through 255).
</arg>
</cmd>
</class>
<class name="HeadlightsState" id="23">
Get information about the state of the Evo variants' LEDs.
<cmd name="intensityChanged" id="0">
<comment
title="LEDs intensity"
desc="Lighting LEDs intensity."
support="0905;0906;0907"
triggered="by [SetLedsIntensity](#0-22-0)."/>
<arg name="left" type="u8">
The intensity value for the left LED (0 through 255).
</arg>
<arg name="right" type="u8">
The intensity value for the right LED (0 through 255).
</arg>
</cmd>
</class>
<class name="Animations" id="24">
Animations-related commands.
<cmd name="StartAnimation" id="0">
<comment
title="Start an animation"
desc="Start a paramaterless animation.\n
List of available animations can be retrieved from [AnimationsStateList](#0-25-0)."
support="0902;0905;0906;0907;0909"
result="If possible, the product starts the requested animation. Then, event [AnimationsStateList](#0-25-0) is triggered."/>
<arg name="anim" type="enum">
Animation to start.
<enum name="HEADLIGHTS_FLASH">
Flash headlights.
</enum>
<enum name="HEADLIGHTS_BLINK">
Blink headlights.
</enum>
<enum name="HEADLIGHTS_OSCILLATION">
Oscillating headlights.
</enum>
<enum name="SPIN">
Spin animation.
</enum>
<enum name="TAP">
Tap animation.
</enum>
<enum name="SLOW_SHAKE">
Slow shake animation.
</enum>
<enum name="METRONOME">
Metronome animation.
</enum>
<enum name="ONDULATION">
Standing dance animation.
</enum>
<enum name="SPIN_JUMP">
Spin jump animation.
</enum>
<enum name="SPIN_TO_POSTURE">
Spin that end in standing posture, or in jumper if it was standing animation.
</enum>
<enum name="SPIRAL">
Spiral animation.
</enum>
<enum name="SLALOM">
Slalom animation.
</enum>
<enum name="BOOST">
Boost animation.
</enum>
<enum name="LOOPING">
Make a looping. (Only for WingX)
</enum>
<enum name="BARREL_ROLL_180_RIGHT">
Make a barrel roll of 180 degree turning on right. (Only for WingX)
</enum>
<enum name="BARREL_ROLL_180_LEFT">
Make a barrel roll of 180 degree turning on left. (Only for WingX)
</enum>
<enum name="BACKSWAP">
Put the drone upside down. (Only for WingX)
</enum>
</arg>
</cmd>
<cmd name="StopAnimation" id="1">
<comment
title="Stop an animation"
desc="Stop a paramaterless animation.\n
List of running animations can be retrieved from [AnimationsStateList](#0-25-0)."
support="0902;0905;0906;0907;0909"
result="If the requested animation was running, it will be stopped.\n
Then, event [AnimationsStateList](#0-25-0) is triggered."/>
<arg name="anim" type="enum">
Animation to stop.
<enum name="HEADLIGHTS_FLASH">
Flash headlights.
</enum>
<enum name="HEADLIGHTS_BLINK">
Blink headlights.
</enum>
<enum name="HEADLIGHTS_OSCILLATION">
Oscillating headlights.
</enum>
<enum name="SPIN">
Spin animation.
</enum>
<enum name="TAP">
Tap animation.
</enum>
<enum name="SLOW_SHAKE">
Slow shake animation.
</enum>
<enum name="METRONOME">
Metronome animation.
</enum>
<enum name="ONDULATION">
Standing dance animation.
</enum>
<enum name="SPIN_JUMP">
Spin jump animation.
</enum>
<enum name="SPIN_TO_POSTURE">
Spin that end in standing posture, or in jumper if it was standing animation.
</enum>
<enum name="SPIRAL">
Spiral animation.
</enum>
<enum name="SLALOM">
Slalom animation.
</enum>
<enum name="BOOST">
Boost animation.
</enum>
<enum name="LOOPING">
Make a looping. (Only for WingX)
</enum>
<enum name="BARREL_ROLL_180_RIGHT">
Make a barrel roll of 180 degree turning on right. (Only for WingX)
</enum>
<enum name="BARREL_ROLL_180_LEFT">
Make a barrel roll of 180 degree turning on left. (Only for WingX)
</enum>
<enum name="BACKSWAP">
Put the drone upside down. (Only for WingX)
</enum>
</arg>
</cmd>
<cmd name="StopAllAnimations" id="2">
<comment
title="Stop all animations"
desc="Stop all running paramaterless animations.\n
List of running animations can be retrieved from [AnimationsStateList](#0-25-0)."
support="0902;0905;0906;0907;0909"
result="All running animations are stopped.\n
Then, event [AnimationsStateList](#0-25-0) is triggered."/>
</cmd>
</class>
<class name="AnimationsState" id="25">
Animations-related notification/feedback commands.
<cmd name="List" type="MAP_ITEM" id="0">
<comment
title="Animation state list"
desc="Paramaterless animations state list."
support="0902;0905;0906;0907;0909"
triggered="when the list of available animations changes and also when an animation state changes (can be triggered by [StartAnim](#0-24-0), [StopAnim](#0-24-1) or [StopAllAnims](#0-24-2)."/>
<arg name="anim" type="enum">
Animation type.
<enum name="HEADLIGHTS_FLASH">
Flash headlights.
</enum>
<enum name="HEADLIGHTS_BLINK">
Blink headlights.
</enum>
<enum name="HEADLIGHTS_OSCILLATION">
Oscillating headlights.
</enum>
<enum name="SPIN">
Spin animation.
</enum>
<enum name="TAP">
Tap animation.
</enum>
<enum name="SLOW_SHAKE">
Slow shake animation.
</enum>
<enum name="METRONOME">
Metronome animation.
</enum>
<enum name="ONDULATION">
Standing dance animation.
</enum>
<enum name="SPIN_JUMP">
Spin jump animation.
</enum>
<enum name="SPIN_TO_POSTURE">
Spin that end in standing posture, or in jumper if it was standing animation.
</enum>
<enum name="SPIRAL">
Spiral animation.
</enum>
<enum name="SLALOM">
Slalom animation.
</enum>
<enum name="BOOST">
Boost animation.
</enum>
<enum name="LOOPING">
Make a looping. (Only for WingX)
</enum>
<enum name="BARREL_ROLL_180_RIGHT">
Make a barrel roll of 180 degree turning on right. (Only for WingX)
</enum>
<enum name="BARREL_ROLL_180_LEFT">
Make a barrel roll of 180 degree turning on left. (Only for WingX)
</enum>
<enum name="BACKSWAP">
Put the drone upside down. (Only for WingX)
</enum>
</arg>
<arg name="state" type="enum">
State of the animation
<enum name="stopped">
animation is stopped
</enum>
<enum name="started">
animation is started
</enum>
<enum name="notAvailable">
The animation is not available
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the state
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error
</enum>
</arg>
</cmd>
</class>
<class name="Accessory" id="26">
Accessories-related commands.
<cmd name="Config" id="0">
<comment
title="Declare an accessory"
desc="Declare an accessory.\n
You can choose the accessory between all accessible for this product.\n
You can get this list through event [SupportedAccessories](#0-27-0).\n\n
You can only set the accessory when the modification is enabled.\n
You can know if it possible with the event [AccessoryDeclarationAvailability](#0-27-2)."
support="0902;0905;0906;0907;0909;090a"
result="The product knows which accessory it is wearing.\n
Then, event [AccessoryConfigChanged](#0-27-1) is triggered."/>
<arg name="accessory" type="enum">
Accessory configuration to set.
<enum name="NO_ACCESSORY">
No accessory.
</enum>
<enum name="STD_WHEELS">
Standard wheels
</enum>
<enum name="TRUCK_WHEELS">
Truck wheels
</enum>
<enum name="HULL">
Hull
</enum>
<enum name="HYDROFOIL">
Hydrofoil
</enum>
</arg>
</cmd>
</class>
<class name="AccessoryState" id="27">
Accessories-related commands.
<cmd name="SupportedAccessoriesListChanged" id="0" type="MAP_ITEM">
<comment
title="Supported accessories list"
desc="Supported accessories list."
support="0902;0905;0906;0907;0909;090a"
triggered="at connection."/>
<arg name="accessory" type="enum">
Accessory configurations supported by the product.
<enum name="NO_ACCESSORY">
No accessory.
</enum>
<enum name="STD_WHEELS">
Standard wheels
</enum>
<enum name="TRUCK_WHEELS">
Truck wheels
</enum>
<enum name="HULL">
Hull
</enum>
<enum name="HYDROFOIL">
Hydrofoil
</enum>
</arg>
</cmd>
<cmd name="AccessoryConfigChanged" id="1">
<comment
title="Accessory config"
desc="Accessory config."
support="0902;0905;0906;0907;0909;090a"
triggered="by [DeclareAccessory](#0-26-0)."/>
Accessory config response.
<arg name="newAccessory" type="enum">
Accessory configuration reported by firmware.
<enum name="UNCONFIGURED">
No accessory configuration set. Controller needs to set one.
</enum>
<enum name="NO_ACCESSORY">
No accessory.
</enum>
<enum name="STD_WHEELS">
Standard wheels
</enum>
<enum name="TRUCK_WHEELS">
Truck wheels
</enum>
<enum name="HULL">
Hull
</enum>
<enum name="HYDROFOIL">
Hydrofoil
</enum>
<enum name="IN_PROGRESS">
Configuration in progress.
</enum>
</arg>
<arg name="error" type="enum">
Error code.
<enum name="OK">
No error. Accessory config change successful.
</enum>
<enum name="UNKNOWN">
Cannot change accessory configuration for some reason.
</enum>
<enum name="FLYING">
Cannot change accessory configuration while flying.
</enum>
</arg>
</cmd>
<cmd name="AccessoryConfigModificationEnabled" id="2">
<comment
title="Accessory declaration availability"
desc="Availability to declare or not an accessory."
support="0902;0905;0906;0907;0909;090a"
triggered="when the availability changes."/>
<arg name="enabled" type="u8">
1 if the modification of the accessory Config is enabled, 0 otherwise
</arg>
</cmd>
</class>
<class name="Charger" id="28">
Commands sent by the controller to set charger parameters.
<cmd name="SetMaxChargeRate" id="0" deprecated="true">
<comment
title="Set max charge rate"
desc="The product will inform itself the controller about its charging type (see [ChargingInfoChanged](#0-29-3))."
support="none"
result="None."/>
<arg name="rate" type="enum">
The new maximum charge rate.
<enum name="SLOW">
Fully charge the battery at a slow rate. Typically limit max charge current to 512 mA.
</enum>
<enum name="MODERATE">
Almost fully-charge the battery at moderate rate (> 512mA) but slower than the fastest rate.
</enum>
<enum name="FAST">
Almost fully-charge the battery at the highest possible rate supported by the charger.
</enum>
</arg>
</cmd>
</class>
<class name="ChargerState" id="29">
Commands sent by the firmware to advertise the charger status.
<cmd name="MaxChargeRateChanged" id="0" deprecated="true">
<comment
title="Max charge rate"
desc="Max charge rate."/>
<arg name="rate" type="enum">
The current maximum charge rate.
<enum name="SLOW">
Fully charge the battery at a slow rate. Typically limit max charge current to 512 mA.
</enum>
<enum name="MODERATE">
Almost fully-charge the battery at moderate rate (> 512 mA) but slower than the fastest rate.
</enum>
<enum name="FAST">
Almost fully-charge the battery at the highest possible rate supported by the charger.
</enum>
</arg>
</cmd>
<cmd name="CurrentChargeStateChanged" id="1" deprecated="true">
<comment
title="Current charge state"
desc="Current charge state."/>
<arg name="status" type="enum">
Charger status.
<enum name="DISCHARGING">
The battery is discharging.
</enum>
<enum name="CHARGING_SLOW">
The battery is charging at a slow rate about 512 mA.
</enum>
<enum name="CHARGING_MODERATE">
The battery is charging at a moderate rate (> 512 mA) but slower than the fastest rate.
</enum>
<enum name="CHARGING_FAST">
The battery is charging at a the fastest rate.
</enum>
<enum name="BATTERY_FULL">
The charger is plugged and the battery is fully charged.
</enum>
</arg>
<arg name="phase" type="enum">
The current charging phase.
<enum name="UNKNOWN">
The charge phase is unknown or irrelevant.
</enum>
<enum name="CONSTANT_CURRENT_1">
First phase of the charging process. The battery is charging with constant current.
</enum>
<enum name="CONSTANT_CURRENT_2">
Second phase of the charging process. The battery is charging with constant current, with a higher voltage than the first phase.
</enum>
<enum name="CONSTANT_VOLTAGE">
Last part of the charging process. The battery is charging with a constant voltage.
</enum>
<enum name="CHARGED">
The battery is fully charged.
</enum>
</arg>
</cmd>
<cmd name="LastChargeRateChanged" id="2" deprecated="true">
<comment
title="Last charge rate"
desc="Last charge rate."/>
<arg name="rate" type="enum">
The charge rate recorded by the firmware for the last charge.
<enum name="UNKNOWN">
The last charge rate is not known.
</enum>
<enum name="SLOW">
Slow charge rate.
</enum>
<enum name="MODERATE">
Moderate charge rate.
</enum>
<enum name="FAST">
Fast charge rate.
</enum>
</arg>
</cmd>
<cmd name="ChargingInfo" id="3">
<comment
title="Charging information"
desc="Charging information."
support="0905;0906;0907;0909;090a"
triggered="when the product is charging or when the charging state changes."/>
<arg name="phase" type="enum">
The current charging phase.
<enum name="UNKNOWN">
The charge phase is unknown or irrelevant.
</enum>
<enum name="CONSTANT_CURRENT_1">
First phase of the charging process. The battery is charging with constant current.
</enum>
<enum name="CONSTANT_CURRENT_2">
Second phase of the charging process. The battery is charging with constant current, with a higher voltage than the first phase.
</enum>
<enum name="CONSTANT_VOLTAGE">
Last part of the charging process. The battery is charging with a constant voltage.
</enum>
<enum name="CHARGED">
The battery is fully charged.
</enum>
<enum name="DISCHARGING">
The battery is discharging; Other arguments refers to the last charge.
</enum>
</arg>
<arg name="rate" type="enum">
The charge rate. If phase is DISCHARGING, refers to the last charge.
<enum name="UNKNOWN">
The charge rate is not known.
</enum>
<enum name="SLOW">
Slow charge rate.
</enum>
<enum name="MODERATE">
Moderate charge rate.
</enum>
<enum name="FAST">
Fast charge rate.
</enum>
</arg>
<arg name="intensity" type="u8">
The charging intensity, in dA. (12dA = 1,2A) ; If phase is DISCHARGING, refers to the last charge. Equals to 0 if not known.
</arg>
<arg name="fullChargingTime" type="u8">
The full charging time estimated, in minute. If phase is DISCHARGING, refers to the last charge. Equals to 0 if not known.
</arg>
</cmd>
</class>
<class name="RunState" id="30">
Commands sent by the drone to inform about the run or flight state
<cmd name="RunIdChanged" id="0">
<comment
title="Current run id"
desc="Current run id.\n
A run id is uniquely identifying a run or a flight.\n
For each run is generated on the drone a file which can be used by Academy to sum up the run.\n
Also, each medias taken during a run has a filename containing the run id."
support="0901:3.0.1;090c;090e"
triggered="when the drone generates a new run id (generally right after a take off)."/>
<arg name="runId" type="string">
Id of the run
</arg>
</cmd>
</class>
<class name="Factory" id="31">
Factory reset commands
<cmd name="Reset" id="0">
<comment
title="Reset the product to its factory settings"
desc="This command will request a factory reset from the
prodcut. *The factory reset procedure implies an
automatic reboot*, which will be done immediately after
receiving this command."
result="The product will reboot, all settings will be
reset to their default values. All data on the product
will also be erased."/>
</cmd>
</class>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<feature id="140" name="controller_info">
Controller info feature
<enums>
</enums>
<msgs>
<cmd name="gps" id="1" buffer="NON_ACK">
<comment
title="Controller gps info"
desc="Controller gps info.\n
This command is not acknowledged by the drone."
support="090c:4.0.0"
result="The position of the controller is known by the drone.\n
It can be used for RTH or FollowMe."/>
<arg name="latitude" type="double">
Latitude of the controller (in deg)
</arg>
<arg name="longitude" type="double">
Longitude of the controller (in deg)
</arg>
<arg name="altitude" type="float">
Altitude of the controller (in meters, according to sea level)
</arg>
<arg name="horizontal_accuracy" type="float">
Horizontal accuracy (in meter)
</arg>
<arg name="vertical_accuracy" type="float">
Vertical accuracy (in meter)
</arg>
<arg name="north_speed" type="float">
North speed (in meter per second)
</arg>
<arg name="east_speed" type="float">
East speed (in meter per second)
</arg>
<arg name="down_speed" type="float">
Vertical speed (in meter per second) (down is positive)
</arg>
<arg name="timestamp" type="double">
Timestamp of the gps info
</arg>
</cmd>
<cmd name="barometer" id="2" buffer="NON_ACK">
<comment
title="Controller barometer info"
support="090c:4.0.0"
result="The altitude of the controller is known by the drone.\n
This command is not acknowledged by the drone."/>
<arg name="pressure" type="float">
Atmospheric pressure in Pa
</arg>
<arg name="timestamp" type="double">
Timestamp of the barometer info
</arg>
</cmd>
</msgs>
</feature>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<feature id="139" name="debug">
All commands/events related to the Wifi
<enums>
<enum name="setting_type">
Setting type.
<value name="BOOL">
Boolean Setting. (ex: 0, 1)
</value>
<value name="DECIMAL">
Decimal Setting. (ex: -3.5, 0, 2, 3.6, 6.5)
</value>
<value name="TEXT">
Single line text Setting.
</value>
</enum>
<enum name="setting_mode">
Setting mode.
<value name="READ_ONLY">
Controller can only read setting.
</value>
<value name="READ_WRITE">
Controller can read and write setting.
</value>
</enum>
</enums>
<msgs>
<cmd name="get_all_settings" id="0">
Cmd sent by controller to get all settings info (generate "settings_info" events).
</cmd>
<cmd name="set_setting" id="1">
Change setting value.
Cmd sent by controller to change a writable setting.
<arg name="id" type="u16">
Setting Id.
</arg>
<arg name="value" type="string">
New setting value (string encoded).
</arg>
</cmd>
<evt name="settings_info" type="LIST_ITEM" id="2">
Sent by the drone as answer to get_settings_info
Describe a debug setting and give the current value.
<arg name="list_flags" type="bitfield:u8:list_flags">
List entry attribute Bitfield.
0x01: First: indicate it's the first element of the list.
0x02: Last: indicate it's the last element of the list.
0x04: Empty: indicate the list is empty (implies First/Last). All other arguments should be ignored.
</arg>
<arg name="id" type="u16">
Setting Id.
</arg>
<arg name="label" type="string">
Setting displayed label (single line).
</arg>
<arg name="type" type="enum:setting_type">
Setting type.
</arg>
<arg name="mode" type="enum:setting_mode">
Setting mode.
</arg>
<arg name="range_min" type="string">
Setting range minimal value for decimal type.
</arg>
<arg name="range_max" type="string">
Setting range max value for decimal type.
</arg>
<arg name="range_step" type="string">
Setting step value for decimal type
</arg>
<arg name="value" type="string">
Current Setting value (string encoded).
</arg>
</evt>
<evt name="settings_list" id="3">
Setting value changed.
Cmd sent by drone when setting changed occurred.
<arg name="id" type="u16">
Setting Id.
</arg>
<arg name="value" type="string">
New setting value (string encoded).
</arg>
</evt>
</msgs>
</feature>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<feature name="drone_manager" id="137">
Commands related to the drone_manager feature
<enums>
<enum name="security">
The security of the drone network.
<value name="none">
The drone is not protected.
</value>
<value name="wpa2">
The drone is protected with Wpa2 (passphrase).
</value>
</enum>
<enum name="connection_state">
The state of the connection to a drone.
<value name="idle">
The drone manager do nothing (wait for command).
</value>
<value name="searching">
The drone manager is searching for a known drone.
</value>
<value name="connecting">
The drone manager is connecting to a drone.
</value>
<value name="connected">
The drone manager is connected to a drone.
</value>
<value name="disconnecting">
The drone manager is finishing the connection with the drone before taking further action.
</value>
</enum>
</enums>
<msgs>
<!-- Drone list handling -->
<cmd name="discover_drones" id="1">
<comment
title="Request the drone list"
desc="The list will contain:\n
* known drones not currently visible.
* known drones currently visible.
* unknown drones currently visible."
support="090f;0913;0915"
result="The drone manager will answer with a list of [drone\_list\_item](#137-2)"/>
</cmd>
<evt name="drone_list_item" id="2" type="MAP_ITEM:serial">
<comment
title="Drone list item"
desc="Item describing a drone."
support="090f;0913;0915"
triggered="when requested [discover_drones](#137-1)."/>
<arg name="serial" type="string">
Serial number of the drone.
</arg>
<arg name="model" type="u16">
Model id of the drone.
</arg>
<arg name="name" type="string">
Name (SSID) of the drone.
</arg>
<arg name="connection_order" type="u8">
0 if the drone is unknwon (never connected).
Else, order of last connection (1 = most recent)
</arg>
<arg name="active" type="u8">
1 if the drone is active (the drone manager tries to connect or is connected to it)
0 if the drone is not the active one.
</arg>
<arg name="visible" type="u8">
1 if the drone is currently visible, 0 otherwise.
</arg>
<arg name="security" type="enum:security">
Security method used by the drone.
</arg>
<arg name="has_saved_key" type="u8">
1 if the drone manager has a saved security key for the drone, 0 otherwise.
If security method is not 'none', and this value is 0, then the controller should prompt the user for a passphrase before sending a connect.
</arg>
<arg name="rssi" type="i8">
The drone rssi (wifi signal strength estimation).
The value is meaningless if the drone is not visible.
</arg>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
</evt>
<!-- Connection handling -->
<cmd name="connect" id="3">
<comment
title="Connect to a drone"
desc="Request connection to a specific drone. Override the auto-selected drone."
support="090f;0913;0915"
result="The drone manager will send an update of its [connection_state](#137-5), if relevant"/>
<arg name="serial" type="string">
Serial number of the drone.
</arg>
<arg name="key" type="string">
Security key (passphrase) to use.
This arg is ignored if the drone security is 'none'.
If the drone manager has a saved key for the drone, pass an empty string to use it
</arg>
</cmd>
<cmd name="forget" id="4">
<comment
title="Forget a drone"
desc="Forget the given drone. If the drone is the selected one, the auto-selection will run again."
support="090f;0913;0915"
result="If the drone was the active one, a new one will be autoselected, and [connection_state](#137-5) update will be sent as needed.
Otherwise, no answer will be sent from the drone manager"/>
<arg name="serial" type="string">
Serial number of the drone to forget.
</arg>
</cmd>
<evt name="connection_state" id="5">
<comment
title="State of the connection"
desc="State of the connection."
support="090f;0913;0915"
triggered="when the state changes.\nIf the state is 'searching', all informations about the drone will refer to the last connected drone.\n
Otherwise, these informations will refer to the active drone."/>
<arg name="state" type="enum:connection_state">
Current state of the connection.
</arg>
<arg name="serial" type="string">
Serial number of the drone.
</arg>
<arg name="model" type="u16">
Model id of the drone.
</arg>
<arg name="name" type="string">
Name (SSID) of the drone.
</arg>
</evt>
<evt name="authentication_failed" id="6">
<comment
title="Authentication failed"
desc="Authentication failed because of a wrong key (passphrase)."
support="090f;0913;0915"
triggered="when trying to [connect](#137-3) to a protected drone with a wrong key (passphrase)"/>
<arg name="serial" type="string">
Serial number of the drone.
</arg>
<arg name="model" type="u16">
Model id of the drone.
</arg>
<arg name="name" type="string">
Name (SSID) of the drone.
</arg>
</evt>
<evt name="connection_refused" id="7">
<comment
title="Connection refused"
desc="Connection refused by the drone because another peer is already connected to."
support="090f;0913;0915"
triggered="Try to [connect](#137-3) to a drone where another peer is already connected to."/>
<arg name="serial" type="string">
Serial number of the drone.
</arg>
<arg name="model" type="u16">
Model id of the drone.
</arg>
<arg name="name" type="string">
Name (SSID) of the drone.
</arg>
</evt>
<evt name="known_drone_item" id="8" type="MAP_ITEM:serial">
<comment
title="Known drone item"
desc="Item describing a known drone (already connected)."
support="090f:1.0.3;0913;0915"
triggered="when [AllSettings](#4-4-0) is requested
or when a drone is forgotten
or connected for the first time."/>
<arg name="serial" type="string">
Serial number of the drone.
</arg>
<arg name="model" type="u16">
Model id of the drone.
</arg>
<arg name="name" type="string">
Last visible Name (SSID) of the drone.
</arg>
<arg name="security" type="enum:security">
Security method used by the drone.
</arg>
<arg name="has_saved_key" type="u8">
1 if the drone manager has a saved security key for the drone, 0 otherwise.
If security method is not 'none', and this value is 0, then the controller should prompt the user for a passphrase before sending a connect.
</arg>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
</evt>
</msgs>
</feature>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<feature id="134" name="follow_me">
FollowMe feature
<enums>
<enum name="mode">
FollowMe mode
<value name="none">
No follow me
</value>
<value name="look_at">
Look at the target without moving automatically
</value>
<value name="geographic">
Follow the target keeping the same vector
</value>
<value name="relative">
Follow the target keeping the same orientation to its direction
</value>
</enum>
<enum name="behavior">
FollowMe behavior
<value name="idle">
Drone is not moving according to the target
This means that at least one required input is missing
</value>
<value name="follow">
Follow the target
</value>
<value name="look_at">
Look at the target without moving
</value>
</enum>
<enum name="input">
Input values used by the FollowMe
<value name="drone_calibrated">
Drone is calibrated
</value>
<value name="drone_gps_good_accuracy">
Drone gps has fixed and has a good accuracy
</value>
<value name="target_gps_good_accuracy">
Target gps data is known and has a good accuracy
</value>
<value name="target_barometer_ok">
Target barometer data is available
</value>
<value name="drone_far_enough">
Drone is far enough from the target
</value>
<value name="drone_high_enough">
Drone is high enough from the ground
</value>
<value name="image_detection">
Target detection is done by image detection among other things
</value>
</enum>
<enum name="geo_rel_configure_param">
Geographic and Relative follow me configuration parameters
<value name="distance">
Distance configuration
</value>
<value name="elevation">
Elevation configuration
</value>
<value name="azimuth">
Azimuth configuration
</value>
</enum>
<enum name="animation">
FollowMe animation type
<value name="none">
No animation
</value>
<value name="helicoid">
Turn around the target
</value>
<value name="swing">
Pass by the zenith and change of side
</value>
<value name="boomerang">
Fly far from the target and fly back
</value>
<value name="candle">
Move to the target and go high when it is near
</value>
<value name="dolly_slide">
Fly in line
</value>
</enum>
<enum name="helicoid_configure_param">
Helicoid animation configuration parameters.
<value name="speed">
Speed parameter
</value>
<value name="revolution_nb">
Number of turn
</value>
<value name="vertical_distance">
Vertical distance
</value>
</enum>
<enum name="swing_configure_param">
Swing configure parameters.
<value name="speed">
Speed parameter
</value>
<value name="vertical_distance">
Vertical distance
</value>
</enum>
<enum name="boomerang_configure_param">
Boomerang animation configure parameters.
<value name="speed">
Speed parameter
</value>
<value name="distance">
Distance
</value>
</enum>
<enum name="candle_configure_param">
Candle animation configure parameters.
<value name="speed">
Speed parameter
</value>
<value name="vertical_distance">
Follow the target keeping the same vector
</value>
</enum>
<enum name="dolly_slide_configure_param">
Dolly slide animation configure parameters.
<value name="speed">
Speed parameter
</value>
<value name="angle">
Angle
</value>
<value name="horizontal_distance">
Horizontal distance
</value>
</enum>
<enum name="image_detection_status">
State of the image detection
<value name="none">
No image detection
</value>
<value name="ok">
Image detection is considered ok by the drone
</value>
<value name="lost">
Image detection is considered lost or
in contradiction with gps value.
This state will remain until a new selection of the target is done
</value>
</enum>
</enums>
<msgs>
<cmd name="start" id="1">
<comment
title="Start followMe mode"
desc="Start a FollowMe with all its params set to the default params. \n
Sending this command will stop other running followMe."
support="090c:4.0.0"
result="Event [state](#134-3) is triggered.\n
Also triggers the event that informs about the current \n
configuration (if there is one) like event\n
[Geographic configuration](#134-4) or [Relative configuration](#134-6)"/>
<arg name="mode" type="enum:mode"/>
</cmd>
<cmd name="stop" id="2">
<comment
title="Stop current followMe"
desc="Stop current followMe."
support="090c:4.0.0"
result="Event [state](#134-3) is triggered with mode equals to none."/>
</cmd>
<evt name="state" id="3">
<comment
title="State of the FollowMe"
support="090c:4.0.0"
triggered="by any changes on the followme, like [start](#134-1),\n
[stop](#134-2), [start helicoid anim](#134-9)..."/>
<arg name="mode" type="enum:mode">
Mode asked by user
</arg>
<arg name="behavior" type="enum:behavior">
Behavior of the drone according to the asked mode
</arg>
<arg name="animation" type="enum:animation">
Current animation.
This parameter has been deprecated. Please use the animation feature.
</arg>
<arg name="animation_available" type="bitfield:u16:animation">
List of available animations
This parameter has been deprecated. Please use the animation feature.
</arg>
</evt>
<evt name="mode_info" id="4" type="MAP_ITEM:mode">
<comment
title="FollowMe mode info"
support="090c:4.0.0"
triggered="When the list of missing requirements or improvments changes"/>
<arg name="mode" type="enum:mode"/>
<arg name="missing_requirements" type="bitfield:u16:input">
List of missing requirements to enter this mode on start.
Bit is 0 if the input is not ok, 1 if the input is ok.
If at least one input is missing, drone won't able to follow the target.
It won't use any fallback either
</arg>
<arg name="improvements" type="bitfield:u16:input">
List of inputs that can improve the mode.
Bit is 0 if the input is not ok, 1 if the input is ok.
If at least one input is missing, a downgraded mode will be used. See behavior
</arg>
</evt>
<cmd name="configure_geographic" id="6">
<comment
title="Configure the geographic follow me"
desc="Configure the geographic FollowMe.\n
This should only be taken in account if arg behavior in [state](#134-3) is equal to Follow."
support="090c:4.0.0"
result="Event [Geographic config](#134-6) is sent and drone will move to respect the configuration."/>
<arg name="use_default" type="bitfield:u8:geo_rel_configure_param"/>
<arg name="distance" type="float">
The distance leader-follower in meter
Not used when arg start is at 0
</arg>
<arg name="elevation" type="float">
The elevation leader-follower in rad (not used when arg start is at 0)
</arg>
<arg name="azimuth" type="float">
The azimuth north-leader-follower in rad (not used when arg start is at 0)
</arg>
</cmd>
<evt name="geographic_config" id="7">
<comment
title="Geographic configuration changed"
desc="Geographic configuration changed.\n
This event is only valid when arg behavior in [state](#134-3) is equal to Follow."
support="090c:4.0.0"
triggered="By [start geographic](#134-1) or [configure geographic](#134-4)."/>
<arg name="use_default" type="bitfield:u8:geo_rel_configure_param"/>
<arg name="distance" type="float">
The distance leader-follower in meter
If distance is default, this value is the current drone distance
</arg>
<arg name="elevation" type="float">
The elevation leader-follower in rad
If elevation is default, this value is the current leader to drone elevation
</arg>
<arg name="azimuth" type="float">
The azimuth north-leader-follower in rad
If azimuth is default, this value is the current leader to drone azimuth
</arg>
</evt>
<cmd name="configure_relative" id="8">
<comment
title="Configure the relative follow me"
desc="Configure the relative FollowMe.\n
This should only be taken in account if arg behavior in [state](#134-3) is equal to Follow"
support="090c:4.0.0"
result="Event [Relative config](#134-6) is sent and drone will move to respect the configuration."/>
<arg name="use_default" type="bitfield:u8:geo_rel_configure_param"/>
<arg name="distance" type="float">
The distance leader-follower in meter
</arg>
<arg name="elevation" type="float">
The elevation leader-follower in rad
</arg>
<arg name="azimuth" type="float">
The azimuth north-leader-follower in rad
</arg>
</cmd>
<evt name="relative_config" id="9">
<comment
title="Relative configuration changed"
desc="Relative configuration changed.\n
This event is only valid when arg behavior in [state](#134-3) is equal to Follow."
support="090c:4.0.0"
triggered="By [start relative](#134-1) or [configure relative](#134-4)."/>
<arg name="use_default" type="bitfield:u8:geo_rel_configure_param"/>
<arg name="distance" type="float">
The distance leader-follower in meter
If distance is default, this value is the current drone distance
</arg>
<arg name="elevation" type="float">
The elevation leader-follower in rad
If elevation is default, this value is the current leader to drone elevation
</arg>
<arg name="azimuth" type="float">
The azimuth course-leader-follower in rad
If azimuth is default, this value is the current leader to drone azimuth
</arg>
</evt>
<evt name="target_trajectory" id="10" buffer="NON_ACK">
<comment
title="Target estimated trajectory"
support="090c:4.0.0"
triggered="Regularly when a FollowMe is started."/>
<arg name="latitude" type="double">
Target latitude (in degrees)
</arg>
<arg name="longitude" type="double">
Target longitude (in degrees)
</arg>
<arg name="altitude" type="float">
Target altitude (in meters, relative to sea level)
</arg>
<arg name="north_speed" type="float">
Target north speed (in m/s)
</arg>
<arg name="east_speed" type="float">
Target east speed (in m/s)
</arg>
<arg name="down_speed" type="float">
Target down speed (in m/s)
</arg>
</evt>
<!-- FollowMe Animations -->
<cmd name="stop_animation" id="11" deprecated="true">
<comment
title="Stop current followMe animation"
desc="Stop current followMe animation.\n
This message has been deprecated. Please use the animation feature."
support="090c:4.0.0"
result="FollowMe animation will stop. Event [state](#134-2) is triggered."/>
</cmd>
<cmd name="start_helicoid_anim" id="12" deprecated="true">
<comment
title="Start a helicoid animation"
desc="Start a helicoid animation.\n
The helicoid animation allows the drone to revolve around the target while going up, with a fixed radius.\n
This message has been deprecated. Please use the animation feature."
support="090c:4.0.0"
result="Animation is started and event [state](#134-2) is triggered."/>
<arg name="use_default" type="bitfield:u8:helicoid_configure_param"/>
<arg name="speed" type="float">
The desired speed of the anim in m/s
Not used when speed_is_default is 1
</arg>
<arg name="revolution_number" type="float">
The number of revolution (in turn)
Negative value is infinite
Example: 1.5 makes an entire turn plus half of a turn
Not used when revolutionNb_is_default is 1
</arg>
<arg name="vertical_distance" type="float">
Distance that should be made by the product to reach the top of the helicoid in m
Not used when verticalDistance_is_default is 1
</arg>
</cmd>
<evt name="helicoid_anim_config" id="13" deprecated="true">
<comment
title="Helicoid animation configuration"
desc="Helicoid animation configuration.\n
This should only be taken in account if arg animation in [state](#134-3) is equal to helicoid.\n
This message has been deprecated. Please use the animation feature."
support="090c:4.0.0"
triggered="by a [start helicoid animation](#134-9)."/>
<arg name="use_default" type="bitfield:u8:helicoid_configure_param"/>
<arg name="speed" type="float">
The speed of the anim in m/s
</arg>
<arg name="revolution_nb" type="float">
The number of revolution (in turn)
Negative value is infinite
</arg>
<arg name="vertical_distance" type="float">
Distance that will be made by the product to reach the top of the helicoid in m
</arg>
</evt>
<cmd name="start_swing_anim" id="14" deprecated="true">
<comment
title="Start a swing animation"
desc="Start a swing animation.\n
The swing animation enables a vertical point of view while the drone passes over the target.\n
This message has been deprecated. Please use the animation feature."
support="090c:4.0.0"
result="Animation is started and event [state](#134-2) is triggered."/>
<arg name="use_default" type="bitfield:u8:swing_configure_param"/>
<arg name="speed" type="float">
The desired speed of the anim in m/s
Not used when speed_is_default is 1
Not used when start is 0
</arg>
<arg name="vertical_distance" type="float">
Distance that should be made by the product to reach the top of the swing in m
Not used when verticalDistance_is_default is 1
Not used when start is 0
</arg>
</cmd>
<evt name="swing_anim_config" id="15" deprecated="true">
<comment
title="Swing animation configuration changed"
desc="Swing animation configuration changed.\n
This should only be taken in account if arg animation in [state](#134-3) is equal to swing.\n
This message has been deprecated. Please use the animation feature."
support="090c:4.0.0"
triggered="by a [start swing animation](#134-11)."/>
<arg name="use_default" type="bitfield:u8:swing_configure_param"/>
<arg name="speed" type="float">
The speed of the anim in m/s
</arg>
<arg name="vertical_distance" type="float">
Distance that will be made by the product to reach the top of the swing in m
</arg>
</evt>
<cmd name="start_boomerang_anim" id="16" deprecated="true">
<comment
title="Start a boomerang animation"
desc="Start a boomerang animation.\n
The boomerang animation enables a zoom-out/zoom-in trajectory while preserving the framing chosen by the user.\n
This message has been deprecated. Please use the animation feature."
support="090c:4.0.0"
result="Animation is started and event [state](#134-2) is triggered."/>
<arg name="use_default" type="bitfield:u8:boomerang_configure_param"/>
<arg name="speed" type="float">
The desired speed of the anim in m/s
Not used when speed_is_default is 1
Not used when start is 0
</arg>
<arg name="distance" type="float">
Distance that should be made by the product to reach its return point in m
Not used when distance_is_default is 1
Not used when start is 0
</arg>
</cmd>
<evt name="boomerang_anim_config" id="17" deprecated="true">
<comment
title="Boomerang animation configuration changed"
desc="Boomerang animation configuration changed.\n
This should only be taken in account if arg animation in [state](#134-3) is equal to boomerang.\n
This message has been deprecated. Please use the animation feature."
support="090c:4.0.0"
triggered="by a [start boomerang animation](#134-13)."/>
<arg name="use_default" type="bitfield:u8:boomerang_configure_param"/>
<arg name="speed" type="float">
The speed of the anim in m/s
</arg>
<arg name="distance" type="float">
Distance that will be made by the product to reach its return point in m
</arg>
</evt>
<cmd name="start_candle_anim" id="18" deprecated="true">
<comment
title="Start a candle animation"
desc="Start a candle animation.\n
The candle animation enables a zoom-in directly on the target followed by a vertical zoom-out.\n
This message has been deprecated. Please use the animation feature."
support="090c:4.0.0"
result="Animation is started and event [state](#134-2) is triggered."/>
<arg name="use_default" type="bitfield:u8:candle_configure_param"/>
<arg name="speed" type="float">
The desired speed of the anim in m/s
Not used when speed_is_default is 1
Not used when start is 0
</arg>
<arg name="vertical_distance" type="float">
Distance that should be made by the product to reach the top of the vertical zoom-out in m
Not used when verticalDistance_is_default is 1
Not used when start is 0
</arg>
</cmd>
<evt name="candle_anim_config" id="19" deprecated="true">
<comment
title="Candle animation configuration changed"
desc="Candle animation configuration changed.\n
This should only be taken in account if arg animation in [state](#134-3) is equal to candle.\n
This message has been deprecated. Please use the animation feature."
support="090c:4.0.0"
triggered="by a [start candle animation](#134-15)."/>
<arg name="use_default" type="bitfield:u8:candle_configure_param"/>
<arg name="speed" type="float">
The speed of the anim in m/s
</arg>
<arg name="vertical_distance" type="float">
Distance that will be made by the product to reach the top of the vertical zoom-out in m
</arg>
</evt>
<cmd name="start_dolly_slide_anim" id="20" deprecated="true">
<comment
title="Start a dolly slide animation"
desc="Start a dolly slide animation.\n
Allows the drone to catch up to the target before flying past it, creating a zoom-in/zoom_out effect without a curved path.\n
This message has been deprecated. Please use the animation feature."
support="090c:4.0.0"
result="Animation is started and event [state](#134-2) is triggered."/>
<arg name="use_default" type="bitfield:u8:dolly_slide_configure_param"/>
<arg name="speed" type="float">
The desired speed of the anim in m/s
Not used when speed_is_default is 1
Not used when start is 0
</arg>
<arg name="angle" type="float">
Desired angle Product-User-Target in rad
Not used when angle_is_default is 1
Not used when start is 0
</arg>
<arg name="horizontal_distance" type="float">
Distance that should be made by the product to reach its target in m
Not used when horizontalDistance_is_default is 1
Not used when start is 0
</arg>
</cmd>
<evt name="dolly_slide_anim_config" id="21" deprecated="true">
<comment
title="DollySlide animation configuration changed"
desc="DollySlide animation configuration changed.\n
This should only be taken in account if arg animation in [state](#134-3) is equal to dolly_slide.\n
This message has been deprecated. Please use the animation feature."
support="090c:4.0.0"
triggered="by a [start dolly slide animation](#134-17)."/>
<arg name="use_default" type="bitfield:u8:dolly_slide_configure_param"/>
<arg name="speed" type="float">
The speed of the anim in m/s
</arg>
<arg name="angle" type="float">
Angle Product-User-Target in rad
</arg>
<arg name="horizontal_distance" type="float">
Distance that will be made by the product to reach its target in m
</arg>
</evt>
<cmd name="target_framing_position" id="22">
<comment
title="Set the target framing"
desc="Set the desired target framing in the video."
support="090c:4.0.0"
result="Event [target framing position](#134-20) is triggered."/>
<arg name="horizontal" type="i8">
Horizontal position in the video (in %, from left to right)
</arg>
<arg name="vertical" type="i8">
Vertical position in the video (in %, from bottom to top)
</arg>
</cmd>
<evt name="target_framing_position_changed" id="23">
<comment
title="Desired target framing"
support="090c:4.0.0"
triggered="by [set target framing](#134-19)."/>
<arg name="horizontal" type="i8">
Horizontal position in the video (in %, from left to right)
</arg>
<arg name="vertical" type="i8">
Vertical position in the video (in %, from bottom to top)
</arg>
</evt>
<cmd name="target_image_detection" id="24">
<comment
title="Send vision detection results"
desc="Send vision detection results."
support="090c:4.0.0"
result="If drone is in FollowMe, is will look at the target according to\n
the chosen [framing position](#134-20)."/>
<arg name="target_azimuth" type="float">
Horizontal north-drone-target angle in radian
</arg>
<arg name="target_elevation" type="float">
Vertical angle horizon-drone-target in radian
</arg>
<arg name="change_of_scale" type="float">
Normalized relative radial speed in 1/second
</arg>
<arg name="confidence_index" type="u8">
Confidence index of the detection (from 0 to 255, the highest is the best)
</arg>
<arg name="is_new_selection" type="u8">
Boolean. 1 if the selection is new, 0 otherwise
</arg>
<arg name="timestamp" type="u64">
Acquisition time of processed picture in millisecond
</arg>
</cmd>
<evt name="target_image_detection_state" id="25">
<comment
title="State of the image detection"
support="090c:4.0.0"
triggered="By a possible wrong [target image detection](#134-24)."/>
<arg name="state" type="enum:image_detection_status"/>
</evt>
</msgs>
</feature>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<feature id="133" name="generic">
All generic messages
<enums>
<enum name="list_flags">
Flags use by maps and lists
<value name="First">
indicate it's the first element of the list.
</value>
<value name="Last">
indicate it's the last element of the list.
</value>
<value name="Empty">
indicate the list is empty (implies First/Last). All other arguments should be ignored.
</value>
<value name="Remove">
This value should be removed from the existing list.
</value>
</enum>
</enums>
<multisettings>
<multisetting name="DroneSettings">
Drone settings
<member link="ardrone3.PilotingSettings.MaxAltitude"></member>
<member link="ardrone3.PilotingSettings.MaxTilt"></member>
<member link="ardrone3.PilotingSettings.MaxDistance"></member>
<member link="ardrone3.PilotingSettings.NoFlyOverMaxDistance"></member>
<member link="ardrone3.SpeedSettings.MaxVerticalSpeed"></member>
<member link="ardrone3.SpeedSettings.MaxRotationSpeed"></member>
<member link="ardrone3.SpeedSettings.MaxPitchRollRotationSpeed"></member>
<member link="ardrone3.GPSSettings.ReturnHomeDelay"></member>
<member link="ardrone3.GPSSettings.HomeType"></member>
<member link="ardrone3.PictureSettings.VideoStabilizationMode"></member>
<member link="ardrone3.PilotingSettings.BankedTurn"></member>
</multisetting>
<multisetting name="DroneSettingsChanged">
Drone settings changed
<member link="ardrone3.PilotingSettingsState.MaxAltitudeChanged"></member>
<member link="ardrone3.PilotingSettingsState.MaxTiltChanged"></member>
<member link="ardrone3.PilotingSettingsState.MaxDistanceChanged"></member>
<member link="ardrone3.PilotingSettingsState.NoFlyOverMaxDistanceChanged"></member>
<member link="ardrone3.SpeedSettingsState.MaxVerticalSpeedChanged"></member>
<member link="ardrone3.SpeedSettingsState.MaxRotationSpeedChanged"></member>
<member link="ardrone3.SpeedSettingsState.MaxPitchRollRotationSpeedChanged"></member>
<member link="ardrone3.GPSSettingsState.ReturnHomeDelayChanged"></member>
<member link="ardrone3.GPSSettingsState.HomeTypeChanged"></member>
<member link="ardrone3.PictureSettingsState.VideoStabilizationModeChanged"></member>
<member link="ardrone3.PilotingSettingsState.BankedTurnChanged"></member>
</multisetting>
</multisettings>
<msgs>
<cmd name="default" id="1">
<comment
title="default"
desc="default"
support="none"
result="default"/>
</cmd>
<cmd name="SetDroneSettings" id="2">
<arg name="settings" type="multisetting:DroneSettings">
<comment
title="SetDroneSettings"
desc="Set several drone settings in only one command."
support="none"
result="Drone settings are set.\n
Then, event [DroneSettingsChanged](#133-3) is triggered."/>
</arg>
</cmd>
<evt name="DroneSettingsChanged" id="3">
<arg name="settings" type="multisetting:DroneSettingsChanged">
<comment
title="Drone Settings"
desc="Informs that several drones settings changed."
support="none"
triggered="by [SetDroneSettings](#133-2)."/>
</arg>
</evt>
</msgs>
</feature>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<project name="jpsumo" id="3">
All commands specific to the Jumping Sumo.
<class name="Piloting" id="0">
All commands related to piloting the JumpingSumo
<cmd name="PCMD" id="0" buffer="NON_ACK">
Ask the JS speed and turn ratio.
<arg name="flag" type="u8">
Boolean for "touch screen".
</arg>
<arg name="speed" type="i8">
Speed value [-100:100].
</arg>
<arg name="turn" type="i8">
Turn value. [-100:100]
</arg>
</cmd>
<cmd name="Posture" id="1">
Request a posture
<arg name="type" type="enum">
Type of Posture
<enum name="standing">
Standing type
</enum>
<enum name="jumper">
Jumper type
</enum>
<enum name="kicker">
Kicker type
</enum>
</arg>
</cmd>
<cmd name="addCapOffset" id="2">
Add the specified offset to the current cap.
<arg name="offset" type="float">
Offset value in radians.
</arg>
</cmd>
</class>
<class name="PilotingState" id="1">
Animations state from JS.
<cmd name="PostureChanged" id="0">
State of posture changed.
<arg name="state" type="enum">
State of posture
<enum name="standing">
Standing state
</enum>
<enum name="jumper">
Jumper state
</enum>
<enum name="kicker">
Kicker state
</enum>
<enum name="stuck">
Stuck state
</enum>
<enum name="unknown">
Unknown state
</enum>
</arg>
</cmd>
<cmd name="AlertStateChanged" id="1">
JS alert state changed
<arg name="state" type="enum">
JS alert state
<enum name="none">
No alert
</enum>
<enum name="critical_battery">
Critical battery alert
</enum>
<enum name="low_battery">
Low battery alert
</enum>
</arg>
</cmd>
<cmd name="SpeedChanged" id="2">
Notification sent when JS speed changes.
<arg name="speed" type="i8">
Speed command applied to motors in range [-100;100].
</arg>
<arg name="realSpeed" type="i16">
Actual real-world speed in cm/s. Value -32768 returned if not available.
</arg>
</cmd>
</class>
<class name="Animations" id="2">
Animation commands
<cmd name="JumpStop" id="0" buffer="HIGH_PRIO" timeout="RETRY">
Stop jump, emergency jump stop, stop jump motor and stay there.
</cmd>
<cmd name="JumpCancel" id="1">
Cancel jump and come back to previous state (if possible).
</cmd>
<cmd name="JumpLoad" id="2">
Request jump loading
</cmd>
<cmd name="Jump" id="3">
Request a jump
<arg name="type" type="enum">
Type of jump
<enum name="long">
Long jump.
</enum>
<enum name="high">
High jump
</enum>
</arg>
</cmd>
<cmd name="SimpleAnimation" id="4">
Play a parameterless animation.
<arg name="id" type="enum">
Animation ID.
<enum name="stop">
Stop ongoing animation.
</enum>
<enum name="spin">
Start a spin animation.
</enum>
<enum name="tap">
Start a tap animation.
</enum>
<enum name="slowshake">
Start a slow shake animation.
</enum>
<enum name="metronome">
Start a Metronome animation.
</enum>
<enum name="ondulation">
Start a standing dance animation.
</enum>
<enum name="spinjump">
Start a spin jump animation.
</enum>
<enum name="spintoposture">
Start a spin that end in standing posture, or in jumper if it was standing animation.
</enum>
<enum name="spiral">
Start a spiral animation.
</enum>
<enum name="slalom">
Start a slalom animation.
</enum>
</arg>
</cmd>
</class>
<class name="AnimationsState" id="3">
Animations state from JS.
<cmd name="JumpLoadChanged" id="0">
State of jump load changed
<arg name="state" type="enum">
State of jump load
<enum name="unknown">
Unknown state (obsolete).
</enum>
<enum name="unloaded">
Unloaded state.
</enum>
<enum name="loaded">
Loaded state.
</enum>
<enum name="busy">
Unknown state (obsolete).
</enum>
<enum name="low_battery_unloaded">
Unloaded state and low battery.
</enum>
<enum name="low_battery_loaded">
Loaded state and low battery.
</enum>
</arg>
</cmd>
<cmd name="JumpTypeChanged" id="1">
State of jump type changed.
<arg name="state" type="enum">
State of jump type.
<enum name="none">
None.
</enum>
<enum name="long">
Long jump type.
</enum>
<enum name="high">
High jump type.
</enum>
</arg>
</cmd>
<cmd name="JumpMotorProblemChanged" id="2">
State about the jump motor problem
<arg name="error" type="enum">
Enum describing the problem of the motor
<enum name="none">
None.
</enum>
<enum name="blocked">
Motor blocked
</enum>
<enum name="over_heated">
Motor over heated
</enum>
</arg>
</cmd>
</class>
<class name="SettingsState" id="5">
Settings state from product
<cmd name="ProductGPSVersionChanged" id="0">
@deprecated
Product GPS versions
<arg name="software" type="string">
Product GPS software version
</arg>
<arg name="hardware" type="string">
Product GPS hardware version
</arg>
</cmd>
</class>
<class name="MediaRecord" id="6">
Media recording management
<cmd name="Picture" id="0">
@deprecated
Take picture
<arg name="mass_storage_id" type="u8">
Mass storage id to take picture
</arg>
</cmd>
<cmd name="Video" id="1">
@deprecated
Video record
<arg name="record" type="enum">
Command to record video
<enum name="stop">
Stop the video recording
</enum>
<enum name="start">
Start the video recording
</enum>
</arg>
<arg name="mass_storage_id" type="u8">
Mass storage id to record
</arg>
</cmd>
<cmd name="PictureV2" id="2">
Take picture
</cmd>
<cmd name="VideoV2" id="3">
Video record
<arg name="record" type="enum">
Command to record video
<enum name="stop">
Stop the video recording
</enum>
<enum name="start">
Start the video recording
</enum>
</arg>
</cmd>
</class>
<class name="MediaRecordState" id="7">
State of media recording
<cmd name="PictureStateChanged" id="0">
@deprecated
State of picture recording
<arg name="state" type="u8">
1 if picture has been taken, 0 otherwise
</arg>
<arg name="mass_storage_id" type="u8">
Mass storage id where the picture was recorded
</arg>
</cmd>
<cmd name="VideoStateChanged" id="1">
@deprecated
State of video recording
<arg name="state" type="enum">
State of video
<enum name="stopped">
Video was stopped
</enum>
<enum name="started">
Video was started
</enum>
<enum name="failed">
Video was failed
</enum>
</arg>
<arg name="mass_storage_id" type="u8">
Mass storage id where the video was recorded
</arg>
</cmd>
<cmd name="PictureStateChangedV2" id="2">
State of device picture recording changed
<arg name="state" type="enum">
State of device picture recording
<enum name="ready">
The picture recording is ready
</enum>
<enum name="busy">
The picture recording is busy
</enum>
<enum name="notAvailable">
The picture recording is not available
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the state
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error
</enum>
<enum name="camera_ko">
Picture camera is out of order
</enum>
<enum name="memoryFull">
Memory full ; cannot save one additional picture
</enum>
<enum name="lowBattery">
Battery is too low to start/keep recording.
</enum>
</arg>
</cmd>
<cmd name="VideoStateChangedV2" id="3">
State of device video recording changed
<arg name="state" type="enum">
State of device video recording
<enum name="stopped">
Video is stopped
</enum>
<enum name="started">
Video is started
</enum>
<enum name="notAvailable">
The video recording is not available
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the state
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error
</enum>
<enum name="camera_ko">
Video camera is out of order
</enum>
<enum name="memoryFull">
Memory full ; cannot save one additional video
</enum>
<enum name="lowBattery">
Battery is too low to start/keep recording.
</enum>
</arg>
</cmd>
</class>
<class name="MediaRecordEvent" id="20">
Events of media recording
<cmd name="PictureEventChanged" id="0" content="NOTIFICATION">
Event of picture recording
<arg name="event" type="enum">
Last event of picture recording
<enum name="taken">
Picture taken and saved
</enum>
<enum name="failed">
Picture failed
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the event
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error ; only when state is failed
</enum>
<enum name="busy">
Picture recording is busy ; only when state is failed
</enum>
<enum name="notAvailable">
Picture recording not available ; only when state is failed
</enum>
<enum name="memoryFull">
Memory full ; only when state is failed
</enum>
<enum name="lowBattery">
Battery is too low to record.
</enum>
</arg>
</cmd>
<cmd name="VideoEventChanged" id="1" content="NOTIFICATION">
Event of video recording
<arg name="event" type="enum">
Event of video recording
<enum name="start">
Video start
</enum>
<enum name="stop">
Video stop and saved
</enum>
<enum name="failed">
Video failed
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the event
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error ; only when state is failed
</enum>
<enum name="busy">
Video recording is busy ; only when state is failed
</enum>
<enum name="notAvailable">
Video recording not available ; only when state is failed
</enum>
<enum name="memoryFull">
Memory full
</enum>
<enum name="lowBattery">
Battery is too low to record.
</enum>
<enum name="autoStopped">
Video was auto stopped
</enum>
</arg>
</cmd>
</class>
<class name="NetworkSettings" id="8">
Network settings commands
<cmd name="WifiSelection" id="0">
Auto-select channel of choosen band
<arg name="type" type="enum">
The type of wifi selection (auto, manual)
<enum name="auto">
Auto selection
</enum>
<enum name="manual">
Manual selection
</enum>
</arg>
<arg name="band" type="enum">
The allowed band(s) : 2.4 Ghz, 5 Ghz, or all
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
<enum name="all">
Both 2.4 and 5 GHz bands
</enum>
</arg>
<arg name="channel" type="u8">
The channel (not used in auto mode)
</arg>
</cmd>
</class>
<class name="NetworkSettingsState" id="9">
Network settings state from product
<cmd name="WifiSelectionChanged" id="0">
Wifi selection from product
<arg name="type" type="enum">
The type of wifi selection settings
<enum name="auto_all">
Auto selection
</enum>
<enum name="auto_2_4ghz">
Auto selection 2.4ghz
</enum>
<enum name="auto_5ghz">
Auto selection 5 ghz
</enum>
<enum name="manual">
Manual selection
</enum>
</arg>
<arg name="band" type="enum">
The actual wifi band state
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
<enum name="all">
Both 2.4 and 5 GHz bands
</enum>
</arg>
<arg name="channel" type="u8">
The channel (depends of the band)
</arg>
</cmd>
</class>
<class name="Network" id="10">
Network related commands
<cmd name="WifiScan" id="0">
Launches wifi network scan
<arg name="band" type="enum">
The band(s) : 2.4 Ghz, 5 Ghz, or both
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
<enum name="all">
Both 2.4 and 5 GHz bands
</enum>
</arg>
</cmd>
<cmd name="WifiAuthChannel" id="1">
Controller inquire the list of authorized wifi channels.
</cmd>
</class>
<class name="NetworkState" id="11">
Network state from Product
<cmd name="WifiScanListChanged" id="0" type="MAP_ITEM">
One scanning result found
<arg name="ssid" type="string">
SSID of the AP
</arg>
<arg name="rssi" type="i16">
RSSI of the AP in dbm (negative value)
</arg>
<arg name="band" type="enum">
The band : 2.4 GHz or 5 GHz
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
</arg>
<arg name="channel" type="u8">
Channel of the AP
</arg>
</cmd>
<cmd name="AllWifiScanChanged" id="1">
State sent when all scanning result sent
</cmd>
<cmd name="WifiAuthChannelListChanged" id="2" type="LIST_ITEM">
Notify of an Authorized Channel.
<arg name="band" type="enum">
The band of this channel : 2.4 GHz or 5 GHz
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
</arg>
<arg name="channel" type="u8">
The authorized channel.
</arg>
<arg name="in_or_out" type="u8">
Bit 0 is 1 if channel is authorized outside (0 otherwise) ; Bit 1 is 1 if channel is authorized inside (0 otherwise)
</arg>
</cmd>
<cmd name="AllWifiAuthChannelChanged" id="3">
Notify the end of the list of Authorized wifi Channel.
</cmd>
<cmd name="LinkQualityChanged" id="4">
Notification sent by the firmware to give an indication of the WiFi link quality.
<arg name="quality" type="u8">
The WiFi link quality in range 0-6, the higher the value, the higher the link quality.
</arg>
</cmd>
</class>
<class name="AudioSettings" id="12">
Audio settings.
<cmd name="MasterVolume" id="0">
Master volume control.
<arg name="volume" type="u8">
Master audio volume [0:100].
</arg>
</cmd>
<cmd name="Theme" id="1">
Audio Theme.
<arg name="theme" type="enum">
The audio theme to set.
<enum name="default">
Default audio theme (depends on the product color)
</enum>
<enum name="robot">
Robot audio theme.
</enum>
<enum name="insect">
Insect audio theme.
</enum>
<enum name="monster">
Monster audio theme.
</enum>
</arg>
</cmd>
</class>
<class name="AudioSettingsState" id="13">
Audio settings state.
<cmd name="MasterVolumeChanged" id="0">
Master volume control.
<arg name="volume" type="u8">
Master audio volume [0:100].
</arg>
</cmd>
<cmd name="ThemeChanged" id="1">
Command to notify controller of new Audio Theme.
<arg name="theme" type="enum">
The audio theme to set.
<enum name="default">
Default audio theme (depends on the product color)
</enum>
<enum name="robot">
Robot audio theme.
</enum>
<enum name="insect">
Insect audio theme.
</enum>
<enum name="monster">
Monster audio theme.
</enum>
</arg>
</cmd>
</class>
<class name="RoadPlan" id="14">
RoadPlan commands.
<cmd name="AllScriptsMetadata" id="0">
Command to ask device all metadata scripts.
</cmd>
<cmd name="ScriptUploaded" id="1">
Notify device that a new file has been uploaded.
<arg name="uuid" type="string">
UUID of uploaded file.
</arg>
<arg name="md5Hash" type="string">
MD5 hash code computed over file.
</arg>
</cmd>
<cmd name="ScriptDelete" id="2">
Ask the device to delete a script.
<arg name="uuid" type="string">
UUID of the file to delete.
</arg>
</cmd>
<cmd name="PlayScript" id="3">
Ask the device to play a script.
<arg name="uuid" type="string">
UUID of the file to play.
</arg>
</cmd>
</class>
<class name="RoadPlanState" id="15">
RoadPlan command responses.
<cmd name="ScriptMetadataListChanged" id="0" type="MAP_ITEM">
Update the controller with metadata.
<arg name="uuid" type="string">
Script uuid for which metadata changed.
</arg>
<arg name="version" type="u8">
Version number for this script.
</arg>
<arg name="product" type="string">
Product targeted by script.
</arg>
<arg name="name" type="string">
Display name of the script.
</arg>
<arg name="lastModified" type="u64">
Timestamp relative to the UNIX epoch of the last time the file was modified.
</arg>
</cmd>
<cmd name="AllScriptsMetadataChanged" id="1">
Notify controller that all script metadatas are updated.
</cmd>
<cmd name="ScriptUploadChanged" id="2">
Device response to ScriptUploaded command.
<arg name="resultCode" type="enum">
Error code.
<enum name="error_ok">
The script was parsed successfully.
</enum>
<enum name="error_file_corrupted">
The MD5 hash codes are different or file is unreadable.
</enum>
<enum name="error_invalid_format">
The parser is not well formed or can not be parsed.
</enum>
<enum name="error_file_too_large">
The file is larger than maximum allowed size.
</enum>
<enum name="error_unsupported">
Script version is not supported by device.
</enum>
</arg>
</cmd>
<cmd name="ScriptDeleteChanged" id="3">
Device response to ScriptDelete command.
<arg name="resultCode" type="enum">
Error code.
<enum name="error_ok">
The script was deleted successfully.
</enum>
<enum name="error_no_such_script">
No script with this uuid exists.
</enum>
<enum name="error_internal_failure">
An internal error occured while attempting to delete the script.
</enum>
</arg>
</cmd>
<cmd name="PlayScriptChanged" id="4">
Device response to PlayScript command.
<arg name="resultCode" type="enum">
Error code.
<enum name="script_started">
The script started playing successfully.
</enum>
<enum name="script_finished">
The script finished successfully.
</enum>
<enum name="script_no_such_script">
No script with this uuid exists.
</enum>
<enum name="script_error">
An error occured while playing the script.
</enum>
</arg>
</cmd>
</class>
<class name="SpeedSettings" id="16">
Speed Settings commands
<cmd name="Outdoor" id="0">
@deprecated
Outdoor property
<arg name="outdoor" type="u8">
1 if outdoor, 0 if indoor
</arg>
</cmd>
</class>
<class name="SpeedSettingsState" id="17">
Speed Settings state from product
<cmd name="OutdoorChanged" id="0">
@deprecated
Outdoor property sent by product
<arg name="outdoor" type="u8">
1 if outdoor, 0 if indoor
</arg>
</cmd>
</class>
<class name="MediaStreaming" id="18">
Control media streaming behavior.
<cmd name="VideoEnable" id="0">
Enable/disable video streaming.
<arg name="enable" type="u8">
1 to enable, 0 to disable.
</arg>
</cmd>
</class>
<class name="MediaStreamingState" id="19">
Media streaming status.
<cmd name="VideoEnableChanged" id="0">
Return video streaming status.
<arg name="enabled" type="enum">
Current video streaming status.
<enum name="enabled">
Video streaming is enabled.
</enum>
<enum name="disabled">
Video streaming is disabled.
</enum>
<enum name="error">
Video streaming failed to start.
</enum>
</arg>
</cmd>
</class>
<class name="VideoSettings" id="21">
Video settings.
<cmd name="Autorecord" id="0">
Set video automatic recording state.
<arg name="enabled" type="u8">
0: Disabled 1: Enabled.
</arg>
</cmd>
</class>
<class name="VideoSettingsState" id="22">
Video settings state.
<cmd name="AutorecordChanged" id="0">
Get video automatic recording status.
<arg name="enabled" type="u8">
0: Disabled 1: Enabled.
</arg>
</cmd>
</class>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<feature id="138" name="mapper">
Key mapper for remote controllers
<enums>
<enum name="button_action">
The action (mapped on a button)
<value name="app_0">
Action handled by the application
</value>
<value name="app_1">
Action handled by the application
</value>
<value name="app_2">
Action handled by the application
</value>
<value name="app_3">
Action handled by the application
</value>
<value name="app_4">
Action handled by the application
</value>
<value name="app_5">
Action handled by the application
</value>
<value name="app_6">
Action handled by the application
</value>
<value name="app_7">
Action handled by the application
</value>
<value name="app_8">
Action handled by the application
</value>
<value name="app_9">
Action handled by the application
</value>
<value name="app_10">
Action handled by the application
</value>
<value name="app_11">
Action handled by the application
</value>
<value name="app_12">
Action handled by the application
</value>
<value name="app_13">
Action handled by the application
</value>
<value name="app_14">
Action handled by the application
</value>
<value name="app_15">
Action handled by the application
</value>
<value name="return_home">
Return to home
</value>
<value name="takeoff_land">
Take off or land
</value>
<value name="video_record">
Start/stop video record
</value>
<value name="take_picture">
Take a picture
</value>
<value name="camera_exposition_inc">
Increment camera exposition
</value>
<value name="camera_exposition_dec">
Decrement camera exposition
</value>
<value name="flip_left">
Flip left
</value>
<value name="flip_right">
Flip right
</value>
<value name="flip_front">
Flip front
</value>
<value name="flip_back">
Flip back
</value>
<value name="emergency">
Emergency motors shutdown
</value>
<value name="center_camera">
Reset camera to its default position
</value>
<value name="cycle_hud">
Cycle between different hud configurations on HDMI
(Skycontroller 1 only)
</value>
</enum>
<enum name="axis_action">
The action (mapped on an axis)
<value name="app_0">
Action handled by the application
</value>
<value name="app_1">
Action handled by the application
</value>
<value name="app_2">
Action handled by the application
</value>
<value name="app_3">
Action handled by the application
</value>
<value name="app_4">
Action handled by the application
</value>
<value name="app_5">
Action handled by the application
</value>
<value name="app_6">
Action handled by the application
</value>
<value name="app_7">
Action handled by the application
</value>
<value name="app_8">
Action handled by the application
</value>
<value name="app_9">
Action handled by the application
</value>
<value name="app_10">
Action handled by the application
</value>
<value name="app_11">
Action handled by the application
</value>
<value name="app_12">
Action handled by the application
</value>
<value name="app_13">
Action handled by the application
</value>
<value name="app_14">
Action handled by the application
</value>
<value name="app_15">
Action handled by the application
</value>
<value name="roll">
roll
</value>
<value name="pitch">
pitch
</value>
<value name="yaw">
yaw
</value>
<value name="gaz">
gaz
</value>
<value name="camera_pan">
camera pan
</value>
<value name="camera_tilt">
camera tilt
</value>
</enum>
<enum name="button_event">
Button event
<value name="release">
button released
</value>
<value name="press">
button pressed
</value>
</enum>
<enum name="expo_type">
Expo type
<value name="linear">
No expo applied, axis is linear
</value>
<value name="expo_0">
Light exponential curve
</value>
<value name="expo_1">
Medium exponential curve
</value>
<value name="expo_2">
Heavy exponential curve
</value>
<value name="expo_4">
Maximum exponential curve
</value>
</enum>
</enums>
<msgs>
<cmd name="grab" id="1">
<comment
title="Grab (or ungrab) controls"
desc="Grabbed buttons are sent to the app and are not
handled by the mapper"
support="090f;0913;0915"
result="The mapper will send a [grab_state](#138-2) command"/>
<arg name="buttons" type="u32">
Buttons to grab/ungrab (bitfield)
</arg>
<arg name="axes" type="u32">
Axes to grab/ungrab (bitfield)
</arg>
</cmd>
<evt name="grab_state" id="2">
<comment
title="Grabbed controls"
desc="Grabbed buttons are sent to the app and are not
handled by the mapper"
support="090f;0913;0915"
triggered="by a [grab](#138-1) command"/>
<arg name="buttons" type="u32">
Grabbed buttons (bitfield)
</arg>
<arg name="axes" type="u32">
Grabbed axes (bitfield)
</arg>
<arg name="buttons_state" type="u32">
For grabbed buttons only.
State of the button when the grab starts (bitfield)
</arg>
</evt>
<evt name="grab_button_event" id="3" content="NOTIFICATION">
<comment
title="Event on a grabbed button"
desc="The state of a grabbed button changes"
support="090f;0913;0915"
triggered="when a grabbed button is pressed/released"/>
<arg name="button" type="u32">
Button id
</arg>
<arg name="event" type="enum:button_event"/>
</evt>
<evt name="grab_axis_event" id="4" content="NOTIFICATION">
<comment
title="Event on a grabbed axis"
desc="The state of a grabbed axis changes"
support="090f;0913;0915"
triggered="when the value of a grabbed axis changes"/>
<arg name="axis" type="u32">
Axis id
</arg>
<arg name="value" type="i8">
Value in range [-100; 100].
</arg>
</evt>
<cmd name="map_button_action" id="5">
<comment
title="Map a button action on one or more buttons"
desc="An action can only be mapped to one button set.\n
Each action can be mapped to different buttons for
different products."
support="090f;0913;0915"
result="The mapper will send [button_mapping_item](#138-7) and
[axis_mapping_item](#138-8) according to the request."/>
<arg name="product" type="u16">
Product (see libARDiscovery for list)
</arg>
<arg name="action" type="enum:button_action"/>
<arg name="buttons" type="u32">
Buttons combination mapped to the action (bitfield).
Set 0 (no button) to unmap an action
</arg>
</cmd>
<cmd name="map_axis_action" id="6">
<comment
title="Map an axis action to one axis and zero or more buttons"
desc="An action can only be mapped to one axis/button set.\n
Each action can be mapped to different axes/buttons for
different products."
support="090f;0913;0915"
result="The mapper will send [button_mapping_item](#138-7) and
[axis_mapping_item](#138-8) according to the request."/>
<arg name="product" type="u16">
Product (see libARDiscovery for list)
</arg>
<arg name="action" type="enum:axis_action"/>
<arg name="axis" type="i32">
The axis number on which the action will be mapped.
Set a negative value to unmap the action.
</arg>
<arg name="buttons" type="u32">
Buttons combination mapped to the action (bitfield).
Can be zero if no buttons are required.
</arg>
</cmd>
<evt name="button_mapping_item" id="7" type="MAP_ITEM:uid">
<comment
title="Item of the button_actions mapping list"
desc="The resulting map describes all active button mappings of the
mapper.\n Each action can only be mapped once per product."
support="090f;0913;0915"
triggered="by a [map_button_action](#138-5) or a
[map_axis_action](#138-6) command"/>
<arg name="uid" type="u32">
Unique ID of the mapping.
</arg>
<arg name="product" type="u16">
Product (see libARDiscovery for list)
</arg>
<arg name="action" type="enum:button_action"/>
<arg name="buttons" type="u32">
Buttons combination mapped to the action (bitfield).
</arg>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
</evt>
<evt name="axis_mapping_item" id="8" type="MAP_ITEM:uid">
<comment
title="Item of the axis_actions mapping list"
desc="The resulting map describes all active axis mappings of the
mapper.\n Each action can only be mapped once per product."
support="090f;0913;0915"
triggered="by a [map_button_action](#138-5) or a
[map_axis_action](#138-6) command"/>
<arg name="uid" type="u32">
Unique ID of the mapping.
</arg>
<arg name="product" type="u16">
Product (see libARDiscovery for list)
</arg>
<arg name="action" type="enum:axis_action"/>
<arg name="axis" type="i32">
The axis number on which the action is mapped.
</arg>
<arg name="buttons" type="u32">
Buttons combination mapped to the action (bitfield).
</arg>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
</evt>
<evt name="application_axis_event" id="9" content="NOTIFICATION">
<comment
title="Application specific event"
desc="This event signals the controller application when an
application specific axis_event is triggered.\n Application
specific actions are typically used for UI interaction which
does not involves the drone."
support="090f;0913;0915"
triggered="when any axis action set to application_action is triggered."/>
<arg name="action" type="enum:axis_action"/>
<arg name="value" type="i8">
The current value of the axis.
</arg>
</evt>
<evt name="application_button_event" id="10" content="NOTIFICATION">
<comment
title="Application specific event"
desc="This event signals the controller application when an
application specific button_event is triggered.\n Application
specific actions are typically used for UI interaction which
does not involves the drone."
support="090f;0913;0915"
triggered="when any button action set to application_action is triggered."/>
<arg name="action" type="enum:button_action"/>
</evt>
<cmd name="reset_mapping" id="11">
<comment
title="Reset mapping to default values"
desc="Resets the mappings, axis exponential parameters, and axis
inversion for the given product.\n
If the product is given as 0 (zero), the all products are reset."
support="090f;0913;0915"
result="The mapper will send [button_mapping_item](#138-7),
[axis_mapping_item](#138-8), [expo_map_item](#138-13)
and [inverted_map_item](#138-15) according to the request."/>
<arg name="product" type="u16">
The product to reset, or 0 to reset all products.
</arg>
</cmd>
<cmd name="set_expo" id="12">
<comment
title="Set exponential type for the given axis, for the given product"
desc="By default, each axis can have a different expo value.\n
For some products/mappings configuration, the expo values of two
axes belonging to the same physical joystick can be locked to
the same value. In this case, setting the value for one axis
will automatically change both values."
support="090f;0913;0915"
result="The mapper will send [expo_map_item](#138-13)"/>
<arg name="product" type="u16">
Product (see libARDiscovery for list).
Set to 0 to apply to all products
</arg>
<arg name="axis" type="i32">
Axis number. Set to -1 to apply to all axes.
</arg>
<arg name="expo" type="enum:expo_type"/>
</cmd>
<evt name="expo_map_item" id="13" type="MAP_ITEM:uid">
<comment
title="Item of the expo map"
desc="By default, each axis can have a different expo value.\n
For some products/mappings configuration, the expo values of two
axes belonging to the same physical joystick can be locked to
the same value. In this case, setting the value for one axis
will automatically change both values."
support="090f;0913;0915"
triggered="by a [set_expo](#138-12) command"/>
<arg name="uid" type="u32">
Unique ID (for MAP_ITEM type)
</arg>
<arg name="product" type="u16">
Product (see libARDiscovery for list)
</arg>
<arg name="axis" type="i32">
Axis number
</arg>
<arg name="expo" type="enum:expo_type"/>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
</evt>
<cmd name="set_inverted" id="14">
<comment
title="Set/unset inverted state for a physical axis"
desc="Axis inversion has no effect on grabbed axes, nor on virtual
buttons that might be generated from axes."
support="090f;0913;0915"
result="The mapper will send [inverted_map_item](#138-15)"/>
<arg name="product" type="u16">
Product (see libARDiscovery for list).
Set to 0 to apply to all products
</arg>
<arg name="axis" type="i32">
Axis number
</arg>
<arg name="inverted" type="u8">
0 : Axis not inverted.
1 : Axis inverted
</arg>
</cmd>
<evt name="inverted_map_item" id="15" type="MAP_ITEM:uid">
<comment
title="Item of the inverted map"
desc="Axis inversion has no effect on grabbed axes, nor on virtual
buttons that might be generated from axes."
support="090f;0913;0915"
triggered="by a [set_inverted](#138-14) command"/>
<arg name="uid" type="u32">
Unique ID (for MAP_ITEM type)
</arg>
<arg name="product" type="u16">
Product (see libARDiscovery for list)
</arg>
<arg name="axis" type="i32">
Axis number
</arg>
<arg name="inverted" type="u8">
0 : Axis not inverted.
1 : Axis inverted
</arg>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
</evt>
<evt name="active_product" id="16">
<comment
title="Active product for the mapper"
desc="This event notifies the application about the currently active
product, thus allowing the application to diplay and edit the
current mapping without having to guess from other sources."
support="090f:1.0.5;0913;0915"
triggered="when the active product changes"/>
<arg name="product" type="u16">
Product (see libARDiscovery for list)
</arg>
</evt>
</msgs>
</feature>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<feature id="141" name="mapper_mini">
Key mapper for minidrones
<enums>
<enum name="button_action">
The action (mapped on a button)
<value name="takeoff_land">
Take off or land
</value>
<value name="take_picture">
Take a picture
</value>
<value name="flip_left">
Flip left
</value>
<value name="flip_right">
Flip right
</value>
<value name="flip_front">
Flip front
</value>
<value name="flip_back">
Flip back
</value>
<value name="emergency">
Emergency motors shutdown
</value>
<value name="accessory_gun">
Launch USB accessory gun action (shoot)
</value>
<value name="thrown_takeoff">
Thrown take off
</value>
<value name="cw_90_swipe">
90 deg clockwise swipe
</value>
<value name="ccw_90_swipe">
90 deg counter clockwise swipe
</value>
<value name="cw_180_swipe">
180 deg clockwise swipe
</value>
<value name="ccw_180_swipe">
180 deg counter clockwise swipe
</value>
<value name="gear_up">
increase gear
</value>
<value name="gear_down">
decrease gear
</value>
<value name="plane_mode_half_barel_roll_right">
in plane mode make a 180 deg anticlockwise swipe on roll axis
</value>
<value name="plane_mode_half_barel_roll_left">
in plane mode make a 180 deg clockwise swipe on roll axis
</value>
<value name="plane_mode_backswap">
in plane mode make a 180 deg clockwise swipe on pitch axis
</value>
<value name="plane_mode_looping">
vertical circular loop in plane mode
</value>
<value name="plane_mode_toggle">
switch between plane mode and quad mode
</value>
<value name="accessory_claw">
Launch USB accessory claw action (open/close)
</value>
<value name="light_continuous">
switch continuous light (ON/OFF)
</value>
<value name="light_blink">
switch blink light (ON/OFF)
</value>
<value name="light_sinus">
switch sinus light (ON/OFF)
</value>
<value name="light_toggle">
toggle between light animations (OFF-continuous-blink-sinus-OFF)
</value>
<value name="piloting_mode_toggle">
toggle between easy and preferred piloting mode
</value>
<value name="video_record_toggle">
start or stop video
</value>
<!-- Todo : add more actions -->
</enum>
<enum name="axis_action">
The action (mapped on an axis)
<value name="roll">
roll
</value>
<value name="pitch">
pitch
</value>
<value name="yaw">
yaw
</value>
<value name="gaz">
gaz
</value>
</enum>
<enum name="mode">
The piloting mode of the product
<value name="quad">
Quadricopter mode
</value>
<value name="plane">
Plane mode
</value>
</enum>
</enums>
<msgs>
<cmd name="map_button_action" id="1">
<comment
title="Map a button action on one or more buttons"
desc="An action can only be mapped to one button set.\n
Each action can be mapped to different buttons for
different modes."
support="090b;0910"
result="The drone will send [button_mapping_item](#141-3) and
[axis_mapping_item](#141-4) according to the request."/>
<arg name="modes" type="bitfield:u8:mode">
The modes on which the mapping will be set
</arg>
<arg name="action" type="enum:button_action"/>
<arg name="buttons" type="u32">
Buttons combination mapped to the action (bitfield).
Set 0 (no button) to unmap an action
</arg>
</cmd>
<cmd name="map_axis_action" id="2">
<comment
title="Map an axis action to one axis and zero or more buttons"
desc="An action can only be mapped to one axis/button set.\n
Each action can be mapped to different axes/buttons for
different modes."
support="090b;0910"
result="The drone will send [button_mapping_item](#141-3) and
[axis_mapping_item](#141-4) according to the request."/>
<arg name="modes" type="bitfield:u8:mode">
The modes on which the mapping will be set
</arg>
<arg name="action" type="enum:axis_action"/>
<arg name="axis" type="i8">
The axis number on which the action will be mapped.
Set a negative value to unmap the action.
</arg>
<arg name="buttons" type="u32">
Buttons combination mapped to the action (bitfield).
Can be zero if no buttons are required.
</arg>
</cmd>
<evt name="button_mapping_item" id="3" type="MAP_ITEM:uid">
<comment
title="Item of the button_actions mapping list"
desc="The resulting map describes all active button mappings of the
product.\n A mapping can affect one or mode modes, but each
action can only be mapped once per mode."
support="090b;0910"
triggered="by a [map_button_action](#141-1) or a
[map_axis_action](#141-2) command"/>
<arg name="uid" type="u16">
Unique ID of the mapping.
</arg>
<arg name="modes" type="bitfield:u8:mode">
The modes on which the mapping is set
</arg>
<arg name="action" type="enum:button_action"/>
<arg name="buttons" type="u32">
Buttons combination mapped to the action (bitfield).
</arg>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
</evt>
<evt name="axis_mapping_item" id="4" type="MAP_ITEM:uid">
<comment
title="Item of the axis_actions mapping list"
desc="The resulting map describes all active axis mappings of the
product.\n A mapping can affect one or mode modes, but each
action can only be mapped once per mode."
support="090b;0910"
triggered="by a [map_button_action](#141-1) or a
[map_axis_action](#141-2) command"/>
<arg name="uid" type="u16">
Unique ID of the mapping.
</arg>
<arg name="modes" type="bitfield:u8:mode">
The modes on which the mapping is set
</arg>
<arg name="action" type="enum:axis_action"/>
<arg name="axis" type="i8">
The axis number on which the action is mapped.
</arg>
<arg name="buttons" type="u32">
Buttons combination mapped to the action (bitfield).
</arg>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
</evt>
<cmd name="reset_mapping" id="5">
<comment
title="Reset mapping to default values"
desc="Resets the mappings for the given mode(s) to their default
value."
support="090b;0910"
result="The drone will send [button_mapping_item](#141-3) and
[axis_mapping_item](#141-4) according to the request."/>
<arg name="modes" type="bitfield:u8:mode">
The mode(s) to reset.
</arg>
</cmd>
</msgs>
</feature>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<project name="minidrone" id="2">
All MiniDrone-only commands
<class name="Piloting" id="0">
All commands related to piloting the MiniDrone
<cmd name="FlatTrim" id="0">
Do a flat trim
</cmd>
<cmd name="TakeOff" id="1">
Ask the drone to take off
</cmd>
<cmd name="PCMD" id="2" buffer="NON_ACK">
Ask the drone to move around.
<arg name="flag" type="u8">
Boolean flag to activate roll/pitch movement
</arg>
<arg name="roll" type="i8">
Roll consign for the MiniDrone [-100;100]
</arg>
<arg name="pitch" type="i8">
Pitch consign for the MiniDrone [-100;100]
</arg>
<arg name="yaw" type="i8">
Yaw consign for the MiniDrone [-100;100]
</arg>
<arg name="gaz" type="i8">
Gaz consign for the MiniDrone [-100;100]
</arg>
<arg name="timestamp" type="u32">
Timestamp in miliseconds. Not an absolute time. (Typically 0 = time of connexion).
</arg>
</cmd>
<cmd name="Landing" id="3">
Ask the MiniDrone to land
</cmd>
<cmd name="Emergency" id="4" buffer="HIGH_PRIO" timeout="RETRY">
Put drone in emergency state
</cmd>
<cmd name="AutoTakeOffMode" id="5">
Set MiniDrone automatic take off mode
<arg name="state" type="u8">
State of automatic take off mode
</arg>
</cmd>
<cmd name="FlyingMode" id="6">
Set drone FlyingMode. Only supported by WingX
<arg name="mode" type="u8">
Drone Flying Mode
<enum name="quadricopter">
Fly as a quadrictopter
</enum>
<enum name="plane_forward">
Fly as a plane in forward mode
</enum>
<enum name="plane_backward">
Fly as a plane in backward mode
</enum>
</arg>
</cmd>
<cmd name="PlaneGearBox" id="7">
Set Plane Gear Box. Only supported by WingX
<arg name="state" type="enum">
Plane Gear Box
<enum name="gear_1">
Gear 1. Low speed
</enum>
<enum name="gear_2">
Gear 2. Middle speed
</enum>
<enum name="gear_3">
Gear 3. High speed
</enum>
</arg>
</cmd>
<cmd name="TogglePilotingMode" id="8">
Command to toggle between "easy" piloting mode and "preferred" piloting mode.
This command only works while the drone is flying.
</cmd>
</class>
<class name="PilotingState" id="3">
Occasional information
<cmd name="FlatTrimChanged" id="0">
MiniDrone send flat trim was correctly processed
</cmd>
<cmd name="FlyingStateChanged" id="1">
Drone flying state changed
<arg name="state" type="enum">
Drone flying state
<enum name="landed">
Landed state
</enum>
<enum name="takingoff">
Taking off state
</enum>
<enum name="hovering">
Hovering state
</enum>
<enum name="flying">
Flying state
</enum>
<enum name="landing">
Landing state
</enum>
<enum name="emergency">
Emergency state
</enum>
<enum name="rolling">
Rolling state
</enum>
<enum name="init">
Initializing state (user should let the drone steady for a while)
</enum>
</arg>
</cmd>
<cmd name="AlertStateChanged" id="2">
Drone alert state changed
<arg name="state" type="enum">
Drone alert state
<enum name="none">
No alert
</enum>
<enum name="user">
User emergency alert
</enum>
<enum name="cut_out">
Cut out alert
</enum>
<enum name="critical_battery">
Critical battery alert
</enum>
<enum name="low_battery">
Low battery alert
</enum>
</arg>
</cmd>
<cmd name="AutoTakeOffModeChanged" id="3">
Set MiniDrone automatic take off mode
<arg name="state" type="u8">
State of automatic take off mode
</arg>
</cmd>
<cmd name="FlyingModeChanged" id="4">
FlyingMode changed. Only supported by WingX
<arg name="mode" type="u8">
Drone Flying Mode
<enum name="quadricopter">
Fly as a quadrictopter
</enum>
<enum name="plane_forward">
Fly as a plane in forward mode
</enum>
<enum name="plane_backward">
Fly as a plane in backward mode
</enum>
</arg>
</cmd>
<cmd name="PlaneGearBoxChanged" id="5">
Plane Gear Box changed. Only supported by WingX
<arg name="state" type="enum">
Plane Gear Box
<enum name="gear_1">
Gear 1. Low speed
</enum>
<enum name="gear_2">
Gear 2. Middle speed
</enum>
<enum name="gear_3">
Gear 3. High speed
</enum>
</arg>
</cmd>
<cmd name="PilotingModeChanged" id="6">
Event informing about the piloting mode.
<arg name="mode" type="enum">
<enum name="easy">
The flight envelope of Mambo FPV has been divided in three piloting modes.
The first one corresponds to the well-known flying mode currently used for
Mambo, which is based in an horizontal stabilisation (performed via the
vertical camera and the acceleration information) and a vertical acceleration
(by means of the ultrasound, the barometer and the vertical accelerometer) in
order for the drone to stay in fixed point position when no piloting commands
are sent by the user.
</enum>
<enum name="medium">
The second piloting mode consists of deactivating the horizontal stabilisation.
Thus, in this flying mode, when no piloting command is received, the drone will
try to stay at 0° tilt angle instead of responding to a 0 m/s horizontal speed
reference. This behaviour will result in a slight horizontal drift.
</enum>
<enum name="difficult">
The third piloting mode also adds the vertical stabilisation deactivation and,
therefore, a slight vertical drift. When flying in the third mode, a closed
loop height control is no longer performed in order for the drone to keep a
certain height and vertical speed. Instead, the vertical command coming from
the user will directly generate an open loop acceleration command.
</enum>
</arg>
</cmd>
</class>
<class name="Animations" id="4">
Animation commands
<cmd name="Flip" id="0">
Make a flip
<arg name="direction" type="enum">
Direction for the flip
<enum name="front">
Flip direction front
</enum>
<enum name="back">
Flip direction back
</enum>
<enum name="right">
Flip direction right
</enum>
<enum name="left">
Flip direction left
</enum>
</arg>
</cmd>
<cmd name="Cap" id="1">
Change the product cap
<arg name="offset" type="i16">
Change the cap with offset angle [-180;180]
</arg>
</cmd>
</class>
<class name="MediaRecord" id="6">
Media recording management
<cmd name="Picture" id="0">
@deprecated
Take picture
<arg name="mass_storage_id" type="u8">
Mass storage id to take picture
</arg>
</cmd>
<cmd name="PictureV2" id="1">
Take picture
</cmd>
</class>
<class name="MediaRecordState" id="7">
State of media recording
<cmd name="PictureStateChanged" id="0">
@deprecated
State of picture recording
<arg name="state" type="u8">
1 if picture has been taken, 0 otherwise
</arg>
<arg name="mass_storage_id" type="u8">
Mass storage id to record
</arg>
</cmd>
<cmd name="PictureStateChangedV2" id="1">
State of device picture recording changed
<arg name="state" type="enum">
State of device picture recording
<enum name="ready">
The picture recording is ready
</enum>
<enum name="busy">
The picture recording is busy
</enum>
<enum name="notAvailable">
The picture recording is not available
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the state
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error
</enum>
<enum name="camera_ko">
Picture camera is out of order
</enum>
<enum name="memoryFull">
Memory full ; cannot save one additional picture
</enum>
<enum name="lowBattery">
Battery is too low to start/keep recording.
</enum>
</arg>
</cmd>
</class>
<class name="MediaRecordEvent" id="2">
Events of media recording
<cmd name="PictureEventChanged" id="0" content="NOTIFICATION">
Event of picture recording
<arg name="event" type="enum">
Last event of picture recording
<enum name="taken">
Picture taken and saved
</enum>
<enum name="failed">
Picture failed
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the event
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error ; only when state is failed
</enum>
<enum name="busy">
Picture recording is busy ; only when state is failed
</enum>
<enum name="notAvailable">
Picture recording not available ; only when state is failed
</enum>
<enum name="memoryFull">
Memory full ; only when state is failed
</enum>
<enum name="lowBattery">
Battery is too low to record.
</enum>
</arg>
</cmd>
</class>
<class name="PilotingSettings" id="8">
Piloting Settings commands
<cmd name="MaxAltitude" id="0">
Set Max Altitude
<arg name="current" type="float">
Current altitude max in m
</arg>
</cmd>
<cmd name="MaxTilt" id="1">
Set Max Tilt
<arg name="current" type="float">
Current tilt max in degree
</arg>
</cmd>
<cmd name="BankedTurn" id="2">
<comment
title="Set banked turn mode"
desc="Set banked turn mode.\n
When banked turn mode is enabled, the drone will use yaw values from the piloting command to infer with roll and pitch on the drone when its horizontal speed is not null."
support="090b:3.0.6"
result="The banked turn mode is enabled or disabled.\n
Then, event [BankedTurnMode](#2-9-2) is triggered."/>
<arg name="value" type="u8">
1 to enable, 0 to disable
</arg>
</cmd>
<cmd name="MaxThrottle" id="3">
This setting represents the vertical acceleration command that will be sent to the drone when piloting in gaz mode.
In this case, closed loop height control is no longer performed; an open loop vertical acceleration command is generated instead.
This command results from multiplying the user command coming from the joystick (float value between 0 and 1) by the MaxThrottle setting (also a value between 0 and 1) and by the gravity constant.
Thus, we obtain the corresponding value in [m/s²] that will then be mixed with the attitude commands and translated into rotation speeds.
As an example, if the value of this setting is 0.5, the maximal acceleration command that can be generated when the user command equals 1 is :
acc_cmd_max = 1 * 0.5 * 9.81 m/s² = 4.905 m/s².
<arg name="max" type="float">
Max throttle, between 0 and 1.
</arg>
</cmd>
<cmd name="PreferredPilotingMode" id="4">
The flight envelope of Mambo FPV has been divided in three piloting modes.
<arg name="mode" type="enum">
Piloting modes.
<enum name="easy">
The flight envelope of Mambo FPV has been divided in three piloting modes.
The first one corresponds to the well-known flying mode currently used for
Mambo, which is based in an horizontal stabilisation (performed via the
vertical camera and the acceleration information) and a vertical acceleration
(by means of the ultrasound, the barometer and the vertical accelerometer) in
order for the drone to stay in fixed point position when no piloting commands
are sent by the user.
</enum>
<enum name="medium">
The second piloting mode consists of deactivating the horizontal stabilisation.
Thus, in this flying mode, when no piloting command is received, the drone will
try to stay at 0° tilt angle instead of responding to a 0 m/s horizontal speed
reference. This behaviour will result in a slight horizontal drift.
</enum>
<enum name="difficult">
The third piloting mode also adds the vertical stabilisation deactivation and,
therefore, a slight vertical drift. When flying in the third mode, a closed
loop height control is no longer performed in order for the drone to keep a
certain height and vertical speed. Instead, the vertical command coming from
the user will directly generate an open loop acceleration command.
</enum>
</arg>
</cmd>
</class>
<class name="PilotingSettingsState" id="9">
Piloting Settings state from product
<cmd name="MaxAltitudeChanged" id="0">
Max Altitude sent by product
<arg name="current" type="float">
Current altitude max
</arg>
<arg name="min" type="float">
Range min of altitude
</arg>
<arg name="max" type="float">
Range max of altitude
</arg>
</cmd>
<cmd name="MaxTiltChanged" id="1">
Max tilt sent by product
<arg name="current" type="float">
Current max tilt
</arg>
<arg name="min" type="float">
Range min of tilt
</arg>
<arg name="max" type="float">
Range max of tilt
</arg>
</cmd>
<cmd name="BankedTurnChanged" id="2">
<comment
title="Banked Turn mode"
desc="Banked Turn mode.\n
If banked turn mode is enabled, the drone will use yaw values from the piloting command to infer with roll and pitch on the drone when its horizontal speed is not null."
support="090b:3.0.6"
triggered="by [SetBankedTurnMode](#2-8-2)."/>
<arg name="state" type="u8">
1 if enabled, 0 if disabled
</arg>
</cmd>
<cmd name="MaxThrottleChanged" id="3">
Event informing about the max throttle.
<arg name="max" type="float">
Max throttle, between 0 and 1.
</arg>
</cmd>
<cmd name="PreferredPilotingModeChanged" id="4">
Event informing about the preferred piloting mode.
<arg name="mode" type="enum">
<enum name="easy">
The flight envelope of Mambo FPV has been divided in three piloting modes.
The first one corresponds to the well-known flying mode currently used for
Mambo, which is based in an horizontal stabilisation (performed via the
vertical camera and the acceleration information) and a vertical acceleration
(by means of the ultrasound, the barometer and the vertical accelerometer) in
order for the drone to stay in fixed point position when no piloting commands
are sent by the user.
</enum>
<enum name="medium">
The second piloting mode consists of deactivating the horizontal stabilisation.
Thus, in this flying mode, when no piloting command is received, the drone will
try to stay at 0° tilt angle instead of responding to a 0 m/s horizontal speed
reference. This behaviour will result in a slight horizontal drift.
</enum>
<enum name="difficult">
The third piloting mode also adds the vertical stabilisation deactivation and,
therefore, a slight vertical drift. When flying in the third mode, a closed
loop height control is no longer performed in order for the drone to keep a
certain height and vertical speed. Instead, the vertical command coming from
the user will directly generate an open loop acceleration command.
</enum>
</arg>
</cmd>
</class>
<class name="SpeedSettings" id="1">
Speed Settings commands
<cmd name="MaxVerticalSpeed" id="0">
Set Max Vertical speed
<arg name="current" type="float">
Current max vertical speed in m/s
</arg>
</cmd>
<cmd name="MaxRotationSpeed" id="1">
Set Max Rotation speed
<arg name="current" type="float">
Current max rotation speed in degree/s
</arg>
</cmd>
<cmd name="Wheels" id="2">
Presence of wheels
<arg name="present" type="u8">
1 if present, 0 if not present
</arg>
</cmd>
<cmd name="MaxHorizontalSpeed" id="3">
Set Max Horizontal speed (only used in case where PilotingSettings_MaxTilt is not used like in hydrofoil mode)
<arg name="current" type="float">
Current max Horizontal speed in m/s
</arg>
</cmd>
<cmd name="MaxPlaneModeRotationSpeed" id="4">
Set max plane mode rotation speed (only available for wing x)
<arg name="current" type="float">
Current max plane mode rotation speed in degree/s
</arg>
</cmd>
</class>
<class name="SpeedSettingsState" id="5">
Speed Settings state from product
<cmd name="MaxVerticalSpeedChanged" id="0">
Max vertical speed sent by product
<arg name="current" type="float">
Current max vertical speed in m/s
</arg>
<arg name="min" type="float">
Range min of vertical speed
</arg>
<arg name="max" type="float">
Range max of vertical speed
</arg>
</cmd>
<cmd name="MaxRotationSpeedChanged" id="1">
Max rotation speed sent by product
<arg name="current" type="float">
Current max rotation speed in degree/s
</arg>
<arg name="min" type="float">
Range min of rotation speed
</arg>
<arg name="max" type="float">
Range max of rotation speed
</arg>
</cmd>
<cmd name="WheelsChanged" id="2">
Presence of wheels sent by product
<arg name="present" type="u8">
1 if present, 0 if not present
</arg>
</cmd>
<cmd name="MaxHorizontalSpeedChanged" id="3">
Max horizontal speed sent by product (only used in case where PilotingSettings_MaxTilt is not used like in hydrofoil mode)
<arg name="current" type="float">
Current max horizontal speed in m/s
</arg>
<arg name="min" type="float">
Range min of horizontal speed
</arg>
<arg name="max" type="float">
Range max of horizontal speed
</arg>
</cmd>
<cmd name="MaxPlaneModeRotationSpeedChanged" id="4">
Max plane rotation speed sent by product (only available for wing x)
<arg name="current" type="float">
Current max plane mode rotation speed in degree/s
</arg>
<arg name="min" type="float">
Range min of plane mode rotation speed
</arg>
<arg name="max" type="float">
Range max of plane mode rotation speed
</arg>
</cmd>
</class>
<class name="Settings" id="10">
Settings commands
<cmd name="CutOutMode" id="0">
Set MiniDrone cut out mode
<arg name="enable" type="u8">
Enable cut out mode (1 if is activate, 0 otherwise)
</arg>
</cmd>
</class>
<class name="SettingsState" id="11">
Settings state from product
<cmd name="ProductMotorsVersionChanged" id="0">
@deprecated
Product Motors versions
<arg name="motor" type="u8">
Product Motor number [1 - 4]
</arg>
<arg name="type" type="string">
Product Motor type
</arg>
<arg name="software" type="string">
Product Motors software version
</arg>
<arg name="hardware" type="string">
Product Motors hardware version
</arg>
</cmd>
<cmd name="ProductInertialVersionChanged" id="1">
@deprecated
Product Inertial versions
<arg name="software" type="string">
Product Inertial software version
</arg>
<arg name="hardware" type="string">
Product Inertial hardware version
</arg>
</cmd>
<cmd name="CutOutModeChanged" id="2">
MiniDrone cut out mode
<arg name="enable" type="u8">
State of cut out mode (1 if is activate, 0 otherwise)
</arg>
</cmd>
</class>
<class name="FloodControlState" id="12">
Settings state from product
<cmd name="FloodControlChanged" id="0">
@deprecated
Flood control regulation
<arg name="delay" type="u16">
Delay (in ms) between two PCMD
</arg>
</cmd>
</class>
<class name="GPS" id="13">
GPS related commands
<cmd name="ControllerLatitudeForRun" id="0">
Set the controller latitude for a run.
<arg name="latitude" type="double">
Controller latitude in decimal degrees
</arg>
</cmd>
<cmd name="ControllerLongitudeForRun" id="1">
Set the controller longitude for a run.
<arg name="longitude" type="double">
Controller longitude in decimal degrees
</arg>
</cmd>
</class>
<class name="Configuration" id="14">
Configuration related commands
<cmd name="ControllerType" id="0">
Set the controller type.
<arg name="type" type="string">
Controller type like iOS or Android
</arg>
</cmd>
<cmd name="ControllerName" id="1">
Set the controller name.
<arg name="name" type="string">
Controller name like com.parrot.freeflight3
</arg>
</cmd>
</class>
<class name="UsbAccessoryState" id="15">
USB Accessories state commands.
<cmd name="LightState" id="0" type="MAP_ITEM">
USB Light accessory state cmd.
<arg name="id" type="u8">
Usb accessory id
</arg>
<arg name="state" type="enum">
Usb Light state.
<enum name="FIXED">
Fixed state at given intensity.
</enum>
<enum name="BLINKED">
Blinked state.
</enum>
<enum name="OSCILLATED">
Oscillated state.
</enum>
</arg>
<arg name="intensity" type="u8">
Light intensity from 0 (OFF) to 100 (Max intensity).
Only used in FIXED state.
</arg>
<arg name="list_flags" type="u8">
List entry attribute Bitfield.
0x01: First: indicate it's the first element of the list.
0x02: Last: indicate it's the last element of the list.
0x04: Empty: indicate the list is empty (implies First/Last). All other arguments should be ignored.
0x08: Remove: This value should be removed from the existing list.
</arg>
</cmd>
<cmd name="ClawState" id="1" type="MAP_ITEM">
USB Claw accessory state cmd.
<arg name="id" type="u8">
Usb accessory id
</arg>
<arg name="state" type="enum">
Usb Claw state.
<enum name="OPENED">
Claw is fully opened.
</enum>
<enum name="OPENING">
Claw open in progress.
</enum>
<enum name="CLOSED">
Claw is fully closed.
</enum>
<enum name="CLOSING">
Claw close in progress.
</enum>
</arg>
<arg name="list_flags" type="u8">
List entry attribute Bitfield.
0x01: First: indicate it's the first element of the list.
0x02: Last: indicate it's the last element of the list.
0x04: Empty: indicate the list is empty (implies First/Last). All other arguments should be ignored.
0x08: Remove: This value should be removed from the existing list.
</arg>
</cmd>
<cmd name="GunState" id="2" type="MAP_ITEM">
USB Gun accessory state cmd.
<arg name="id" type="u8">
Usb accessory id.
</arg>
<arg name="state" type="enum">
USB Claw state.
<enum name="READY">
Gun is ready to fire.
</enum>
<enum name="BUSY">
Gun is busy (ie not ready to fire).
</enum>
</arg>
<arg name="list_flags" type="u8">
List entry attribute Bitfield.
0x01: First: indicate it's the first element of the list.
0x02: Last: indicate it's the last element of the list.
0x04: Empty: indicate the list is empty (implies First/Last). All other arguments should be ignored.
0x08: Remove: This value should be removed from the existing list.
</arg>
</cmd>
</class>
<class name="UsbAccessory" id="16">
USB Accessories control commands.
<cmd name="LightControl" id="0">
USB Light control cmd.
<arg name="id" type="u8">
Usb accessory id
</arg>
<arg name="mode" type="enum">
Usb Light mode.
<enum name="FIXED">
Turn light in fixed state at a given intensity.
</enum>
<enum name="BLINKED">
Turn light in blinked state.
</enum>
<enum name="OSCILLATED">
Turn light in oscillated state.
</enum>
</arg>
<arg name="intensity" type="u8">
Light intensity from 0 (OFF) to 100 (Max intensity).
Only used in FIXED mode.
</arg>
</cmd>
<cmd name="ClawControl" id="1">
USB Claw control cmd.
<arg name="id" type="u8">
Usb accessory id.
</arg>
<arg name="action" type="enum">
USB Claw action.
<enum name="OPEN">
Open Claw.
</enum>
<enum name="CLOSE">
Close Claw.
</enum>
</arg>
</cmd>
<cmd name="GunControl" id="2">
USB Gun control cmd.
<arg name="id" type="u8">
Usb accessory id
</arg>
<arg name="action" type="enum">
USB Gun action.
<enum name="FIRE">
Fire.
</enum>
</arg>
</cmd>
</class>
<class name="RemoteController" id="17">
Remote controller related commands.
<cmd name="SetPairedRemote" id="0">
Send the address of the remote controller on which the drone should be paired
This is used to pair a Tinos controller
Where mac address: MSB-MID-LSB.
<arg name="msb_mac" type="u16">
2 most significant bytes of mac address
</arg>
<arg name="mid_mac" type="u16">
2 middle bytes of mac address
</arg>
<arg name="lsb_mac" type="u16">
2 least significant bytes of mac address
</arg>
</cmd>
</class>
<class name="NavigationDataState" id="18">
Navigation Data.
<cmd name="DronePosition" id="0">
Get the drone position from takeoff point (0, 0, 0, 0).
The orthonormal basis is fixed at this point. The axis are
oriented the following way :
* X : From the rear of the drone to its front.
* Y : From the right of the drone to its left.
* Z : Orthogonal to X and Y and oriented upward.
* Psi : From 180 to -180 in the clockwise direction,
<arg name="posx" type="float">
Position on X axis, relative to take off position (cm).
</arg>
<arg name="posy" type="float">
Position on Y axis, relative to take off position (cm).
</arg>
<arg name="posz" type="i16">
Position on Z axis, relative to take off position (cm).
</arg>
<arg name="psi" type="i16">
Psi angle [-180; 180], relative to take off orientation.
</arg>
<arg name="ts" type="i16">
Time elapsed since last data send (ms).
</arg>
</cmd>
<cmd name="DroneSpeed" id="1" buffer="NON_ACK">
Event informing about the estimated drone speed in horizontal frame.
It is similar to NED frame but with drone heading.
Down speed is positive when the drone is going down.
Speed is in m/s.
<arg name="speed_x" type="float">
Speed on the x axis (when drone moves forward, speed is > 0).
</arg>
<arg name="speed_y" type="float">
Speed on the y axis (when drone moves right, speed is > 0).
</arg>
<arg name="speed_z" type="float">
Speed on the z axis (when drone moves down, speed is > 0).
</arg>
<arg name="ts" type="u16">
Acquisition timestamp (ms).
</arg>
</cmd>
<cmd name="DroneAltitude" id="2" buffer="NON_ACK">
Event informing about the estimated altitude above takeoff level.
<arg name="altitude" type="float">
Altitude in meters.
</arg>
<arg name="ts" type="u16">
Acquisition timestamp (ms).
</arg>
</cmd>
<cmd name="DroneQuaternion" id="4" buffer="NON_ACK">
Event informing about the estimated quaternion.
They represent the rotation from the NED frame (determined at drone startup) to the estimated drone body frame.
Its elements are between -1 and 1.
<arg name="q_w" type="float">
Element w.
</arg>
<arg name="q_x" type="float">
Element x.
</arg>
<arg name="q_y" type="float">
Element y.
</arg>
<arg name="q_z" type="float">
Element z.
</arg>
<arg name="ts" type="u16">
Acquisition timestamp (ms).
</arg>
</cmd>
</class>
<class name="MinicamState" id="19">
Minicam related events.
<cmd name="PowerModeChanged" id="0">
Event informing about the minicam power mode.
<arg name="power_mode" type="enum">
Power mode of the camera.
<enum name="low">
Low power: most hardware is powered off, wake up via USB resume.
Used when charging.
</enum>
<enum name="medium">
Medium power: video hardware is powered off.
Used when drone is not flying during more than 3 minutes.
Note that it can still stream the SD content.
</enum>
<enum name="normal">
Normal power: all features are available.
Used when flying.
</enum>
</arg>
</cmd>
<cmd name="ProductSerialChanged" id="1">
Event informing about the minicam product serial number.
<arg name="serial_number" type="string">
Serial number.
</arg>
</cmd>
<cmd name="StateChanged" id="2">
Event informing about the state of the camera.
<arg name="state" type="enum">
State of the camera.
<enum name="unplugged">
Minicam is unplugged.
</enum>
<enum name="plugged">
Minicam is plugged, but not ready.
</enum>
<enum name="ready">
Minicam is ready.
</enum>
</arg>
</cmd>
<cmd name="VersionChanged" id="3">
Get the accessory Version.
<arg name="software" type="string">
Accessory software version.
</arg>
<arg name="hardware" type="string">
Accessory hardware version.
</arg>
</cmd>
<cmd name="PictureChanged" id="4">
Event informing that the picture has been taken.
<arg name="state" type="enum">
State of device picture recording.
<enum name="ready">
Picture recording is ready.
</enum>
<enum name="busy">
Picture recording is busy.
</enum>
<enum name="not_available">
Picture recording is not available.
</enum>
</arg>
<arg name="result" type="enum">
Result of device picture recording.
<enum name="success">
Success.
</enum>
<enum name="full_device">
Device is full.
</enum>
<enum name="continuous_shooting">
Continuous shooting is already running.
</enum>
<enum name="full_queue">
Over snapshot max queue size.
</enum>
<enum name="error">
Couldn't take picture.
</enum>
<enum name="no_sd">
SD card doesn't exist.
</enum>
<enum name="sd_bad_format">
SD card format error.
</enum>
<enum name="sd_formatting">
SD card is formatting.
</enum>
</arg>
</cmd>
<cmd name="VideoStateChanged" id="5">
Event informing about the video recording state.
<arg name="state" type="enum">
State of device video recording.
<enum name="stopped">
Video is stopped.
</enum>
<enum name="started">
Video is started.
</enum>
<enum name="notAvailable">
The video recording is not available.
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the state.
<enum name="ok">
No Error.
</enum>
<enum name="unknown">
Unknown generic error.
</enum>
<enum name="camera_ko">
Video camera is out of order.
</enum>
<enum name="memoryFull">
Memory full ; cannot save one additional video.
</enum>
<enum name="lowBattery">
Battery is too low to start/keep recording.
</enum>
<enum name="no_sd">
SD card doesn't exist.
</enum>
</arg>
</cmd>
<cmd name="MassStorageFormatChanged" id="6" content="NOTIFICATION">
Event informing that the mass storage has been formatted.
<arg name="state" type="u8">
1 if Mass Storage has been formatted, 0 otherwise.
</arg>
</cmd>
</class>
<class name="VideoSettings" id="20">
Video settings.
<cmd name="Autorecord" id="0">
Set video automatic recording state.
<arg name="enable" type="u8">
0: disabled
1: enabled
</arg>
</cmd>
<cmd name="ElectricFrequency" id="1">
Set the electric frequency (Anti-flickering).
<arg name="frequency" type="enum">
Type of the electric frequency.
<enum name="fifty_hertz">
Electric frequency of the country is 50hz.
</enum>
<enum name="sixty_hertz">
Electric frequency of the country is 60hz.
</enum>
</arg>
</cmd>
<cmd name="VideoResolution" id="2">
Set video streaming and recording resolution.
<arg name="type" type="enum">
Video resolution type.
<enum name="vga">
16/9 VGA streaming (640 x 360).
</enum>
<enum name="hd">
HD streaming (1280 x 720).
</enum>
</arg>
</cmd>
</class>
<class name="VideoSettingsState" id="21">
Video settings state.
<cmd name="AutorecordChanged" id="0">
Event informing about the video automatic recording status.
<arg name="enabled" type="u8">
0: disabled
1: enabled
</arg>
</cmd>
<cmd name="ElectricFrequencyChanged" id="1">
Event informing about the electric frequency (Anti-flickering).
<arg name="frequency" type="enum">
Type of the electric frequency.
<enum name="fifty_hertz">
Electric frequency of the country is 50hz.
</enum>
<enum name="sixty_hertz">
Electric frequency of the country is 60hz.
</enum>
</arg>
</cmd>
<cmd name="VideoResolutionChanged" id="2">
Event informing about the streaming resolution.
<arg name="type" type="enum">
Video resolution type.
<enum name="vga">
16/9 VGA streaming (640 x 360).
</enum>
<enum name="hd">
HD streaming (1280 x 720).
</enum>
</arg>
</cmd>
</class>
<class name="Minicam" id="24">
Minicam related commands.
<cmd name="Picture" id="0">
Take picture.
</cmd>
<cmd name="Video" id="1">
Start/Stop video recording.
<arg name="record" type="enum">
Command to record video
<enum name="stop">
Stop the video recording.
</enum>
<enum name="start">
Start the video recording.
</enum>
</arg>
</cmd>
<cmd name="MassStorageFormat" id="2">
Format mass storage.
</cmd>
</class>
<class name="RemoteControllerState" id="25">
State changes related to the remote controller.
<cmd name="ConnectionChanged" id="0">
State of the connection to the remote controller changed.
<arg name="state" type="u8">
New connection state.
0=disconnected
1=connected
</arg>
</cmd>
</class>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<project name="powerup" id="8">
All commands specific to the Power Up.
<class name="Piloting" id="0">
All commands related to piloting the PowerUp
<cmd name="PCMD" id="0" buffer="NON_ACK">
Ask the Power Up speed and turn ratio.
<arg name="flag" type="u8">
Boolean for "touch screen".
</arg>
<arg name="throttle" type="u8">
Throttle value [0:100].
</arg>
<arg name="roll" type="i8">
Yaw-roll value. [-100:100]
</arg>
</cmd>
<cmd name="UserTakeOff" id="1">
Set drone in user take off state
<arg name="state" type="u8">
State of user take off mode
- 1 to enter in user take off.
- 0 to exit from user take off.
</arg>
</cmd>
<cmd name="MotorMode" id="2">
Motor mode
<arg name="mode" type="enum">
<enum name="normal">
The motors will only start on user action after being in state user take off
</enum>
<enum name="forced">
Motors will use the current pcmd values without considering the flying state
</enum>
</arg>
</cmd>
</class>
<class name="PilotingState" id="1">
Piloting state from Power Up.
<cmd name="AlertStateChanged" id="0">
JS alert state changed
<arg name="state" type="enum">
JS alert state
<enum name="none">
No alert
</enum>
<enum name="critical_battery">
Critical battery alert
</enum>
<enum name="low_battery">
Low battery alert
</enum>
</arg>
</cmd>
<cmd name="FlyingStateChanged" id="1">
Drone flying state changed
<arg name="state" type="enum">
Drone flying state
<enum name="landed">
Landed state
</enum>
<enum name="takingoff">
Taking off state
</enum>
<enum name="flying">
Flying state
</enum>
<enum name="recovery">
Recovery state
</enum>
<enum name="emergency">
Emergency state
</enum>
<enum name="usertakeoff">
User take off state. Waiting for user action to take off.
</enum>
<enum name="init">
Initializing state (user should let the drone steady for a while)
</enum>
</arg>
</cmd>
<cmd name="MotorModeChanged" id="2">
Motor mode changed
<arg name="mode" type="enum">
<enum name="normal">
The motors will only start on user action after being in state user take off
</enum>
<enum name="forced">
Motors will use the current pcmd values without considering the flying state
</enum>
</arg>
</cmd>
<cmd name="AttitudeChanged" id="3">
Drone attitude changed
<arg name="roll" type="float">
roll value (in radian) (relative to horizontal)
</arg>
<arg name="pitch" type="float">
Pitch value (in radian) (relative to horizontal)
</arg>
<arg name="yaw" type="float">
Yaw value (in radian) (relative to North)
</arg>
</cmd>
<cmd name="AltitudeChanged" id="4">
Drone altitude changed
<arg name="altitude" type="float">
Altitude in meters relative to take off altitude
</arg>
</cmd>
</class>
<class name="PilotingSettings" id="2">
Piloting settings
<cmd name="set" id="0">
Set the given setting
<arg name="setting" type="enum">
Variety of setting that can be customized
<enum name="MAX_ROLL">
Max roll value. In degree.
</enum>
<enum name="ROLL_KP">
How fast the plane reaches the desired roll angle. No unit.
</enum>
<enum name="ROLL_RATE_KP">
How fast the plane reaches the desired roll rate. No unit.
</enum>
<enum name="MAX_PITCH">
Max pitch value. In degree.
</enum>
<enum name="MIN_PITCH">
Min pitch value. In degree.
</enum>
<enum name="PITCH_KP">
How fast the plane reaches the desired pitch angle. No unit.
</enum>
<enum name="PITCH_RATE_KP">
How fast the plane reaches the desired pitch rate. No unit.
</enum>
<enum name="YAW_KP">
How fast the plane reaches the desired yaw angle. No unit.
</enum>
<enum name="YAW_RATE_KP">
How fast the plane reaches the desired yaw rate. No unit.
</enum>
<enum name="ROLL_TO_THROTTLE_RATE">
Portion of thrust that is added to motors according to the roll/yaw
command to compensate a dive during turn. No unit.
</enum>
<enum name="ANGLE_OF_ATTACK">
Angle of attack of a plane needed horizontal flight.
</enum>
<enum name="ALT_HOLD">
Altitude hold during autopilot. 0 for false, other value for true.
</enum>
<enum name="ALT_HOLD_THROTTLE">
Altitude hold throttle. Expressed in percentage divided by 100 (from 0 to 1).
</enum>
<enum name="DR_RSSI_EDGE">
Rssi value that indicates that the airplane is close to the pilot.
</enum>
<enum name="RECOVERY_DURATION_LIMIT">
Limit time for return home duration. In seconds.
</enum>
<enum name="WIND_SPEED">
Wind speed in m/s. Should be sent before flight.
</enum>
<enum name="PLANE_SPEED">
Target plane speed in m/s. Should be sent before flight.
</enum>
</arg>
<arg name="value" type="float">
value of the given setting
</arg>
</cmd>
</class>
<class name="PilotingSettingsState" id="3">
Piloting settings
<cmd name="settingChanged" id="0" type="MAP_ITEM">
Fired when a setting has changed
<arg name="setting" type="enum">
Variety of setting that can be customized
<enum name="MAX_ROLL">
Max roll value. In degree.
</enum>
<enum name="ROLL_KP">
How fast the plane reaches the desired roll angle. No unit.
</enum>
<enum name="ROLL_RATE_KP">
How fast the plane reaches the desired roll rate. No unit.
</enum>
<enum name="MAX_PITCH">
Max pitch value. In degree.
</enum>
<enum name="MIN_PITCH">
Min pitch value. In degree.
</enum>
<enum name="PITCH_KP">
How fast the plane reaches the desired pitch angle. No unit.
</enum>
<enum name="PITCH_RATE_KP">
How fast the plane reaches the desired pitch rate. No unit.
</enum>
<enum name="YAW_KP">
How fast the plane reaches the desired yaw angle. No unit.
</enum>
<enum name="YAW_RATE_KP">
How fast the plane reaches the desired yaw rate. No unit.
</enum>
<enum name="ROLL_TO_THROTTLE_RATE">
Portion of thrust that is added to motors according to the roll/yaw
command to compensate a dive during turn. No unit.
</enum>
<enum name="ANGLE_OF_ATTACK">
Angle of attack of a plane needed horizontal flight.
</enum>
<enum name="ALT_HOLD">
Altitude hold during autopilot. 0 for false, other value for true.
</enum>
<enum name="ALT_HOLD_THROTTLE">
Altitude hold throttle. Expressed in percentage divided by 100 (from 0 to 1).
</enum>
<enum name="DR_RSSI_EDGE">
Rssi value that indicates that the airplane is close to the pilot.
</enum>
<enum name="RECOVERY_DURATION_LIMIT">
Limit time for return home duration. In seconds.
</enum>
<enum name="WIND_SPEED">
Wind speed in m/s.
</enum>
<enum name="PLANE_SPEED">
Target plane speed in m/s.
</enum>
</arg>
<arg name="current" type="float">
Current value of the given setting
</arg>
<arg name="min" type="float">
Minimal value of the given setting
</arg>
<arg name="max" type="float">
Max value of the given setting
</arg>
<arg name="list_flags" type="u8">
List entry attribute Bitfield.
0x01: First: indicate it's the first element of the list.
0x02: Last: indicate it's the last element of the list.
0x04: Empty: indicate the list is empty (implies First/Last). All other arguments should be ignored.
0x08: Remove: This value should be removed from the existing list.
</arg>
</cmd>
</class>
<class name="MediaRecord" id="4">
Media recording management
<cmd name="PictureV2" id="0">
Take picture
</cmd>
<cmd name="VideoV2" id="1">
Video record
<arg name="record" type="enum">
Command to record video
<enum name="stop">
Stop the video recording
</enum>
<enum name="start">
Start the video recording
</enum>
</arg>
</cmd>
</class>
<class name="MediaRecordState" id="5">
State of media recording
<cmd name="PictureStateChangedV2" id="0">
State of device picture recording changed
<arg name="state" type="enum">
State of device picture recording
<enum name="ready">
The picture recording is ready
</enum>
<enum name="busy">
The picture recording is busy
</enum>
<enum name="notAvailable">
The picture recording is not available
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the state
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error
</enum>
<enum name="camera_ko">
Picture camera is out of order
</enum>
<enum name="memoryFull">
Memory full ; cannot save one additional picture
</enum>
<enum name="lowBattery">
Battery is too low to start/keep recording.
</enum>
</arg>
</cmd>
<cmd name="VideoStateChangedV2" id="1">
State of device video recording changed
<arg name="state" type="enum">
State of device video recording
<enum name="stopped">
Video is stopped
</enum>
<enum name="started">
Video is started
</enum>
<enum name="notAvailable">
The video recording is not available
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the state
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error
</enum>
<enum name="camera_ko">
Video camera is out of order
</enum>
<enum name="memoryFull">
Memory full ; cannot save one additional video
</enum>
<enum name="lowBattery">
Battery is too low to start/keep recording.
</enum>
</arg>
</cmd>
</class>
<class name="MediaRecordEvent" id="6">
Events of media recording
<cmd name="PictureEventChanged" id="0" content="NOTIFICATION">
Event of picture recording
<arg name="event" type="enum">
Last event of picture recording
<enum name="taken">
Picture taken and saved
</enum>
<enum name="failed">
Picture failed
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the event
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error ; only when state is failed
</enum>
<enum name="busy">
Picture recording is busy ; only when state is failed
</enum>
<enum name="notAvailable">
Picture recording not available ; only when state is failed
</enum>
<enum name="memoryFull">
Memory full ; only when state is failed
</enum>
<enum name="lowBattery">
Battery is too low to record.
</enum>
</arg>
</cmd>
<cmd name="VideoEventChanged" id="1" content="NOTIFICATION">
Event of video recording
<arg name="event" type="enum">
Event of video recording
<enum name="start">
Video start
</enum>
<enum name="stop">
Video stop and saved
</enum>
<enum name="failed">
Video failed
</enum>
</arg>
<arg name="error" type="enum">
Error to explain the event
<enum name="ok">
No Error
</enum>
<enum name="unknown">
Unknown generic error ; only when state is failed
</enum>
<enum name="busy">
Video recording is busy ; only when state is failed
</enum>
<enum name="notAvailable">
Video recording not available ; only when state is failed
</enum>
<enum name="memoryFull">
Memory full
</enum>
<enum name="lowBattery">
Battery is too low to record.
</enum>
<enum name="autoStopped">
Video was auto stopped
</enum>
</arg>
</cmd>
</class>
<class name="NetworkSettings" id="7">
Network settings commands
<cmd name="WifiSelection" id="0">
Auto-select channel of choosen band
<arg name="type" type="enum">
The type of wifi selection (auto, manual)
<enum name="auto">
Auto selection
</enum>
<enum name="manual">
Manual selection
</enum>
</arg>
<arg name="band" type="enum">
The allowed band(s) : 2.4 Ghz, 5 Ghz, or all
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
<enum name="all">
Both 2.4 and 5 GHz bands
</enum>
</arg>
<arg name="channel" type="u8">
The channel (not used in auto mode)
</arg>
</cmd>
</class>
<class name="NetworkSettingsState" id="8">
Network settings state from product
<cmd name="WifiSelectionChanged" id="0">
Wifi selection from product
<arg name="type" type="enum">
The type of wifi selection settings
<enum name="auto_all">
Auto selection
</enum>
<enum name="auto_2_4ghz">
Auto selection 2.4ghz
</enum>
<enum name="auto_5ghz">
Auto selection 5 ghz
</enum>
<enum name="manual">
Manual selection
</enum>
</arg>
<arg name="band" type="enum">
The actual wifi band state
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
<enum name="all">
Both 2.4 and 5 GHz bands
</enum>
</arg>
<arg name="channel" type="u8">
The channel (depends of the band)
</arg>
</cmd>
</class>
<class name="Network" id="9">
Network related commands
<cmd name="WifiScan" id="0">
Launches wifi network scan
<arg name="band" type="enum">
The band(s) : 2.4 Ghz, 5 Ghz, or both
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
<enum name="all">
Both 2.4 and 5 GHz bands
</enum>
</arg>
</cmd>
<cmd name="WifiAuthChannel" id="1">
Controller inquire the list of authorized wifi channels.
</cmd>
</class>
<class name="NetworkState" id="10">
Network state from Product
<cmd name="WifiScanListChanged" id="0" type="MAP_ITEM">
One scanning result found
<arg name="ssid" type="string">
SSID of the AP
</arg>
<arg name="rssi" type="i16">
RSSI of the AP in dbm (negative value)
</arg>
<arg name="band" type="enum">
The band : 2.4 GHz or 5 GHz
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
</arg>
<arg name="channel" type="u8">
Channel of the AP
</arg>
</cmd>
<cmd name="AllWifiScanChanged" id="1">
State sent when all scanning result sent
</cmd>
<cmd name="WifiAuthChannelListChanged" id="2" type="LIST_ITEM">
Notify of an Authorized Channel.
<arg name="band" type="enum">
The band of this channel : 2.4 GHz or 5 GHz
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
</arg>
<arg name="channel" type="u8">
The authorized channel.
</arg>
<arg name="in_or_out" type="u8">
Bit 0 is 1 if channel is authorized outside (0 otherwise) ; Bit 1 is 1 if channel is authorized inside (0 otherwise)
</arg>
</cmd>
<cmd name="AllWifiAuthChannelChanged" id="3">
Notify the end of the list of Authorized wifi Channel.
</cmd>
<cmd name="LinkQualityChanged" id="4">
Notification sent by the firmware to give an indication of the WiFi link quality.
<arg name="quality" type="u8">
The WiFi link quality in range 0-6, the higher the value, the higher the link quality.
</arg>
</cmd>
</class>
<class name="MediaStreaming" id="11">
Control media streaming behavior.
<cmd name="VideoEnable" id="0">
Enable/disable video streaming.
<arg name="enable" type="u8">
1 to enable, 0 to disable.
</arg>
</cmd>
</class>
<class name="MediaStreamingState" id="12">
Media streaming status.
<cmd name="VideoEnableChanged" id="0">
Return video streaming status.
<arg name="enabled" type="enum">
Current video streaming status.
<enum name="enabled">
Video streaming is enabled.
</enum>
<enum name="disabled">
Video streaming is disabled.
</enum>
<enum name="error">
Video streaming failed to start.
</enum>
</arg>
</cmd>
</class>
<class name="VideoSettings" id="13">
Video settings.
<cmd name="Autorecord" id="0">
Set video automatic recording state.
<arg name="enable" type="u8">
0: Disabled 1: Enabled.
</arg>
</cmd>
<cmd name="VideoMode" id="1">
Set video mode
<arg name="mode" type="enum">
Video mode
<enum name="quality">
Maximize video quality (VGA 30fps).
</enum>
<enum name="performance">
Maximize video performance (QVGA 24fps).
</enum>
</arg>
</cmd>
</class>
<class name="VideoSettingsState" id="14">
Video settings state.
<cmd name="AutorecordChanged" id="0">
Get video automatic recording status.
<arg name="enabled" type="u8">
0: Disabled 1: Enabled.
</arg>
</cmd>
<cmd name="VideoModeChanged" id="1">
Video mode
<arg name="mode" type="enum">
Video mode
<enum name="quality">
Maximize video quality (VGA 30fps).
</enum>
<enum name="performance">
Maximize video performance (QVGA 24fps).
</enum>
</arg>
</cmd>
</class>
<class name="Sounds" id="15">
Sounds related commands.
<cmd name="buzz" id="0">
Enable/disable the buzzer sound
<arg name="enable" type="u8">
0: Disabled 1: Enabled.
</arg>
</cmd>
</class>
<class name="SoundsState" id="16">
Sound related events.
<cmd name="buzzChanged" id="0">
State of the buzzer
<arg name="enabled" type="u8">
0: Disabled 1: Enabled.
</arg>
</cmd>
</class>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<feature id="136" name="rc">
All commands/events related to Calibration and Mapping of RadioCommands
<enums>
<enum name="receiver_state">
RC Receiver state.
<value name="connected">
RC drone receiver connected to a RC.
</value>
<value name="disconnected">
RC drone receiver not connected to a RC.
</value>
</enum>
<enum name="channel_action">
Channel action.
<value name="invalid">
Invalid/Unused channel.
</value>
<value name="roll">
Roll axis channel.
</value>
<value name="pitch">
Pitch axis channel.
</value>
<value name="yaw">
Yaw axis channel.
</value>
<value name="gaz">
Gaz / Throttle / Altitude axis channel.
</value>
<value name="takeoff_land">
Takeoff / Land channel.
</value>
<value name="emergency">
Emergency channel.
</value>
<value name="return_home">
Return Home channel.
</value>
<value name="piloting_mode">
RC Piloting mode.
Auto mode: used for doing flightplans and for assisted flying
with a non-RC controller.
Easy manual mode: used for assisted flying with a RC controller.
Manual mode: used for non-assisted flying with a RC controller and
for directly controlling the servomotors.
</value>
<value name="take_control">
RC take control.
When take control is activated the RC controller, if
available, becomes the main controller.
</value>
</enum>
<enum name="calibration_type">
Calibration type.
<value name="none">
No calibration.
</value>
<value name="neutral">
All neutral channels calibration.
</value>
<value name="min_max">
Min/Max specific channel calibration.
</value>
</enum>
<enum name="channel_type">
Channel physical type.
<value name="invalid">
Invalid channel physical type.
</value>
<value name="signed_axis">
Signed axis type.
</value>
<value name="unsigned_axis">
Unsigned axis type.
</value>
<value name="monostable_button">
Monostable button type.
</value>
<value name="bistable_button">
Bistable button type.
</value>
<value name="tristate_button">
Tristate button type.
</value>
<value name="rotary_button">
Rotary button type.
</value>
</enum>
</enums>
<msgs>
<evt name="receiver_state" id="1">
<comment
title="State of drone RC receiver"
desc="State of drone RC receiver"/>
<arg name="state" type="enum:receiver_state">
current state.
</arg>
<arg name="protocol" type="string">
Protocol used by RC.
</arg>
<arg name="enabled" type="u8">
1 if enabled, 0 otherwise.
If enabled, drone will apply values sent by RC receiver.
</arg>
</evt>
<cmd name="monitor_channels" id="2">
<comment
title="Monitor RC channels"
desc="Enable or Disable RC channels monitoring. \n
If enable, drone will send periodically rc channel value \n
events."/>
<arg name="enable" type="u8">
1 for enable / 0 to disable
</arg>
</cmd>
<evt name="channels_monitor_state" id="3">
<comment
title="RC channels monitor state"
desc="RC Channel monitor state sent by drone"/>
<arg name="state" type="u8">
1 if enabled, 0 if disabled
</arg>
</evt>
<evt name="channel_value" id="4" type="MAP_ITEM:id">
<comment
title="RC channels value"
desc="RC Channel value sent by drone"/>
<arg name="id" type="u8">
RC channel id.
</arg>
<arg name="action" type="enum:channel_action">
RC channel action.
</arg>
<arg name="value" type="i16">
RC channel value.
</arg>
<arg name="list_flags" type="bitfield:u8:list_flags">
Item attribute Bitfield.
First: indicate it's the first element of the list.
Last: indicate it's the last element of the list.
</arg>
</evt>
<evt name="calibration_state" id="5">
<comment
title="Channels calibration state"
desc="RC Channels calibration state sent by drone."/>
<arg name="calibration_type" type="enum:calibration_type">
Current calibration type
set to 'none' if no calibration in progress.
</arg>
<arg name="channel_action" type="enum:channel_action">
Current channel action calibration
Only used when calibration_type=min_max.
</arg>
<arg name="required" type="bitfield:u32:channel_action">
bitfield of required channel actions.
Neutral channels calibration is always required.
</arg>
<arg name="calibrated" type="bitfield:u32:channel_action">
bitfield of calibrated channel actions.
</arg>
<arg name="neutral_calibrated" type="u8">
1 if neutral channels are calibrated, 0 otherwise.
</arg>
</evt>
<cmd name="start_calibration" id="6">
<comment
title="Start a calibration"
desc="Start a calibration."/>
<arg name="calibration_type" type="enum:calibration_type">
Type of calibration.
</arg>
<arg name="channel_action" type="enum:channel_action">
Channel action.
only used when calibration_type=min_max.
</arg>
<arg name="channel_type" type="enum:channel_type">
Channel type.
only used when calibration_type=min_max.
</arg>
</cmd>
<cmd name="invert_channel" id="8">
<comment
title="Invert a RC channel values"
desc="Invert a RC channel values"/>
<arg name="action" type="enum:channel_action">
Channel action.
</arg>
<arg name="flag" type="u8">
1 to invert channel 0 to restore channel.
</arg>
</cmd>
<cmd name="abort_calibration" id="9">
<comment
title="Abort current calibration"
desc="Abort current calibration."/>
</cmd>
<cmd name="reset_calibration" id="10">
<comment
title="Reset calibration to default values"
desc="Reset calibration to default values."/>
</cmd>
<cmd name="enable_receiver" id="11">
<comment
title="Enable RC receiver"
desc="Enable or disable RC receiver. \n
If enable, drone will apply values sent by RC receiver."/>
<arg name="enable" type="u8">
1 for enable / 0 to disable
</arg>
</cmd>
<evt name="channel_action_item" id="12" type="MAP_ITEM:action">
<comment
title="Channel action item"
desc="Channel action supported by drone."/>
<arg name="action" type="enum:channel_action">
Channel action.
</arg>
<arg name="supported_type" type="bitfield:u32:channel_type">
Bitfield of supported channel types.
</arg>
<arg name="calibrated_type" type="enum:channel_type">
Calibrated action channel type (none if not calibrated).
</arg>
<arg name="inverted" type="u8">
1 if inverted, 0 otherwise.
</arg>
</evt>
</msgs>
</feature>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2017 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<feature id="147" name="sequoia_cam">
Sequoia camera accessory feature
<enums>
<enum name="radiometric_calib_status_value">
Radiometric calibration status
<value name="available">
Radiometric calibration is available
</value>
<value name="unavailable">
Radiometric calibration is not available
</value>
<value name="in_progress">
Radiometric calibration In progress
</value>
</enum>
<enum name="radiometric_calib_result_value">
Last radiometric calibration result
<value name="success">
Radiometric calibration is successfull
</value>
<value name="error">
Radiometric calibration failed
</value>
</enum>
</enums>
<msgs>
<evt name="radiometric_calib_status" id="1" type="MAP_ITEM:cam_id">
<comment
title="Is radiometric calibration available ?"
desc="Is radiometric calibration available ?\n"/>
<arg name="cam_id" type="u8">
Camera id, as given in the [connected accessories](#1-33-0) event.
</arg>
<arg name="value" type="enum:radiometric_calib_status_value"/>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
</evt>
<evt name="radiometric_calib_result" id="2" type="MAP_ITEM:cam_id">
<comment
title="Last radiometric calibration result"
desc="Last radiometric calibration result.\n"/>
<arg name="cam_id" type="u8">
Camera id, as given in the [connected accessories](#1-33-0) event.
</arg>
<arg name="value" type="enum:radiometric_calib_result_value"/>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
</evt>
<cmd name="radiometric_calib_start" id="3">
<comment
title="Start Sequoia radiometric calibration"
desc="Launch capture on radiometric calibration mode.
This PTP mode is 0x8004"
support="none"
result="None"/>
<arg name="id" type="u8">
Id of the accessory for the session.
</arg>
</cmd>
</msgs>
</feature>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<project name="skyctrl" id="4">
All SkyController-only commands
<class name="WifiState" id="0">
Wifi state
<cmd name="WifiList" id="0" type="MAP_ITEM">
<comment
title="Visible wifi networks"
desc="List of visible wifi networks.\n
The application must clear the list before sending the
[RequestWifiList](#4-1-0) command."
support="0903"
triggered="by a [RequestWifiList](#4-1-0) command."/>
<arg name="bssid" type="string">
Wifi bssid
</arg>
<arg name="ssid" type="string">
Wifi ssid
</arg>
<arg name="secured" type="u8">
Is wifi secured by passphrase
</arg>
<arg name="saved" type="u8">
Is wifi saved in terminal
</arg>
<arg name="rssi" type="i32">
Wifi rssi
</arg>
<arg name="frequency" type="i32">
Wifi frequency
</arg>
</cmd>
<cmd name="ConnexionChanged" id="1">
<comment
title="Wifi connection status"
desc="Describes the current wifi connection status of the
SkyController.\n The connection to a wifi network does not
guarantee a connection to a drone. To get the drone
connection state, use the [device ConnectionChanged](#4-3-1)
event."
support="0903"
triggered="when the wifi connection status changes, or after
a [RequestCurrentWifi](#4-1-1) command."/>
<arg name="ssid" type="string">
Wifi ssid
</arg>
<arg name="status" type="enum">
Wifi status
<enum name="connected">
Connected
</enum>
<enum name="error">
Error
</enum>
<enum name="disconnected">
Disconnected
</enum>
</arg>
</cmd>
<cmd name="WifiAuthChannelListChanged" id="2" type="LIST_ITEM">
<comment
title="Authorized channel list"
desc="Each element represent an authorized wifi channel for the
current country regulatory domain.\n Note that some channels
might be only authorized for indoor or outdoor use.\n
The list is complete when the
[AllWifiAuthChannelChanged](#4-0-3) event is recieved."
support="0903"
triggered="by a [WifiAuthChannel](#4-1-4) command."/>
<arg name="band" type="enum">
The band of this channel : 2.4 GHz or 5 GHz
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
</arg>
<arg name="channel" type="u8">
The authorized channel
</arg>
<arg name="in_or_out" type="u8">
Bit 0 is 1 if channel is authorized outside (0 otherwise)
Bit 1 is 1 if channel is authorized inside (0 otherwise)
</arg>
</cmd>
<cmd name="AllWifiAuthChannelChanged" id="3">
<comment
title="Authorized channel list complete"
desc="This event closes the [WifiAuthChannel](#4-1-4) command
response. No more [WifiAuthChannelListChanged](#4-0-2)
event will be sent after this event."
support="0903"
triggered="by a [WifiAuthChannel](#4-1-4) command."/>
</cmd>
<cmd name="WifiSignalChanged" id="4">
<comment
title="Strength of the wifi signal"
desc="This event describes the signal strength for the long range
wifi.\n A zero value is used when the SkyController is not
connected to a wifi network."
support="0903"
triggered="each time the wifi signal changes"/>
<arg name="level" type="u8">
Level of the signal. Levels are from 0 to 5.
0 is an unknown value. 1 is a weak wifi signal, 5 is the best.
</arg>
</cmd>
<cmd name="WifiAuthChannelListChangedV2" id="5" type="LIST_ITEM">
<comment
title="Authorized channel list"
desc="Each element represent an authorized wifi channel for the
current country regulatory domain.\n Note that some channels
might be only authorized for indoor or outdoor use."
support="0913"
triggered="by a change of the list, or by a
[WifiAuthChannel](#4-1-4) command"/>
<arg name="band" type="enum">
The band of this channel : 2.4 GHz or 5 GHz
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
</arg>
<arg name="channel" type="u8">
The authorized channel
</arg>
<arg name="in_or_out" type="u8">
Bit 0 is 1 if channel is authorized outside (0 otherwise)
Bit 1 is 1 if channel is authorized inside (0 otherwise)
</arg>
<arg name="list_flags" type="u8">
List entry attribute Bitfield.
0x01: First: indicate it's the first element of the list.
0x02: Last: indicate it's the last element of the list.
0x04: Empty: indicate the list is empty (implies First/Last). All other arguments should be ignored.
0x08: Remove: This value should be removed from the existing list.
</arg>
</cmd>
<cmd name="WifiCountryChanged" id="6">
<comment
title="Wifi country changed"
desc="The wifi country of the SkyController will follow the wifi country of
the currently connected drone, except for country-locked SkyControllers."
support="0913"
triggered="by a country change from the drone"/>
<arg name="code" type="string">
Country code with ISO 3166 format, empty string means unknown country.
</arg>
</cmd>
<cmd name="WifiEnvironmentChanged" id="7">
<comment
title="Wifi environment changed"
desc="The wifi environment of the SkyController will follow the wifi
environment of the currently connected drone"
support="0913"
triggered="by an environment change from the drone"/>
<arg name="environment" type="enum">
Type of environment
<enum name="indoor">
indoor environment
</enum>
<enum name="outdoor">
outdoor environment
</enum>
</arg>
</cmd>
</class>
<class name="Wifi" id="1">
Wifi
<cmd name="RequestWifiList" id="0">
<comment
title="Request visible wifi list"
desc="After recieving this command, the SkyController will do a
network scan to get the wifi list.\n Communication with the
drone is stopped during the network scan, so the controller
should avoid sending this command during flight.\n The
controller should clear the local wifi list before sending
this command."
support="0903"
result="Event [WifiList](#4-0-0) is triggered for each visible wifi networks."/>
</cmd>
<cmd name="RequestCurrentWifi" id="1">
<comment
title="Request current wifi informations"
desc="This is a synchronization command. The SkyController will
automatically send its current wifi info when any data
changes, so this command should only be used when
connecting, in order to get an initial state."
support="0903"
result="Event [wifi ConnectionChanged](#4-0-1) is triggered."/>
Request current connected wifi
</cmd>
<cmd name="ConnectToWifi" id="2">
<comment
title="Connect the SkyController to a wifi network"
desc="The network should be a visible network retrieved from the
[WifiList](#4-0-0) event.\n If the network is secured, then
the passphrase must be set. For non-secure network, the
passphrase argument is ignored."
support="0903"
result="The SkyController should connect to the network.\n
A [wifi ConnectionChanged](#4-0-1) event is triggered."/>
<arg name="bssid" type="string">
Wifi bssid
</arg>
<arg name="ssid" type="string">
Wifi ssid
</arg>
<arg name="passphrase" type="string">
Wifi passphrase
</arg>
</cmd>
<cmd name="ForgetWifi" id="3">
<comment
title="Forget a wifi network"
desc="Removes the network from the saved network list.\n
If the network is the current network, then the
SkyController will be disconnected first."
support="0903"
result="The next [WifiList](#4-0-0) event will report this network
as not saved.\n If the SkyController is connected to this
network, a [wifi ConnectionChanged](#4-0-1) event is triggered"/>
<arg name="ssid" type="string">
Wifi ssid
</arg>
</cmd>
<cmd name="WifiAuthChannel" id="4">
<comment
title="Request the list of authorized channels"
desc="Requests the list of authorized wifi channels for the
current country/regulatory domain.\n These channels are
valid for the [AccessPointChannel](#4-9-1) command."
support="0903"
result="A list of [WifiAuthChannelListChanged](#4-0-2) events will
be sent, followed by an [AllWifiAuthChannelChanged](#4-0-3) event."/>
</cmd>
</class>
<class name="Device" id="2">
Device Connection commands
<cmd name="RequestDeviceList" id="0" deprecated="true">
<comment
title="Request the list of visible devices"
desc="This command is deprecated (The SkyController can only
see one device at a time, so a device list is not
required), and should not be used."
support="none"
result="This command is not implemented."/>
</cmd>
<cmd name="RequestCurrentDevice" id="1" deprecated="true">
<comment
title="Request current device informations"
desc="This command is deprecated and should not be used."
support="none"
result="This command is not implemented"/>
</cmd>
<cmd name="ConnectToDevice" id="2" deprecated="true">
<comment
title="Connect the SkyController to a given device"
desc="This command is deprecated and should not be used.\n
The SkyController will automatically connect to the first
visible device on the current wifi network."
support="none"
result="This command is not implemented."/>
<arg name="deviceName" type="string">
Device name
</arg>
</cmd>
</class>
<class name="DeviceState" id="3">
Device state
<cmd name="DeviceList" id="0" type="LIST_ITEM" deprecated="true">
<comment
title="Visible device"
desc="List of visible ARDiscoveryDevices.\n
This event is deprecated and will never be sent by a
SkyController"
support="none"/>
<arg name="name" type="string">
Device name
</arg>
</cmd>
<cmd name="ConnexionChanged" id="1">
<comment
title="Connection status"
desc="Status of the connection to a drone."
support="0903;090f;0913;0915"
triggered="when the connection state to a drone has changed."/>
<arg name="status" type="enum">
Connection status
<enum name="notConnected">
Not Connected
</enum>
<enum name="connecting">
Connecting to Drone
</enum>
<enum name="connected">
Connected to Drone
</enum>
<enum name="disconnecting">
Disconnecting from Drone
</enum>
</arg>
<arg name="deviceName" type="string">
Drone name
</arg>
<arg name="deviceProductID" type="u16">
Drone product IDentifier
</arg>
</cmd>
</class>
<class name="Settings" id="4">
Settings commands
<cmd name="AllSettings" id="0" timeout="RETRY">
<comment
title="Ask for all controller's settings"
desc="Request the controller to send all its settings."
support="0903;090f;0913;0915"
result="The controller will trigger all settings events and
will finally trigger [AllSettingsChanged](#4-5-0)."/>
</cmd>
<cmd name="Reset" id="1">
<comment
title="Reset all settings"
desc="Reset all settings (i.e. everything except drone pairing)."
support="090f:1.0.5;0913;0915"
result="All settings are reset."/>
</cmd>
</class>
<class name="SettingsState" id="5">
Settings state from the controller
<cmd name="AllSettingsChanged" id="0" timeout="RETRY">
<comment
title="AllSettings changed"
desc="All settings have been sent by the controller."
support="0903;090f;0913;0915"
triggered="when all settings that have been requested by
[AllSettings](#4-4-0) are sent."/>
</cmd>
<cmd name="ResetChanged" id="1" deprecated="true">
<comment
title="Settings were reset"
desc="This command is not implemented."
support="none"
triggered="by a [Reset](#4-4-1) command."/>
</cmd>
<cmd name="ProductSerialChanged" id="2">
<comment
title="Product serial"
desc="The product serial of the controller."
support="0903;090f;0913;0915"
triggered="during the [AllSettings](#4-4-0) phase."/>
<arg name="serialNumber" type="string">
Serial number (hexadecimal value)
</arg>
</cmd>
<cmd name="ProductVariantChanged" id="3">
<comment
title="Variant of the SkyController"
desc="This event allow differentiation between original
(red/blue/yellow) SkyControllers, and the Black Edition
SkyControllers."
support="0903;0913"
triggered="during the [AllSettings](#4-4-0) phase."/>
<arg name="variant" type="enum">
Variant of the product
<enum name="bebop">
SkyController of the bebop generation.
(Bebop battery, original key layout, red/blue/yellow)
</enum>
<enum name="bebop2">
SkyController of the bebop2 generation.
(Bebop2 battery, updated key layout, black)
</enum>
</arg>
</cmd>
<cmd name="ProductVersionChanged" id="4">
<comment
title="Product versions"
desc="Software and hardware versions of the controller."
support="090f;0913;0915"
triggered="during the [AllSettings](#4-4-0) phase."/>
<arg name="software" type="string">
Product software version
</arg>
<arg name="hardware" type="string">
Product hardware version
</arg>
</cmd>
<cmd name="CPUID" id="5">
<comment
title="Product main CPU id"
desc="The serial number (or any other UID) for the main CPU."
support="090f:1.0.5;0913;0915"
triggered="during the [AllSettings](#4-4-0) phase."/>
<arg name="id" type="string">
Product main cpu id
</arg>
</cmd>
</class>
<class name="Common" id="6">
Common commands
<cmd name="AllStates" id="0" timeout="RETRY">
<comment
title="Ask for all controller's states."
desc="Request the controller to send all its states."
support="0903;090f;0913;0915"
result="The controller will trigger all states events and
will finally trigger [AllStatesChanged](#4-7-0)."/>
</cmd>
</class>
<class name="CommonState" id="7">
Common state from product
<cmd name="AllStatesChanged" id="0" timeout="RETRY">
State sent when all product states has been sent
<comment
title="AllStates changed"
desc="All states have been sent by the controller."
support="0903;090f;0913;0915"
triggered="when all states that have been requested
by [AllStates](#4-6-0) are sent."/>
</cmd>
</class>
<class name="SkyControllerState" id="8">
Sky Controller states
<cmd name="BatteryChanged" id="0">
<comment
title="Battery state changed"
desc="The battery percentage has changed."
support="0903;090f;0913;0915"
triggered="when the battery level changes."/>
<arg name="percent" type="u8">
Controller battery: from 0 (empty) to 100 (full charge).
Value of 255 when charging.
</arg>
</cmd>
<cmd name="GpsFixChanged" id="1">
<comment
title="GPS Fix gained/lost"
desc="The SkyController GPS has gained or lost the fix. If the fix
is lost, thent the [GpsPositionChanged](#4-8-2) event will
contain invalid values for the position."
support="0903;0913"
triggered="when the GPS accuracy goes under/over a certain level."
/>
<arg name="fixed" type="u8">
SkyController fixed
</arg>
</cmd>
<cmd name="GpsPositionChanged" id="2">
<comment
title="SkyController position/heading changed"
desc="The SkyController position or heading values changed.\n
Some of the values can be invalid and should be ignored."
support="0903;0913"
triggered="each time the position or heading of the SkyController
is updated, or when a data becomes (un)available."/>
<arg name="latitude" type="double">
SkyController latitude (500. if not available)
</arg>
<arg name="longitude" type="double">
SkyController longiture (500. if not available)
</arg>
<arg name="altitude" type="double">
Altitude (in meters) above sea level.
Only meaningful if latitude and longiture are available
</arg>
<arg name="heading" type="float">
SkyController heading relative to magnetic north
(500.f if not available)
</arg>
</cmd>
<cmd name="BatteryState" id="3">
<comment
title="Battery state"
desc="The state of the controller battery"
support="090f;0913;0915"
triggered="when the controller battery state has changed."/>
<arg name="state" type="enum">
Current battery state
<enum name="charging">
Battery is charging
</enum>
<enum name="charged">
Battery is fully charged
</enum>
<enum name="discharging">
Battery is discharging (normal case when on and unplugged)
</enum>
<enum name="discharging_low">
Battery is low (Can still work for a few minutes)
</enum>
<enum name="discharging_critical">
Battery is critically low (the product will automatically shut down if not plugged)
</enum>
</arg>
</cmd>
<cmd name="AttitudeChanged" id="4" buffer="NON_ACK">
<comment
title="Attitude"
desc="SkyController Attitude in north-east-down (NED) coordinate system.\n
Attitude is provided as a quaternion."
support="090f;0913;0915"
triggered="when the SkyController attitude changes."/>
<arg name="q0" type="float">
SkyController Attitude q0 (quaternion scalar part)
</arg>
<arg name="q1" type="float">
SkyController Attitude q1 (quaternion vector part)
</arg>
<arg name="q2" type="float">
SkyController Attitude q2 (quaternion vector part)
</arg>
<arg name="q3" type="float">
SkyController Attitude q3 (quaternion vector part)
</arg>
</cmd>
</class>
<class name="AccessPointSettings" id="9">
AccessPoint settings commands
<cmd name="AccessPointSSID" id="0">
<comment
title="Set access point SSID"
desc="Set the SkyController access point SSID.\n The name will be
checked, and can be modified before application. Use the
[AccessPointSSIDChanged](#4-10-0) event to get the applied
network name."
support="0903;0913"
result="The network name will change (which will likely disconnect
the controller), then an [AccessPointSSIDChanged](#4-10-0)
event will be sent"/>
<arg name="ssid" type="string">
AccessPoint SSID
</arg>
</cmd>
<cmd name="AccessPointChannel" id="1" deprecated="true">
<comment
title="Set access point channel"
desc="Set the SkyController access point channel.\n The channel
will be checked, and can be modified before application.
Use the [AccessPointChannelChanged](#4-10-1) event to get
the applied channel.\n The list of authorized channels for
the current country can be retrived with the
[WifiAuthChannel](#4-1-4) command.\n
This command is deprecated. Use the [WifiSelection](#4-9-2)
command instead."
support="0903"
result="The network channel will change (which will likely
disconnect the controller), then an
[AccessPointChannelChanged](#4-10-1) event will be sent"/>
<arg name="channel" type="u8">
AccessPoint Channel
</arg>
</cmd>
<cmd name="WifiSelection" id="2">
<comment
title="Set access point band/channel"
desc="Set the SkyController access point channel.\n The channel
will be checked, and can be modified before application.
Use the [WifiSelectionChanged](#4-10-2) event to get
the applied channel/band.\n
The list of authorized channels for the current country can
be retrived with the [WifiAuthChannel](#4-1-4) command."
support="0903;0913"
result="The network channel will change (which will likely
disconnect the controller), then a
[WifiSelectionChanged](#4-10-2) event will be sent"/>
<arg name="type" type="enum">
The type of wifi selection (only manual at the moment)
<enum name="manual">
Manual selection
</enum>
</arg>
<arg name="band" type="enum">
The allowed band : 2.4 Ghz or 5 Ghz
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
</arg>
<arg name="channel" type="u8">
The channel
</arg>
</cmd>
<cmd name="WifiSecurity" id="3">
<comment
title="Set access point security"
desc="Set the SkyController access point security. The key will be
checked, and can be refused by the product. In this case, the
security will not be changed. Use the [WifiSecurityChanged](#4-10-3)
event to get the applied security settings."
support="0913"
result="The network security will change (which will likely
disconnect the controller), then a
[WifiSecurityChanged](#4-10-3) event will be sent"/>
<arg name="security_type" type="enum">
The type of security for the network
<enum name="open">
Wifi is not protected (default)
</enum>
<enum name="wpa2">
Wifi is protected by wpa2
</enum>
</arg>
<arg name="key" type="string">
The security key (ignored if security_type is open)
</arg>
</cmd>
</class>
<class name="AccessPointSettingsState" id="10">
AccessPoint settings state from product
<cmd name="AccessPointSSIDChanged" id="0">
<comment
title="The access point SSID was changed"
desc="Changing the SSID will often (if not always) trigger a
disconnection of the controller, so this event will only
be recieved during the initial connexion phase."
support="0903;0913"
triggered="by an [AccessPointSSID](#4-9-0) command."/>
<arg name="ssid" type="string">
AccessPoint SSID
</arg>
</cmd>
<cmd name="AccessPointChannelChanged" id="1" deprecated="true">
State sent when AccessPoint channel has been sent
<comment
title="The access point channel was changed"
desc="This command is deprecated, as the returned channel number
does not contain information about the wifi band (2.4GHz or
5GHz). Use the [WifiSelectionChanged](#4-10-2) event
instead"
support="0903"
triggered="by an [AccessPointChannel](#4-9-1) command"/>
<arg name="channel" type="u8">
AccessPoint Channel
</arg>
</cmd>
<cmd name="WifiSelectionChanged" id="2">
<comment
title="The access point channel/band was changed"
desc="Changing the channel will often (if not always) trigger a
disconnection of the controller, so this event will only
be recieved during the initial connexion phase."
support="0903;0913"
triggered="by an [WifiSelection](#4-9-2) command"/>
<arg name="type" type="enum">
The type of wifi selection (only manual at the moment)
<enum name="manual">
Manual selection
</enum>
</arg>
<arg name="band" type="enum">
The allowed band : 2.4 Ghz or 5 Ghz
<enum name="2_4ghz">
2.4 GHz band
</enum>
<enum name="5ghz">
5 GHz band
</enum>
</arg>
<arg name="channel" type="u8">
The channel
</arg>
</cmd>
<cmd name="WifiSecurityChanged" id="3">
<comment
title="The access point security was changed"
desc="Changing the security will often (if not always) trigger a
disconnection of the controller, so this event will only
be recieved during the initial connexion phase."
support="0913"
result="by a [WifiSecurity](#4-9-3) command"/>
<arg name="security_type" type="enum">
The type of security for the network
<enum name="open">
Wifi is not protected (default)
</enum>
<enum name="wpa2">
Wifi is protected by wpa2
</enum>
</arg>
<arg name="key" type="string">
The security key (ignored if security_type is open)
</arg>
</cmd>
</class>
<class name="Camera" id="11">
Ask the drone to move camera
<cmd name="ResetOrientation" id="0" deprecated="true">
<comment
title="Reset the camera orientation"
desc="This command is deprecated. The same effect can be achieved
by sending a [CameraOrientation](#1-1-0) command with values
retrieved from the [defaultCameraOrientation](#1-25-1)
event."
support="0903"
result="The drone will reset its camera orientation"/>
</cmd>
</class>
<class name="GamepadInfos" id="18">
Request infos about the gamepad of the SkyController
<cmd name="getGamepadControls" id="0">
<comment
title="Get the SkyController buttons and axis list"
desc="This commands allow the application to get a
representation of all the mappable controls on the
SkyController. Some physical controls might be absent
from this list because their function can not be changed."
support="0903"
result="The SkyController will send a list of
[GamepadControl](#4-19-0) events, describing all
available controls, followed by an
[allGamepadControlsSent](#4-19-1) event."/>
</cmd>
</class>
<class name="GamepadInfosState" id="19">
Informations about the gamepad of the SkyController
<cmd name="gamepadControl" id="0" type="LIST_ITEM">
<comment
title="Gamepad control description"
desc="Each gamepad control element represents a mappable
control on the SkyController. The control can be either
a button or an analog axis.\n Each control have a
human-readable english name describing its physical
position on the SkyController."
support="0903"
triggered="by a [getGamepadControls](#4-18-0) command."/>
<arg name="type" type="enum">
The type (axis/button) of the control
<enum name="axis">
An analog axis (one of the 4 joysticks)
</enum>
<enum name="button">
A button (including small joystick clicks)
</enum>
</arg>
<arg name="id" type="i32">
The button or axis id
A button and an axis can have the same ID, but their type is different
</arg>
<arg name="name" type="string">
Display name for the control
</arg>
</cmd>
<cmd name="allGamepadControlsSent" id="1">
<comment
title="End of the GamepadControl list"
desc="This event marks the end of the GamepadControl list"
support="0903"
triggered="by a [getGamepadControls](#4-18-0) command, after
sending all the [GamepadControl](#4-19-0) events."/>
</cmd>
</class>
<class name="ButtonMappings" id="12">
Controls the button mappings of the SkyController
<cmd name="getCurrentButtonMappings" id="0">
<comment
title="Get the current button mappings"
desc="The SkyController will send its full button mapping. This
command is mainly useful for initial synchronization, as
every change to the button mapping (via the
[setButtonMapping](#4-12-2) command) will trigger
[currentButtonMappings](#4-13-0) events."
support="0903"
result="The SkyController will send a full list of
[currentButtonMappings](#4-13-0) events, followed by an
[allCurrentButtonMappingsSent](#4-13-1) event."/>
</cmd>
<cmd name="getAvailableButtonMappings" id="1">
<comment
title="Get the available button mappings"
desc="The SkyController will send all the available action that
can be mapped on buttons.\n As this list is static, the
controller only need to request this information once."
support="0903"
result="The SkyController will send a list of
[availableButtonMappings](#4-13-2) events, followed by
an [allAvailableButtonsMappingsSent](#4-13-3) event."/>
</cmd>
<cmd name="setButtonMapping" id="2">
<comment
title="Set a mapping for a button"
desc="Any previous mapping for the given button will be removed,
as a button can only be mapped to one action.\n To unmap
a button, a NO_ACTION mapping can be used (see the
[availableButtonMappings](#4-13-2) event).\n
Some actions can not be mapped to two different buttons
at the same time. In this case, the first button will
automatically be set to NO_ACTION, and the corresponding
[currentButtonMappings](#4-13-0) event will be fired."
support="0903"
result="The SkyController will send a list of
[currentButtonMappings](#4-13-0) events, describing the
changes to the mapping table, followed by an
[allCurrentButtonMappingsSent](#4-13-1) event."/>
<arg name="key_id" type="i32">
The keycode to map
</arg>
<arg name="mapping_uid" type="string">
The mapping to associate with the key
</arg>
</cmd>
<cmd name="defaultButtonMapping" id="3">
<comment
title="Reset the button mappings to the default value"
desc="The default values can change between software versions.\n
The default values are different for Black Edition
SkyControllers"
support="0903"
result="The SkyController will send a list of
[currentButtonMappings](#4-13-0) events, describing the
changes to the mapping table, followed by an
[allCurrentButtonMappingsSent](#4-13-1) event."/>
</cmd>
</class>
<class name="ButtonMappingsState" id="13">
State of the button mappings of the SkyController
<cmd name="currentButtonMappings" id="0" type="MAP_ITEM">
<comment
title="Button to Action mapping"
desc="The mapping maps a key_id (as found in
[gamepadControl](#4-19-0) events) to a mapping_uid (as
found in the [availableButtonMappings](#4-13-2) events).\n
A special mapping (NO_ACTION) is attached to unmapped
buttons."
support="0903"
triggered="by a [getCurrentButtonMappings](#4-12-0) command
for complete synchronization, or by either a
[setButtonMapping](#4-12-2) or a
[defaultButtonMapping](#4-12-3) command, only for
changed mappings."/>
<arg name="key_id" type="i32">
The keycode mapped
</arg>
<arg name="mapping_uid" type="string">
The mapping associated
</arg>
</cmd>
<cmd name="allCurrentButtonMappingsSent" id="1">
<comment
title="End of the button mapping list"
desc="Sent by the SkyController to notify the end of a
[currentButtonMappings](#4-13-0) events list.\n
If the list is empty (e.g. the controller sent a
[setButtonMapping](#4-12-2) command which made no change
to the mapping table), then this command will be sent
without any [currentButtonMappings](#4-13-0) event
preceding it. This gives the controller a reliable
synchronization point when editing mappings."
support="0903"
triggered="by a [getCurrentButtonMappings](#4-12-0),
[setButtonMapping](#4-12-2) or
[defaultButtonMapping](#4-12-3) command, to notify
the end of list."/>
</cmd>
<cmd name="availableButtonMappings" id="2" type="MAP_ITEM">
<comment
title="Action mappable on a button"
desc="Each action that can be mapped on a button is identified
by its mapping_uid, which will be used in the
[setButtonMapping](#4-12-2) and
[currentButtonMappings](#4-13-0) commands.\n The name is
a human readable string, in english, describing the
action.\n A special action named NO_ACTION serves as the
unmap action. This action can be bound to multiple
buttons to disable them.\n
An [allAvailableButtonsMappingsSent](#4-13-3) event is
sent at the end of the list."
support="0903"
triggered="by a [getAvailableButtonMappings](#4-12-1) command."/>
<arg name="mapping_uid" type="string">
The mapping UID (used in communication with the SkyController)
</arg>
<arg name="name" type="string">
Display name for the user
</arg>
</cmd>
<cmd name="allAvailableButtonsMappingsSent" id="3">
<comment
title="End of the available button actions list"
desc="Sent by the SkyController to notify the end of a
[availableButtonMappings](#4-13-2) events list."
support="0903"
triggered="by a [getAvailableButtonMappings](#4-12-1)
command, to notify the end of list."/>
</cmd>
</class>
<class name="AxisMappings" id="14">
Controls the axis mappings of the SkyController
<cmd name="getCurrentAxisMappings" id="0">
<comment
title="Get the current axis mappings"
desc="The SkyController will send its full axis mapping. This
command is mainly useful for initial synchronization, as
every change to the axis mapping (via the
[setAxisMapping](#4-14-2) command) will trigger
[currentAxisMappings](#4-15-0) events."
support="0903"
result="The SkyController will send a full list of
[currentAxisMappings](#4-15-0) events, followed by an
[allCurrentAxisMappingsSent](#4-15-1) event."/>
</cmd>
<cmd name="getAvailableAxisMappings" id="1">
<comment
title="Get the available axis mappings"
desc="The SkyController will send all the available action that
can be mapped on axes.\n As this list is static, the
controller only need to request this information once."
support="0903"
result="The SkyController will send a list of
[availableAxisMappings](#4-15-2) events, followed by
an [allAvailableAxissMappingsSent](#4-15-3) event."/>
</cmd>
<cmd name="setAxisMapping" id="2">
<comment
title="Set a mapping for a axis"
desc="Any previous mapping for the given axis will be removed,
as a axis can only be mapped to one action.\n To unmap
a axis, a NO_ACTION mapping can be used (see the
[availableAxisMappings](#4-15-2) event).\n
Some actions can not be mapped to two different axes
at the same time. In this case, the first axis will
automatically be set to NO_ACTION, and the corresponding
[currentAxisMappings](#4-15-0) event will be fired."
support="0903"
result="The SkyController will send a list of
[currentAxisMappings](#4-15-0) events, describing the
changes to the mapping table, followed by an
[allCurrentAxisMappingsSent](#4-15-1) event."/>
<arg name="axis_id" type="i32">
The axiscode to map
</arg>
<arg name="mapping_uid" type="string">
The mapping to associate with the axis
</arg>
</cmd>
<cmd name="defaultAxisMapping" id="3">
<comment
title="Reset the axis mappings to the default value"
desc="The default values can change between software versions."
support="0903"
result="The SkyController will send a list of
[currentAxisMappings](#4-15-0) events, describing the
changes to the mapping table, followed by an
[allCurrentAxisMappingsSent](#4-15-1) event."/>
</cmd>
</class>
<class name="AxisMappingsState" id="15">
State of the axis mappings of the SkyController
<cmd name="currentAxisMappings" id="0" type="MAP_ITEM">
<comment
title="Axis to Action mapping"
desc="The mapping maps an axis_id (as found in
[gamepadControl](#4-19-0) events) to a mapping_uid (as
found in the [availableAxisMappings](#4-15-2) events).\n
A special mapping (NO_ACTION) is attached to unmapped
axes."
support="0903"
triggered="by a [getCurrentAxisMappings](#4-14-0)
command for complete synchronization, or by either
a [setAxisMapping](#4-14-2) or
[defaultAxisMapping](#4-14-3) command, only for
changed mappings."/>
<arg name="axis_id" type="i32">
The axiscode mapped
</arg>
<arg name="mapping_uid" type="string">
The mapping associated
</arg>
</cmd>
<cmd name="allCurrentAxisMappingsSent" id="1">
<comment
title="End of the axis mapping list"
desc="Sent by the SkyController to notify the end of a
[currentAxisMappings](#4-15-0) events list.\n
If the list is empty (e.g. the controller sent a
[setAxisMapping](#4-14-2) command which made no change
to the mapping table), then this command will be sent
without any [currentAxisMappings](#4-15-0) event
preceding it. This gives the controller a reliable
synchronization point when editing mappings."
support="0903"
triggered="by a [getCurrentAxisMappings](#4-14-0),
[setAxisMapping](#4-14-2) or
[defaultAxisMapping](#4-14-3) command, to notify
the end of list."/>
</cmd>
<cmd name="availableAxisMappings" id="2" type="MAP_ITEM">
<comment
title="Action mappable on an axis"
desc="Each action that can be mapped on an axis is identified
by its mapping_uid, which will be used in the
[setAxisMapping](#4-14-2) and
[currentAxisMappings](#4-15-0) commands.\n The name is
a human readable string, in english, describing the
action.\n A special action named NO_ACTION serves as the
unmap action. This action can be bound to multiple
axes to disable them.\n
An [allAvailableAxissMappingsSent](#4-15-3) event is
sent at the end of the list."
support="0903"
triggered="by a [getAvailableAxisMappings](#4-14-1) command."/>
<arg name="mapping_uid" type="string">
The mapping UID (used in communication with the SkyController)
</arg>
<arg name="name" type="string">
Display name for the user
</arg>
</cmd>
<cmd name="allAvailableAxisMappingsSent" id="3">
<comment
title="End of the available axis actions list"
desc="Sent by the SkyController to notify the end of a
[availableAxisMappings](#4-15-2) events list."
support="0903"
triggered="by a [getAvailableAxisMappings](#4-14-1) command."/>
</cmd>
</class>
<class name="AxisFilters" id="16">
Controls the axis filters of the SkyController
<cmd name="getCurrentAxisFilters" id="0">
<comment
title="Get the current axis filters"
desc="The SkyController will send its full axis filters map.
This command is mainly useful for initial
synchronization, as every change to the filters map
(via the [setAxisFilter](#4-16-2) command) will trigger
[currentAxisFilters](#4-17-0) events."
support="0903"
result="The SkyController will send a full list of
[currentAxisFilters](#4-17-0) events, followed by an
[allCurrentFiltersSent](#4-17-1) event."/>
</cmd>
<cmd name="getPresetAxisFilters" id="1" deprecated="true">
<comment
title="Get the available preset axis filters"
desc="The preset list is empty and will never be filled, so this
command is flagged as deprecated."
support="0903"
result="As the preset list is empty, the SkyController will
just send an [allPresetFiltersSent](#4-17-3) event."/>
</cmd>
<cmd name="setAxisFilter" id="2">
<comment
title="Set a filter for an axis"
desc="A filter modifies the response curve of an axis.\n
As the preset filters list is empty, all filters are to
be sent using the builder syntax.\n
\n
The builder syntax supports two types of filters:
Multilinear and Exponential.\n
\n
Multilinear filters create response curves made of
multiple linear segments:\n
* The default filter (ARMF;) is purely linear and create
a single segment from the two implicit `[-1; -1]` and
`[1; 1]` points.\n
* Additionnal points can be added to the filter with the
following syntax: `ARMF;x1>y1;...;xN>yN;`, where all
numbers are floating point numbers in range `[-1; 1]`.\n
* Additionnal points **must** respect the following
constraints : `x(N)>x(N-1)` and `y(N)>=y(N-1)`.\n
\n
Exponential filters:\n
* The syntax is `ARXF;CPx;CPy;`, where CPx and CPy are
floating point numbers in range `[0; 1]`.\n
* Best results are achieved when `CPx + CPy == 1` and
`CPx > CPy`.\n
* If the control point is on the diagonal (i.e.
`CPx == CPy`), then the resulting filter will be linear."
support="0903"
result="The SkyController will send a list of
[currentAxisFilters](#4-17-0) events, describing the
changes to the filters table, followed by an
[allCurrentFiltersSent](#4-17-1) event."/>
<arg name="axis_id" type="i32">
The axiscode to filter
</arg>
<arg name="filter_uid_or_builder" type="string">
The mapping preset to associate with the axis
(Or a string to build a new one)
</arg>
</cmd>
<cmd name="defaultAxisFilters" id="3">
<comment
title="Reset the axis filters to the default value"
desc="The default values can change between software versions."
support="0903"
result="The SkyController will send a list of
[currentAxisFilters](#4-17-0) events, describing the
changes to the filters table, followed by an
[allCurrentFiltersSent](#4-17-1) event."/>
</cmd>
</class>
<class name="AxisFiltersState" id="17">
State of the axis filters of the SkyController
<cmd name="currentAxisFilters" id="0" type="MAP_ITEM">
<comment
title="A filter set on an axis"
desc="As the preset filters list is empty, all the filters are
transmitted using the builder syntax. See the
[setAxisFilter](#4-16-2) command documentation for details
about the builder syntax."
support="0903"
triggered="by a [getCurrentAxisFilters](#4-16-0) command for
complete synchronization, or after either a
[setAxisFilter](#4-16-2) or
[defaultAxisFilters](#4-16-3) command, only for
changed filters."/>
<arg name="axis_id" type="i32">
The axiscode filtered
</arg>
<arg name="filter_uid_or_builder" type="string">
The filter associated
</arg>
</cmd>
<cmd name="allCurrentFiltersSent" id="1">
<comment
title="End of the axis filters list"
desc="Sent by the SkyController to notify the end of a
[currentAxisFilters](#4-17-0) events list.\n
If the list is empty (e.g. the controller sent a
[setAxisFilter](#4-16-2) command which made no change
to the filters table), then this command will be sent
without any [currentAxisFilters](#4-17-0) event
preceding it. This gives the controller a reliable
synchronization point when editing mappings."
support="0903"
triggered="by a [getCurrentAxisFilters](#4-16-0),
[setAxisFilter](#4-16-2) or
[defaultAxisFilters](#4-16-3) command, to notify
the end of list."/>
</cmd>
<cmd name="presetAxisFilters" id="2" type="MAP_ITEM" deprecated="true">
<comment
title="Predefined axis filters"
desc="No preset axis filter is defined on the SkyController,
so this command will never be sent by the firmware."
support="0903"/>
<arg name="filter_uid" type="string">
The filter UID (used in communication with the SkyController)
</arg>
<arg name="name" type="string">
Display name for the user
</arg>
</cmd>
<cmd name="allPresetFiltersSent" id="3" deprecated="true">
<comment
title="End of the preset axis filters list"
desc="As the SkyController will never send a
[presetAxisFilters](#4-17-2) event, this is the only
event sent when the deprecated
[getPresetAxisFilters](#4-16-1) command is recieved."
support="0903"
triggered="by a [getPresetAxisFilters](#4-16-1) command."/>
</cmd>
</class>
<class name="CoPiloting" id="20">
Configuration of the co-piloting feature
<cmd name="setPilotingSource" id="0">
<comment
title="Set piloting source"
desc="Change who is piloting the drone.\n By default, the
SkyController is the source of piloting commands, and any
connected application (i.e. FreeFlight) can not send
[piloting commands](#1-0-2) commands directly to the
drone. When the piloting source is set to Controller, the
SkyController will forward the controller commands to the
drone, and won't send any commands itself.\n The piloting
source is automatically reset to SkyController when the
controller is disconnected."
support="0903;090f;0913;0915"
result="The SkyController will sent a [pilotingSource](#4-21-0)
event."/>
<arg name="source" type="enum">
The new piloting source
<enum name="SkyController">
Use the SkyController joysticks
</enum>
<enum name="Controller">
Use the Tablet (or smartphone, or whatever) controls
Disables the SkyController joysticks
</enum>
</arg>
</cmd>
</class>
<class name="CoPilotingState" id="21">
State of the co-piloting feature
<cmd name="pilotingSource" id="0">
<comment
title="Piloting source"
desc="Define who is piloting the drone.\n The piloting source is
reset to SkyController when the controller disconnects."
support="0903;090f;0913;0915"
triggered="by a [setPilotingSource](#4-20-0) command"/>
<arg name="source" type="enum">
The source
<enum name="SkyController">
Use the SkyController joysticks
</enum>
<enum name="Controller">
Use the Tablet (or smartphone, or whatever) controls
Disables the SkyController joysticks
</enum>
</arg>
</cmd>
</class>
<class name="Calibration" id="22">
Commands related to the SkyController sensors calibration
<cmd name="enableMagnetoCalibrationQualityUpdates" id="0">
<comment
title="Enable Magneto calibration quality updates"
desc="Asks the SkyController to send (or not) the magneto
calibration quality updates.\n
The [MagnetoCalibrationState](#4-23-0) event will always be
sent when the status parameters changes, regardless of this
setting."
support="0903;090f;0913"
result="The SkyController will send a
[MagnetoCalibrationQualityUpdatesState](#4-23-1) event."/>
<arg name="enable" type="u8">
Flag to enable the feature:
1 = Enable quality updates
0 = Disable quality updates
</arg>
</cmd>
<cmd name="StartCalibration" id="1">
<comment
title="Start magneto calibration"
desc="Asks the SkyController to start a magneto calibration.\n
If the calibration is already started, this command has no effect."
support="0915"
result="The SkyController will send a
[MagnetoCalibrationStateV2](#4-23-2) event."/>
</cmd>
<cmd name="AbortCalibration" id="2">
<comment
title="Abort a running magneto calibration"
desc="Asks the SkyController to abort an in-progress magneto
calibration.\n If no calibration is in progress, this command has
no effect."
support="0915"
result="The SkyController will send a
[MagnetoCalibrationStateV2](#4-23-2) event."/>
</cmd>
</class>
<class name="CalibrationState" id="23">
State of the SkyController calibration
<cmd name="MagnetoCalibrationState" id="0">
<comment
title="Magneto calibration state"
desc="The current state of the magnetometer calibration.\n If the
calibration quality updates are enabled, this event is sent at
every calibration quality update. This is useful for calibration
screens, but creates a lot of traffic on network.\ When the
calibration quality updates are disabled, this event is only sent
when the status parameter changes."
support="0903;090f;0913"
triggered="when the magnetometer calibration state has changed."/>
<arg name="status" type="enum">
The global status of the calibration
<enum name="Unreliable">
A calibration is needed
</enum>
<enum name="Assessing">
A calibration is applied, but still need to be checked
</enum>
<enum name="Calibrated">
The sensor is properly calibrated
</enum>
</arg>
<arg name="X_Quality" type="u8">
Calibration quality on X axis.
0 is bad, 255 is perfect
</arg>
<arg name="Y_Quality" type="u8">
Calibration quality on Y axis.
0 is bad, 255 is perfect
</arg>
<arg name="Z_Quality" type="u8">
Calibration quality on Z axis.
0 is bad, 255 is perfect
</arg>
</cmd>
<cmd name="MagnetoCalibrationQualityUpdatesState" id="1">
<comment
title="Magnetometer Calibration Quality Update State"
desc="State of the magnetometer calibration quality sender.\n This
determines the trigger of the
[MagnetoCalibrationState](#4-23-0) event."
support="0903;090f;0913"
triggered="by an [enableMagnetoCalibrationQualityUpdates](#4-22-0)
command."/>
<arg name="enabled" type="u8">
Flag (is the feature enabled).
1 = The skycontroller sends updated when quality is updated
0 = The skycontroller only sent updated when state is updated
</arg>
</cmd>
<cmd name="MagnetoCalibrationStateV2" id="2">
<comment
title="Magneto calibration state"
desc="The current state of magnetometer calibration.\n This event is
used by products which does require a step-by-step calibration.\n
When calibrating, the product will go, in order, through X, Y and Z
axis calibration, then into calibrated state. If at any point it
goes back to not-calibrated, it means that the calibration process
failed and should be manually restarted with the
[StartCalibration](#4-22-1) command."
support="0915"
triggered="when the magnetometer calibration state has changed, or
by a [StartCalibration](#4-22-1) or [AbortCalibration](#4-22-2)
command"/>
<arg name="state" type="enum">
The calibration state
<enum name="NotCalibrated">
A calibration is needed
</enum>
<enum name="CalibratingX">
A calibration is in progress on the X axis
</enum>
<enum name="CalibratingY">
A calibration is in progress on the Y axis
</enum>
<enum name="CalibratingZ">
A calibration is in progress on the Z axis
</enum>
<enum name="Calibrated">
The sensor is calibrated
</enum>
</arg>
</cmd>
</class>
<class name="ButtonEvents" id="24">
Events sent on SkyController button presses.
These events are sent under certain conditions only.
<cmd name="Settings" id="0" content="NOTIFICATION">
<comment
title="Settings button pressed"
desc="This event notifies the application that the settings
button was pressed on the device. This allow a connected
application to open/close the settings screen from a
physical button.\n This event is only sent when the
SkyController is connected to a drone"
support="0903"
triggered="when the user presses the settings button on a
connected SkyController."/>
</cmd>
</class>
<class name="Factory" id="25">
Factory reset commands
<cmd name="Reset" id="0">
<comment
title="Reset the SkyController to its factory settings"
desc="This command will request a factory reset from the
SkyController. *The factory reset procedure implies an
automatic reboot*, which will be done immediately after
recieving this command."
support="090f;0913;0915"
result="The SkyController will reboot, all settings will be
reset to their default values.\nSkyController 2 that were
paired in factory will **NOT** lose this pairing.\nSkyController
1 will lose **ALL** pairing, including factory ones."/>
</cmd>
</class>
<class name="CommonEventState" id="26">
Common skycontroller events
<cmd name="Shutdown" id="0" content="NOTIFICATION">
<comment
title="Skycontroller will disconnect because of shutdown"
desc="Skycontroller will disconnect.\n
This event is triggered when the user presses on the power button of the product.\n\n
**This event is a notification, you can't retrieve it in the cache of the device controller.**"
support="090f:1.0.5;0913;0915"
triggered="when the SkyController shutdowns for one of the given reasons"/>
<arg name="reason" type="enum">
Reason of the shutdown of the product
<enum name="poweroff_button">
The power off button has been pressed
</enum>
<enum name="update">
The product is going to be updated
</enum>
<enum name="low_battery">
The product battery is too low.
</enum>
<enum name="factory_reset">
The product is going to be factory reset
</enum>
</arg>
</cmd>
</class>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2017 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<feature id="142" name="thermal_cam">
Thermal camera accessory feature
<enums>
<enum name="state">
Camera state
<value name="activated">
Camera is activated
</value>
<value name="deactivated">
Camera is deactivated
</value>
<value name="pending">
Activation is pending
</value>
</enum>
<enum name="range">
Thermal range
<value name="high">
High range (from 0 to 400°C)
</value>
<value name="low">
Low range (from 0 to 120°C)
</value>
</enum>
</enums>
<msgs>
<cmd name="activate" id="1">
<comment
title="Activate a thermal camera"
desc="Activate a given thermal camera.\n
Activating a camera may deactivate others on some drones."
support="none"
result="Camera is activated and [CameraState](#142-3) is changed to activated."/>
<arg name="cam_id" type="u8">
Thermal camera id, as given in the [connected accessories](#1-33-0) event.
</arg>
</cmd>
<cmd name="deactivate" id="2">
<comment
title="Deactivate a thermal camera"
desc="Deactivate a given thermal camera."
support="none"
result="Camera is deactivated and [CameraState](#142-3) is changed to deactivated."/>
<arg name="cam_id" type="u8">
Thermal camera id, as given in the [connected accessories](#1-33-0) event.
</arg>
</cmd>
<evt name="camera_state" id="3" type="MAP_ITEM:cam_id">
<comment
title="Camera state"
desc="Camera state."
support="none"
triggered="by [Activate](#142-1) or [Deactivate](#142-2)."/>
<arg name="cam_id" type="u8">
Thermal camera id, as given in the [connected accessories](#1-33-0) event.
</arg>
<arg name="state" type="enum:state"/>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
</evt>
<cmd name="set_sensitivity" id="4">
<comment
title="Set the thermal cam sensitivity"
desc="Set the thermal camera sensitivity range."
support="none"
result="Sensitivity range of the camera is changed, and event [Sensitivity](#142-5) is
sent accordingly."/>
<arg name="cam_id" type="u8">
Thermal camera id, as given in the [connected accessories](#1-33-0) event.
</arg>
<arg name="range" type="enum:range"/>
</cmd>
<evt name="sensitivity" id="5" type="MAP_ITEM:cam_id">
<comment
title="Thermal cam sensitivity"
desc="Thermal cam sensitivity range."
support="none"
triggered="by [SetSensitivity](#142-4)"/>
<arg name="cam_id" type="u8">
Thermal camera id, as given in the [connected accessories](#1-33-0) event.
</arg>
<arg name="current_range" type="enum:range"/>
<arg name="available_ranges" type="bitfield:u8:range"/>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
</evt>
<evt name="calibration_infos" id="6" type="MAP_ITEM:cam_id">
<comment
title="Thermal cam calibration informations"
desc="Visible camera position relative to the drone. The thermal camera is considered at an ideal position."
support="none"
triggered="at connection or when the thermal cam is connected."/>
<arg name="cam_id" type="u8">
Thermal camera id, as given in the [connected accessories](#1-33-0) event.
</arg>
<arg name="roll" type="float">
Euler angle roll in degree difference between visible cam and thermal cam.
</arg>
<arg name="pitch" type="float">
Euler angle pitch in degree difference between visible cam and thermal cam.
</arg>
<arg name="yaw" type="float">
Euler angle yaw in degree difference between visible cam and thermal cam.
</arg>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
</evt>
</msgs>
</feature>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 Parrot SA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Parrot nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-->
<feature id="135" name="wifi">
All commands/events related to the Wifi
<enums>
<enum name="band">
The band : 2.4 Ghz or 5 Ghz
<value name="2_4_ghz">
2.4 GHz band
</value>
<value name="5_ghz">
5 GHz band
</value>
</enum>
<enum name="selection_type">
The wifi selection type available
<value name="auto_all">
Auto selection on all channels
</value>
<value name="auto_2_4_ghz">
Auto selection 2.4ghz
</value>
<value name="auto_5_ghz">
Auto selection 5 ghz
</value>
<value name="manual">
manual selection
</value>
</enum>
<enum name="security_type">
The type of wifi security (open, wpa2)
<value name="open">
Wifi is not protected by any security (default)
</value>
<value name="wpa2">
Wifi is protected by wpa2
</value>
</enum>
<enum name="security_key_type">
Type of the key sent
<value name="plain">
Key is plain text, not encrypted
</value>
</enum>
<enum name="environment">
Type of environment
<value name="indoor">
indoor environment
</value>
<value name="outdoor">
outdoor environment
</value>
</enum>
<enum name="country_selection">
Type of country selection
<value name="manual">
Manual selection.
</value>
<value name="auto">
Automatic selection.
</value>
</enum>
</enums>
<msgs>
<cmd name="scan" id="1">
<comment
title="Scan wifi network"
desc="Launches wifi network scan for a given band to get a list of all wifi networks found by the drone."
support="0901;0902;0905;0906;090c"
result="Event [WifiScanListChanged](#135-2) is triggered with all networks found."/>
<arg name="band" type="bitfield:u8:band"/>
</cmd>
<evt name="scanned_item" id="2" type="MAP_ITEM:ssid">
<comment
title="Wifi scan results"
desc="Wifi scan results."
support="0901;0902;0905;0906;090c"
triggered="Triggered for each wifi scanned after a [ScanWifi](#135-1)."/>
<arg name="ssid" type="string">
SSID of the AP
</arg>
<arg name="rssi" type="i16">
RSSI of the AP.
</arg>
<arg name="band" type="enum:band">
</arg>
<arg name="channel" type="u8">
Channel of the AP
</arg>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
<!-- implicit
<arg name="list_flags" type="u8">
List entry attribute Bitfield.
0x01: First: indicate it's the first element of the list.
0x02: Last: indicate it's the last element of the list.
0x04: Empty: indicate the list is empty (implies First/Last). All other arguments should be ignored.
0x08: Remove: This value should be removed from the existing list.
</arg>
-->
</evt>
<cmd name="update_authorized_channels" id="3">
<comment
title="Get all available Wifi channels"
desc="Get all available Wifi channels.\nThe list of available Wifi channels is related to the country of the drone. You can get this country with the event [WifiCountryChanged](#wifi-CountryChanged)."
support="0901;0902;0905;0906;090c"
result="Event [AvailableChannelListChanged](#135-4) is triggered with all authorized channels."/>
</cmd>
<evt name="authorized_channel" id="4" type="LIST_ITEM">
<comment
title="Available channel results"
desc="Available channel results."
support="0901;0902;0905;0906;090c"
triggered="Triggered for each channels found after a [UpdateAvailableChannels](#135-3)."/>
<arg name="band" type="enum:band">
</arg>
<arg name="channel" type="u8">
The channel number
</arg>
<arg name="environment" type="bitfield:u8:environment"/>
<arg name="list_flags" type="bitfield:u8:list_flags"/>
<!-- implicit
<arg name="list_flags" type="u8">
List entry attribute Bitfield.
0x01: First: indicate it's the first element of the list.
0x02: Last: indicate it's the last element of the list.
0x04: Empty: indicate the list is empty (implies First/Last). All other arguments should be ignored.
0x08: Remove: This value should be removed from the existing list.
</arg>
-->
</evt>
<cmd name="set_ap_channel" id="5">
<comment
title="Wifi selection"
desc="Select channel of choosen band to put the drone's access point on this channel."
support="0901;0902;0905;0906;090c"
result="The wifi channel changes according to given parameters. Watch out, a disconnection might appear.\nThen, event [WifiSelectionChanged](#135-6) is triggered."/>
<arg name="type" type="enum:selection_type"/>
<arg name="band" type="enum:band" desc="Used only when type is manual"/>
<arg name="channel" type="u8">
The channel you want to select. Used only when type is manual.
</arg>
</cmd>
<evt name="ap_channel_changed" id="6">
<comment
title="Wifi selection changed"
desc="Wifi selection changed."
support="0901;0902;0905;0906;090c"
triggered="Triggered by [WifiSelection](#135-5)."/>
<arg name="type" type="enum:selection_type"/>
<arg name="band" type="enum:band"/>
<arg name="channel" type="u8">
The channel of the drone's access point
</arg>
</evt>
<cmd name="set_security" id="7">
<comment
title="Set the wifi security"
desc="Set the wifi security.\nThe security is changed on the next boot."
support="0901;0902;0905;0906;090c:3.1.0"
result="The wifi security is set.\nThen, event [WifiSecurityChanged](#135-8) is triggered."/>
<arg name="type" type="enum:security_type"/>
<arg name="key" type="string">
The key to secure the network. Not used if type is open
</arg>
<arg name="key_type" type="enum:security_key_type"/>
</cmd>
<evt name="security_changed" id="8">
<comment
title="Wifi security changed"
support="0901;0902;0905;0906;090c:3.1.0"
triggered="Triggered by [SetWifiSecurity](#135-7)."/>
<arg name="key" type="string">
The key to secure the network. Not used if type is open
</arg>
<arg name="key_type" type="enum:security_type"/>
</evt>
<cmd name="set_country" id="9">
<comment
title="Set the wifi country"
desc="Set the wifi country."
support="0901;0902;0905;0906;090c"
result="The country of the product is changed.\nThen, it will trigger [CountryChanged](#135-10)."/>
<arg name="selection_mode" type="enum:country_selection"/>
<arg name="code" type="string">
Country code with ISO 3166 format. Not used if automatic is 1.
</arg>
</cmd>
<evt name="country_changed" id="10">
<comment
title="Wifi country changed"
desc="Wifi country changed."
support="0901;0902;0905;0906;090c"
triggered="Triggered by [SetCountry](#135-9)."/>
<arg name="selection_mode" type="enum:country_selection"/>
<arg name="code" type="string">
Country code with ISO 3166 format, empty string means unknown country.
</arg>
</evt>
<cmd name="set_environment" id="11">
<comment
title="Set indoor/outdoor wifi settings"
desc="Set indoor or outdoor wifi settings."
support="0901;0902;0905;0906;090c"
result="The product change its indoor/outdoor wifi settings.\nThen, it will trigger [OutdoorChanged](#135-12).\nAccording to the country (defined by [SetAutoCountry](#wifi-AutoCountry) or [SetCountry](#wifi-Country)) laws the drone might change its wifi band and channel. So a disconnection might appear."/>
<arg name="environment" type="enum:environment"/>
</cmd>
<evt name="environment_changed" id="12">
<comment
title="Outdoor setting changed"
desc="Status of the wifi config : either indoor or outdoor."
support="0901;0902;0905;0906;090c"
triggered="Triggered by [SetOutdoor](#135-11)."/>
<arg name="environment" type="enum:environment">
1 if it uses outdoor wifi settings, 0 otherwise
</arg>
</evt>
<evt name="rssi_changed" id="13">
<comment
title="Rssi changed"
desc="Rssi Changed. This is an information about the Wifi link quality."
support="0901;0902;0905;0906;090c"
triggered="Triggered regularly when the link quality changes."/>
<arg name="rssi" type="i16">
Rssi on the connected wifi network. Rssi values are generally between -30 and -120dBm. The nearest of 0 is the better.
</arg>
</evt>
<evt name="supported_countries" id="14">
<comment
title="Supported countries"
desc="List of countries supported by the drone."
support="none"
triggered="when the supported countries list changed."/>
<arg name="countries" type="string">
List of country code in ISO 3166 format separated by ";"
</arg>
</evt>
</msgs>
</feature>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment