NAV
Objective C Java C

all products reference

all products commands

default

default:

deviceController->generic->sendDefault(deviceController->generic);
deviceController->generic->sendDefault(deviceController->generic);
deviceController.getFeatureGeneric().sendDefault();

default

Result:
default

Supported by


SetDroneSettings

SetDroneSettings:

deviceController->generic->sendSetDroneSettings(deviceController->generic, (ARCOMMANDS_Generic_DroneSettings_t)settings);
deviceController->generic->sendSetDroneSettings(deviceController->generic, (ARCOMMANDS_Generic_DroneSettings_t)settings);
deviceController.getFeatureGeneric().sendSetDroneSettings((ARCommandsGenericDroneSettings)settings);

Set several drone settings in only one command.

Result:
Drone settings are set.
Then, event DroneSettingsChanged is triggered.

Supported by


Do a flat trim

Do a flat trim:

deviceController->aRDrone3->sendPilotingFlatTrim(deviceController->aRDrone3);
deviceController->aRDrone3->sendPilotingFlatTrim(deviceController->aRDrone3);
deviceController.getFeatureARDrone3().sendPilotingFlatTrim();

Do a flat trim of the accelerometer/gyro.
Could be useful when the drone is sliding in hover mode.

Result:
Accelerometer and gyroscope are calibrated then event FlatTrimChanged is triggered.

Supported by


Take off

Take off:

deviceController->aRDrone3->sendPilotingTakeOff(deviceController->aRDrone3);
deviceController->aRDrone3->sendPilotingTakeOff(deviceController->aRDrone3);
deviceController.getFeatureARDrone3().sendPilotingTakeOff();

Ask the drone to take off.
On the fixed wings (such as Disco): not used except to cancel a land.

Result:
On the quadcopters: the drone takes off if its FlyingState was landed.
On the fixed wings, the landing process is aborted if the FlyingState was landing.
Then, event FlyingState is triggered.

Supported by


Move the drone

Move the drone:

deviceController->aRDrone3->sendPilotingPCMD(deviceController->aRDrone3, (uint8_t)flag, (int8_t)roll, (int8_t)pitch, (int8_t)yaw, (int8_t)gaz, (uint32_t)timestampAndSeqNum);
deviceController->aRDrone3->sendPilotingPCMD(deviceController->aRDrone3, (uint8_t)flag, (int8_t)roll, (int8_t)pitch, (int8_t)yaw, (int8_t)gaz, (uint32_t)timestampAndSeqNum);
deviceController.getFeatureARDrone3().sendPilotingPCMD((byte)flag, (byte)roll, (byte)pitch, (byte)yaw, (byte)gaz, (int)timestampAndSeqNum);

Move the drone.
The libARController is sending the command each 50ms.

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.

Result:
The drone moves! Yaaaaay!
Event SpeedChanged, AttitudeChanged and PositionChanged (only if gps of the drone has fixed) are triggered.

Supported by


Land

Land:

deviceController->aRDrone3->sendPilotingLanding(deviceController->aRDrone3);
deviceController->aRDrone3->sendPilotingLanding(deviceController->aRDrone3);
deviceController.getFeatureARDrone3().sendPilotingLanding();

Land.
Please note that on copters, if you put some positive gaz (in the PilotingCommand) during the landing, it will cancel it.

Result:
On the copters, the drone lands if its FlyingState was taking off, hovering or flying.
On the fixed wings, the drone lands if its FlyingState was hovering or flying.
Then, event FlyingState is triggered.

Supported by


Cut out the motors

Cut out the motors:

deviceController->aRDrone3->sendPilotingEmergency(deviceController->aRDrone3);
deviceController->aRDrone3->sendPilotingEmergency(deviceController->aRDrone3);
deviceController.getFeatureARDrone3().sendPilotingEmergency();

Cut out the motors.
This cuts immediatly the motors. The drone will fall.
This command is sent on a dedicated high priority buffer which will infinitely retry to send it if the command is not delivered.

Result:
The drone immediatly cuts off its motors.
Then, event FlyingState is triggered.

Supported by


Return home

Return home:

deviceController->aRDrone3->sendPilotingNavigateHome(deviceController->aRDrone3, (uint8_t)start);
deviceController->aRDrone3->sendPilotingNavigateHome(deviceController->aRDrone3, (uint8_t)start);
deviceController.getFeatureARDrone3().sendPilotingNavigateHome((byte)start);

Return home.
Ask the drone to fly to its HomePosition.
The availability of the return home can be get from ReturnHomeState.
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 set at 0.

Result:
The drone will fly back to its home position.
Then, event ReturnHomeState is triggered.
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.

Supported by


Auto take off mode (deprecated)

Auto take off mode (deprecated):

deviceController->aRDrone3->sendPilotingAutoTakeOffMode(deviceController->aRDrone3, (uint8_t)state);
deviceController->aRDrone3->sendPilotingAutoTakeOffMode(deviceController->aRDrone3, (uint8_t)state);
deviceController.getFeatureARDrone3().sendPilotingAutoTakeOffMode((byte)state);

This message is deprecated.

Auto take off mode.

Move the drone to a relative position

Move the drone to a relative position:

deviceController->aRDrone3->sendPilotingMoveBy(deviceController->aRDrone3, (float)dX, (float)dY, (float)dZ, (float)dPsi);
deviceController->aRDrone3->sendPilotingMoveBy(deviceController->aRDrone3, (float)dX, (float)dY, (float)dZ, (float)dPsi);
deviceController.getFeatureARDrone3().sendPilotingMoveBy((float)dX, (float)dY, (float)dZ, (float)dPsi);

Move the drone to a relative position and rotate heading by a given angle.
Moves are relative to the current drone orientation, (drone’s reference).
Also note that the given rotation will not modify the move (i.e. moves are always rectilinear).

Result:
The drone will move of the given offsets.
Then, event RelativeMoveEnded is triggered.
If you send a second relative move command, the drone will trigger a RelativeMoveEnded with the offsets it managed to do before this new command and the value of error set to interrupted.

Supported by


Prepare the drone to take off

Prepare the drone to take off:

deviceController->aRDrone3->sendPilotingUserTakeOff(deviceController->aRDrone3, (uint8_t)state);
deviceController->aRDrone3->sendPilotingUserTakeOff(deviceController->aRDrone3, (uint8_t)state);
deviceController.getFeatureARDrone3().sendPilotingUserTakeOff((byte)state);

Prepare the drone to take off.
This is the command that initiates the take off process on the fixed wings.
Setting the state to 0 will cancel the preparation. You can cancel it before that the drone takes off.

Result:
The drone will arm its motors if not already armed.
Then, event FlyingState is triggered with state set at motor ramping.
Then, event FlyingState is triggered with state set at userTakeOff.
Then user can throw the drone to make it take off.

Supported by


Circle

Circle:

deviceController->aRDrone3->sendPilotingCircle(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PILOTING_CIRCLE_DIRECTION)direction);
deviceController->aRDrone3->sendPilotingCircle(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PILOTING_CIRCLE_DIRECTION)direction);
deviceController.getFeatureARDrone3().sendPilotingCircle((ARCOMMANDS_ARDRONE3_PILOTING_CIRCLE_DIRECTION_ENUM)direction);

Make the fixed wing circle.
The circle will use the CirclingAltitude and the CirclingRadius

Result:
The fixed wing will circle in the given direction.
Then, event FlyingState is triggered with state set at hovering.

Supported by


Move to a location

Move to a location:

deviceController->aRDrone3->sendPilotingMoveTo(deviceController->aRDrone3, (double)latitude, (double)longitude, (double)altitude, (eARCOMMANDS_ARDRONE3_PILOTING_MOVETO_ORIENTATION_MODE)orientation_mode, (float)heading);
deviceController->aRDrone3->sendPilotingMoveTo(deviceController->aRDrone3, (double)latitude, (double)longitude, (double)altitude, (eARCOMMANDS_ARDRONE3_PILOTING_MOVETO_ORIENTATION_MODE)orientation_mode, (float)heading);
deviceController.getFeatureARDrone3().sendPilotingMoveTo((double)latitude, (double)longitude, (double)altitude, (ARCOMMANDS_ARDRONE3_PILOTING_MOVETO_ORIENTATION_MODE_ENUM)orientation_mode, (float)heading);

Move the drone to a specified location.
If a new command moveTo is sent, the drone will immediatly cancel the previous one.
If a CancelMoveTo command is sent, the moveTo is stopped.
During the moveTo, all pitch, roll and gaz values of the piloting command will be ignored by the drone.
However, the yaw value can be used.

Result:
Event MovingTo is triggered with state running. Then, the drone will move to the given location.
Then, event MoveToChanged is triggered with state succeed.

Supported by


Cancel the moveTo

Cancel the moveTo:

deviceController->aRDrone3->sendPilotingCancelMoveTo(deviceController->aRDrone3);
deviceController->aRDrone3->sendPilotingCancelMoveTo(deviceController->aRDrone3);
deviceController.getFeatureARDrone3().sendPilotingCancelMoveTo();

Cancel the current moveTo.
If there is no current moveTo, this command has no effect.

Result:
Event MoveToChanged is triggered with state canceled.

Supported by


Make a flip

Make a flip:

deviceController->aRDrone3->sendAnimationsFlip(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_ANIMATIONS_FLIP_DIRECTION)direction);
deviceController->aRDrone3->sendAnimationsFlip(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_ANIMATIONS_FLIP_DIRECTION)direction);
deviceController.getFeatureARDrone3().sendAnimationsFlip((ARCOMMANDS_ARDRONE3_ANIMATIONS_FLIP_DIRECTION_ENUM)direction);

Make a flip.

Result:
The drone will make a flip if it has enough battery.

Supported by


Move the camera (deprecated)

Move the camera (deprecated):

deviceController->aRDrone3->sendCameraOrientation(deviceController->aRDrone3, (int8_t)tilt, (int8_t)pan);
deviceController->aRDrone3->sendCameraOrientation(deviceController->aRDrone3, (int8_t)tilt, (int8_t)pan);
deviceController.getFeatureARDrone3().sendCameraOrientation((byte)tilt, (byte)pan);

This message is deprecated.

Move the camera.
You can get min and max values for tilt and pan using CameraInfo.

Result:
The drone moves its camera.
Then, event CameraOrientation is triggered.

Supported by


Move the camera

Move the camera:

deviceController->aRDrone3->sendCameraOrientationV2(deviceController->aRDrone3, (float)tilt, (float)pan);
deviceController->aRDrone3->sendCameraOrientationV2(deviceController->aRDrone3, (float)tilt, (float)pan);
deviceController.getFeatureARDrone3().sendCameraOrientationV2((float)tilt, (float)pan);

Move the camera.
You can get min and max values for tilt and pan using CameraInfo.

Result:
The drone moves its camera.
Then, event CameraOrientationV2 is triggered.

Supported by


Move the camera using velocity

Move the camera using velocity:

deviceController->aRDrone3->sendCameraVelocity(deviceController->aRDrone3, (float)tilt, (float)pan);
deviceController->aRDrone3->sendCameraVelocity(deviceController->aRDrone3, (float)tilt, (float)pan);
deviceController.getFeatureARDrone3().sendCameraVelocity((float)tilt, (float)pan);

Move the camera given velocity consign.
You can get min and max values for tilt and pan using CameraVelocityRange.

Result:
The drone moves its camera.
Then, event CameraOrientationV2 is triggered.

Supported by


Take a picture (deprecated)

Take a picture (deprecated):

deviceController->aRDrone3->sendMediaRecordPicture(deviceController->aRDrone3, (uint8_t)mass_storage_id);
deviceController->aRDrone3->sendMediaRecordPicture(deviceController->aRDrone3, (uint8_t)mass_storage_id);
deviceController.getFeatureARDrone3().sendMediaRecordPicture((byte)mass_storage_id);

This message is deprecated.

Take a picture.

Record a video (deprecated)

Record a video (deprecated):

deviceController->aRDrone3->sendMediaRecordVideo(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_MEDIARECORD_VIDEO_RECORD)record, (uint8_t)mass_storage_id);
deviceController->aRDrone3->sendMediaRecordVideo(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_MEDIARECORD_VIDEO_RECORD)record, (uint8_t)mass_storage_id);
deviceController.getFeatureARDrone3().sendMediaRecordVideo((ARCOMMANDS_ARDRONE3_MEDIARECORD_VIDEO_RECORD_ENUM)record, (byte)mass_storage_id);

This message is deprecated.

Record a video.

Take a picture

Take a picture:

deviceController->aRDrone3->sendMediaRecordPictureV2(deviceController->aRDrone3);
deviceController->aRDrone3->sendMediaRecordPictureV2(deviceController->aRDrone3);
deviceController.getFeatureARDrone3().sendMediaRecordPictureV2();

Take a picture.
The type of picture taken is related to the picture setting.
You can set the picture format by sending the command SetPictureFormat. You can also get the current picture format with PictureFormat.
Please note that the time required to take the picture is highly related to this format.

You can check if the picture taking is available with PictureState.
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).

Result:
Event PictureState will be triggered with a state busy.
The drone will take a picture.
Then, when picture has been taken, notification PictureEvent is triggered.
And normally PictureState will be triggered with a state ready.

Supported by


Record a video

Record a video:

deviceController->aRDrone3->sendMediaRecordVideoV2(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_MEDIARECORD_VIDEOV2_RECORD)record);
deviceController->aRDrone3->sendMediaRecordVideoV2(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_MEDIARECORD_VIDEOV2_RECORD)record);
deviceController.getFeatureARDrone3().sendMediaRecordVideoV2((ARCOMMANDS_ARDRONE3_MEDIARECORD_VIDEOV2_RECORD_ENUM)record);

Record a video (or start timelapse).
You can check if the video recording is available with VideoState.
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.
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).

Result:
The drone will begin or stop to record the video (or timelapse).
Then, event VideoState will be triggered. Also, notification VideoEvent is triggered.

Supported by


Scan wifi network

Scan wifi network:

deviceController->aRDrone3->sendNetworkWifiScan(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_NETWORK_WIFISCAN_BAND)band);
deviceController->aRDrone3->sendNetworkWifiScan(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_NETWORK_WIFISCAN_BAND)band);
deviceController.getFeatureARDrone3().sendNetworkWifiScan((ARCOMMANDS_ARDRONE3_NETWORK_WIFISCAN_BAND_ENUM)band);

Scan wifi network to get a list of all networks found by the drone

Result:
Event WifiScanResults is triggered with all networks found.
When all networks have been sent, event WifiScanEnded is triggered.

Supported by


Ask for available wifi channels

Ask for available wifi channels:

deviceController->aRDrone3->sendNetworkWifiAuthChannel(deviceController->aRDrone3);
deviceController->aRDrone3->sendNetworkWifiAuthChannel(deviceController->aRDrone3);
deviceController.getFeatureARDrone3().sendNetworkWifiAuthChannel();

Ask for available wifi channels.
The list of available Wifi channels is related to the country of the drone. You can get this country from the event CountryChanged.

Result:
Event AvailableWifiChannels is triggered with all available channels. When all channels have been sent, event AvailableWifiChannelsCompleted is triggered.

Supported by


Set max altitude

Set max altitude:

deviceController->aRDrone3->sendPilotingSettingsMaxAltitude(deviceController->aRDrone3, (float)current);
deviceController->aRDrone3->sendPilotingSettingsMaxAltitude(deviceController->aRDrone3, (float)current);
deviceController.getFeatureARDrone3().sendPilotingSettingsMaxAltitude((float)current);

Set max altitude.
The drone will not fly over this max altitude when it is in manual piloting.
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.
You can get the bounds in the event MaxAltitude.

Result:
The max altitude is set.
Then, event MaxAltitude is triggered.

Supported by


Set max pitch/roll

Set max pitch/roll:

deviceController->aRDrone3->sendPilotingSettingsMaxTilt(deviceController->aRDrone3, (float)current);
deviceController->aRDrone3->sendPilotingSettingsMaxTilt(deviceController->aRDrone3, (float)current);
deviceController.getFeatureARDrone3().sendPilotingSettingsMaxTilt((float)current);

Set max pitch/roll.
This represent the max inclination allowed by the drone.
You can get the bounds with the commands MaxPitchRoll.

Result:
The max pitch/roll is set.
Then, event MaxPitchRoll is triggered.

Supported by


Set absolut control (deprecated)

Set absolut control (deprecated):

deviceController->aRDrone3->sendPilotingSettingsAbsolutControl(deviceController->aRDrone3, (uint8_t)on);
deviceController->aRDrone3->sendPilotingSettingsAbsolutControl(deviceController->aRDrone3, (uint8_t)on);
deviceController.getFeatureARDrone3().sendPilotingSettingsAbsolutControl((byte)on);

This message is deprecated.

Set absolut control.

Set max distance

Set max distance:

deviceController->aRDrone3->sendPilotingSettingsMaxDistance(deviceController->aRDrone3, (float)value);
deviceController->aRDrone3->sendPilotingSettingsMaxDistance(deviceController->aRDrone3, (float)value);
deviceController.getFeatureARDrone3().sendPilotingSettingsMaxDistance((float)value);

Set max distance.
You can get the bounds from the event MaxDistance.

If Geofence is activated, the drone won’t fly over the given max distance.

Result:
The max distance is set.
Then, event MaxDistance is triggered.

Supported by


Enable geofence

Enable geofence:

deviceController->aRDrone3->sendPilotingSettingsNoFlyOverMaxDistance(deviceController->aRDrone3, (uint8_t)shouldNotFlyOver);
deviceController->aRDrone3->sendPilotingSettingsNoFlyOverMaxDistance(deviceController->aRDrone3, (uint8_t)shouldNotFlyOver);
deviceController.getFeatureARDrone3().sendPilotingSettingsNoFlyOverMaxDistance((byte)shouldNotFlyOver);

Enable geofence.
If geofence is enabled, the drone won’t fly over the given max distance.
You can get the max distance from the event MaxDistance.
For copters: the distance is computed from the controller position, if this position is not known, it will use the take off.
For fixed wings: the distance is computed from the take off position.

Result:
Geofencing is enabled or disabled.
Then, event Geofencing is triggered.

Supported by


Set autonomous flight max horizontal speed

Set autonomous flight max horizontal speed:

deviceController->aRDrone3->sendPilotingSettingsSetAutonomousFlightMaxHorizontalSpeed(deviceController->aRDrone3, (float)value);
deviceController->aRDrone3->sendPilotingSettingsSetAutonomousFlightMaxHorizontalSpeed(deviceController->aRDrone3, (float)value);
deviceController.getFeatureARDrone3().sendPilotingSettingsSetAutonomousFlightMaxHorizontalSpeed((float)value);

Set autonomous flight max horizontal speed.
This will only be used during autonomous flights such as moveBy.

Result:
The max horizontal speed is set.
Then, event AutonomousFlightMaxHorizontalSpeed is triggered.

Supported by


Set autonomous flight max vertical speed

Set autonomous flight max vertical speed:

deviceController->aRDrone3->sendPilotingSettingsSetAutonomousFlightMaxVerticalSpeed(deviceController->aRDrone3, (float)value);
deviceController->aRDrone3->sendPilotingSettingsSetAutonomousFlightMaxVerticalSpeed(deviceController->aRDrone3, (float)value);
deviceController.getFeatureARDrone3().sendPilotingSettingsSetAutonomousFlightMaxVerticalSpeed((float)value);

Set autonomous flight max vertical speed.
This will only be used during autonomous flights such as moveBy.

Result:
The max vertical speed is set.
Then, event AutonomousFlightMaxVerticalSpeed is triggered.

Supported by


Set autonomous flight max horizontal acceleration

Set autonomous flight max horizontal acceleration:

deviceController->aRDrone3->sendPilotingSettingsSetAutonomousFlightMaxHorizontalAcceleration(deviceController->aRDrone3, (float)value);
deviceController->aRDrone3->sendPilotingSettingsSetAutonomousFlightMaxHorizontalAcceleration(deviceController->aRDrone3, (float)value);
deviceController.getFeatureARDrone3().sendPilotingSettingsSetAutonomousFlightMaxHorizontalAcceleration((float)value);

Set autonomous flight max horizontal acceleration.
This will only be used during autonomous flights such as moveBy.

Result:
The max horizontal acceleration is set.
Then, event AutonomousFlightMaxHorizontalAcceleration is triggered.

Supported by


Set autonomous flight max vertical acceleration

Set autonomous flight max vertical acceleration:

deviceController->aRDrone3->sendPilotingSettingsSetAutonomousFlightMaxVerticalAcceleration(deviceController->aRDrone3, (float)value);
deviceController->aRDrone3->sendPilotingSettingsSetAutonomousFlightMaxVerticalAcceleration(deviceController->aRDrone3, (float)value);
deviceController.getFeatureARDrone3().sendPilotingSettingsSetAutonomousFlightMaxVerticalAcceleration((float)value);

Set autonomous flight max vertical acceleration.
This will only be used during autonomous flights such as moveBy.

Result:
The max vertical acceleration is set.
Then, event AutonomousFlightMaxVerticalAcceleration is triggered.

Supported by


Set autonomous flight max rotation speed

Set autonomous flight max rotation speed:

deviceController->aRDrone3->sendPilotingSettingsSetAutonomousFlightMaxRotationSpeed(deviceController->aRDrone3, (float)value);
deviceController->aRDrone3->sendPilotingSettingsSetAutonomousFlightMaxRotationSpeed(deviceController->aRDrone3, (float)value);
deviceController.getFeatureARDrone3().sendPilotingSettingsSetAutonomousFlightMaxRotationSpeed((float)value);

Set autonomous flight max rotation speed.
This will only be used during autonomous flights such as moveBy.

Result:
The max rotation speed is set.
Then, event AutonomousFlightMaxRotationSpeed is triggered.

Supported by


Set banked turn mode

Set banked turn mode:

deviceController->aRDrone3->sendPilotingSettingsBankedTurn(deviceController->aRDrone3, (uint8_t)value);
deviceController->aRDrone3->sendPilotingSettingsBankedTurn(deviceController->aRDrone3, (uint8_t)value);
deviceController.getFeatureARDrone3().sendPilotingSettingsBankedTurn((byte)value);

Set banked turn mode.
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.

Result:
The banked turn mode is enabled or disabled.
Then, event BankedTurnMode is triggered.

Supported by


Set minimum altitude

Set minimum altitude:

deviceController->aRDrone3->sendPilotingSettingsMinAltitude(deviceController->aRDrone3, (float)current);
deviceController->aRDrone3->sendPilotingSettingsMinAltitude(deviceController->aRDrone3, (float)current);
deviceController.getFeatureARDrone3().sendPilotingSettingsMinAltitude((float)current);

Set minimum altitude.
Only available for fixed wings.

Result:
The minimum altitude is set.
Then, event MinimumAltitude is triggered.

Supported by


Set default circling direction

Set default circling direction:

deviceController->aRDrone3->sendPilotingSettingsCirclingDirection(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PILOTINGSETTINGS_CIRCLINGDIRECTION_VALUE)value);
deviceController->aRDrone3->sendPilotingSettingsCirclingDirection(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PILOTINGSETTINGS_CIRCLINGDIRECTION_VALUE)value);
deviceController.getFeatureARDrone3().sendPilotingSettingsCirclingDirection((ARCOMMANDS_ARDRONE3_PILOTINGSETTINGS_CIRCLINGDIRECTION_VALUE_ENUM)value);

Set default circling direction. This direction will be used when the drone use an automatic circling or when CIRCLE is sent with direction default.
Only available for fixed wings.

Result:
The circling direction is set.
Then, event DefaultCirclingDirection is triggered.

Supported by


Set circling radius

Set circling radius:

deviceController->aRDrone3->sendPilotingSettingsCirclingRadius(deviceController->aRDrone3, (uint16_t)value);
deviceController->aRDrone3->sendPilotingSettingsCirclingRadius(deviceController->aRDrone3, (uint16_t)value);
deviceController.getFeatureARDrone3().sendPilotingSettingsCirclingRadius((short)value);

Set circling radius.
Only available for fixed wings.

Result:
The circling radius is set.
Then, event CirclingRadius is triggered.

Supported by


Set min circling altitude

Set min circling altitude:

deviceController->aRDrone3->sendPilotingSettingsCirclingAltitude(deviceController->aRDrone3, (uint16_t)value);
deviceController->aRDrone3->sendPilotingSettingsCirclingAltitude(deviceController->aRDrone3, (uint16_t)value);
deviceController.getFeatureARDrone3().sendPilotingSettingsCirclingAltitude((short)value);

Set min circling altitude (not used during take off).
Only available for fixed wings.

Result:
The circling altitude is set.
Then, event CirclingAltitude is triggered.

Supported by


Set pitch mode

Set pitch mode:

deviceController->aRDrone3->sendPilotingSettingsPitchMode(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PILOTINGSETTINGS_PITCHMODE_VALUE)value);
deviceController->aRDrone3->sendPilotingSettingsPitchMode(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PILOTINGSETTINGS_PITCHMODE_VALUE)value);
deviceController.getFeatureARDrone3().sendPilotingSettingsPitchMode((ARCOMMANDS_ARDRONE3_PILOTINGSETTINGS_PITCHMODE_VALUE_ENUM)value);

Set pitch mode.
Only available for fixed wings.

Result:
The pitch mode is set.
Then, event PitchMode is triggered.

Supported by


Set max vertical speed

Set max vertical speed:

deviceController->aRDrone3->sendSpeedSettingsMaxVerticalSpeed(deviceController->aRDrone3, (float)current);
deviceController->aRDrone3->sendSpeedSettingsMaxVerticalSpeed(deviceController->aRDrone3, (float)current);
deviceController.getFeatureARDrone3().sendSpeedSettingsMaxVerticalSpeed((float)current);

Set max vertical speed.

Result:
The max vertical speed is set.
Then, event MaxVerticalSpeed is triggered.

Supported by


Set max rotation speed

Set max rotation speed:

deviceController->aRDrone3->sendSpeedSettingsMaxRotationSpeed(deviceController->aRDrone3, (float)current);
deviceController->aRDrone3->sendSpeedSettingsMaxRotationSpeed(deviceController->aRDrone3, (float)current);
deviceController.getFeatureARDrone3().sendSpeedSettingsMaxRotationSpeed((float)current);

Set max rotation speed.

Result:
The max rotation speed is set.
Then, event MaxRotationSpeed is triggered.

Supported by


Set the presence of hull protection

Set the presence of hull protection:

deviceController->aRDrone3->sendSpeedSettingsHullProtection(deviceController->aRDrone3, (uint8_t)present);
deviceController->aRDrone3->sendSpeedSettingsHullProtection(deviceController->aRDrone3, (uint8_t)present);
deviceController.getFeatureARDrone3().sendSpeedSettingsHullProtection((byte)present);

Set the presence of hull protection.

Result:
The drone knows that it has a hull protection.
Then, event HullProtection is triggered.

Supported by


Set outdoor mode (deprecated)

Set outdoor mode (deprecated):

deviceController->aRDrone3->sendSpeedSettingsOutdoor(deviceController->aRDrone3, (uint8_t)outdoor);
deviceController->aRDrone3->sendSpeedSettingsOutdoor(deviceController->aRDrone3, (uint8_t)outdoor);
deviceController.getFeatureARDrone3().sendSpeedSettingsOutdoor((byte)outdoor);

This message is deprecated.

Set outdoor mode.

Set max pitch/roll rotation speed

Set max pitch/roll rotation speed:

deviceController->aRDrone3->sendSpeedSettingsMaxPitchRollRotationSpeed(deviceController->aRDrone3, (float)current);
deviceController->aRDrone3->sendSpeedSettingsMaxPitchRollRotationSpeed(deviceController->aRDrone3, (float)current);
deviceController.getFeatureARDrone3().sendSpeedSettingsMaxPitchRollRotationSpeed((float)current);

Set max pitch/roll rotation speed.

Result:
The max pitch/roll rotation speed is set.
Then, event MaxPitchRollRotationSpeed is triggered.

Supported by


Select Wifi

Select Wifi:

deviceController->aRDrone3->sendNetworkSettingsWifiSelection(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_NETWORKSETTINGS_WIFISELECTION_TYPE)type, (eARCOMMANDS_ARDRONE3_NETWORKSETTINGS_WIFISELECTION_BAND)band, (uint8_t)channel);
deviceController->aRDrone3->sendNetworkSettingsWifiSelection(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_NETWORKSETTINGS_WIFISELECTION_TYPE)type, (eARCOMMANDS_ARDRONE3_NETWORKSETTINGS_WIFISELECTION_BAND)band, (uint8_t)channel);
deviceController.getFeatureARDrone3().sendNetworkSettingsWifiSelection((ARCOMMANDS_ARDRONE3_NETWORKSETTINGS_WIFISELECTION_TYPE_ENUM)type, (ARCOMMANDS_ARDRONE3_NETWORKSETTINGS_WIFISELECTION_BAND_ENUM)band, (byte)channel);

Select or auto-select channel of choosen band.

Result:
The wifi channel changes according to given parameters. Watch out, a disconnection might appear.
Then, event WifiSelection is triggered.

Supported by


Set wifi security type

Set wifi security type:

deviceController->aRDrone3->sendNetworkSettingsWifiSecurity(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_NETWORKSETTINGS_WIFISECURITY_TYPE)type, (char *)key, (eARCOMMANDS_ARDRONE3_NETWORKSETTINGS_WIFISECURITY_KEYTYPE)keyType);
deviceController->aRDrone3->sendNetworkSettingsWifiSecurity(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_NETWORKSETTINGS_WIFISECURITY_TYPE)type, (char *)key, (eARCOMMANDS_ARDRONE3_NETWORKSETTINGS_WIFISECURITY_KEYTYPE)keyType);
deviceController.getFeatureARDrone3().sendNetworkSettingsWifiSecurity((ARCOMMANDS_ARDRONE3_NETWORKSETTINGS_WIFISECURITY_TYPE_ENUM)type, (String)key, (ARCOMMANDS_ARDRONE3_NETWORKSETTINGS_WIFISECURITY_KEYTYPE_ENUM)keyType);

Set wifi security type.
The security will be changed on the next restart

Result:
The wifi security is set (but not applied until next restart).
Then, event WifiSecurityType is triggered.

Supported by


Set picture format

Set picture format:

deviceController->aRDrone3->sendPictureSettingsPictureFormatSelection(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PICTURESETTINGS_PICTUREFORMATSELECTION_TYPE)type);
deviceController->aRDrone3->sendPictureSettingsPictureFormatSelection(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PICTURESETTINGS_PICTUREFORMATSELECTION_TYPE)type);
deviceController.getFeatureARDrone3().sendPictureSettingsPictureFormatSelection((ARCOMMANDS_ARDRONE3_PICTURESETTINGS_PICTUREFORMATSELECTION_TYPE_ENUM)type);

Set picture format.
Please note that the time required to take the picture is highly related to this format.
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).

Result:
The picture format is set.
Then, event PictureFormat is triggered.

Supported by


Set White Balance mode

Set White Balance mode:

deviceController->aRDrone3->sendPictureSettingsAutoWhiteBalanceSelection(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PICTURESETTINGS_AUTOWHITEBALANCESELECTION_TYPE)type);
deviceController->aRDrone3->sendPictureSettingsAutoWhiteBalanceSelection(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PICTURESETTINGS_AUTOWHITEBALANCESELECTION_TYPE)type);
deviceController.getFeatureARDrone3().sendPictureSettingsAutoWhiteBalanceSelection((ARCOMMANDS_ARDRONE3_PICTURESETTINGS_AUTOWHITEBALANCESELECTION_TYPE_ENUM)type);

Set White Balance mode.

Result:
The white balance mode is set.
Then, event WhiteBalanceMode is triggered.

Supported by


Set image exposure

Set image exposure:

deviceController->aRDrone3->sendPictureSettingsExpositionSelection(deviceController->aRDrone3, (float)value);
deviceController->aRDrone3->sendPictureSettingsExpositionSelection(deviceController->aRDrone3, (float)value);
deviceController.getFeatureARDrone3().sendPictureSettingsExpositionSelection((float)value);

Set image exposure.

Result:
The exposure is set.
Then, event ImageExposure is triggered.

Supported by


Set image saturation

Set image saturation:

deviceController->aRDrone3->sendPictureSettingsSaturationSelection(deviceController->aRDrone3, (float)value);
deviceController->aRDrone3->sendPictureSettingsSaturationSelection(deviceController->aRDrone3, (float)value);
deviceController.getFeatureARDrone3().sendPictureSettingsSaturationSelection((float)value);

Set image saturation.

Result:
The saturation is set.
Then, event ImageSaturation is triggered.

Supported by


Set timelapse mode

Set timelapse mode:

deviceController->aRDrone3->sendPictureSettingsTimelapseSelection(deviceController->aRDrone3, (uint8_t)enabled, (float)interval);
deviceController->aRDrone3->sendPictureSettingsTimelapseSelection(deviceController->aRDrone3, (uint8_t)enabled, (float)interval);
deviceController.getFeatureARDrone3().sendPictureSettingsTimelapseSelection((byte)enabled, (float)interval);

Set timelapse mode.
If timelapse mode is set, instead of taking a video, the drone will take picture regularly.
Watch out, this command only configure the timelapse mode. Once it is configured, you can start/stop the timelapse with the RecordVideo command.

Result:
The timelapse mode is set (but not started).
Then, event TimelapseMode is triggered.

Supported by


Set video autorecord mode

Set video autorecord mode:

deviceController->aRDrone3->sendPictureSettingsVideoAutorecordSelection(deviceController->aRDrone3, (uint8_t)enabled, (uint8_t)mass_storage_id);
deviceController->aRDrone3->sendPictureSettingsVideoAutorecordSelection(deviceController->aRDrone3, (uint8_t)enabled, (uint8_t)mass_storage_id);
deviceController.getFeatureARDrone3().sendPictureSettingsVideoAutorecordSelection((byte)enabled, (byte)mass_storage_id);

Set video autorecord mode.
If autorecord is set, video record will be automatically started when the drone takes off and stopped slightly after landing.

Result:
The autorecord mode is set.
Then, event AutorecordMode is triggered.

Supported by


Set video stabilization mode

Set video stabilization mode:

deviceController->aRDrone3->sendPictureSettingsVideoStabilizationMode(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PICTURESETTINGS_VIDEOSTABILIZATIONMODE_MODE)mode);
deviceController->aRDrone3->sendPictureSettingsVideoStabilizationMode(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PICTURESETTINGS_VIDEOSTABILIZATIONMODE_MODE)mode);
deviceController.getFeatureARDrone3().sendPictureSettingsVideoStabilizationMode((ARCOMMANDS_ARDRONE3_PICTURESETTINGS_VIDEOSTABILIZATIONMODE_MODE_ENUM)mode);

Set video stabilization mode.

Result:
The video stabilization mode is set.
Then, event VideoStabilizationMode is triggered.

Supported by


Set video recording mode

Set video recording mode:

deviceController->aRDrone3->sendPictureSettingsVideoRecordingMode(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PICTURESETTINGS_VIDEORECORDINGMODE_MODE)mode);
deviceController->aRDrone3->sendPictureSettingsVideoRecordingMode(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PICTURESETTINGS_VIDEORECORDINGMODE_MODE)mode);
deviceController.getFeatureARDrone3().sendPictureSettingsVideoRecordingMode((ARCOMMANDS_ARDRONE3_PICTURESETTINGS_VIDEORECORDINGMODE_MODE_ENUM)mode);

Set video recording mode.

Result:
The video recording mode is set.
Then, event VideoRecordingMode is triggered.

Supported by


Set video framerate

Set video framerate:

deviceController->aRDrone3->sendPictureSettingsVideoFramerate(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PICTURESETTINGS_VIDEOFRAMERATE_FRAMERATE)framerate);
deviceController->aRDrone3->sendPictureSettingsVideoFramerate(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PICTURESETTINGS_VIDEOFRAMERATE_FRAMERATE)framerate);
deviceController.getFeatureARDrone3().sendPictureSettingsVideoFramerate((ARCOMMANDS_ARDRONE3_PICTURESETTINGS_VIDEOFRAMERATE_FRAMERATE_ENUM)framerate);

Set video framerate.

Result:
The video framerate is set.
Then, event VideoFramerate is triggered.

Supported by


Set video resolutions

Set video resolutions:

deviceController->aRDrone3->sendPictureSettingsVideoResolutions(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PICTURESETTINGS_VIDEORESOLUTIONS_TYPE)type);
deviceController->aRDrone3->sendPictureSettingsVideoResolutions(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_PICTURESETTINGS_VIDEORESOLUTIONS_TYPE)type);
deviceController.getFeatureARDrone3().sendPictureSettingsVideoResolutions((ARCOMMANDS_ARDRONE3_PICTURESETTINGS_VIDEORESOLUTIONS_TYPE_ENUM)type);

Set video streaming and recording resolutions.

Result:
The video resolutions is set.
Then, event VideoResolutions is triggered.

Supported by


Enable/disable video streaming

Enable/disable video streaming:

deviceController->aRDrone3->sendMediaStreamingVideoEnable(deviceController->aRDrone3, (uint8_t)enable);
deviceController->aRDrone3->sendMediaStreamingVideoEnable(deviceController->aRDrone3, (uint8_t)enable);
deviceController.getFeatureARDrone3().sendMediaStreamingVideoEnable((byte)enable);

Enable/disable video streaming.

Result:
The video stream is started or stopped.
Then, event VideoStreamState is triggered.

Supported by


Video stream mode

Video stream mode:

deviceController->aRDrone3->sendMediaStreamingVideoStreamMode(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_MEDIASTREAMING_VIDEOSTREAMMODE_MODE)mode);
deviceController->aRDrone3->sendMediaStreamingVideoStreamMode(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_MEDIASTREAMING_VIDEOSTREAMMODE_MODE)mode);
deviceController.getFeatureARDrone3().sendMediaStreamingVideoStreamMode((ARCOMMANDS_ARDRONE3_MEDIASTREAMING_VIDEOSTREAMMODE_MODE_ENUM)mode);

Video stream mode

Set home position (deprecated)

Set home position (deprecated):

deviceController->aRDrone3->sendGPSSettingsSetHome(deviceController->aRDrone3, (double)latitude, (double)longitude, (double)altitude);
deviceController->aRDrone3->sendGPSSettingsSetHome(deviceController->aRDrone3, (double)latitude, (double)longitude, (double)altitude);
deviceController.getFeatureARDrone3().sendGPSSettingsSetHome((double)latitude, (double)longitude, (double)altitude);

This message is deprecated.

Set home position.

Reset home position (deprecated)

Reset home position (deprecated):

deviceController->aRDrone3->sendGPSSettingsResetHome(deviceController->aRDrone3);
deviceController->aRDrone3->sendGPSSettingsResetHome(deviceController->aRDrone3);
deviceController.getFeatureARDrone3().sendGPSSettingsResetHome();

This message is deprecated.

Reset home position.

Result:
The home position is reset.
Then, event HomeLocationReset is triggered.

Supported by


Set controller gps location

Set controller gps location:

deviceController->aRDrone3->sendGPSSettingsSendControllerGPS(deviceController->aRDrone3, (double)latitude, (double)longitude, (double)altitude, (double)horizontalAccuracy, (double)verticalAccuracy);
deviceController->aRDrone3->sendGPSSettingsSendControllerGPS(deviceController->aRDrone3, (double)latitude, (double)longitude, (double)altitude, (double)horizontalAccuracy, (double)verticalAccuracy);
deviceController.getFeatureARDrone3().sendGPSSettingsSendControllerGPS((double)latitude, (double)longitude, (double)altitude, (double)horizontalAccuracy, (double)verticalAccuracy);

Set controller gps location.
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.

Result:
The controller position is known by the drone.
Then, event HomeLocation is triggered.

Supported by


Set the preferred home type

Set the preferred home type:

deviceController->aRDrone3->sendGPSSettingsHomeType(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_GPSSETTINGS_HOMETYPE_TYPE)type);
deviceController->aRDrone3->sendGPSSettingsHomeType(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_GPSSETTINGS_HOMETYPE_TYPE)type);
deviceController.getFeatureARDrone3().sendGPSSettingsHomeType((ARCOMMANDS_ARDRONE3_GPSSETTINGS_HOMETYPE_TYPE_ENUM)type);

Set the preferred home type.
Please note that this is only a preference. The actual type chosen is given by the event HomeType.
You can get the currently available types with the event HomeTypeAvailability.

Result:
The user choice is known by the drone.
Then, event PreferredHomeType is triggered.

Supported by


Set the return home delay

Set the return home delay:

deviceController->aRDrone3->sendGPSSettingsReturnHomeDelay(deviceController->aRDrone3, (uint16_t)delay);
deviceController->aRDrone3->sendGPSSettingsReturnHomeDelay(deviceController->aRDrone3, (uint16_t)delay);
deviceController.getFeatureARDrone3().sendGPSSettingsReturnHomeDelay((short)delay);

Set the delay after which the drone will automatically try to return home after a disconnection.

Result:
The delay of the return home is set.
Then, event ReturnHomeDelay is triggered.

Supported by


Set the electric frequency

Set the electric frequency:

deviceController->aRDrone3->sendAntiflickeringElectricFrequency(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_ANTIFLICKERING_ELECTRICFREQUENCY_FREQUENCY)frequency);
deviceController->aRDrone3->sendAntiflickeringElectricFrequency(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_ANTIFLICKERING_ELECTRICFREQUENCY_FREQUENCY)frequency);
deviceController.getFeatureARDrone3().sendAntiflickeringElectricFrequency((ARCOMMANDS_ARDRONE3_ANTIFLICKERING_ELECTRICFREQUENCY_FREQUENCY_ENUM)frequency);

Set the electric frequency of the surrounding lights.
This is used to avoid the video flickering in auto mode. You can get the current antiflickering mode with the event AntiflickeringModeChanged.

Result:
The electric frequency is set.
Then, event ElectricFrequency is triggered.

Supported by


Set the antiflickering mode

Set the antiflickering mode:

deviceController->aRDrone3->sendAntiflickeringSetMode(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_ANTIFLICKERING_SETMODE_MODE)mode);
deviceController->aRDrone3->sendAntiflickeringSetMode(deviceController->aRDrone3, (eARCOMMANDS_ARDRONE3_ANTIFLICKERING_SETMODE_MODE)mode);
deviceController.getFeatureARDrone3().sendAntiflickeringSetMode((ARCOMMANDS_ARDRONE3_ANTIFLICKERING_SETMODE_MODE_ENUM)mode);

Set the antiflickering mode.
If auto, the drone will detect when flickers appears on the video and trigger the antiflickering.
In this case, this electric frequency it will use will be the one specified in the event ElectricFrequency.
Forcing the antiflickering (FixedFiftyHertz or FixedFiftyHertz) can reduce luminosity of the video.

Result:
The antiflickering mode is set.
Then, event AntiflickeringMode is triggered.

Supported by


Signals the remote that the host will disconnect (deprecated)

Signals the remote that the host will disconnect (deprecated):

deviceController->common->sendNetworkDisconnect(deviceController->common);
deviceController->common->sendNetworkDisconnect(deviceController->common);
deviceController.getFeatureCommon().sendNetworkDisconnect();

This message is deprecated.

Signals the remote that the host will disconnect.

Result:
None

Supported by


Ask for all settings

Ask for all settings:

deviceController->common->sendSettingsAllSettings(deviceController->common);
deviceController->common->sendSettingsAllSettings(deviceController->common);
deviceController.getFeatureCommon().sendSettingsAllSettings();

Ask for all settings.

Please note that you should not send this command if you are using the
libARController API as this library is handling the connection process for you.

Result:
The product will trigger all settings events (such as CameraSettings, or product specific settings as the MaxAltitude for the Bebop).
Then, it will trigger AllSettingsEnd.

Supported by


Reset all settings

Reset all settings:

deviceController->common->sendSettingsReset(deviceController->common);
deviceController->common->sendSettingsReset(deviceController->common);
deviceController.getFeatureCommon().sendSettingsReset();

Reset all settings.

Result:
It will trigger ResetChanged.
Then, the product will trigger all settings events (such as CameraSettings, or product specific settings as the MaxAltitude for the Bebop) with factory values.

Supported by


Set product name

Set product name:

deviceController->common->sendSettingsProductName(deviceController->common, (char *)name);
deviceController->common->sendSettingsProductName(deviceController->common, (char *)name);
deviceController.getFeatureCommon().sendSettingsProductName((String)name);

Set the product name.
It also sets the name of the SSID for Wifi products and advertisement name for BLE products (changed after a reboot of the product).

Result:
Name is changed.
Then, it will trigger NameChanged.

Supported by


Set the country

Set the country:

deviceController->common->sendSettingsCountry(deviceController->common, (char *)code);
deviceController->common->sendSettingsCountry(deviceController->common, (char *)code);
deviceController.getFeatureCommon().sendSettingsCountry((String)code);

Set the country for Wifi products.
This can modify Wifi band and/or channel.
Please note that you might be disconnected from the product after changing the country as it changes Wifi parameters.

Result:
The country is set.
Then, it will trigger CountryChanged.

Supported by


Enable auto-country

Enable auto-country:

deviceController->common->sendSettingsAutoCountry(deviceController->common, (uint8_t)automatic);
deviceController->common->sendSettingsAutoCountry(deviceController->common, (uint8_t)automatic);
deviceController.getFeatureCommon().sendSettingsAutoCountry((byte)automatic);

Enable auto-country.
If auto-country is set, the drone will guess its Wifi country by itself by checking other Wifi country around it.
Please note that you might be disconnected from the product after changing the country as it changes Wifi parameters.

Result:
The auto-country of the product is changed.
Then, it will trigger AutoCountryChanged and CountryChanged.

Supported by


Ask for all states

Ask for all states:

deviceController->common->sendCommonAllStates(deviceController->common);
deviceController->common->sendCommonAllStates(deviceController->common);
deviceController.getFeatureCommon().sendCommonAllStates();

Ask for all states.

Please note that you should not send this command if you are using the
libARController API as this library is handling the connection process for you.

Result:
The product will trigger all states events (such as FlyingState for the Bebop).
Then, it will trigger AllStatesEnd.

Supported by


Set the date

Set the date:

deviceController->common->sendCommonCurrentDate(deviceController->common, (char *)date);
deviceController->common->sendCommonCurrentDate(deviceController->common, (char *)date);
deviceController.getFeatureCommon().sendCommonCurrentDate((String)date);

Set the date.
This date is taken by the drone as its own date.
So medias and other files will be dated from this date

Please note that you should not send this command if you are using the
libARController API as this library is handling the connection process for you.

Result:
The date of the product is set.
Then, it will trigger DateChanged.

Supported by


Set the time

Set the time:

deviceController->common->sendCommonCurrentTime(deviceController->common, (char *)time);
deviceController->common->sendCommonCurrentTime(deviceController->common, (char *)time);
deviceController.getFeatureCommon().sendCommonCurrentTime((String)time);

Set the time.
This time is taken by the drone as its own time.
So medias and other files will be dated from this time

Please note that you should not send this command if you are using the
libARController API as this library is handling the connection process for you.

Result:
The time of the product is set.
Then, it will trigger TimeChanged.

Supported by


Reboot

Reboot:

deviceController->common->sendCommonReboot(deviceController->common);
deviceController->common->sendCommonReboot(deviceController->common);
deviceController.getFeatureCommon().sendCommonReboot();

Reboot the product.
The product will accept this command only if is not flying.

Result:
The product will reboot if it can.

Supported by


Switch off after an overheat (deprecated)

Switch off after an overheat (deprecated):

deviceController->common->sendOverHeatSwitchOff(deviceController->common);
deviceController->common->sendOverHeatSwitchOff(deviceController->common);
deviceController.getFeatureCommon().sendOverHeatSwitchOff();

This message is deprecated.

Switch off after an overheat.

Result:
None

Supported by


Ventilate after an overheat (deprecated)

Ventilate after an overheat (deprecated):

deviceController->common->sendOverHeatVentilate(deviceController->common);
deviceController->common->sendOverHeatVentilate(deviceController->common);
deviceController.getFeatureCommon().sendOverHeatVentilate();

This message is deprecated.

Ventilate after an overheat.

Result:
None

Supported by


Inform about hud entering

Inform about hud entering:

deviceController->common->sendControllerIsPiloting(deviceController->common, (uint8_t)piloting);
deviceController->common->sendControllerIsPiloting(deviceController->common, (uint8_t)piloting);
deviceController.getFeatureCommon().sendControllerIsPiloting((byte)piloting);

Inform about hud entering.
Tell the drone that the controller enters/leaves the piloting hud.
On a non-flying products it is used to know when a run begins.

Result:
If yes, the product will begin a new session (so it should send a new runId).
Also, on the JumpingSumos, if the video is in autorecord mode, it will start recording.

Supported by


Set wifi outdoor mode

Set wifi outdoor mode:

deviceController->common->sendWifiSettingsOutdoorSetting(deviceController->common, (uint8_t)outdoor);
deviceController->common->sendWifiSettingsOutdoorSetting(deviceController->common, (uint8_t)outdoor);
deviceController.getFeatureCommon().sendWifiSettingsOutdoorSetting((byte)outdoor);

Set wifi indoor/outdoor mode.
Please note that you might be disconnected from the product after changing the indoor/outdoor setting as it changes Wifi parameters.

Result:
The product change its indoor/outdoor wifi settings.
Then, it will trigger WifiOutdoorMode.

Supported by


Start a FlightPlan

Start a FlightPlan:

deviceController->common->sendMavlinkStart(deviceController->common, (char *)filepath, (eARCOMMANDS_COMMON_MAVLINK_START_TYPE)type);
deviceController->common->sendMavlinkStart(deviceController->common, (char *)filepath, (eARCOMMANDS_COMMON_MAVLINK_START_TYPE)type);
deviceController.getFeatureCommon().sendMavlinkStart((String)filepath, (ARCOMMANDS_COMMON_MAVLINK_START_TYPE_ENUM)type);

Start a FlightPlan based on a mavlink file existing on the drone.

Requirements are:
* Product is calibrated
* Product should be in outdoor mode
* Product has fixed its GPS

Result:
If the FlightPlan has been started, event FlightPlanPlayingStateChanged is triggered with param state set to playing.
Otherwise, event FlightPlanPlayingStateChanged is triggered with param state set to stopped and event MavlinkPlayErrorStateChanged is triggered with an explanation of the error.

Supported by


Pause a FlightPlan

Pause a FlightPlan:

deviceController->common->sendMavlinkPause(deviceController->common);
deviceController->common->sendMavlinkPause(deviceController->common);
deviceController.getFeatureCommon().sendMavlinkPause();

Pause a FlightPlan that was playing.
To unpause a FlightPlan, see StartFlightPlan

Result:
The currently playing FlightPlan will be paused. Then, event FlightPlanPlayingStateChanged is triggered with param state set to the current state of the FlightPlan (should be paused if everything went well).

Supported by


Stop a FlightPlan

Stop a FlightPlan:

deviceController->common->sendMavlinkStop(deviceController->common);
deviceController->common->sendMavlinkStop(deviceController->common);
deviceController.getFeatureCommon().sendMavlinkStop();

Stop a FlightPlan that was playing.

Result:
The currently playing FlightPlan will be stopped. Then, event FlightPlanPlayingStateChanged is triggered with param state set to the current state of the FlightPlan (should be stopped if everything went well).

Supported by


Set ReturnHome behavior during FlightPlan

Set ReturnHome behavior during FlightPlan:

deviceController->common->sendFlightPlanSettingsReturnHomeOnDisconnect(deviceController->common, (uint8_t)value);
deviceController->common->sendFlightPlanSettingsReturnHomeOnDisconnect(deviceController->common, (uint8_t)value);
deviceController.getFeatureCommon().sendFlightPlanSettingsReturnHomeOnDisconnect((byte)value);

Set ReturnHome behavior during FlightPlan
When set, drone will return home, after return home delay, if a disconnection occurs during execution of FlightPlan

Result:
The return home mode is enabled or disabled.
Then, event ReturnHomeOnDisconnectionChanged is triggered.

Supported by


Start/Abort magnetometer calibration

Start/Abort magnetometer calibration:

deviceController->common->sendCalibrationMagnetoCalibration(deviceController->common, (uint8_t)calibrate);
deviceController->common->sendCalibrationMagnetoCalibration(deviceController->common, (uint8_t)calibrate);
deviceController.getFeatureCommon().sendCalibrationMagnetoCalibration((byte)calibrate);

Start or abort magnetometer calibration process.

Result:
The magnetometer calibration process is started or aborted. Then, event MagnetoCalibrationStartedChanged is triggered.
If started, event MagnetoCalibrationStateChanged is triggered with the current calibration state: a list of all axis and their calibration states.
It will also trigger MagnetoCalibrationAxisToCalibrateChanged, that will inform the controller about the current axis to calibrate.

Supported by


Sent when a calibration of the pitot is asked or is aborted

Sent when a calibration of the pitot is asked or is aborted:

deviceController->common->sendCalibrationPitotCalibration(deviceController->common, (uint8_t)calibrate);
deviceController->common->sendCalibrationPitotCalibration(deviceController->common, (uint8_t)calibrate);
deviceController.getFeatureCommon().sendCalibrationPitotCalibration((byte)calibrate);

Sent when a calibration of the pitot is asked or is aborted

Set the position of a run

Set the position of a run:

deviceController->common->sendGPSControllerPositionForRun(deviceController->common, (double)latitude, (double)longitude);
deviceController->common->sendGPSControllerPositionForRun(deviceController->common, (double)latitude, (double)longitude);
deviceController.getFeatureCommon().sendGPSControllerPositionForRun((double)latitude, (double)longitude);

Set the position of a run.
This will let the product know the controller location for the flight/run. The location is typically used to geotag medias.
Only used on products that have no gps.
Watch out, this command is not used by BLE products.

Result:
The position is set.

Supported by


Set audio stream direction

Set audio stream direction:

deviceController->common->sendAudioControllerReadyForStreaming(deviceController->common, (uint8_t)ready);
deviceController->common->sendAudioControllerReadyForStreaming(deviceController->common, (uint8_t)ready);
deviceController.getFeatureCommon().sendAudioControllerReadyForStreaming((byte)ready);

Set audio stream direction.

Result:
The audio stream direction is set.
Then, event AudioStreamDirection is triggered.

Supported by


Set LEDs intensity

Set LEDs intensity:

deviceController->common->sendHeadlightsIntensity(deviceController->common, (uint8_t)left, (uint8_t)right);
deviceController->common->sendHeadlightsIntensity(deviceController->common, (uint8_t)left, (uint8_t)right);
deviceController.getFeatureCommon().sendHeadlightsIntensity((byte)left, (byte)right);

Set lighting LEDs intensity.

Result:
The intensity of the LEDs is changed.
Then, event LedIntensity is triggered.

Supported by


Start an animation

Start an animation:

deviceController->common->sendAnimationsStartAnimation(deviceController->common, (eARCOMMANDS_COMMON_ANIMATIONS_STARTANIMATION_ANIM)anim);
deviceController->common->sendAnimationsStartAnimation(deviceController->common, (eARCOMMANDS_COMMON_ANIMATIONS_STARTANIMATION_ANIM)anim);
deviceController.getFeatureCommon().sendAnimationsStartAnimation((ARCOMMANDS_COMMON_ANIMATIONS_STARTANIMATION_ANIM_ENUM)anim);

Start a paramaterless animation.
List of available animations can be retrieved from AnimationsStateList.

Result:
If possible, the product starts the requested animation. Then, event AnimationsStateList is triggered.

Supported by


Stop an animation

Stop an animation:

deviceController->common->sendAnimationsStopAnimation(deviceController->common, (eARCOMMANDS_COMMON_ANIMATIONS_STOPANIMATION_ANIM)anim);
deviceController->common->sendAnimationsStopAnimation(deviceController->common, (eARCOMMANDS_COMMON_ANIMATIONS_STOPANIMATION_ANIM)anim);
deviceController.getFeatureCommon().sendAnimationsStopAnimation((ARCOMMANDS_COMMON_ANIMATIONS_STOPANIMATION_ANIM_ENUM)anim);

Stop a paramaterless animation.
List of running animations can be retrieved from AnimationsStateList.

Result:
If the requested animation was running, it will be stopped.
Then, event AnimationsStateList is triggered.

Supported by


Stop all animations

Stop all animations:

deviceController->common->sendAnimationsStopAllAnimations(deviceController->common);
deviceController->common->sendAnimationsStopAllAnimations(deviceController->common);
deviceController.getFeatureCommon().sendAnimationsStopAllAnimations();

Stop all running paramaterless animations.
List of running animations can be retrieved from AnimationsStateList.

Result:
All running animations are stopped.
Then, event AnimationsStateList is triggered.

Supported by


Declare an accessory

Declare an accessory:

deviceController->common->sendAccessoryConfig(deviceController->common, (eARCOMMANDS_COMMON_ACCESSORY_CONFIG_ACCESSORY)accessory);
deviceController->common->sendAccessoryConfig(deviceController->common, (eARCOMMANDS_COMMON_ACCESSORY_CONFIG_ACCESSORY)accessory);
deviceController.getFeatureCommon().sendAccessoryConfig((ARCOMMANDS_COMMON_ACCESSORY_CONFIG_ACCESSORY_ENUM)accessory);

Declare an accessory.
You can choose the accessory between all accessible for this product.
You can get this list through event SupportedAccessories.

You can only set the accessory when the modification is enabled.
You can know if it possible with the event AccessoryDeclarationAvailability.

Result:
The product knows which accessory it is wearing.
Then, event AccessoryConfigChanged is triggered.

Supported by


Set max charge rate (deprecated)

Set max charge rate (deprecated):

deviceController->common->sendChargerSetMaxChargeRate(deviceController->common, (eARCOMMANDS_COMMON_CHARGER_SETMAXCHARGERATE_RATE)rate);
deviceController->common->sendChargerSetMaxChargeRate(deviceController->common, (eARCOMMANDS_COMMON_CHARGER_SETMAXCHARGERATE_RATE)rate);
deviceController.getFeatureCommon().sendChargerSetMaxChargeRate((ARCOMMANDS_COMMON_CHARGER_SETMAXCHARGERATE_RATE_ENUM)rate);

This message is deprecated.

The product will inform itself the controller about its charging type (see ChargingInfoChanged).

Result:
None.

Supported by


Reset the product to its factory settings

Reset the product to its factory settings:

deviceController->common->sendFactoryReset(deviceController->common);
deviceController->common->sendFactoryReset(deviceController->common);
deviceController.getFeatureCommon().sendFactoryReset();

This command will request a factory reset from the prodcut. The factory reset procedure implies an automatic reboot, which will be done immediately after recieving 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.

Controller gps info

Controller gps info:

deviceController->controller_info->sendGps(deviceController->controller_info, (double)latitude, (double)longitude, (float)altitude, (float)horizontal_accuracy, (float)vertical_accuracy, (float)north_speed, (float)east_speed, (float)down_speed, (double)timestamp);
deviceController->controller_info->sendGps(deviceController->controller_info, (double)latitude, (double)longitude, (float)altitude, (float)horizontal_accuracy, (float)vertical_accuracy, (float)north_speed, (float)east_speed, (float)down_speed, (double)timestamp);
deviceController.getFeatureControllerInfo().sendGps((double)latitude, (double)longitude, (float)altitude, (float)horizontal_accuracy, (float)vertical_accuracy, (float)north_speed, (float)east_speed, (float)down_speed, (double)timestamp);

Controller gps info.
This command is not acknowledged by the drone.

Result:
The position of the controller is known by the drone.
It can be used for RTH or FollowMe.

Controller barometer info

Controller barometer info:

deviceController->controller_info->sendBarometer(deviceController->controller_info, (float)pressure, (double)timestamp);
deviceController->controller_info->sendBarometer(deviceController->controller_info, (float)pressure, (double)timestamp);
deviceController.getFeatureControllerInfo().sendBarometer((float)pressure, (double)timestamp);


Result:
The altitude of the controller is known by the drone.
This command is not acknowledged by the drone.

Cmd sent by controller to get all settings info (generate “settings_info” events).

Cmd sent by controller to get all settings info (generate “settings_info” events).:

deviceController->debug->sendGetAllSettings(deviceController->debug);
deviceController->debug->sendGetAllSettings(deviceController->debug);
deviceController.getFeatureDebug().sendGetAllSettings();

Cmd sent by controller to get all settings info (generate “settings_info” events).


Change setting value.

Change setting value.:

deviceController->debug->sendSetSetting(deviceController->debug, (uint16_t)id, (char *)value);
deviceController->debug->sendSetSetting(deviceController->debug, (uint16_t)id, (char *)value);
deviceController.getFeatureDebug().sendSetSetting((short)id, (String)value);

Change setting value.
Cmd sent by controller to change a writable setting.

Request the drone list

Request the drone list:

deviceController->drone_manager->sendDiscoverDrones(deviceController->drone_manager);
deviceController->drone_manager->sendDiscoverDrones(deviceController->drone_manager);
deviceController.getFeatureDroneManager().sendDiscoverDrones();

The list will contain:
* known drones not currently visible. * known drones currently visible. * unknown drones currently visible.

Result:
The drone manager will answer with a list of drone_list_item

Supported by


Connect to a drone

Connect to a drone:

deviceController->drone_manager->sendConnect(deviceController->drone_manager, (char *)serial, (char *)key);
deviceController->drone_manager->sendConnect(deviceController->drone_manager, (char *)serial, (char *)key);
deviceController.getFeatureDroneManager().sendConnect((String)serial, (String)key);

Request connection to a specific drone. Override the auto-selected drone.

Result:
The drone manager will send an update of its connection_state, if relevant

Supported by


Forget a drone

Forget a drone:

deviceController->drone_manager->sendForget(deviceController->drone_manager, (char *)serial);
deviceController->drone_manager->sendForget(deviceController->drone_manager, (char *)serial);
deviceController.getFeatureDroneManager().sendForget((String)serial);

Forget the given drone. If the drone is the selected one, the auto-selection will run again.

Result:
If the drone was the active one, a new one will be autoselected, and connection_state update will be sent as needed. Otherwise, no answer will be sent from the drone manager

Supported by


Start followMe mode

Start followMe mode:

deviceController->follow_me->sendStart(deviceController->follow_me, (eARCOMMANDS_FOLLOW_ME_MODE)mode);
deviceController->follow_me->sendStart(deviceController->follow_me, (eARCOMMANDS_FOLLOW_ME_MODE)mode);
deviceController.getFeatureFollowMe().sendStart((ARCOMMANDS_FOLLOW_ME_MODE_ENUM)mode);

Start a FollowMe with all its params set to the default params.
Sending this command will stop other running followMe.

Result:
Event state is triggered.
Also triggers the event that informs about the current
configuration (if there is one) like event
Geographic configuration or Relative configuration

Stop current followMe

Stop current followMe:

deviceController->follow_me->sendStop(deviceController->follow_me);
deviceController->follow_me->sendStop(deviceController->follow_me);
deviceController.getFeatureFollowMe().sendStop();

Begin or stop geographic type followMe (follow the leader keeping the same vector).
Sending this command will stop other running followMe.

Result:
Event state is triggered.

Configure the geographic follow me

Configure the geographic follow me:

deviceController->follow_me->sendConfigureGeographic(deviceController->follow_me, (uint8_t)use_default, (float)distance, (float)elevation, (float)azimuth);
deviceController->follow_me->sendConfigureGeographic(deviceController->follow_me, (uint8_t)use_default, (float)distance, (float)elevation, (float)azimuth);
deviceController.getFeatureFollowMe().sendConfigureGeographic((byte)use_default, (float)distance, (float)elevation, (float)azimuth);

Configure the geographic FollowMe.
This should only be taken in account if arg behavior in state is equal to Follow.

Result:
Event Geographic config is sent and drone will move to respect the configuration.

Configure the relative follow me

Configure the relative follow me:

deviceController->follow_me->sendConfigureRelative(deviceController->follow_me, (uint8_t)use_default, (float)distance, (float)elevation, (float)azimuth);
deviceController->follow_me->sendConfigureRelative(deviceController->follow_me, (uint8_t)use_default, (float)distance, (float)elevation, (float)azimuth);
deviceController.getFeatureFollowMe().sendConfigureRelative((byte)use_default, (float)distance, (float)elevation, (float)azimuth);

Configure the relative FollowMe.
This should only be taken in account if arg behavior in state is equal to Follow

Result:
Event Relative config is sent and drone will move to respect the configuration.

Stop current followMe animation

Stop current followMe animation:

deviceController->follow_me->sendStopAnimation(deviceController->follow_me);
deviceController->follow_me->sendStopAnimation(deviceController->follow_me);
deviceController.getFeatureFollowMe().sendStopAnimation();

Stop current followMe animation

Result:
FollowMe animation will stop. Event state is triggered.

Start a helicoid animation

Start a helicoid animation:

deviceController->follow_me->sendStartHelicoidAnim(deviceController->follow_me, (uint8_t)use_default, (float)speed, (float)revolution_number, (float)vertical_distance);
deviceController->follow_me->sendStartHelicoidAnim(deviceController->follow_me, (uint8_t)use_default, (float)speed, (float)revolution_number, (float)vertical_distance);
deviceController.getFeatureFollowMe().sendStartHelicoidAnim((byte)use_default, (float)speed, (float)revolution_number, (float)vertical_distance);

Start a helicoid animation.
The helicoid animation allows the drone to revolve around the target while going up, with a fixed radius.

Result:
Animation is started and event state is triggered.

Start a swing animation

Start a swing animation:

deviceController->follow_me->sendStartSwingAnim(deviceController->follow_me, (uint8_t)use_default, (float)speed, (float)vertical_distance);
deviceController->follow_me->sendStartSwingAnim(deviceController->follow_me, (uint8_t)use_default, (float)speed, (float)vertical_distance);
deviceController.getFeatureFollowMe().sendStartSwingAnim((byte)use_default, (float)speed, (float)vertical_distance);

Start a swing animation.
The swing animation enables a vertical point of view while the drone passes over the target.

Result:
Animation is started and event state is triggered.

Start a boomerang animation

Start a boomerang animation:

deviceController->follow_me->sendStartBoomerangAnim(deviceController->follow_me, (uint8_t)use_default, (float)speed, (float)distance);
deviceController->follow_me->sendStartBoomerangAnim(deviceController->follow_me, (uint8_t)use_default, (float)speed, (float)distance);
deviceController.getFeatureFollowMe().sendStartBoomerangAnim((byte)use_default, (float)speed, (float)distance);

Start a boomerang animation.
The boomerang animation enables a zoom-out/zoom-in trajectory while preserving the framing chosen by the user.

Result:
Animation is started and event state is triggered.

Start a candle animation

Start a candle animation:

deviceController->follow_me->sendStartCandleAnim(deviceController->follow_me, (uint8_t)use_default, (float)speed, (float)vertical_distance);
deviceController->follow_me->sendStartCandleAnim(deviceController->follow_me, (uint8_t)use_default, (float)speed, (float)vertical_distance);
deviceController.getFeatureFollowMe().sendStartCandleAnim((byte)use_default, (float)speed, (float)vertical_distance);

Start a candle animation.
The candle animation enables a zoom-in directly on the target followed by a vertical zoom-out.

Result:
Animation is started and event state is triggered.

Start a dolly slide animation

Start a dolly slide animation:

deviceController->follow_me->sendStartDollySlideAnim(deviceController->follow_me, (uint8_t)use_default, (float)speed, (float)angle, (float)horizontal_distance);
deviceController->follow_me->sendStartDollySlideAnim(deviceController->follow_me, (uint8_t)use_default, (float)speed, (float)angle, (float)horizontal_distance);
deviceController.getFeatureFollowMe().sendStartDollySlideAnim((byte)use_default, (float)speed, (float)angle, (float)horizontal_distance);

Start a dolly slide animation.
Allows the drone to catch up to the target before flying past it, creating a zoom-in/zoom_out effect without a curved path.

Result:
Animation is started and event state is triggered.

Target desired framing in the video

Target desired framing in the video:

deviceController->follow_me->sendTargetFramingPosition(deviceController->follow_me, (int8_t)horizontal, (int8_t)vertical);
deviceController->follow_me->sendTargetFramingPosition(deviceController->follow_me, (int8_t)horizontal, (int8_t)vertical);
deviceController.getFeatureFollowMe().sendTargetFramingPosition((byte)horizontal, (byte)vertical);

Target desired framing in the video.

Result:
Event target framing position is triggered.

Send vision detection results

Send vision detection results:

deviceController->follow_me->sendTargetImageDetection(deviceController->follow_me, (float)target_azimuth, (float)target_elevation, (float)change_of_scale, (uint8_t)confidence_index, (uint8_t)is_new_selection, (uint64_t)timestamp);
deviceController->follow_me->sendTargetImageDetection(deviceController->follow_me, (float)target_azimuth, (float)target_elevation, (float)change_of_scale, (uint8_t)confidence_index, (uint8_t)is_new_selection, (uint64_t)timestamp);
deviceController.getFeatureFollowMe().sendTargetImageDetection((float)target_azimuth, (float)target_elevation, (float)change_of_scale, (byte)confidence_index, (byte)is_new_selection, (long)timestamp);

Send vision detection results.

Result:
If drone is in FollowMe, is will look at the target according to
the chosen framing position.

Ask the JS speed and turn ratio.

Ask the JS speed and turn ratio.:

deviceController->jumpingSumo->sendPilotingPCMD(deviceController->jumpingSumo, (uint8_t)flag, (int8_t)speed, (int8_t)turn);
deviceController->jumpingSumo->sendPilotingPCMD(deviceController->jumpingSumo, (uint8_t)flag, (int8_t)speed, (int8_t)turn);
deviceController.getFeatureJumpingSumo().sendPilotingPCMD((byte)flag, (byte)speed, (byte)turn);

Ask the JS speed and turn ratio.

Request a posture

Request a posture:

deviceController->jumpingSumo->sendPilotingPosture(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_PILOTING_POSTURE_TYPE)type);
deviceController->jumpingSumo->sendPilotingPosture(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_PILOTING_POSTURE_TYPE)type);
deviceController.getFeatureJumpingSumo().sendPilotingPosture((ARCOMMANDS_JUMPINGSUMO_PILOTING_POSTURE_TYPE_ENUM)type);

Request a posture

Add the specified offset to the current cap.

Add the specified offset to the current cap.:

deviceController->jumpingSumo->sendPilotingAddCapOffset(deviceController->jumpingSumo, (float)offset);
deviceController->jumpingSumo->sendPilotingAddCapOffset(deviceController->jumpingSumo, (float)offset);
deviceController.getFeatureJumpingSumo().sendPilotingAddCapOffset((float)offset);

Add the specified offset to the current cap.

Stop jump, emergency jump stop, stop jump motor and stay there.

Stop jump, emergency jump stop, stop jump motor and stay there.:

deviceController->jumpingSumo->sendAnimationsJumpStop(deviceController->jumpingSumo);
deviceController->jumpingSumo->sendAnimationsJumpStop(deviceController->jumpingSumo);
deviceController.getFeatureJumpingSumo().sendAnimationsJumpStop();

Stop jump, emergency jump stop, stop jump motor and stay there.


Cancel jump and come back to previous state (if possible).

Cancel jump and come back to previous state (if possible).:

deviceController->jumpingSumo->sendAnimationsJumpCancel(deviceController->jumpingSumo);
deviceController->jumpingSumo->sendAnimationsJumpCancel(deviceController->jumpingSumo);
deviceController.getFeatureJumpingSumo().sendAnimationsJumpCancel();

Cancel jump and come back to previous state (if possible).


Request jump loading

Request jump loading:

deviceController->jumpingSumo->sendAnimationsJumpLoad(deviceController->jumpingSumo);
deviceController->jumpingSumo->sendAnimationsJumpLoad(deviceController->jumpingSumo);
deviceController.getFeatureJumpingSumo().sendAnimationsJumpLoad();

Request jump loading


Request a jump

Request a jump:

deviceController->jumpingSumo->sendAnimationsJump(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_ANIMATIONS_JUMP_TYPE)type);
deviceController->jumpingSumo->sendAnimationsJump(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_ANIMATIONS_JUMP_TYPE)type);
deviceController.getFeatureJumpingSumo().sendAnimationsJump((ARCOMMANDS_JUMPINGSUMO_ANIMATIONS_JUMP_TYPE_ENUM)type);

Request a jump

Play a parameterless animation.

Play a parameterless animation.:

deviceController->jumpingSumo->sendAnimationsSimpleAnimation(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_ANIMATIONS_SIMPLEANIMATION_ID)id);
deviceController->jumpingSumo->sendAnimationsSimpleAnimation(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_ANIMATIONS_SIMPLEANIMATION_ID)id);
deviceController.getFeatureJumpingSumo().sendAnimationsSimpleAnimation((ARCOMMANDS_JUMPINGSUMO_ANIMATIONS_SIMPLEANIMATION_ID_ENUM)id);

Play a parameterless animation.

@deprecated

@deprecated:

deviceController->jumpingSumo->sendMediaRecordPicture(deviceController->jumpingSumo, (uint8_t)mass_storage_id);
deviceController->jumpingSumo->sendMediaRecordPicture(deviceController->jumpingSumo, (uint8_t)mass_storage_id);
deviceController.getFeatureJumpingSumo().sendMediaRecordPicture((byte)mass_storage_id);

@deprecated
Take picture

@deprecated

@deprecated:

deviceController->jumpingSumo->sendMediaRecordVideo(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_MEDIARECORD_VIDEO_RECORD)record, (uint8_t)mass_storage_id);
deviceController->jumpingSumo->sendMediaRecordVideo(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_MEDIARECORD_VIDEO_RECORD)record, (uint8_t)mass_storage_id);
deviceController.getFeatureJumpingSumo().sendMediaRecordVideo((ARCOMMANDS_JUMPINGSUMO_MEDIARECORD_VIDEO_RECORD_ENUM)record, (byte)mass_storage_id);

@deprecated
Video record

Take picture

Take picture:

deviceController->jumpingSumo->sendMediaRecordPictureV2(deviceController->jumpingSumo);
deviceController->jumpingSumo->sendMediaRecordPictureV2(deviceController->jumpingSumo);
deviceController.getFeatureJumpingSumo().sendMediaRecordPictureV2();

Take picture


Video record

Video record:

deviceController->jumpingSumo->sendMediaRecordVideoV2(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_MEDIARECORD_VIDEOV2_RECORD)record);
deviceController->jumpingSumo->sendMediaRecordVideoV2(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_MEDIARECORD_VIDEOV2_RECORD)record);
deviceController.getFeatureJumpingSumo().sendMediaRecordVideoV2((ARCOMMANDS_JUMPINGSUMO_MEDIARECORD_VIDEOV2_RECORD_ENUM)record);

Video record

Auto-select channel of choosen band

Auto-select channel of choosen band:

deviceController->jumpingSumo->sendNetworkSettingsWifiSelection(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_NETWORKSETTINGS_WIFISELECTION_TYPE)type, (eARCOMMANDS_JUMPINGSUMO_NETWORKSETTINGS_WIFISELECTION_BAND)band, (uint8_t)channel);
deviceController->jumpingSumo->sendNetworkSettingsWifiSelection(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_NETWORKSETTINGS_WIFISELECTION_TYPE)type, (eARCOMMANDS_JUMPINGSUMO_NETWORKSETTINGS_WIFISELECTION_BAND)band, (uint8_t)channel);
deviceController.getFeatureJumpingSumo().sendNetworkSettingsWifiSelection((ARCOMMANDS_JUMPINGSUMO_NETWORKSETTINGS_WIFISELECTION_TYPE_ENUM)type, (ARCOMMANDS_JUMPINGSUMO_NETWORKSETTINGS_WIFISELECTION_BAND_ENUM)band, (byte)channel);

Auto-select channel of choosen band

Launches wifi network scan

Launches wifi network scan:

deviceController->jumpingSumo->sendNetworkWifiScan(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_NETWORK_WIFISCAN_BAND)band);
deviceController->jumpingSumo->sendNetworkWifiScan(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_NETWORK_WIFISCAN_BAND)band);
deviceController.getFeatureJumpingSumo().sendNetworkWifiScan((ARCOMMANDS_JUMPINGSUMO_NETWORK_WIFISCAN_BAND_ENUM)band);

Launches wifi network scan

Controller inquire the list of authorized wifi channels.

Controller inquire the list of authorized wifi channels.:

deviceController->jumpingSumo->sendNetworkWifiAuthChannel(deviceController->jumpingSumo);
deviceController->jumpingSumo->sendNetworkWifiAuthChannel(deviceController->jumpingSumo);
deviceController.getFeatureJumpingSumo().sendNetworkWifiAuthChannel();

Controller inquire the list of authorized wifi channels.


Master volume control.

Master volume control.:

deviceController->jumpingSumo->sendAudioSettingsMasterVolume(deviceController->jumpingSumo, (uint8_t)volume);
deviceController->jumpingSumo->sendAudioSettingsMasterVolume(deviceController->jumpingSumo, (uint8_t)volume);
deviceController.getFeatureJumpingSumo().sendAudioSettingsMasterVolume((byte)volume);

Master volume control.

Audio Theme.

Audio Theme.:

deviceController->jumpingSumo->sendAudioSettingsTheme(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_AUDIOSETTINGS_THEME_THEME)theme);
deviceController->jumpingSumo->sendAudioSettingsTheme(deviceController->jumpingSumo, (eARCOMMANDS_JUMPINGSUMO_AUDIOSETTINGS_THEME_THEME)theme);
deviceController.getFeatureJumpingSumo().sendAudioSettingsTheme((ARCOMMANDS_JUMPINGSUMO_AUDIOSETTINGS_THEME_THEME_ENUM)theme);

Audio Theme.

Command to ask device all metadata scripts.

Command to ask device all metadata scripts.:

deviceController->jumpingSumo->sendRoadPlanAllScriptsMetadata(deviceController->jumpingSumo);
deviceController->jumpingSumo->sendRoadPlanAllScriptsMetadata(deviceController->jumpingSumo);
deviceController.getFeatureJumpingSumo().sendRoadPlanAllScriptsMetadata();

Command to ask device all metadata scripts.


Notify device that a new file has been uploaded.

Notify device that a new file has been uploaded.:

deviceController->jumpingSumo->sendRoadPlanScriptUploaded(deviceController->jumpingSumo, (char *)uuid, (char *)md5Hash);
deviceController->jumpingSumo->sendRoadPlanScriptUploaded(deviceController->jumpingSumo, (char *)uuid, (char *)md5Hash);
deviceController.getFeatureJumpingSumo().sendRoadPlanScriptUploaded((String)uuid, (String)md5Hash);

Notify device that a new file has been uploaded.

Ask the device to delete a script.

Ask the device to delete a script.:

deviceController->jumpingSumo->sendRoadPlanScriptDelete(deviceController->jumpingSumo, (char *)uuid);
deviceController->jumpingSumo->sendRoadPlanScriptDelete(deviceController->jumpingSumo, (char *)uuid);
deviceController.getFeatureJumpingSumo().sendRoadPlanScriptDelete((String)uuid);

Ask the device to delete a script.

Ask the device to play a script.

Ask the device to play a script.:

deviceController->jumpingSumo->sendRoadPlanPlayScript(deviceController->jumpingSumo, (char *)uuid);
deviceController->jumpingSumo->sendRoadPlanPlayScript(deviceController->jumpingSumo, (char *)uuid);
deviceController.getFeatureJumpingSumo().sendRoadPlanPlayScript((String)uuid);

Ask the device to play a script.

@deprecated

@deprecated:

deviceController->jumpingSumo->sendSpeedSettingsOutdoor(deviceController->jumpingSumo, (uint8_t)outdoor);
deviceController->jumpingSumo->sendSpeedSettingsOutdoor(deviceController->jumpingSumo, (uint8_t)outdoor);
deviceController.getFeatureJumpingSumo().sendSpeedSettingsOutdoor((byte)outdoor);

@deprecated
Outdoor property

Enable/disable video streaming.

Enable/disable video streaming.:

deviceController->jumpingSumo->sendMediaStreamingVideoEnable(deviceController->jumpingSumo, (uint8_t)enable);
deviceController->jumpingSumo->sendMediaStreamingVideoEnable(deviceController->jumpingSumo, (uint8_t)enable);
deviceController.getFeatureJumpingSumo().sendMediaStreamingVideoEnable((byte)enable);

Enable/disable video streaming.

Set video automatic recording state.

Set video automatic recording state.:

deviceController->jumpingSumo->sendVideoSettingsAutorecord(deviceController->jumpingSumo, (uint8_t)enabled);
deviceController->jumpingSumo->sendVideoSettingsAutorecord(deviceController->jumpingSumo, (uint8_t)enabled);
deviceController.getFeatureJumpingSumo().sendVideoSettingsAutorecord((byte)enabled);

Set video automatic recording state.

Grab (or ungrab) controls

Grab (or ungrab) controls:

deviceController->mapper->sendGrab(deviceController->mapper, (uint32_t)buttons, (uint32_t)axes);
deviceController->mapper->sendGrab(deviceController->mapper, (uint32_t)buttons, (uint32_t)axes);
deviceController.getFeatureMapper().sendGrab((int)buttons, (int)axes);

Grabbed buttons are sent to the app and are not handled by the mapper

Result:
The mapper will send a grab_state command

Supported by


Map a button action on one or more buttons

Map a button action on one or more buttons:

deviceController->mapper->sendMapButtonAction(deviceController->mapper, (uint16_t)product, (eARCOMMANDS_MAPPER_BUTTON_ACTION)action, (uint32_t)buttons);
deviceController->mapper->sendMapButtonAction(deviceController->mapper, (uint16_t)product, (eARCOMMANDS_MAPPER_BUTTON_ACTION)action, (uint32_t)buttons);
deviceController.getFeatureMapper().sendMapButtonAction((short)product, (ARCOMMANDS_MAPPER_BUTTON_ACTION_ENUM)action, (int)buttons);

An action can only be mapped to one button set.
Each action can be mapped to different buttons for different products.

Result:
The mapper will send button_mapping_item and axis_mapping_item according to the request.

Supported by


Map an axis action to one axis and zero or more buttons

Map an axis action to one axis and zero or more buttons:

deviceController->mapper->sendMapAxisAction(deviceController->mapper, (uint16_t)product, (eARCOMMANDS_MAPPER_AXIS_ACTION)action, (int32_t)axis, (uint32_t)buttons);
deviceController->mapper->sendMapAxisAction(deviceController->mapper, (uint16_t)product, (eARCOMMANDS_MAPPER_AXIS_ACTION)action, (int32_t)axis, (uint32_t)buttons);
deviceController.getFeatureMapper().sendMapAxisAction((short)product, (ARCOMMANDS_MAPPER_AXIS_ACTION_ENUM)action, (int)axis, (int)buttons);

An action can only be mapped to one axis/button set.
Each action can be mapped to different axes/buttons for different products.

Result:
The mapper will send button_mapping_item and axis_mapping_item according to the request.

Supported by


Reset mapping to default values

Reset mapping to default values:

deviceController->mapper->sendResetMapping(deviceController->mapper, (uint16_t)product);
deviceController->mapper->sendResetMapping(deviceController->mapper, (uint16_t)product);
deviceController.getFeatureMapper().sendResetMapping((short)product);

Resets the mappings, axis exponential parameters, and axis inversion for the given product.
If the product is given as 0 (zero), the all products are reset.

Result:
The mapper will send button_mapping_item, axis_mapping_item, expo_map_item and inverted_map_item according to the request.

Supported by


Set exponential type for the given axis, for the given product

Set exponential type for the given axis, for the given product:

deviceController->mapper->sendSetExpo(deviceController->mapper, (uint16_t)product, (int32_t)axis, (eARCOMMANDS_MAPPER_EXPO_TYPE)expo);
deviceController->mapper->sendSetExpo(deviceController->mapper, (uint16_t)product, (int32_t)axis, (eARCOMMANDS_MAPPER_EXPO_TYPE)expo);
deviceController.getFeatureMapper().sendSetExpo((short)product, (int)axis, (ARCOMMANDS_MAPPER_EXPO_TYPE_ENUM)expo);

By default, each axis can have a different expo value.
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.

Result:
The mapper will send expo_map_item

Supported by


Set/unset inverted state for a physical axis

Set/unset inverted state for a physical axis:

deviceController->mapper->sendSetInverted(deviceController->mapper, (uint16_t)product, (int32_t)axis, (uint8_t)inverted);
deviceController->mapper->sendSetInverted(deviceController->mapper, (uint16_t)product, (int32_t)axis, (uint8_t)inverted);
deviceController.getFeatureMapper().sendSetInverted((short)product, (int)axis, (byte)inverted);

Axis inversion has no effect on grabbed axes, nor on virtual buttons that might be generated from axes.

Result:
The mapper will send inverted_map_item

Supported by


Map a button action on one or more buttons

Map a button action on one or more buttons:

deviceController->mapper_mini->sendMapButtonAction(deviceController->mapper_mini, (uint8_t)modes, (eARCOMMANDS_MAPPER_MINI_BUTTON_ACTION)action, (uint32_t)buttons);
deviceController->mapper_mini->sendMapButtonAction(deviceController->mapper_mini, (uint8_t)modes, (eARCOMMANDS_MAPPER_MINI_BUTTON_ACTION)action, (uint32_t)buttons);
deviceController.getFeatureMapperMini().sendMapButtonAction((byte)modes, (ARCOMMANDS_MAPPER_MINI_BUTTON_ACTION_ENUM)action, (int)buttons);

An action can only be mapped to one button set.
Each action can be mapped to different buttons for different modes.

Result:
The drone will send button_mapping_item and axis_mapping_item according to the request.

Supported by


Map an axis action to one axis and zero or more buttons

Map an axis action to one axis and zero or more buttons:

deviceController->mapper_mini->sendMapAxisAction(deviceController->mapper_mini, (uint8_t)modes, (eARCOMMANDS_MAPPER_MINI_AXIS_ACTION)action, (int8_t)axis, (uint32_t)buttons);
deviceController->mapper_mini->sendMapAxisAction(deviceController->mapper_mini, (uint8_t)modes, (eARCOMMANDS_MAPPER_MINI_AXIS_ACTION)action, (int8_t)axis, (uint32_t)buttons);
deviceController.getFeatureMapperMini().sendMapAxisAction((byte)modes, (ARCOMMANDS_MAPPER_MINI_AXIS_ACTION_ENUM)action, (byte)axis, (int)buttons);

An action can only be mapped to one axis/button set.
Each action can be mapped to different axes/buttons for different modes.

Result:
The drone will send button_mapping_item and axis_mapping_item according to the request.

Supported by


Reset mapping to default values

Reset mapping to default values:

deviceController->mapper_mini->sendResetMapping(deviceController->mapper_mini, (uint8_t)modes);
deviceController->mapper_mini->sendResetMapping(deviceController->mapper_mini, (uint8_t)modes);
deviceController.getFeatureMapperMini().sendResetMapping((byte)modes);

Resets the mappings for the given mode(s) to their default value.

Result:
The drone will send button_mapping_item and axis_mapping_item according to the request.

Supported by


Do a flat trim

Do a flat trim:

deviceController->miniDrone->sendPilotingFlatTrim(deviceController->miniDrone);
deviceController->miniDrone->sendPilotingFlatTrim(deviceController->miniDrone);
deviceController.getFeatureMiniDrone().sendPilotingFlatTrim();

Do a flat trim


Ask the drone to take off

Ask the drone to take off:

deviceController->miniDrone->sendPilotingTakeOff(deviceController->miniDrone);
deviceController->miniDrone->sendPilotingTakeOff(deviceController->miniDrone);
deviceController.getFeatureMiniDrone().sendPilotingTakeOff();

Ask the drone to take off


Ask the drone to move around.

Ask the drone to move around.:

deviceController->miniDrone->sendPilotingPCMD(deviceController->miniDrone, (uint8_t)flag, (int8_t)roll, (int8_t)pitch, (int8_t)yaw, (int8_t)gaz, (uint32_t)timestamp);
deviceController->miniDrone->sendPilotingPCMD(deviceController->miniDrone, (uint8_t)flag, (int8_t)roll, (int8_t)pitch, (int8_t)yaw, (int8_t)gaz, (uint32_t)timestamp);
deviceController.getFeatureMiniDrone().sendPilotingPCMD((byte)flag, (byte)roll, (byte)pitch, (byte)yaw, (byte)gaz, (int)timestamp);

Ask the drone to move around.

Ask the MiniDrone to land

Ask the MiniDrone to land:

deviceController->miniDrone->sendPilotingLanding(deviceController->miniDrone);
deviceController->miniDrone->sendPilotingLanding(deviceController->miniDrone);
deviceController.getFeatureMiniDrone().sendPilotingLanding();

Ask the MiniDrone to land


Put drone in emergency state

Put drone in emergency state:

deviceController->miniDrone->sendPilotingEmergency(deviceController->miniDrone);
deviceController->miniDrone->sendPilotingEmergency(deviceController->miniDrone);
deviceController.getFeatureMiniDrone().sendPilotingEmergency();

Put drone in emergency state


Set MiniDrone automatic take off mode

Set MiniDrone automatic take off mode:

deviceController->miniDrone->sendPilotingAutoTakeOffMode(deviceController->miniDrone, (uint8_t)state);
deviceController->miniDrone->sendPilotingAutoTakeOffMode(deviceController->miniDrone, (uint8_t)state);
deviceController.getFeatureMiniDrone().sendPilotingAutoTakeOffMode((byte)state);

Set MiniDrone automatic take off mode

Set drone FlyingMode. Only supported by WingX

Set drone FlyingMode. Only supported by WingX:

deviceController->miniDrone->sendPilotingFlyingMode(deviceController->miniDrone, (eARCOMMANDS_MINIDRONE_PILOTING_FLYINGMODE_MODE)mode);
deviceController->miniDrone->sendPilotingFlyingMode(deviceController->miniDrone, (eARCOMMANDS_MINIDRONE_PILOTING_FLYINGMODE_MODE)mode);
deviceController.getFeatureMiniDrone().sendPilotingFlyingMode((ARCOMMANDS_MINIDRONE_PILOTING_FLYINGMODE_MODE_ENUM)mode);

Set drone FlyingMode. Only supported by WingX

Set Plane Gear Box. Only supported by WingX

Set Plane Gear Box. Only supported by WingX:

deviceController->miniDrone->sendPilotingPlaneGearBox(deviceController->miniDrone, (eARCOMMANDS_MINIDRONE_PILOTING_PLANEGEARBOX_STATE)state);
deviceController->miniDrone->sendPilotingPlaneGearBox(deviceController->miniDrone, (eARCOMMANDS_MINIDRONE_PILOTING_PLANEGEARBOX_STATE)state);
deviceController.getFeatureMiniDrone().sendPilotingPlaneGearBox((ARCOMMANDS_MINIDRONE_PILOTING_PLANEGEARBOX_STATE_ENUM)state);

Set Plane Gear Box. Only supported by WingX

Make a flip

Make a flip:

deviceController->miniDrone->sendAnimationsFlip(deviceController->miniDrone, (eARCOMMANDS_MINIDRONE_ANIMATIONS_FLIP_DIRECTION)direction);
deviceController->miniDrone->sendAnimationsFlip(deviceController->miniDrone, (eARCOMMANDS_MINIDRONE_ANIMATIONS_FLIP_DIRECTION)direction);
deviceController.getFeatureMiniDrone().sendAnimationsFlip((ARCOMMANDS_MINIDRONE_ANIMATIONS_FLIP_DIRECTION_ENUM)direction);

Make a flip

Change the product cap

Change the product cap:

deviceController->miniDrone->sendAnimationsCap(deviceController->miniDrone, (int16_t)offset);
deviceController->miniDrone->sendAnimationsCap(deviceController->miniDrone, (int16_t)offset);
deviceController.getFeatureMiniDrone().sendAnimationsCap((short)offset);

Change the product cap

@deprecated

@deprecated:

deviceController->miniDrone->sendMediaRecordPicture(deviceController->miniDrone, (uint8_t)mass_storage_id);
deviceController->miniDrone->sendMediaRecordPicture(deviceController->miniDrone, (uint8_t)mass_storage_id);
deviceController.getFeatureMiniDrone().sendMediaRecordPicture((byte)mass_storage_id);

@deprecated
Take picture

Take picture

Take picture:

deviceController->miniDrone->sendMediaRecordPictureV2(deviceController->miniDrone);
deviceController->miniDrone->sendMediaRecordPictureV2(deviceController->miniDrone);
deviceController.getFeatureMiniDrone().sendMediaRecordPictureV2();

Take picture


Set Max Altitude

Set Max Altitude:

deviceController->miniDrone->sendPilotingSettingsMaxAltitude(deviceController->miniDrone, (float)current);
deviceController->miniDrone->sendPilotingSettingsMaxAltitude(deviceController->miniDrone, (float)current);
deviceController.getFeatureMiniDrone().sendPilotingSettingsMaxAltitude((float)current);

Set Max Altitude

Set Max Tilt

Set Max Tilt:

deviceController->miniDrone->sendPilotingSettingsMaxTilt(deviceController->miniDrone, (float)current);
deviceController->miniDrone->sendPilotingSettingsMaxTilt(deviceController->miniDrone, (float)current);
deviceController.getFeatureMiniDrone().sendPilotingSettingsMaxTilt((float)current);

Set Max Tilt

Set banked turn mode

Set banked turn mode:

deviceController->miniDrone->sendPilotingSettingsBankedTurn(deviceController->miniDrone, (uint8_t)value);
deviceController->miniDrone->sendPilotingSettingsBankedTurn(deviceController->miniDrone, (uint8_t)value);
deviceController.getFeatureMiniDrone().sendPilotingSettingsBankedTurn((byte)value);

Set banked turn mode.
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.

Result:
The banked turn mode is enabled or disabled.
Then, event BankedTurnMode is triggered.

Supported by


Set Max Vertical speed

Set Max Vertical speed:

deviceController->miniDrone->sendSpeedSettingsMaxVerticalSpeed(deviceController->miniDrone, (float)current);
deviceController->miniDrone->sendSpeedSettingsMaxVerticalSpeed(deviceController->miniDrone, (float)current);
deviceController.getFeatureMiniDrone().sendSpeedSettingsMaxVerticalSpeed((float)current);

Set Max Vertical speed

Set Max Rotation speed

Set Max Rotation speed:

deviceController->miniDrone->sendSpeedSettingsMaxRotationSpeed(deviceController->miniDrone, (float)current);
deviceController->miniDrone->sendSpeedSettingsMaxRotationSpeed(deviceController->miniDrone, (float)current);
deviceController.getFeatureMiniDrone().sendSpeedSettingsMaxRotationSpeed((float)current);

Set Max Rotation speed

Presence of wheels

Presence of wheels:

deviceController->miniDrone->sendSpeedSettingsWheels(deviceController->miniDrone, (uint8_t)present);
deviceController->miniDrone->sendSpeedSettingsWheels(deviceController->miniDrone, (uint8_t)present);
deviceController.getFeatureMiniDrone().sendSpeedSettingsWheels((byte)present);

Presence of wheels

Set Max Horizontal speed (only used in case where PilotingSettings_MaxTilt is not used like in hydrofoil mode)

Set Max Horizontal speed (only used in case where PilotingSettings_MaxTilt is not used like in hydrofoil mode):

deviceController->miniDrone->sendSpeedSettingsMaxHorizontalSpeed(deviceController->miniDrone, (float)current);
deviceController->miniDrone->sendSpeedSettingsMaxHorizontalSpeed(deviceController->miniDrone, (float)current);
deviceController.getFeatureMiniDrone().sendSpeedSettingsMaxHorizontalSpeed((float)current);

Set Max Horizontal speed (only used in case where PilotingSettings_MaxTilt is not used like in hydrofoil mode)

Set max plane mode rotation speed (only available for wing x)

Set max plane mode rotation speed (only available for wing x):

deviceController->miniDrone->sendSpeedSettingsMaxPlaneModeRotationSpeed(deviceController->miniDrone, (float)current);
deviceController->miniDrone->sendSpeedSettingsMaxPlaneModeRotationSpeed(deviceController->miniDrone, (float)current);
deviceController.getFeatureMiniDrone().sendSpeedSettingsMaxPlaneModeRotationSpeed((float)current);

Set max plane mode rotation speed (only available for wing x)

Set MiniDrone cut out mode

Set MiniDrone cut out mode:

deviceController->miniDrone->sendSettingsCutOutMode(deviceController->miniDrone, (uint8_t)enable);
deviceController->miniDrone->sendSettingsCutOutMode(deviceController->miniDrone, (uint8_t)enable);
deviceController.getFeatureMiniDrone().sendSettingsCutOutMode((byte)enable);

Set MiniDrone cut out mode

Set the controller latitude for a run.

Set the controller latitude for a run.:

deviceController->miniDrone->sendGPSControllerLatitudeForRun(deviceController->miniDrone, (double)latitude);
deviceController->miniDrone->sendGPSControllerLatitudeForRun(deviceController->miniDrone, (double)latitude);
deviceController.getFeatureMiniDrone().sendGPSControllerLatitudeForRun((double)latitude);

Set the controller latitude for a run.

Set the controller longitude for a run.

Set the controller longitude for a run.:

deviceController->miniDrone->sendGPSControllerLongitudeForRun(deviceController->miniDrone, (double)longitude);
deviceController->miniDrone->sendGPSControllerLongitudeForRun(deviceController->miniDrone, (double)longitude);
deviceController.getFeatureMiniDrone().sendGPSControllerLongitudeForRun((double)longitude);

Set the controller longitude for a run.

Set the controller type.

Set the controller type.:

deviceController->miniDrone->sendConfigurationControllerType(deviceController->miniDrone, (char *)type);
deviceController->miniDrone->sendConfigurationControllerType(deviceController->miniDrone, (char *)type);
deviceController.getFeatureMiniDrone().sendConfigurationControllerType((String)type);

Set the controller type.

Set the controller name.

Set the controller name.:

deviceController->miniDrone->sendConfigurationControllerName(deviceController->miniDrone, (char *)name);
deviceController->miniDrone->sendConfigurationControllerName(deviceController->miniDrone, (char *)name);
deviceController.getFeatureMiniDrone().sendConfigurationControllerName((String)name);

Set the controller name.

USB Light control cmd.

USB Light control cmd.:

deviceController->miniDrone->sendUsbAccessoryLightControl(deviceController->miniDrone, (uint8_t)id, (eARCOMMANDS_MINIDRONE_USBACCESSORY_LIGHTCONTROL_MODE)mode, (uint8_t)intensity);
deviceController->miniDrone->sendUsbAccessoryLightControl(deviceController->miniDrone, (uint8_t)id, (eARCOMMANDS_MINIDRONE_USBACCESSORY_LIGHTCONTROL_MODE)mode, (uint8_t)intensity);
deviceController.getFeatureMiniDrone().sendUsbAccessoryLightControl((byte)id, (ARCOMMANDS_MINIDRONE_USBACCESSORY_LIGHTCONTROL_MODE_ENUM)mode, (byte)intensity);

USB Light control cmd.

USB Claw control cmd.

USB Claw control cmd.:

deviceController->miniDrone->sendUsbAccessoryClawControl(deviceController->miniDrone, (uint8_t)id, (eARCOMMANDS_MINIDRONE_USBACCESSORY_CLAWCONTROL_ACTION)action);
deviceController->miniDrone->sendUsbAccessoryClawControl(deviceController->miniDrone, (uint8_t)id, (eARCOMMANDS_MINIDRONE_USBACCESSORY_CLAWCONTROL_ACTION)action);
deviceController.getFeatureMiniDrone().sendUsbAccessoryClawControl((byte)id, (ARCOMMANDS_MINIDRONE_USBACCESSORY_CLAWCONTROL_ACTION_ENUM)action);

USB Claw control cmd.

USB Gun control cmd.

USB Gun control cmd.:

deviceController->miniDrone->sendUsbAccessoryGunControl(deviceController->miniDrone, (uint8_t)id, (eARCOMMANDS_MINIDRONE_USBACCESSORY_GUNCONTROL_ACTION)action);
deviceController->miniDrone->sendUsbAccessoryGunControl(deviceController->miniDrone, (uint8_t)id, (eARCOMMANDS_MINIDRONE_USBACCESSORY_GUNCONTROL_ACTION)action);
deviceController.getFeatureMiniDrone().sendUsbAccessoryGunControl((byte)id, (ARCOMMANDS_MINIDRONE_USBACCESSORY_GUNCONTROL_ACTION_ENUM)action);

USB Gun control cmd.

Send the address of the remote controller on which the drone should be paired

Send the address of the remote controller on which the drone should be paired:

deviceController->miniDrone->sendRemoteControllerSetPairedRemote(deviceController->miniDrone, (uint16_t)msb_mac, (uint16_t)mid_mac, (uint16_t)lsb_mac);
deviceController->miniDrone->sendRemoteControllerSetPairedRemote(deviceController->miniDrone, (uint16_t)msb_mac, (uint16_t)mid_mac, (uint16_t)lsb_mac);
deviceController.getFeatureMiniDrone().sendRemoteControllerSetPairedRemote((short)msb_mac, (short)mid_mac, (short)lsb_mac);

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.

Ask the Power Up speed and turn ratio.

Ask the Power Up speed and turn ratio.:

deviceController->powerup->sendPilotingPCMD(deviceController->powerup, (uint8_t)flag, (uint8_t)throttle, (int8_t)roll);
deviceController->powerup->sendPilotingPCMD(deviceController->powerup, (uint8_t)flag, (uint8_t)throttle, (int8_t)roll);
deviceController.getFeaturePowerup().sendPilotingPCMD((byte)flag, (byte)throttle, (byte)roll);

Ask the Power Up speed and turn ratio.

Set drone in user take off state

Set drone in user take off state:

deviceController->powerup->sendPilotingUserTakeOff(deviceController->powerup, (uint8_t)state);
deviceController->powerup->sendPilotingUserTakeOff(deviceController->powerup, (uint8_t)state);
deviceController.getFeaturePowerup().sendPilotingUserTakeOff((byte)state);

Set drone in user take off state

Motor mode

Motor mode:

deviceController->powerup->sendPilotingMotorMode(deviceController->powerup, (eARCOMMANDS_POWERUP_PILOTING_MOTORMODE_MODE)mode);
deviceController->powerup->sendPilotingMotorMode(deviceController->powerup, (eARCOMMANDS_POWERUP_PILOTING_MOTORMODE_MODE)mode);
deviceController.getFeaturePowerup().sendPilotingMotorMode((ARCOMMANDS_POWERUP_PILOTING_MOTORMODE_MODE_ENUM)mode);

Motor mode

Set the given setting

Set the given setting:

deviceController->powerup->sendPilotingSettingsSet(deviceController->powerup, (eARCOMMANDS_POWERUP_PILOTINGSETTINGS_SET_SETTING)setting, (float)value);
deviceController->powerup->sendPilotingSettingsSet(deviceController->powerup, (eARCOMMANDS_POWERUP_PILOTINGSETTINGS_SET_SETTING)setting, (float)value);
deviceController.getFeaturePowerup().sendPilotingSettingsSet((ARCOMMANDS_POWERUP_PILOTINGSETTINGS_SET_SETTING_ENUM)setting, (float)value);

Set the given setting

Take picture

Take picture:

deviceController->powerup->sendMediaRecordPictureV2(deviceController->powerup);
deviceController->powerup->sendMediaRecordPictureV2(deviceController->powerup);
deviceController.getFeaturePowerup().sendMediaRecordPictureV2();

Take picture


Video record

Video record:

deviceController->powerup->sendMediaRecordVideoV2(deviceController->powerup, (eARCOMMANDS_POWERUP_MEDIARECORD_VIDEOV2_RECORD)record);
deviceController->powerup->sendMediaRecordVideoV2(deviceController->powerup, (eARCOMMANDS_POWERUP_MEDIARECORD_VIDEOV2_RECORD)record);
deviceController.getFeaturePowerup().sendMediaRecordVideoV2((ARCOMMANDS_POWERUP_MEDIARECORD_VIDEOV2_RECORD_ENUM)record);

Video record

Auto-select channel of choosen band

Auto-select channel of choosen band:

deviceController->powerup->sendNetworkSettingsWifiSelection(deviceController->powerup, (eARCOMMANDS_POWERUP_NETWORKSETTINGS_WIFISELECTION_TYPE)type, (eARCOMMANDS_POWERUP_NETWORKSETTINGS_WIFISELECTION_BAND)band, (uint8_t)channel);
deviceController->powerup->sendNetworkSettingsWifiSelection(deviceController->powerup, (eARCOMMANDS_POWERUP_NETWORKSETTINGS_WIFISELECTION_TYPE)type, (eARCOMMANDS_POWERUP_NETWORKSETTINGS_WIFISELECTION_BAND)band, (uint8_t)channel);
deviceController.getFeaturePowerup().sendNetworkSettingsWifiSelection((ARCOMMANDS_POWERUP_NETWORKSETTINGS_WIFISELECTION_TYPE_ENUM)type, (ARCOMMANDS_POWERUP_NETWORKSETTINGS_WIFISELECTION_BAND_ENUM)band, (byte)channel);

Auto-select channel of choosen band

Launches wifi network scan

Launches wifi network scan:

deviceController->powerup->sendNetworkWifiScan(deviceController->powerup, (eARCOMMANDS_POWERUP_NETWORK_WIFISCAN_BAND)band);
deviceController->powerup->sendNetworkWifiScan(deviceController->powerup, (eARCOMMANDS_POWERUP_NETWORK_WIFISCAN_BAND)band);
deviceController.getFeaturePowerup().sendNetworkWifiScan((ARCOMMANDS_POWERUP_NETWORK_WIFISCAN_BAND_ENUM)band);

Launches wifi network scan

Controller inquire the list of authorized wifi channels.

Controller inquire the list of authorized wifi channels.:

deviceController->powerup->sendNetworkWifiAuthChannel(deviceController->powerup);
deviceController->powerup->sendNetworkWifiAuthChannel(deviceController->powerup);
deviceController.getFeaturePowerup().sendNetworkWifiAuthChannel();

Controller inquire the list of authorized wifi channels.


Enable/disable video streaming.

Enable/disable video streaming.:

deviceController->powerup->sendMediaStreamingVideoEnable(deviceController->powerup, (uint8_t)enable);
deviceController->powerup->sendMediaStreamingVideoEnable(deviceController->powerup, (uint8_t)enable);
deviceController.getFeaturePowerup().sendMediaStreamingVideoEnable((byte)enable);

Enable/disable video streaming.

Set video automatic recording state.

Set video automatic recording state.:

deviceController->powerup->sendVideoSettingsAutorecord(deviceController->powerup, (uint8_t)enable);
deviceController->powerup->sendVideoSettingsAutorecord(deviceController->powerup, (uint8_t)enable);
deviceController.getFeaturePowerup().sendVideoSettingsAutorecord((byte)enable);

Set video automatic recording state.

Set video mode

Set video mode:

deviceController->powerup->sendVideoSettingsVideoMode(deviceController->powerup, (eARCOMMANDS_POWERUP_VIDEOSETTINGS_VIDEOMODE_MODE)mode);
deviceController->powerup->sendVideoSettingsVideoMode(deviceController->powerup, (eARCOMMANDS_POWERUP_VIDEOSETTINGS_VIDEOMODE_MODE)mode);
deviceController.getFeaturePowerup().sendVideoSettingsVideoMode((ARCOMMANDS_POWERUP_VIDEOSETTINGS_VIDEOMODE_MODE_ENUM)mode);

Set video mode

Enable/disable the buzzer sound

Enable/disable the buzzer sound:

deviceController->powerup->sendSoundsBuzz(deviceController->powerup, (uint8_t)enable);
deviceController->powerup->sendSoundsBuzz(deviceController->powerup, (uint8_t)enable);
deviceController.getFeaturePowerup().sendSoundsBuzz((byte)enable);

Enable/disable the buzzer sound

Monitor RC channels

Monitor RC channels:

deviceController->rc->sendMonitorChannels(deviceController->rc, (uint8_t)enable);
deviceController->rc->sendMonitorChannels(deviceController->rc, (uint8_t)enable);
deviceController.getFeatureRc().sendMonitorChannels((byte)enable);

Enable or Disable RC channels monitoring.
If enable, drone will send periodically rc channel value
events.

Start a calibration

Start a calibration:

deviceController->rc->sendStartCalibration(deviceController->rc, (eARCOMMANDS_RC_CALIBRATION_TYPE)calibration_type, (eARCOMMANDS_RC_CHANNEL_ACTION)channel_action, (eARCOMMANDS_RC_CHANNEL_TYPE)channel_type);
deviceController->rc->sendStartCalibration(deviceController->rc, (eARCOMMANDS_RC_CALIBRATION_TYPE)calibration_type, (eARCOMMANDS_RC_CHANNEL_ACTION)channel_action, (eARCOMMANDS_RC_CHANNEL_TYPE)channel_type);
deviceController.getFeatureRc().sendStartCalibration((ARCOMMANDS_RC_CALIBRATION_TYPE_ENUM)calibration_type, (ARCOMMANDS_RC_CHANNEL_ACTION_ENUM)channel_action, (ARCOMMANDS_RC_CHANNEL_TYPE_ENUM)channel_type);

Start a calibration.

Invert a RC channel values

Invert a RC channel values:

deviceController->rc->sendInvertChannel(deviceController->rc, (eARCOMMANDS_RC_CHANNEL_ACTION)action, (uint8_t)flag);
deviceController->rc->sendInvertChannel(deviceController->rc, (eARCOMMANDS_RC_CHANNEL_ACTION)action, (uint8_t)flag);
deviceController.getFeatureRc().sendInvertChannel((ARCOMMANDS_RC_CHANNEL_ACTION_ENUM)action, (byte)flag);

Invert a RC channel values

Abort current calibration

Abort current calibration:

deviceController->rc->sendAbortCalibration(deviceController->rc);
deviceController->rc->sendAbortCalibration(deviceController->rc);
deviceController.getFeatureRc().sendAbortCalibration();

Abort current calibration.


Reset calibration to default values

Reset calibration to default values:

deviceController->rc->sendResetCalibration(deviceController->rc);
deviceController->rc->sendResetCalibration(deviceController->rc);
deviceController.getFeatureRc().sendResetCalibration();

Reset calibration to default values.


Enable RC receiver

Enable RC receiver:

deviceController->rc->sendEnableReceiver(deviceController->rc, (uint8_t)enable);
deviceController->rc->sendEnableReceiver(deviceController->rc, (uint8_t)enable);
deviceController.getFeatureRc().sendEnableReceiver((byte)enable);

Enable or disable RC receiver.
If enable, drone will apply values sent by RC receiver.

Request visible wifi list

Request visible wifi list:

deviceController->skyController->sendWifiRequestWifiList(deviceController->skyController);
deviceController->skyController->sendWifiRequestWifiList(deviceController->skyController);
deviceController.getFeatureSkyController().sendWifiRequestWifiList();

After recieving this command, the SkyController will do a network scan to get the wifi list.
Communication with the drone is stopped during the network scan, so the controller should avoid sending this command during flight.
The controller should clear the local wifi list before sending this command.

Result:
Event WifiList is triggered for each visible wifi networks.

Supported by


Request current wifi informations

Request current wifi informations:

deviceController->skyController->sendWifiRequestCurrentWifi(deviceController->skyController);
deviceController->skyController->sendWifiRequestCurrentWifi(deviceController->skyController);
deviceController.getFeatureSkyController().sendWifiRequestCurrentWifi();

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.

Result:
Event wifi ConnectionChanged is triggered.

Supported by


Connect the SkyController to a wifi network

Connect the SkyController to a wifi network:

deviceController->skyController->sendWifiConnectToWifi(deviceController->skyController, (char *)bssid, (char *)ssid, (char *)passphrase);
deviceController->skyController->sendWifiConnectToWifi(deviceController->skyController, (char *)bssid, (char *)ssid, (char *)passphrase);
deviceController.getFeatureSkyController().sendWifiConnectToWifi((String)bssid, (String)ssid, (String)passphrase);

The network should be a visible network retrieved from the WifiList event.
If the network is secured, then the passphrase must be set. For non-secure network, the passphrase argument is ignored.

Result:
The SkyController should connect to the network.
A wifi ConnectionChanged event is triggered.

Supported by


Forget a wifi network

Forget a wifi network:

deviceController->skyController->sendWifiForgetWifi(deviceController->skyController, (char *)ssid);
deviceController->skyController->sendWifiForgetWifi(deviceController->skyController, (char *)ssid);
deviceController.getFeatureSkyController().sendWifiForgetWifi((String)ssid);

Removes the network from the saved network list.
If the network is the current network, then the SkyController will be disconnected first.

Result:
The next WifiList event will report this network as not saved.
If the SkyController is connected to this network, a wifi ConnectionChanged event is triggered

Supported by


Request the list of authorized channels

Request the list of authorized channels:

deviceController->skyController->sendWifiWifiAuthChannel(deviceController->skyController);
deviceController->skyController->sendWifiWifiAuthChannel(deviceController->skyController);
deviceController.getFeatureSkyController().sendWifiWifiAuthChannel();

Requests the list of authorized wifi channels for the current country/regulatory domain.
These channels are valid for the AccessPointChannel command.

Result:
A list of WifiAuthChannelListChanged events will be sent, followed by an AllWifiAuthChannelChanged event.

Supported by


Request the list of visible devices (deprecated)

Request the list of visible devices (deprecated):

deviceController->skyController->sendDeviceRequestDeviceList(deviceController->skyController);
deviceController->skyController->sendDeviceRequestDeviceList(deviceController->skyController);
deviceController.getFeatureSkyController().sendDeviceRequestDeviceList();

This message is deprecated.

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.

Result:
This command is not implemented.

Supported by


Request current device informations (deprecated)

Request current device informations (deprecated):

deviceController->skyController->sendDeviceRequestCurrentDevice(deviceController->skyController);
deviceController->skyController->sendDeviceRequestCurrentDevice(deviceController->skyController);
deviceController.getFeatureSkyController().sendDeviceRequestCurrentDevice();

This message is deprecated.

This command is deprecated and should not be used.

Result:
This command is not implemented

Supported by


Connect the SkyController to a given device (deprecated)

Connect the SkyController to a given device (deprecated):

deviceController->skyController->sendDeviceConnectToDevice(deviceController->skyController, (char *)deviceName);
deviceController->skyController->sendDeviceConnectToDevice(deviceController->skyController, (char *)deviceName);
deviceController.getFeatureSkyController().sendDeviceConnectToDevice((String)deviceName);

This message is deprecated.

This command is deprecated and should not be used.
The SkyController will automatically connect to the first visible device on the current wifi network.

Result:
This command is not implemented.

Supported by


Ask for all controller’s settings

Ask for all controller’s settings:

deviceController->skyController->sendSettingsAllSettings(deviceController->skyController);
deviceController->skyController->sendSettingsAllSettings(deviceController->skyController);
deviceController.getFeatureSkyController().sendSettingsAllSettings();

Request the controller to send all its settings.

Result:
The controller will trigger all settings events and will finally trigger AllSettingsChanged.

Supported by


Reset all settings

Reset all settings:

deviceController->skyController->sendSettingsReset(deviceController->skyController);
deviceController->skyController->sendSettingsReset(deviceController->skyController);
deviceController.getFeatureSkyController().sendSettingsReset();

This command is not implemented.

Result:
All settings are reset, then a ResetChanged event is fired.

Supported by


Ask for all controller’s states.

Ask for all controller’s states.:

deviceController->skyController->sendCommonAllStates(deviceController->skyController);
deviceController->skyController->sendCommonAllStates(deviceController->skyController);
deviceController.getFeatureSkyController().sendCommonAllStates();

Request the controller to send all its states.

Result:
The controller will trigger all states events and will finally trigger AllStatesChanged.

Supported by


Set access point SSID

Set access point SSID:

deviceController->skyController->sendAccessPointSettingsAccessPointSSID(deviceController->skyController, (char *)ssid);
deviceController->skyController->sendAccessPointSettingsAccessPointSSID(deviceController->skyController, (char *)ssid);
deviceController.getFeatureSkyController().sendAccessPointSettingsAccessPointSSID((String)ssid);

Set the SkyController access point SSID.
The name will be checked, and can be modified before application. Use the AccessPointSSIDChanged event to get the applied network name.

Result:
The network name will change (which will likely disconnect the controller), then an AccessPointSSIDChanged event will be sent

Supported by


Set access point channel (deprecated)

Set access point channel (deprecated):

deviceController->skyController->sendAccessPointSettingsAccessPointChannel(deviceController->skyController, (uint8_t)channel);
deviceController->skyController->sendAccessPointSettingsAccessPointChannel(deviceController->skyController, (uint8_t)channel);
deviceController.getFeatureSkyController().sendAccessPointSettingsAccessPointChannel((byte)channel);

This message is deprecated.

Set the SkyController access point channel.
The channel will be checked, and can be modified before application. Use the AccessPointChannelChanged event to get the applied channel.
The list of authorized channels for the current country can be retrived with the WifiAuthChannel command.
This command is deprecated. Use the WifiSelection command instead.

Result:
The network channel will change (which will likely disconnect the controller), then an AccessPointChannelChanged event will be sent

Supported by


Set access point band/channel

Set access point band/channel:

deviceController->skyController->sendAccessPointSettingsWifiSelection(deviceController->skyController, (eARCOMMANDS_SKYCONTROLLER_ACCESSPOINTSETTINGS_WIFISELECTION_TYPE)type, (eARCOMMANDS_SKYCONTROLLER_ACCESSPOINTSETTINGS_WIFISELECTION_BAND)band, (uint8_t)channel);
deviceController->skyController->sendAccessPointSettingsWifiSelection(deviceController->skyController, (eARCOMMANDS_SKYCONTROLLER_ACCESSPOINTSETTINGS_WIFISELECTION_TYPE)type, (eARCOMMANDS_SKYCONTROLLER_ACCESSPOINTSETTINGS_WIFISELECTION_BAND)band, (uint8_t)channel);
deviceController.getFeatureSkyController().sendAccessPointSettingsWifiSelection((ARCOMMANDS_SKYCONTROLLER_ACCESSPOINTSETTINGS_WIFISELECTION_TYPE_ENUM)type, (ARCOMMANDS_SKYCONTROLLER_ACCESSPOINTSETTINGS_WIFISELECTION_BAND_ENUM)band, (byte)channel);

Set the SkyController access point channel.
The channel will be checked, and can be modified before application. Use the WifiSelectionChanged event to get the applied channel/band.
The list of authorized channels for the current country can be retrived with the WifiAuthChannel command.

Result:
The network channel will change (which will likely disconnect the controller), then a WifiSelectionChanged event will be sent

Supported by


Set access point security

Set access point security:

deviceController->skyController->sendAccessPointSettingsWifiSecurity(deviceController->skyController, (eARCOMMANDS_SKYCONTROLLER_ACCESSPOINTSETTINGS_WIFISECURITY_SECURITY_TYPE)security_type, (char *)key);
deviceController->skyController->sendAccessPointSettingsWifiSecurity(deviceController->skyController, (eARCOMMANDS_SKYCONTROLLER_ACCESSPOINTSETTINGS_WIFISECURITY_SECURITY_TYPE)security_type, (char *)key);
deviceController.getFeatureSkyController().sendAccessPointSettingsWifiSecurity((ARCOMMANDS_SKYCONTROLLER_ACCESSPOINTSETTINGS_WIFISECURITY_SECURITY_TYPE_ENUM)security_type, (String)key);

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 event to get the applied security settings.

Result:
The network security will change (which will likely disconnect the controller), then a WifiSecurityChanged event will be sent

Supported by


Reset the camera orientation (deprecated)

Reset the camera orientation (deprecated):

deviceController->skyController->sendCameraResetOrientation(deviceController->skyController);
deviceController->skyController->sendCameraResetOrientation(deviceController->skyController);
deviceController.getFeatureSkyController().sendCameraResetOrientation();

This message is deprecated.

This command is deprecated. The same effect can be achieved by sending a CameraOrientation command with values retrieved from the defaultCameraOrientation event.

Result:
The drone will reset its camera orientation

Supported by


Get the SkyController buttons and axis list

Get the SkyController buttons and axis list:

deviceController->skyController->sendGamepadInfosGetGamepadControls(deviceController->skyController);
deviceController->skyController->sendGamepadInfosGetGamepadControls(deviceController->skyController);
deviceController.getFeatureSkyController().sendGamepadInfosGetGamepadControls();

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.

Result:
The SkyController will send a list of GamepadControl events, describing all available controls, followed by an allGamepadControlsSent event.

Supported by


Get the current button mappings

Get the current button mappings:

deviceController->skyController->sendButtonMappingsGetCurrentButtonMappings(deviceController->skyController);
deviceController->skyController->sendButtonMappingsGetCurrentButtonMappings(deviceController->skyController);
deviceController.getFeatureSkyController().sendButtonMappingsGetCurrentButtonMappings();

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 command) will trigger currentButtonMappings events.

Result:
The SkyController will send a full list of currentButtonMappings events, followed by an allCurrentButtonMappingsSent event.

Supported by


Get the available button mappings

Get the available button mappings:

deviceController->skyController->sendButtonMappingsGetAvailableButtonMappings(deviceController->skyController);
deviceController->skyController->sendButtonMappingsGetAvailableButtonMappings(deviceController->skyController);
deviceController.getFeatureSkyController().sendButtonMappingsGetAvailableButtonMappings();

The SkyController will send all the available action that can be mapped on buttons.
As this list is static, the controller only need to request this information once.

Result:
The SkyController will send a list of availableButtonMappings events, followed by an allAvailableButtonsMappingsSent event.

Supported by


Set a mapping for a button

Set a mapping for a button:

deviceController->skyController->sendButtonMappingsSetButtonMapping(deviceController->skyController, (int32_t)key_id, (char *)mapping_uid);
deviceController->skyController->sendButtonMappingsSetButtonMapping(deviceController->skyController, (int32_t)key_id, (char *)mapping_uid);
deviceController.getFeatureSkyController().sendButtonMappingsSetButtonMapping((int)key_id, (String)mapping_uid);

Any previous mapping for the given button will be removed, as a button can only be mapped to one action.
To unmap a button, a NO_ACTION mapping can be used (see the availableButtonMappings event).
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 event will be fired.

Result:
The SkyController will send a list of currentButtonMappings events, describing the changes to the mapping table, followed by an allCurrentButtonMappingsSent event.

Supported by


Reset the button mappings to the default value

Reset the button mappings to the default value:

deviceController->skyController->sendButtonMappingsDefaultButtonMapping(deviceController->skyController);
deviceController->skyController->sendButtonMappingsDefaultButtonMapping(deviceController->skyController);
deviceController.getFeatureSkyController().sendButtonMappingsDefaultButtonMapping();

The default values can change between software versions.
The default values are different for Black Edition SkyControllers

Result:
The SkyController will send a list of currentButtonMappings events, describing the changes to the mapping table, followed by an allCurrentButtonMappingsSent event.

Supported by


Get the current axis mappings

Get the current axis mappings:

deviceController->skyController->sendAxisMappingsGetCurrentAxisMappings(deviceController->skyController);
deviceController->skyController->sendAxisMappingsGetCurrentAxisMappings(deviceController->skyController);
deviceController.getFeatureSkyController().sendAxisMappingsGetCurrentAxisMappings();

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 command) will trigger currentAxisMappings events.

Result:
The SkyController will send a full list of currentAxisMappings events, followed by an allCurrentAxisMappingsSent event.

Supported by


Get the available axis mappings

Get the available axis mappings:

deviceController->skyController->sendAxisMappingsGetAvailableAxisMappings(deviceController->skyController);
deviceController->skyController->sendAxisMappingsGetAvailableAxisMappings(deviceController->skyController);
deviceController.getFeatureSkyController().sendAxisMappingsGetAvailableAxisMappings();

The SkyController will send all the available action that can be mapped on axes.
As this list is static, the controller only need to request this information once.

Result:
The SkyController will send a list of availableAxisMappings events, followed by an allAvailableAxissMappingsSent event.

Supported by


Set a mapping for a axis

Set a mapping for a axis:

deviceController->skyController->sendAxisMappingsSetAxisMapping(deviceController->skyController, (int32_t)axis_id, (char *)mapping_uid);
deviceController->skyController->sendAxisMappingsSetAxisMapping(deviceController->skyController, (int32_t)axis_id, (char *)mapping_uid);
deviceController.getFeatureSkyController().sendAxisMappingsSetAxisMapping((int)axis_id, (String)mapping_uid);

Any previous mapping for the given axis will be removed, as a axis can only be mapped to one action.
To unmap a axis, a NO_ACTION mapping can be used (see the availableAxisMappings event).
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 event will be fired.

Result:
The SkyController will send a list of currentAxisMappings events, describing the changes to the mapping table, followed by an allCurrentAxisMappingsSent event.

Supported by


Reset the axis mappings to the default value

Reset the axis mappings to the default value:

deviceController->skyController->sendAxisMappingsDefaultAxisMapping(deviceController->skyController);
deviceController->skyController->sendAxisMappingsDefaultAxisMapping(deviceController->skyController);
deviceController.getFeatureSkyController().sendAxisMappingsDefaultAxisMapping();

The default values can change between software versions.

Result:
The SkyController will send a list of currentAxisMappings events, describing the changes to the mapping table, followed by an allCurrentAxisMappingsSent event.

Supported by


Get the current axis filters

Get the current axis filters:

deviceController->skyController->sendAxisFiltersGetCurrentAxisFilters(deviceController->skyController);
deviceController->skyController->sendAxisFiltersGetCurrentAxisFilters(deviceController->skyController);
deviceController.getFeatureSkyController().sendAxisFiltersGetCurrentAxisFilters();

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 command) will trigger currentAxisFilters events.

Result:
The SkyController will send a full list of currentAxisFilters events, followed by an allCurrentFiltersSent event.

Supported by


Get the available preset axis filters (deprecated)

Get the available preset axis filters (deprecated):

deviceController->skyController->sendAxisFiltersGetPresetAxisFilters(deviceController->skyController);
deviceController->skyController->sendAxisFiltersGetPresetAxisFilters(deviceController->skyController);
deviceController.getFeatureSkyController().sendAxisFiltersGetPresetAxisFilters();

This message is deprecated.

The preset list is empty and will never be filled, so this command is flagged as deprecated.

Result:
As the preset list is empty, the SkyController will just send an allPresetFiltersSent event.

Supported by


Set a filter for an axis

Set a filter for an axis:

deviceController->skyController->sendAxisFiltersSetAxisFilter(deviceController->skyController, (int32_t)axis_id, (char *)filter_uid_or_builder);
deviceController->skyController->sendAxisFiltersSetAxisFilter(deviceController->skyController, (int32_t)axis_id, (char *)filter_uid_or_builder);
deviceController.getFeatureSkyController().sendAxisFiltersSetAxisFilter((int)axis_id, (String)filter_uid_or_builder);

A filter modifies the response curve of an axis.
As the preset filters list is empty, all filters are to be sent using the builder syntax.

The builder syntax supports two types of filters: Multilinear and Exponential.

Multilinear filters create response curves made of multiple linear segments:
* The default filter (ARMF;) is purely linear and create a single segment from the two implicit [-1; -1] and [1; 1] points.
* 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].
* Additionnal points must respect the following constraints : x(N)>x(N-1) and y(N)>=y(N-1).

Exponential filters:
* The syntax is ARXF;CPx;CPy;, where CPx and CPy are floating point numbers in range [0; 1].
* Best results are achieved when CPx + CPy == 1 and CPx > CPy.
* If the control point is on the diagonal (i.e. CPx == CPy), then the resulting filter will be linear.

Result:
The SkyController will send a list of currentAxisFilters events, describing the changes to the filters table, followed by an allCurrentFiltersSent event.

Supported by


Reset the axis filters to the default value

Reset the axis filters to the default value:

deviceController->skyController->sendAxisFiltersDefaultAxisFilters(deviceController->skyController);
deviceController->skyController->sendAxisFiltersDefaultAxisFilters(deviceController->skyController);
deviceController.getFeatureSkyController().sendAxisFiltersDefaultAxisFilters();

The default values can change between software versions.

Result:
The SkyController will send a list of currentAxisFilters events, describing the changes to the filters table, followed by an allCurrentFiltersSent event.

Supported by


Set piloting source

Set piloting source:

deviceController->skyController->sendCoPilotingSetPilotingSource(deviceController->skyController, (eARCOMMANDS_SKYCONTROLLER_COPILOTING_SETPILOTINGSOURCE_SOURCE)source);
deviceController->skyController->sendCoPilotingSetPilotingSource(deviceController->skyController, (eARCOMMANDS_SKYCONTROLLER_COPILOTING_SETPILOTINGSOURCE_SOURCE)source);
deviceController.getFeatureSkyController().sendCoPilotingSetPilotingSource((ARCOMMANDS_SKYCONTROLLER_COPILOTING_SETPILOTINGSOURCE_SOURCE_ENUM)source);

Change who is piloting the drone.
By default, the SkyController is the source of piloting commands, and any connected application (i.e. FreeFlight) can not send piloting commands 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.
The piloting source is automatically reset to SkyController when the controller is disconnected.

Result:
The SkyController will sent a pilotingSource event.

Supported by


Enable Magneto calibration quality updates

Enable Magneto calibration quality updates:

deviceController->skyController->sendCalibrationEnableMagnetoCalibrationQualityUpdates(deviceController->skyController, (uint8_t)enable);
deviceController->skyController->sendCalibrationEnableMagnetoCalibrationQualityUpdates(deviceController->skyController, (uint8_t)enable);
deviceController.getFeatureSkyController().sendCalibrationEnableMagnetoCalibrationQualityUpdates((byte)enable);

Asks the SkyController to send (or not) the magneto calibration quality updates.
The MagnetoCalibrationState event will always be sent when the status parameters changes, regardless of this setting.

Result:
The SkyController will send a MagnetoCalibrationQualityUpdatesState event.

Supported by


Reset the SkyController to its factory settings

Reset the SkyController to its factory settings:

deviceController->skyController->sendFactoryReset(deviceController->skyController);
deviceController->skyController->sendFactoryReset(deviceController->skyController);
deviceController.getFeatureSkyController().sendFactoryReset();

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.

Result:
The SkyController will reboot, all settings will be reset to their default values.
SkyController 2 that were paired in factory will NOT lose this pairing.
SkyController 1 will lose ALL pairing, including factory ones.

Supported by


Scan wifi network

Scan wifi network:

deviceController->wifi->sendScan(deviceController->wifi, (uint8_t)band);
deviceController->wifi->sendScan(deviceController->wifi, (uint8_t)band);
deviceController.getFeatureWifi().sendScan((byte)band);

Launches wifi network scan for a given band to get a list of all wifi networks found by the drone.

Result:
Event WifiScanListChanged is triggered with all networks found.

Supported by


Get all available Wifi channels

Get all available Wifi channels:

deviceController->wifi->sendUpdateAuthorizedChannels(deviceController->wifi);
deviceController->wifi->sendUpdateAuthorizedChannels(deviceController->wifi);
deviceController.getFeatureWifi().sendUpdateAuthorizedChannels();

Get all available Wifi channels.
The list of available Wifi channels is related to the country of the drone. You can get this country with the event WifiCountryChanged.

Result:
Event AvailableChannelListChanged is triggered with all authorized channels.

Supported by


Wifi selection

Wifi selection:

deviceController->wifi->sendSetApChannel(deviceController->wifi, (eARCOMMANDS_WIFI_SELECTION_TYPE)type, (eARCOMMANDS_WIFI_BAND)band, (uint8_t)channel);
deviceController->wifi->sendSetApChannel(deviceController->wifi, (eARCOMMANDS_WIFI_SELECTION_TYPE)type, (eARCOMMANDS_WIFI_BAND)band, (uint8_t)channel);
deviceController.getFeatureWifi().sendSetApChannel((ARCOMMANDS_WIFI_SELECTION_TYPE_ENUM)type, (ARCOMMANDS_WIFI_BAND_ENUM)band, (byte)channel);

Select channel of choosen band to put the drone’s access point on this channel.

Result:
The wifi channel changes according to given parameters. Watch out, a disconnection might appear.
Then, event WifiSelectionChanged is triggered.

Supported by


Set the wifi security

Set the wifi security:

deviceController->wifi->sendSetSecurity(deviceController->wifi, (eARCOMMANDS_WIFI_SECURITY_TYPE)type, (char *)key, (eARCOMMANDS_WIFI_SECURITY_KEY_TYPE)key_type);
deviceController->wifi->sendSetSecurity(deviceController->wifi, (eARCOMMANDS_WIFI_SECURITY_TYPE)type, (char *)key, (eARCOMMANDS_WIFI_SECURITY_KEY_TYPE)key_type);
deviceController.getFeatureWifi().sendSetSecurity((ARCOMMANDS_WIFI_SECURITY_TYPE_ENUM)type, (String)key, (ARCOMMANDS_WIFI_SECURITY_KEY_TYPE_ENUM)key_type);

Set the wifi security.
The security is changed on the next boot.

Result:
The wifi security is set.
Then, event WifiSecurityChanged is triggered.

Supported by


Set the wifi country

Set the wifi country:

deviceController->wifi->sendSetCountry(deviceController->wifi, (eARCOMMANDS_WIFI_COUNTRY_SELECTION)selection_mode, (char *)code);
deviceController->wifi->sendSetCountry(deviceController->wifi, (eARCOMMANDS_WIFI_COUNTRY_SELECTION)selection_mode, (char *)code);
deviceController.getFeatureWifi().sendSetCountry((ARCOMMANDS_WIFI_COUNTRY_SELECTION_ENUM)selection_mode, (String)code);

Set the wifi country.

Result:
The country of the product is changed.
Then, it will trigger CountryChanged.

Supported by


Set indoor/outdoor wifi settings

Set indoor/outdoor wifi settings:

deviceController->wifi->sendSetEnvironment(deviceController->wifi, (eARCOMMANDS_WIFI_ENVIRONMENT)environment);
deviceController->wifi->sendSetEnvironment(deviceController->wifi, (eARCOMMANDS_WIFI_ENVIRONMENT)environment);
deviceController.getFeatureWifi().sendSetEnvironment((ARCOMMANDS_WIFI_ENVIRONMENT_ENUM)environment);

Set indoor or outdoor wifi settings.

Result:
The product change its indoor/outdoor wifi settings.
Then, it will trigger OutdoorChanged.
According to the country (defined by SetAutoCountry or SetCountry) laws the drone might change its wifi band and channel. So a disconnection might appear.

Supported by


all products events

Picture state (deprecated)

Picture state (deprecated):

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGED_STATE, arg);
            if (arg != NULL)
            {
                uint8_t state = arg->value.U8;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGED_MASS_STORAGE_ID, arg);
            if (arg != NULL)
            {
                uint8_t mass_storage_id = arg->value.U8;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGED_STATE, arg);
            if (arg != NULL)
            {
                uint8_t state = arg->value.U8;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGED_MASS_STORAGE_ID, arg);
            if (arg != NULL)
            {
                uint8_t mass_storage_id = arg->value.U8;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            byte state = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGED_STATE)).intValue();
            byte mass_storage_id = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGED_MASS_STORAGE_ID)).intValue();
        }
    }
}

This message is deprecated.

Picture state.

Video record state (deprecated)

Video record state (deprecated):

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGED_STATE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGED_STATE state = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGED_MASS_STORAGE_ID, arg);
            if (arg != NULL)
            {
                uint8_t mass_storage_id = arg->value.U8;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGED_STATE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGED_STATE state = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGED_MASS_STORAGE_ID, arg);
            if (arg != NULL)
            {
                uint8_t mass_storage_id = arg->value.U8;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            ARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGED_STATE_ENUM state = ARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGED_STATE_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGED_STATE));
            byte mass_storage_id = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGED_MASS_STORAGE_ID)).intValue();
        }
    }
}

This message is deprecated.

Picture record state.

Picture state

Picture state:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2_STATE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2_STATE state = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2_ERROR, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2_ERROR error = arg->value.I32;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2_STATE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2_STATE state = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2_ERROR, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2_ERROR error = arg->value.I32;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            ARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2_STATE_ENUM state = ARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2_STATE_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2_STATE));
            ARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2_ERROR_ENUM error = ARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2_ERROR_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_PICTURESTATECHANGEDV2_ERROR));
        }
    }
}

Picture state.

Triggered by TakePicture or by a change in the picture state

Supported by


Video record state

Video record state:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2_STATE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2_STATE state = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2_ERROR, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2_ERROR error = arg->value.I32;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2_STATE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2_STATE state = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2_ERROR, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2_ERROR error = arg->value.I32;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            ARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2_STATE_ENUM state = ARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2_STATE_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2_STATE));
            ARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2_ERROR_ENUM error = ARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2_ERROR_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEOSTATECHANGEDV2_ERROR));
        }
    }
}

Video record state.

Triggered by RecordVideo or by a change in the video state

Supported by


Video resolution (deprecated)

Video resolution (deprecated):

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE_STREAMING, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE_STREAMING streaming = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE_RECORDING, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE_RECORDING recording = arg->value.I32;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE_STREAMING, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE_STREAMING streaming = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE_RECORDING, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE_RECORDING recording = arg->value.I32;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            ARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE_STREAMING_ENUM streaming = ARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE_STREAMING_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE_STREAMING));
            ARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE_RECORDING_ENUM recording = ARCOMMANDS_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE_RECORDING_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDSTATE_VIDEORESOLUTIONSTATE_RECORDING));
        }
    }
}

This message is deprecated.

Video resolution.
Informs about streaming and recording video resolutions.
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.

Triggered when the resolution changes.

Supported by


Picture taken

Picture taken:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED_EVENT, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED_EVENT event = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED_ERROR, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED_ERROR error = arg->value.I32;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED_EVENT, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED_EVENT event = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED_ERROR, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED_ERROR error = arg->value.I32;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            ARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED_EVENT_ENUM event = ARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED_EVENT_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED_EVENT));
            ARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED_ERROR_ENUM error = ARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED_ERROR_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_PICTUREEVENTCHANGED_ERROR));
        }
    }
}

Picture taken.

This event is a notification, you can’t retrieve it in the cache of the device controller.

Triggered after a TakePicture, when the picture has been taken (or it has failed).

Supported by


Video record notification

Video record notification:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED_EVENT, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED_EVENT event = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED_ERROR, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED_ERROR error = arg->value.I32;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED_EVENT, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED_EVENT event = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED_ERROR, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED_ERROR error = arg->value.I32;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            ARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED_EVENT_ENUM event = ARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED_EVENT_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED_EVENT));
            ARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED_ERROR_ENUM error = ARCOMMANDS_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED_ERROR_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_MEDIARECORDEVENT_VIDEOEVENTCHANGED_ERROR));
        }
    }
}

Video record notification.

This event is a notification, you can’t retrieve it in the cache of the device controller.

Triggered by RecordVideo or a change in the video state.

Supported by


Flat trim changed

Flat trim changed:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_FLATTRIMCHANGED) && (elementDictionary != NULL))
    {

    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_FLATTRIMCHANGED) && (elementDictionary != NULL))
    {

    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_FLATTRIMCHANGED) && (elementDictionary != null)){

    }
}

Drone acknowledges that flat trim was correctly processed.

Triggered by FlatTrim.

Supported by


Flying state

Flying state:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_FLYINGSTATECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_FLYINGSTATECHANGED_STATE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSTATE_FLYINGSTATECHANGED_STATE state = arg->value.I32;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_FLYINGSTATECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_FLYINGSTATECHANGED_STATE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSTATE_FLYINGSTATECHANGED_STATE state = arg->value.I32;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_FLYINGSTATECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            ARCOMMANDS_ARDRONE3_PILOTINGSTATE_FLYINGSTATECHANGED_STATE_ENUM state = ARCOMMANDS_ARDRONE3_PILOTINGSTATE_FLYINGSTATECHANGED_STATE_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_FLYINGSTATECHANGED_STATE));
        }
    }
}

Flying state.

Triggered when the flying state changes.

Supported by


Alert state

Alert state:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ALERTSTATECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ALERTSTATECHANGED_STATE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSTATE_ALERTSTATECHANGED_STATE state = arg->value.I32;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ALERTSTATECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ALERTSTATECHANGED_STATE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSTATE_ALERTSTATECHANGED_STATE state = arg->value.I32;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ALERTSTATECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            ARCOMMANDS_ARDRONE3_PILOTINGSTATE_ALERTSTATECHANGED_STATE_ENUM state = ARCOMMANDS_ARDRONE3_PILOTINGSTATE_ALERTSTATECHANGED_STATE_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ALERTSTATECHANGED_STATE));
        }
    }
}

Alert state.

Triggered when an alert happens on the drone.

Supported by


Return home state

Return home state:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED_STATE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED_STATE state = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED_REASON, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED_REASON reason = arg->value.I32;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED_STATE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED_STATE state = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED_REASON, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED_REASON reason = arg->value.I32;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            ARCOMMANDS_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED_STATE_ENUM state = ARCOMMANDS_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED_STATE_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED_STATE));
            ARCOMMANDS_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED_REASON_ENUM reason = ARCOMMANDS_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED_REASON_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_NAVIGATEHOMESTATECHANGED_REASON));
        }
    }
}

Return home state.
Availability is related to gps fix, magnetometer calibration.

Triggered by ReturnHome or when the state of the return home changes.

Supported by


Drone’s position changed

Drone’s position changed:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_POSITIONCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_POSITIONCHANGED_LATITUDE, arg);
            if (arg != NULL)
            {
                double latitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_POSITIONCHANGED_LONGITUDE, arg);
            if (arg != NULL)
            {
                double longitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_POSITIONCHANGED_ALTITUDE, arg);
            if (arg != NULL)
            {
                double altitude = arg->value.Double;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_POSITIONCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_POSITIONCHANGED_LATITUDE, arg);
            if (arg != NULL)
            {
                double latitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_POSITIONCHANGED_LONGITUDE, arg);
            if (arg != NULL)
            {
                double longitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_POSITIONCHANGED_ALTITUDE, arg);
            if (arg != NULL)
            {
                double altitude = arg->value.Double;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_POSITIONCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            double latitude = (double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_POSITIONCHANGED_LATITUDE);
            double longitude = (double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_POSITIONCHANGED_LONGITUDE);
            double altitude = (double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_POSITIONCHANGED_ALTITUDE);
        }
    }
}

Drone’s position changed.

Triggered regularly.

Supported by


Drone’s speed changed

Drone’s speed changed:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_SPEEDCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_SPEEDCHANGED_SPEEDX, arg);
            if (arg != NULL)
            {
                float speedX = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_SPEEDCHANGED_SPEEDY, arg);
            if (arg != NULL)
            {
                float speedY = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_SPEEDCHANGED_SPEEDZ, arg);
            if (arg != NULL)
            {
                float speedZ = arg->value.Float;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_SPEEDCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_SPEEDCHANGED_SPEEDX, arg);
            if (arg != NULL)
            {
                float speedX = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_SPEEDCHANGED_SPEEDY, arg);
            if (arg != NULL)
            {
                float speedY = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_SPEEDCHANGED_SPEEDZ, arg);
            if (arg != NULL)
            {
                float speedZ = arg->value.Float;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_SPEEDCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float speedX = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_SPEEDCHANGED_SPEEDX)).doubleValue();
            float speedY = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_SPEEDCHANGED_SPEEDY)).doubleValue();
            float speedZ = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_SPEEDCHANGED_SPEEDZ)).doubleValue();
        }
    }
}

Drone’s speed changed.
Expressed in the NED referential (North-East-Down).

Triggered regularly.

Supported by


Drone’s attitude changed

Drone’s attitude changed:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ATTITUDECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ATTITUDECHANGED_ROLL, arg);
            if (arg != NULL)
            {
                float roll = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ATTITUDECHANGED_PITCH, arg);
            if (arg != NULL)
            {
                float pitch = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ATTITUDECHANGED_YAW, arg);
            if (arg != NULL)
            {
                float yaw = arg->value.Float;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ATTITUDECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ATTITUDECHANGED_ROLL, arg);
            if (arg != NULL)
            {
                float roll = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ATTITUDECHANGED_PITCH, arg);
            if (arg != NULL)
            {
                float pitch = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ATTITUDECHANGED_YAW, arg);
            if (arg != NULL)
            {
                float yaw = arg->value.Float;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ATTITUDECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float roll = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ATTITUDECHANGED_ROLL)).doubleValue();
            float pitch = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ATTITUDECHANGED_PITCH)).doubleValue();
            float yaw = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ATTITUDECHANGED_YAW)).doubleValue();
        }
    }
}

Drone’s attitude changed.

Triggered regularly.

Supported by


Auto takeoff mode (deprecated)

Auto takeoff mode (deprecated):

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_AUTOTAKEOFFMODECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_AUTOTAKEOFFMODECHANGED_STATE, arg);
            if (arg != NULL)
            {
                uint8_t state = arg->value.U8;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_AUTOTAKEOFFMODECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_AUTOTAKEOFFMODECHANGED_STATE, arg);
            if (arg != NULL)
            {
                uint8_t state = arg->value.U8;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_AUTOTAKEOFFMODECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            byte state = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_AUTOTAKEOFFMODECHANGED_STATE)).intValue();
        }
    }
}

This message is deprecated.

Auto takeoff mode

Drone’s altitude changed

Drone’s altitude changed:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ALTITUDECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ALTITUDECHANGED_ALTITUDE, arg);
            if (arg != NULL)
            {
                double altitude = arg->value.Double;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ALTITUDECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ALTITUDECHANGED_ALTITUDE, arg);
            if (arg != NULL)
            {
                double altitude = arg->value.Double;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ALTITUDECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            double altitude = (double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_ALTITUDECHANGED_ALTITUDE);
        }
    }
}

Drone’s altitude changed.
The altitude reported is the altitude above the take off point.
To get the altitude above sea level, see PositionChanged.

Triggered regularly.

Supported by


Drone’s location changed

Drone’s location changed:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_LATITUDE, arg);
            if (arg != NULL)
            {
                double latitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_LONGITUDE, arg);
            if (arg != NULL)
            {
                double longitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_ALTITUDE, arg);
            if (arg != NULL)
            {
                double altitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_LATITUDE_ACCURACY, arg);
            if (arg != NULL)
            {
                int8_t latitude_accuracy = arg->value.I8;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_LONGITUDE_ACCURACY, arg);
            if (arg != NULL)
            {
                int8_t longitude_accuracy = arg->value.I8;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_ALTITUDE_ACCURACY, arg);
            if (arg != NULL)
            {
                int8_t altitude_accuracy = arg->value.I8;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_LATITUDE, arg);
            if (arg != NULL)
            {
                double latitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_LONGITUDE, arg);
            if (arg != NULL)
            {
                double longitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_ALTITUDE, arg);
            if (arg != NULL)
            {
                double altitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_LATITUDE_ACCURACY, arg);
            if (arg != NULL)
            {
                int8_t latitude_accuracy = arg->value.I8;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_LONGITUDE_ACCURACY, arg);
            if (arg != NULL)
            {
                int8_t longitude_accuracy = arg->value.I8;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_ALTITUDE_ACCURACY, arg);
            if (arg != NULL)
            {
                int8_t altitude_accuracy = arg->value.I8;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            double latitude = (double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_LATITUDE);
            double longitude = (double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_LONGITUDE);
            double altitude = (double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_ALTITUDE);
            byte latitude_accuracy = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_LATITUDE_ACCURACY)).intValue();
            byte longitude_accuracy = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_LONGITUDE_ACCURACY)).intValue();
            byte altitude_accuracy = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_GPSLOCATIONCHANGED_ALTITUDE_ACCURACY)).intValue();
        }
    }
}

Drone’s location changed.
This event is meant to replace PositionChanged.

Triggered regularly.

Supported by


Landing state

Landing state:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_LANDINGSTATECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_LANDINGSTATECHANGED_STATE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSTATE_LANDINGSTATECHANGED_STATE state = arg->value.I32;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_LANDINGSTATECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_LANDINGSTATECHANGED_STATE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSTATE_LANDINGSTATECHANGED_STATE state = arg->value.I32;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_LANDINGSTATECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            ARCOMMANDS_ARDRONE3_PILOTINGSTATE_LANDINGSTATECHANGED_STATE_ENUM state = ARCOMMANDS_ARDRONE3_PILOTINGSTATE_LANDINGSTATECHANGED_STATE_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_LANDINGSTATECHANGED_STATE));
        }
    }
}

Landing state.
Only available for fixed wings (which have two landing modes).

Triggered when the landing state changes.

Supported by


Drone’s air speed changed

Drone’s air speed changed:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_AIRSPEEDCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_AIRSPEEDCHANGED_AIRSPEED, arg);
            if (arg != NULL)
            {
                float airSpeed = arg->value.Float;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_AIRSPEEDCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_AIRSPEEDCHANGED_AIRSPEED, arg);
            if (arg != NULL)
            {
                float airSpeed = arg->value.Float;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_AIRSPEEDCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float airSpeed = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_AIRSPEEDCHANGED_AIRSPEED)).doubleValue();
        }
    }
}

Drone’s air speed changed
Expressed in the drone’s referential.

Triggered regularly.

Supported by


Move to changed

Move to changed:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_LATITUDE, arg);
            if (arg != NULL)
            {
                double latitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_LONGITUDE, arg);
            if (arg != NULL)
            {
                double longitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_ALTITUDE, arg);
            if (arg != NULL)
            {
                double altitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_ORIENTATION_MODE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_ORIENTATION_MODE orientation_mode = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_HEADING, arg);
            if (arg != NULL)
            {
                float heading = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_STATUS, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_STATUS status = arg->value.I32;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_LATITUDE, arg);
            if (arg != NULL)
            {
                double latitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_LONGITUDE, arg);
            if (arg != NULL)
            {
                double longitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_ALTITUDE, arg);
            if (arg != NULL)
            {
                double altitude = arg->value.Double;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_ORIENTATION_MODE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_ORIENTATION_MODE orientation_mode = arg->value.I32;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_HEADING, arg);
            if (arg != NULL)
            {
                float heading = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_STATUS, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_STATUS status = arg->value.I32;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            double latitude = (double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_LATITUDE);
            double longitude = (double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_LONGITUDE);
            double altitude = (double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_ALTITUDE);
            ARCOMMANDS_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_ORIENTATION_MODE_ENUM orientation_mode = ARCOMMANDS_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_ORIENTATION_MODE_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_ORIENTATION_MODE));
            float heading = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_HEADING)).doubleValue();
            ARCOMMANDS_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_STATUS_ENUM status = ARCOMMANDS_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_STATUS_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSTATE_MOVETOCHANGED_STATUS));
        }
    }
}

The drone moves or moved to a given location.

Triggered by MoveTo or when the drone did reach the given position.

Supported by


Relative move ended

Relative move ended:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_DX, arg);
            if (arg != NULL)
            {
                float dX = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_DY, arg);
            if (arg != NULL)
            {
                float dY = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_DZ, arg);
            if (arg != NULL)
            {
                float dZ = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_DPSI, arg);
            if (arg != NULL)
            {
                float dPsi = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_ERROR, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGEVENT_MOVEBYEND_ERROR error = arg->value.I32;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_DX, arg);
            if (arg != NULL)
            {
                float dX = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_DY, arg);
            if (arg != NULL)
            {
                float dY = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_DZ, arg);
            if (arg != NULL)
            {
                float dZ = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_DPSI, arg);
            if (arg != NULL)
            {
                float dPsi = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_ERROR, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGEVENT_MOVEBYEND_ERROR error = arg->value.I32;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float dX = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_DX)).doubleValue();
            float dY = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_DY)).doubleValue();
            float dZ = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_DZ)).doubleValue();
            float dPsi = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_DPSI)).doubleValue();
            ARCOMMANDS_ARDRONE3_PILOTINGEVENT_MOVEBYEND_ERROR_ENUM error = ARCOMMANDS_ARDRONE3_PILOTINGEVENT_MOVEBYEND_ERROR_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGEVENT_MOVEBYEND_ERROR));
        }
    }
}

Relative move ended.
Informs about the move that the drone managed to do and why it stopped.

Triggered when the drone reaches its target or when it is interrupted by another moveBy command or when an error occurs.

Supported by


Wifi scan results

Wifi scan results:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if (commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED)
    {
        if (elementDictionary != NULL)
        {
            ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
            ARCONTROLLER_DICTIONARY_ELEMENT_t *dictElement = NULL;
            ARCONTROLLER_DICTIONARY_ELEMENT_t *dictTmp = NULL;
            HASH_ITER(hh, elementDictionary, dictElement, dictTmp)
            {
                HASH_FIND_STR (dictElement->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_SSID, arg);
                if (arg != NULL)
                {
                    char * ssid = arg->value.String;
                }
                HASH_FIND_STR (dictElement->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_RSSI, arg);
                if (arg != NULL)
                {
                    int16_t rssi = arg->value.I16;
                }
                HASH_FIND_STR (dictElement->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_BAND, arg);
                if (arg != NULL)
                {
                    eARCOMMANDS_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_BAND band = arg->value.I32;
                }
                HASH_FIND_STR (dictElement->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_CHANNEL, arg);
                if (arg != NULL)
                {
                    uint8_t channel = arg->value.U8;
                }
            }
        }
        else
        {
            // list is empty
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if (commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED)
    {
        if (elementDictionary != NULL)
        {
            ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
            ARCONTROLLER_DICTIONARY_ELEMENT_t *dictElement = NULL;
            ARCONTROLLER_DICTIONARY_ELEMENT_t *dictTmp = NULL;
            HASH_ITER(hh, elementDictionary, dictElement, dictTmp)
            {
                HASH_FIND_STR (dictElement->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_SSID, arg);
                if (arg != NULL)
                {
                    char * ssid = arg->value.String;
                }
                HASH_FIND_STR (dictElement->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_RSSI, arg);
                if (arg != NULL)
                {
                    int16_t rssi = arg->value.I16;
                }
                HASH_FIND_STR (dictElement->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_BAND, arg);
                if (arg != NULL)
                {
                    eARCOMMANDS_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_BAND band = arg->value.I32;
                }
                HASH_FIND_STR (dictElement->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_CHANNEL, arg);
                if (arg != NULL)
                {
                    uint8_t channel = arg->value.U8;
                }
            }
        }
        else
        {
            // list is empty
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if (commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED){
        if ((elementDictionary != null) && (elementDictionary.size() > 0)) {
            Iterator<ARControllerArgumentDictionary<Object>> itr = elementDictionary.values().iterator();
            while (itr.hasNext()) {
                ARControllerArgumentDictionary<Object> args = itr.next();
                if (args != null) {
                    String ssid = (String)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_SSID);
                    short rssi = (short)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_RSSI)).intValue();
                    ARCOMMANDS_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_BAND_ENUM band = ARCOMMANDS_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_BAND_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_BAND));
                    byte channel = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFISCANLISTCHANGED_CHANNEL)).intValue();
                }
            }
        } else {
            // list is empty
        }
    }
}

Wifi scan results.
Please note that the list is not complete until you receive the event WifiScanEnded.

Triggered for each wifi network scanned after a ScanWifi

Supported by


Wifi scan ended

Wifi scan ended:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_ALLWIFISCANCHANGED) && (elementDictionary != NULL))
    {

    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_ALLWIFISCANCHANGED) && (elementDictionary != NULL))
    {

    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_ALLWIFISCANCHANGED) && (elementDictionary != null)){

    }
}

Wifi scan ended.
When receiving this event, the list of WifiScanResults is complete.

Triggered after the last WifiScanResult has been sent.

Supported by


Available wifi channels

Available wifi channels:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if (commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED)
    {
        if (elementDictionary != NULL)
        {
            ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
            ARCONTROLLER_DICTIONARY_ELEMENT_t *dictElement = NULL;
            ARCONTROLLER_DICTIONARY_ELEMENT_t *dictTmp = NULL;
            HASH_ITER(hh, elementDictionary, dictElement, dictTmp)
            {
                HASH_FIND_STR (dictElement->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED_BAND, arg);
                if (arg != NULL)
                {
                    eARCOMMANDS_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED_BAND band = arg->value.I32;
                }
                HASH_FIND_STR (dictElement->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED_CHANNEL, arg);
                if (arg != NULL)
                {
                    uint8_t channel = arg->value.U8;
                }
                HASH_FIND_STR (dictElement->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED_IN_OR_OUT, arg);
                if (arg != NULL)
                {
                    uint8_t in_or_out = arg->value.U8;
                }
            }
        }
        else
        {
            // list is empty
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if (commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED)
    {
        if (elementDictionary != NULL)
        {
            ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
            ARCONTROLLER_DICTIONARY_ELEMENT_t *dictElement = NULL;
            ARCONTROLLER_DICTIONARY_ELEMENT_t *dictTmp = NULL;
            HASH_ITER(hh, elementDictionary, dictElement, dictTmp)
            {
                HASH_FIND_STR (dictElement->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED_BAND, arg);
                if (arg != NULL)
                {
                    eARCOMMANDS_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED_BAND band = arg->value.I32;
                }
                HASH_FIND_STR (dictElement->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED_CHANNEL, arg);
                if (arg != NULL)
                {
                    uint8_t channel = arg->value.U8;
                }
                HASH_FIND_STR (dictElement->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED_IN_OR_OUT, arg);
                if (arg != NULL)
                {
                    uint8_t in_or_out = arg->value.U8;
                }
            }
        }
        else
        {
            // list is empty
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if (commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED){
        if ((elementDictionary != null) && (elementDictionary.size() > 0)) {
            Iterator<ARControllerArgumentDictionary<Object>> itr = elementDictionary.values().iterator();
            while (itr.hasNext()) {
                ARControllerArgumentDictionary<Object> args = itr.next();
                if (args != null) {
                    ARCOMMANDS_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED_BAND_ENUM band = ARCOMMANDS_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED_BAND_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED_BAND));
                    byte channel = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED_CHANNEL)).intValue();
                    byte in_or_out = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_WIFIAUTHCHANNELLISTCHANGED_IN_OR_OUT)).intValue();
                }
            }
        } else {
            // list is empty
        }
    }
}

Available wifi channels.
Please note that the list is not complete until you receive the event AvailableWifiChannelsCompleted.

Triggered for each available channel after a GetAvailableWifiChannels.

Supported by


Available wifi channels completed

Available wifi channels completed:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_ALLWIFIAUTHCHANNELCHANGED) && (elementDictionary != NULL))
    {

    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_ALLWIFIAUTHCHANNELCHANGED) && (elementDictionary != NULL))
    {

    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_NETWORKSTATE_ALLWIFIAUTHCHANNELCHANGED) && (elementDictionary != null)){

    }
}

Available wifi channels completed.
When receiving this event, the list of AvailableWifiChannels is complete.

Triggered after the last AvailableWifiChannel has been sent.

Supported by


Max altitude

Max altitude:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXALTITUDECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXALTITUDECHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                float current = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXALTITUDECHANGED_MIN, arg);
            if (arg != NULL)
            {
                float min = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXALTITUDECHANGED_MAX, arg);
            if (arg != NULL)
            {
                float max = arg->value.Float;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXALTITUDECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXALTITUDECHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                float current = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXALTITUDECHANGED_MIN, arg);
            if (arg != NULL)
            {
                float min = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXALTITUDECHANGED_MAX, arg);
            if (arg != NULL)
            {
                float max = arg->value.Float;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXALTITUDECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float current = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXALTITUDECHANGED_CURRENT)).doubleValue();
            float min = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXALTITUDECHANGED_MIN)).doubleValue();
            float max = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXALTITUDECHANGED_MAX)).doubleValue();
        }
    }
}

Max altitude.
The drone will not fly higher than this altitude (above take off point).

Triggered by SetMaxAltitude.

Supported by


Max pitch/roll

Max pitch/roll:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXTILTCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXTILTCHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                float current = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXTILTCHANGED_MIN, arg);
            if (arg != NULL)
            {
                float min = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXTILTCHANGED_MAX, arg);
            if (arg != NULL)
            {
                float max = arg->value.Float;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXTILTCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXTILTCHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                float current = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXTILTCHANGED_MIN, arg);
            if (arg != NULL)
            {
                float min = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXTILTCHANGED_MAX, arg);
            if (arg != NULL)
            {
                float max = arg->value.Float;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXTILTCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float current = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXTILTCHANGED_CURRENT)).doubleValue();
            float min = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXTILTCHANGED_MIN)).doubleValue();
            float max = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXTILTCHANGED_MAX)).doubleValue();
        }
    }
}

Max pitch/roll.
The drone will not fly higher than this altitude (above take off point).

Triggered by SetMaxAltitude.

Supported by


Absolut control (deprecated)

Absolut control (deprecated):

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_ABSOLUTCONTROLCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_ABSOLUTCONTROLCHANGED_ON, arg);
            if (arg != NULL)
            {
                uint8_t on = arg->value.U8;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_ABSOLUTCONTROLCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_ABSOLUTCONTROLCHANGED_ON, arg);
            if (arg != NULL)
            {
                uint8_t on = arg->value.U8;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_ABSOLUTCONTROLCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            byte on = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_ABSOLUTCONTROLCHANGED_ON)).intValue();
        }
    }
}

This message is deprecated.

Absolut control.

Max distance

Max distance:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXDISTANCECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXDISTANCECHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                float current = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXDISTANCECHANGED_MIN, arg);
            if (arg != NULL)
            {
                float min = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXDISTANCECHANGED_MAX, arg);
            if (arg != NULL)
            {
                float max = arg->value.Float;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXDISTANCECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXDISTANCECHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                float current = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXDISTANCECHANGED_MIN, arg);
            if (arg != NULL)
            {
                float min = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXDISTANCECHANGED_MAX, arg);
            if (arg != NULL)
            {
                float max = arg->value.Float;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXDISTANCECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float current = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXDISTANCECHANGED_CURRENT)).doubleValue();
            float min = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXDISTANCECHANGED_MIN)).doubleValue();
            float max = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXDISTANCECHANGED_MAX)).doubleValue();
        }
    }
}

Max distance.

Triggered by SetMaxDistance.

Supported by


Geofencing

Geofencing:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_NOFLYOVERMAXDISTANCECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_NOFLYOVERMAXDISTANCECHANGED_SHOULDNOTFLYOVER, arg);
            if (arg != NULL)
            {
                uint8_t shouldNotFlyOver = arg->value.U8;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_NOFLYOVERMAXDISTANCECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_NOFLYOVERMAXDISTANCECHANGED_SHOULDNOTFLYOVER, arg);
            if (arg != NULL)
            {
                uint8_t shouldNotFlyOver = arg->value.U8;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_NOFLYOVERMAXDISTANCECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            byte shouldNotFlyOver = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_NOFLYOVERMAXDISTANCECHANGED_SHOULDNOTFLYOVER)).intValue();
        }
    }
}

Geofencing.
If set, the drone won’t fly over the MaxDistance.

Triggered by EnableGeofence.

Supported by


Autonomous flight max horizontal speed

Autonomous flight max horizontal speed:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXHORIZONTALSPEED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXHORIZONTALSPEED_VALUE, arg);
            if (arg != NULL)
            {
                float value = arg->value.Float;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXHORIZONTALSPEED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXHORIZONTALSPEED_VALUE, arg);
            if (arg != NULL)
            {
                float value = arg->value.Float;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXHORIZONTALSPEED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float value = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXHORIZONTALSPEED_VALUE)).doubleValue();
        }
    }
}

Autonomous flight max horizontal speed.

Triggered by SetAutonomousFlightMaxHorizontalSpeed.

Supported by


Autonomous flight max vertical speed

Autonomous flight max vertical speed:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXVERTICALSPEED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXVERTICALSPEED_VALUE, arg);
            if (arg != NULL)
            {
                float value = arg->value.Float;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXVERTICALSPEED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXVERTICALSPEED_VALUE, arg);
            if (arg != NULL)
            {
                float value = arg->value.Float;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXVERTICALSPEED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float value = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXVERTICALSPEED_VALUE)).doubleValue();
        }
    }
}

Autonomous flight max vertical speed.

Triggered by SetAutonomousFlightMaxVerticalSpeed.

Supported by


Autonomous flight max horizontal acceleration

Autonomous flight max horizontal acceleration:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXHORIZONTALACCELERATION) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXHORIZONTALACCELERATION_VALUE, arg);
            if (arg != NULL)
            {
                float value = arg->value.Float;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXHORIZONTALACCELERATION) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXHORIZONTALACCELERATION_VALUE, arg);
            if (arg != NULL)
            {
                float value = arg->value.Float;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXHORIZONTALACCELERATION) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float value = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXHORIZONTALACCELERATION_VALUE)).doubleValue();
        }
    }
}

Autonomous flight max horizontal acceleration.

Triggered by SetAutonomousFlightMaxHorizontalAcceleration.

Supported by


Autonomous flight max vertical acceleration

Autonomous flight max vertical acceleration:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXVERTICALACCELERATION) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXVERTICALACCELERATION_VALUE, arg);
            if (arg != NULL)
            {
                float value = arg->value.Float;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXVERTICALACCELERATION) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXVERTICALACCELERATION_VALUE, arg);
            if (arg != NULL)
            {
                float value = arg->value.Float;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXVERTICALACCELERATION) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float value = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXVERTICALACCELERATION_VALUE)).doubleValue();
        }
    }
}

Autonomous flight max vertical acceleration.

Triggered by SetAutonomousFlightMaxVerticalAcceleration.

Supported by


Autonomous flight max rotation speed

Autonomous flight max rotation speed:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXROTATIONSPEED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXROTATIONSPEED_VALUE, arg);
            if (arg != NULL)
            {
                float value = arg->value.Float;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXROTATIONSPEED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXROTATIONSPEED_VALUE, arg);
            if (arg != NULL)
            {
                float value = arg->value.Float;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXROTATIONSPEED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float value = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_AUTONOMOUSFLIGHTMAXROTATIONSPEED_VALUE)).doubleValue();
        }
    }
}

Autonomous flight max rotation speed.

Triggered by SetAutonomousFlightMaxRotationSpeed.

Supported by


Banked Turn mode

Banked Turn mode:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_BANKEDTURNCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_BANKEDTURNCHANGED_STATE, arg);
            if (arg != NULL)
            {
                uint8_t state = arg->value.U8;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_BANKEDTURNCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_BANKEDTURNCHANGED_STATE, arg);
            if (arg != NULL)
            {
                uint8_t state = arg->value.U8;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_BANKEDTURNCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            byte state = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_BANKEDTURNCHANGED_STATE)).intValue();
        }
    }
}

Banked Turn mode.
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.

Triggered by SetBankedTurnMode.

Supported by


Min altitude

Min altitude:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MINALTITUDECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MINALTITUDECHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                float current = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MINALTITUDECHANGED_MIN, arg);
            if (arg != NULL)
            {
                float min = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MINALTITUDECHANGED_MAX, arg);
            if (arg != NULL)
            {
                float max = arg->value.Float;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MINALTITUDECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MINALTITUDECHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                float current = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MINALTITUDECHANGED_MIN, arg);
            if (arg != NULL)
            {
                float min = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MINALTITUDECHANGED_MAX, arg);
            if (arg != NULL)
            {
                float max = arg->value.Float;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MINALTITUDECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float current = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MINALTITUDECHANGED_CURRENT)).doubleValue();
            float min = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MINALTITUDECHANGED_MIN)).doubleValue();
            float max = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MINALTITUDECHANGED_MAX)).doubleValue();
        }
    }
}

Min altitude.
Only sent by fixed wings.

Triggered by SetMinAltitude.

Supported by


Circling direction

Circling direction:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGDIRECTIONCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGDIRECTIONCHANGED_VALUE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGDIRECTIONCHANGED_VALUE value = arg->value.I32;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGDIRECTIONCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGDIRECTIONCHANGED_VALUE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGDIRECTIONCHANGED_VALUE value = arg->value.I32;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGDIRECTIONCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            ARCOMMANDS_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGDIRECTIONCHANGED_VALUE_ENUM value = ARCOMMANDS_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGDIRECTIONCHANGED_VALUE_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGDIRECTIONCHANGED_VALUE));
        }
    }
}

Circling direction.
Only sent by fixed wings.

Triggered by SetCirclingDirection.

Supported by


Circling radius

Circling radius:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGRADIUSCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGRADIUSCHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                uint16_t current = arg->value.U16;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGRADIUSCHANGED_MIN, arg);
            if (arg != NULL)
            {
                uint16_t min = arg->value.U16;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGRADIUSCHANGED_MAX, arg);
            if (arg != NULL)
            {
                uint16_t max = arg->value.U16;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGRADIUSCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGRADIUSCHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                uint16_t current = arg->value.U16;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGRADIUSCHANGED_MIN, arg);
            if (arg != NULL)
            {
                uint16_t min = arg->value.U16;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGRADIUSCHANGED_MAX, arg);
            if (arg != NULL)
            {
                uint16_t max = arg->value.U16;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGRADIUSCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            short current = (short)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGRADIUSCHANGED_CURRENT)).intValue();
            short min = (short)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGRADIUSCHANGED_MIN)).intValue();
            short max = (short)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGRADIUSCHANGED_MAX)).intValue();
        }
    }
}

Circling radius.
Only sent by fixed wings.

Triggered by SetCirclingRadius.

Supported by


Circling altitude

Circling altitude:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGALTITUDECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGALTITUDECHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                uint16_t current = arg->value.U16;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGALTITUDECHANGED_MIN, arg);
            if (arg != NULL)
            {
                uint16_t min = arg->value.U16;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGALTITUDECHANGED_MAX, arg);
            if (arg != NULL)
            {
                uint16_t max = arg->value.U16;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGALTITUDECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGALTITUDECHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                uint16_t current = arg->value.U16;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGALTITUDECHANGED_MIN, arg);
            if (arg != NULL)
            {
                uint16_t min = arg->value.U16;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGALTITUDECHANGED_MAX, arg);
            if (arg != NULL)
            {
                uint16_t max = arg->value.U16;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGALTITUDECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            short current = (short)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGALTITUDECHANGED_CURRENT)).intValue();
            short min = (short)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGALTITUDECHANGED_MIN)).intValue();
            short max = (short)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGALTITUDECHANGED_MAX)).intValue();
        }
    }
}

Circling altitude.
Bounds will be automatically adjusted according to the MaxAltitude.
Only sent by fixed wings.

Triggered by SetCirclingRadius or when bounds change due to SetMaxAltitude.

Supported by


Pitch mode

Pitch mode:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_PITCHMODECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_PITCHMODECHANGED_VALUE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSETTINGSSTATE_PITCHMODECHANGED_VALUE value = arg->value.I32;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_PITCHMODECHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_PITCHMODECHANGED_VALUE, arg);
            if (arg != NULL)
            {
                eARCOMMANDS_ARDRONE3_PILOTINGSETTINGSSTATE_PITCHMODECHANGED_VALUE value = arg->value.I32;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_PITCHMODECHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            ARCOMMANDS_ARDRONE3_PILOTINGSETTINGSSTATE_PITCHMODECHANGED_VALUE_ENUM value = ARCOMMANDS_ARDRONE3_PILOTINGSETTINGSSTATE_PITCHMODECHANGED_VALUE_ENUM.getFromValue((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_PITCHMODECHANGED_VALUE));
        }
    }
}

Pitch mode.

Triggered by SetPitchMode.

Supported by


Max vertical speed

Max vertical speed:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXVERTICALSPEEDCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXVERTICALSPEEDCHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                float current = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXVERTICALSPEEDCHANGED_MIN, arg);
            if (arg != NULL)
            {
                float min = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXVERTICALSPEEDCHANGED_MAX, arg);
            if (arg != NULL)
            {
                float max = arg->value.Float;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXVERTICALSPEEDCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXVERTICALSPEEDCHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                float current = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXVERTICALSPEEDCHANGED_MIN, arg);
            if (arg != NULL)
            {
                float min = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXVERTICALSPEEDCHANGED_MAX, arg);
            if (arg != NULL)
            {
                float max = arg->value.Float;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXVERTICALSPEEDCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float current = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXVERTICALSPEEDCHANGED_CURRENT)).doubleValue();
            float min = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXVERTICALSPEEDCHANGED_MIN)).doubleValue();
            float max = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXVERTICALSPEEDCHANGED_MAX)).doubleValue();
        }
    }
}

Max vertical speed.

Triggered by SetMaxVerticalSpeed.

Supported by


Max rotation speed

Max rotation speed:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXROTATIONSPEEDCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXROTATIONSPEEDCHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                float current = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXROTATIONSPEEDCHANGED_MIN, arg);
            if (arg != NULL)
            {
                float min = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXROTATIONSPEEDCHANGED_MAX, arg);
            if (arg != NULL)
            {
                float max = arg->value.Float;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXROTATIONSPEEDCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXROTATIONSPEEDCHANGED_CURRENT, arg);
            if (arg != NULL)
            {
                float current = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXROTATIONSPEEDCHANGED_MIN, arg);
            if (arg != NULL)
            {
                float min = arg->value.Float;
            }
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXROTATIONSPEEDCHANGED_MAX, arg);
            if (arg != NULL)
            {
                float max = arg->value.Float;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXROTATIONSPEEDCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            float current = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXROTATIONSPEEDCHANGED_CURRENT)).doubleValue();
            float min = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXROTATIONSPEEDCHANGED_MIN)).doubleValue();
            float max = (float)((Double)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_MAXROTATIONSPEEDCHANGED_MAX)).doubleValue();
        }
    }
}

Max rotation speed.

Triggered by SetMaxRotationSpeed.

Supported by


Presence of hull protection

Presence of hull protection:

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_HULLPROTECTIONCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_HULLPROTECTIONCHANGED_PRESENT, arg);
            if (arg != NULL)
            {
                uint8_t present = arg->value.U8;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_HULLPROTECTIONCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_HULLPROTECTIONCHANGED_PRESENT, arg);
            if (arg != NULL)
            {
                uint8_t present = arg->value.U8;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_HULLPROTECTIONCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            byte present = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_HULLPROTECTIONCHANGED_PRESENT)).intValue();
        }
    }
}

Presence of hull protection.

Triggered by SetHullProtectionPresence.

Supported by


Outdoor mode (deprecated)

Outdoor mode (deprecated):

void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_OUTDOORCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_OUTDOORCHANGED_OUTDOOR, arg);
            if (arg != NULL)
            {
                uint8_t outdoor = arg->value.U8;
            }
        }
    }
}
void onCommandReceived (eARCONTROLLER_DICTIONARY_KEY commandKey, ARCONTROLLER_DICTIONARY_ELEMENT_t *elementDictionary, void *customData)
{
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_OUTDOORCHANGED) && (elementDictionary != NULL))
    {
        ARCONTROLLER_DICTIONARY_ARG_t *arg = NULL;
        ARCONTROLLER_DICTIONARY_ELEMENT_t *element = NULL;
        HASH_FIND_STR (elementDictionary, ARCONTROLLER_DICTIONARY_SINGLE_KEY, element);
        if (element != NULL)
        {
            HASH_FIND_STR (element->arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_OUTDOORCHANGED_OUTDOOR, arg);
            if (arg != NULL)
            {
                uint8_t outdoor = arg->value.U8;
            }
        }
    }
}
@Override
public void onCommandReceived (ARDeviceController deviceController, ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey, ARControllerDictionary elementDictionary) {
    if ((commandKey == ARCONTROLLER_DICTIONARY_KEY_ENUM.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_OUTDOORCHANGED) && (elementDictionary != null)){
        ARControllerArgumentDictionary<Object> args = elementDictionary.get(ARControllerDictionary.ARCONTROLLER_DICTIONARY_SINGLE_KEY);
        if (args != null) {
            byte outdoor = (byte)((Integer)args.get(ARFeatureARDrone3.ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_SPEEDSETTINGSSTATE_OUTDOORCHANGED_OUTDOOR)).intValue();
        }
    }
}

This message is deprecated.

Outdoor mode.