DJI Mobile SDK Documentation

      class DJIFlightController

      @interface DJIFlightController : DJIBaseComponent
      Header:DJIFlightController.h
      Inherits From:DJIBaseComponent
      Description:

      This class contains components of the flight controller and provides methods to send different commands to the flight controller. This object is available from the DJIAircraft object which is a subclass of DJIBaseProduct.

      Class Members:

      State Updates

      General
      property
      property delegate
      @property(nonatomic, weak) id<DJIFlightControllerDelegate> delegate
      Header:DJIFlightController.h
      Description:

      Flight controller delegate.

      See Also:

      DJIFlightControllerDelegate


      Sensors

      Compass
      property
      property compass
      @property(nonatomic, readonly) DJICompass *_Nullable compass
      Header:DJIFlightController.h
      Description:

      Compass object.

      See Also:

      DJICompass

      RTK Positioning
      property
      property RTK
      @property(nonatomic, readonly) DJIRTK *_Nullable RTK
      Header:DJIFlightController.h
      Description:

      RTK positioning object. Nil if the flight controller doesn't support it.

      See Also:

      DJIRTK

      IMU
      property
      property IMUCount
      @property(nonatomic, readonly) NSUInteger IMUCount
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamIMUsCount
      Description:

      Number of IMU modules in the flight controller. Most products have one IMU.

      Exceptions:

      • Phantom 4, Phantom 4 Pro, Mavic Pro, and Inspire 2 each have two IMUs
      • A3, Matrice 600, and Matrice 600 Pro each have one inner IMU and can have at most two external IMUs.
      • N3 has two inner IMUs and can have one external IMU.

      method startIMUCalibrationWithCompletion
      - (void)startIMUCalibrationWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamStartIMUCalibration
      Description:

      Starts IMU calibration. For aircraft with multiple IMUs, this method will start the calibration of all IMUs. Keep the aircraft stationary and horizontal during calibration, which will take 5 to 10 minutes. The completion block will be called once the calibration is started. Use the flightController:didUpdateIMUState method to check the execution status of the IMU calibration. It is recommended to reboot the device after IMU calibration. It is recommended to invoke rebootDroneWithCompletion after IMU calibration.

      Input Parameters:
      DJICompletionBlock completionCompletion block to check if the calibration starts successfully.
      method startIMUCalibrationForIndex:withCompletion
      - (void)startIMUCalibrationForIndex:(NSUInteger)index withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamStartIMUCalibrationWithID
      Description:

      Starts the calibration for IMU with a specific ID. Keep the aircraft stationary and horizontal during calibration, which will take 5 to 10 minutes. The completion block will be called once the calibration is started. Use the flightController:didUpdateIMUState method to check the execution status of the IMU calibration. It is recommended to reboot the device after IMU calibration.

      Input Parameters:
      NSUInteger indexThe IMU with the specific ID to calibrate.
      DJICompletionBlock completionCompletion block to check if the calibration starts successfully.
      Onboard SDK Device
      property
      property onboardSDKDevice
      @property (nonatomic, readonly, nullable) DJIOnboardSDKDevice *onboardSDKDevice
      Header:DJIFlightController.h
      Description:

      The object representing the optional onboardsdk device.

      See Also:

      DJIOnboardSDKDevice

      Gravity Center Calibration
      method
      method startGravityCenterCalibrationWithCompletion
      - (void)startGravityCenterCalibrationWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Starts gravity center calibration. Keep the aircraft hover without wind during calibration. The completion block will be called once the calibration is started. Use the flightController:didUpdateGravityCenterState method to check the execution status of the gravity center calibration.

      Input Parameters:
      DJICompletionBlock completionCompletion block to check if the calibration starts successfully.
      method stopGravityCenterCalibrationWithCompletion
      - (void)stopGravityCenterCalibrationWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Stop gravity center calibration.

      Input Parameters:
      DJICompletionBlock completionCompletion block to check if the calibration starts successfully.


      Sub Components

      Landing Gear
      property
      property landingGear
      @property(nonatomic, readonly) DJILandingGear *_Nullable landingGear
      Header:DJIFlightController.h
      Description:

      Landing Gear object. For products with movable landing gear only.

      See Also:

      DJILandingGear

      method isLandingGearMovable
      - (BOOL)isLandingGearMovable
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamIsLandingGearMovable
      Description:

      YES if landing gear is supported for the connected aircraft.

      Return:
      BOOLA boolean value.
      Simulator
      property
      property simulator
      @property(nonatomic, readonly) DJISimulator *_Nullable simulator
      Header:DJIFlightController.h
      Description:

      Simulator object.

      See Also:

      DJISimulator

      Onboard SDK Device
      method
      method isOnboardSDKAvailable
      - (BOOL)isOnboardSDKAvailable
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamIsOnboardSDKAvailable
      Description:

      Returns if the Onboard SDK feature is available on the connected product.

      Return:
      BOOLA boolean value.


      Flight Actions

      method turnOnMotorsWithCompletion
      - (void)turnOnMotorsWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamTurnOnMotors
      Description:

      Turns on the aircraft's motors. Supported by flight controller firmware 3.1.0.0 or above.

      Input Parameters:
      DJICompletionBlock completionCompletion block.
      method turnOffMotorsWithCompletion
      - (void)turnOffMotorsWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamTurnOffMotors
      Description:

      Turns off the aircraft's motors. The method can only be called when the aircraft is on the ground.

      Input Parameters:
      DJICompletionBlock completionCompletion block.
      method setUrgentStopModeEnabled:withCompletion
      - (void)setUrgentStopModeEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Enables urgent stop mode. When urgent stop mode is enabled, the motor can be stopped by pushing sticks inner/outer simultaneously at any time. Use with caution. Supported only by Phantom 4 RTK.

      Input Parameters:
      BOOL enabledYES to enable urgent stop mode.
      DJICompletionBlock completionCompletion block to receive the result.
      method getUrgentStopModeEnabledWithCompletion
      - (void)getUrgentStopModeEnabledWithCompletion:(void (^_Nullable)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Gets if urgent stop mode is enabled or not. Supported only by Phantom 4 RTK.

      Input Parameters:
      BOOL enabledYES if urgent stop mode is enabled.
      NSError *_Nullable errorEncountered error if any.
      void (^_Nullable)(BOOL enabled, NSError *_Nullable error) completionCompletion block to receive the result.
      method setESCBeepEnabled:withCompletion
      - (void)setESCBeepEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Enables ESC beeping.

      Input Parameters:
      BOOL enabledYES to enable ESC beeping.
      DJICompletionBlock completionCompletion block to receive the result.
      method getESCBeepEnabledWithCompletion
      - (void)getESCBeepEnabledWithCompletion:(void (^_Nullable)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Determines if ESC beeping is enabled.

      Input Parameters:
      BOOL enabledYES if ESC beeping is enabled.
      NSError *_Nullable errorEncountered error if any.
      void (^_Nullable)(BOOL enabled, NSError *_Nullable error) completionCompletion block to receive the result.
      method startTakeoffWithCompletion
      - (void)startTakeoffWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamStartTakeoff
      Description:

      Starts aircraft takeoff. Takeoff is considered complete when the aircraft is hovering 1.2 meters (4 feet) above the ground. Completion block is called when aircraft crosses 0.5 meters (1.6 feet). If the motors are already on, this command cannot be executed.

      Input Parameters:
      DJICompletionBlock completionCompletion block.
      method startPrecisionTakeoffWithCompletion
      - (void)startPrecisionTakeoffWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Starts aircraft precision takeoff. Precision Takeoff is considered complete when the aircraft is hovering 6 meters (20 feet) above the ground. Completion block is called when aircraft crosses 0.5 meters (1.6 feet). If the motors are already on, this command cannot be executed.
      This feature need vision assisted positioning enabled on.

      Input Parameters:
      DJICompletionBlock completionCompletion block.
      method cancelTakeoffWithCompletion
      - (void)cancelTakeoffWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamCancelTakeoff
      Description:

      Stops aircraft takeoff. If called before startTakeoffWithCompletion is complete, the aircraft will cancel takeoff (startTakeoffWithCompletion completion block will return an error) and hover at the current height.

      Input Parameters:
      DJICompletionBlock completionCompletion block.
      method startLandingWithCompletion
      - (void)startLandingWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamAutoLanding
      Description:

      Starts auto-landing of the aircraft. Returns completion block once aircraft begins to descend for auto-land.

      Input Parameters:
      DJICompletionBlock completionCompletion block.
      method cancelLandingWithCompletion
      - (void)cancelLandingWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamCancelAutoLanding
      Description:

      Stops auto-landing of the aircraft. If called before startLandingWithCompletion is complete, then the auto landing will be canceled (startLandingWithCompletion completion block will return an error) and the aircraft will hover at its current location.

      Input Parameters:
      DJICompletionBlock completionCompletion block.
      method confirmLandingWithCompletion
      - (void)confirmLandingWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamConfirmLanding
      Description:

      Confirms continuation of landing action. When the clearance between the aircraft and the ground is less than 0.3m, the aircraft will pause landing and wait for user's confirmation. Can use isLandingConfirmationNeeded in DJIFlightControllerState to check if confirmation is needed. It is supported by flight controller firmware 3.2.0.0 and above.

      Input Parameters:
      DJICompletionBlock completionCompletion block to check if confirm landing successful.
      Reboot Drone
      method
      method rebootDroneWithCompletion
      - (void)rebootDroneWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Reboot the core component of the aircraft. It is recommended to invoke this method after IMU calibration.
      For Matrice 300 RTK, reboot the aircraft.
      For Mavic Mini, DJI Mini SE, reboot the airlink.
      For Maivc Air 2, reboot the battery.
      Others, reboot the flight controller.

      Input Parameters:
      DJICompletionBlock completionCompletion block that receives the execution result.


      LED Settings

      method setLEDsEnabledSettings:withCompletion
      - (void)setLEDsEnabledSettings:(DJIFlightControllerLEDsSettings *)ledsSettings withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Turns on/off different sets of LEDs on the aircraft. All the LEDs are on by default.

      Input Parameters:
      DJIFlightControllerLEDsSettings * ledsSettingsSettings to control LEDs.
      DJICompletionBlock completionCompletion block that receives the setter execution result.
      method getLEDsEnabledSettingsWithCompletion
      - (void)getLEDsEnabledSettingsWithCompletion:(void (^)(DJIFlightControllerLEDsSettings *ledsSettings, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Determines the status of LEDs on the aircraft.

      Input Parameters:
      DJIFlightControllerLEDsSettings * ledsSettingsAn object of DJIFlightControllerLEDsSettings.
      NSError *_Nullable errorError retrieving the value.
      void (^)(DJIFlightControllerLEDsSettings *ledsSettings, NSError *_Nullable error) completionCompletion block to receive the result.


      Virtual Sticks

      method isVirtualStickControlModeAvailable
      - (BOOL)isVirtualStickControlModeAvailable
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamVirtualStickControlModeAvailable
      Description:

      Indicates whether the virtual stick control interface can be used. Virtual stick mode is only available when all of the follow requirements are met:

      Return:
      BOOLYES if virtual stick mode is available.
      method setVirtualStickModeEnabled:withCompletion
      - (void)setVirtualStickModeEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamVirtualStickControlModeEnabled
      Description:

      Enables/disables virtual stick control mode. By enabling virtual stick control mode, the aircraft can be controlled using sendVirtualStickFlightControlData:withCompletion. Not supported by Mavic Pro when using the WiFi connection.

      Input Parameters:
      BOOL enabledYES to enable virtual stick mode.
      DJICompletionBlock completionThe execution completion block with the returned execution result.
      method getVirtualStickModeEnabledWithCompletion
      - (void)getVirtualStickModeEnabledWithCompletion:(void (^_Nonnull)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamVirtualStickControlModeEnabled
      Description:

      Gets virtual stick mode status (enabled/disabled). Not supported by Mavic Pro when using the WiFi connection.

      Input Parameters:
      BOOL enabledYES if enabled.
      void (^_Nonnull)(BOOL enabled, NSError *_Nullable error) completionThe execution completion block with the returned execution result.
      NSError *_Nullable errorError (if any) of the operation.
      property isVirtualStickAdvancedModeEnabled
      @property(nonatomic, assign) BOOL isVirtualStickAdvancedModeEnabled
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamVirtualStickAdvancedControlModeEnabled
      Description:

      YES if Virtual Stick advanced mode is enabled. By default, it is NO. Assuming GPS signal is good, advanced mode will allow aircraft to compensate for wind when hovering. For the Phantom 4, collision avoidance can be enabled for virtual stick control if advanced mode is on, and collision avoidance is enabled in DJIFlightAssistant. Only supported by flight controller firmware versions 3.1.x.x or above. CAUTION: It will be reset to NO when the flight controller is reconnected.

      Control Modes
      property
      property verticalControlMode
      @property(nonatomic, assign) DJIVirtualStickVerticalControlMode verticalControlMode
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamVerticalControlMode
      Description:

      The vertical control mode for virtual stick. CAUTION: It will be reset to DJIVirtualStickVerticalControlModeVelocity when the flight controller is reconnected.

      See Also:

      DJIVirtualStickVerticalControlMode

      property rollPitchControlMode
      @property(nonatomic, assign) DJIVirtualStickRollPitchControlMode rollPitchControlMode
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamRollPitchControlMode
      Description:

      The roll and pitch control mode for virtual stick. CAUTION: It will be reset to DJIVirtualStickRollPitchControlModeAngle when the flight controller is reconnected.

      See Also:

      DJIVirtualStickRollPitchControlMode

      property yawControlMode
      @property(nonatomic, assign) DJIVirtualStickYawControlMode yawControlMode
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamYawControlMode
      Description:

      The yaw control mode for virtual stick. CAUTION: It will be reset to DJIVirtualStickYawControlModeAngle when the flight controller is reconnected.

      See Also:

      DJIVirtualStickYawControlMode

      Coordinate System
      property
      property rollPitchCoordinateSystem
      @property(nonatomic, assign) DJIVirtualStickFlightCoordinateSystem rollPitchCoordinateSystem
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamRollPitchCoordinateSystem
      Description:

      The coordinate system for virtual stick. CAUTION: It will be reset to DJIVirtualStickFlightCoordinateSystemGround when the flight controller is reconnected.

      See Also:

      DJIVirtualStickFlightCoordinateSystem

      method sendVirtualStickFlightControlData:withCompletion
      - (void)sendVirtualStickFlightControlData:(DJIVirtualStickFlightControlData)controlData
      withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamSendVirtualStickFlightControlData
      Description:

      Sends flight control data using virtual stick commands. The isVirtualStickControlModeAvailable method must return YES to use virtual stick commands. Virtual stick commands should be sent to the aircraft between 5 Hz and 25 Hz. If virtual stick commands are not sent frequently enough, the aircraft may regard the connection as broken, which will cause the aircraft to hover in place until the next command comes through.

      Input Parameters:
      DJIVirtualStickFlightControlData controlDataFlight control data.
      DJICompletionBlock completionCompletion block.


      Flight Assistance

      Collision Avoidance and Vision Positioning
      property
      property flightAssistant
      @property(nonatomic, readonly) DJIFlightAssistant *_Nullable flightAssistant
      Header:DJIFlightController.h
      Description:

      Intelligent flight assistant. Nil if the flight controller doesn't support it.

      See Also:

      DJIFlightAssistant

      Access Locker
      property
      property accessLocker
      @property(nonatomic, readonly) DJIAccessLocker *accessLocker
      Header:DJIFlightController.h
      Description:

      Gets the instance of the access locker. It is used to encapsulate the access protection features on the aircraft.

      See Also:

      DJIAccessLocker

      Flight Orientation Mode
      method
      method setFlightOrientationMode:withCompletion
      - (void)setFlightOrientationMode:(DJIFlightOrientationMode)type
      withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamFlightOrientationMode
      Description:

      Sets the aircraft flight orientation relative to the Aircraft Heading, Course Lock, or Home Lock. See the Flight Controller User Guide for more information about flight orientation. Not supported by Mavic Mini, DJI Mini 2, DJI Mini SE and Mavic Air 2, DJI Air 2S.

      Input Parameters:
      DJIFlightOrientationMode typeThe orientation mode.
      DJICompletionBlock completionCompletion block.
      method lockCourseUsingCurrentHeadingWithCompletion
      - (void)lockCourseUsingCurrentHeadingWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamLockCourseUsingCurrentHeading
      Description:

      Locks the current heading of the aircraft as the Course Lock. Used when Flight Orientation Mode is DJIFlightOrientationModeCourseLock.

      Input Parameters:
      DJICompletionBlock completionCompletion block.
      method setTripodModeEnabled:withCompletion
      - (void)setTripodModeEnabled:(BOOL)enabled
      withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamTripodModeEnabled
      Description:

      Enables/disables tripod mode. Tripod Mode drops the aircraft's maximum speed to 2.2mph (3.6kph), and significantly reduces the control stick sensitivity of the remote controller to give the user the precision needed for accurate framing. When tripod mode is enabled, missions, terrain follow mode, course lock, and home lock are not allowed. Tripod mode is not allowed if the aircraft is running a mission. If GPS or vision positioning aren't available, tripod mode cannot be enabled. If the GPS and/or the vision system is providing the flight controller with velocity information, the aircraft will be able to automatically compensate for wind. If however, position information is not available, manual intervention will be required. User should beware that any manual compensation will be limited due to the reduced maximum velocity and sensitivity. If GPS and vision position become unavailable while in tripod mode, it is advisable to alert the user and disable Tripod Mode. Not supported by Mavic 2 Enterprise Advanced.

      Input Parameters:
      BOOL enabledYES to enable tripod mode.
      DJICompletionBlock completionCompletion block that receives the setter result.
      method getTripodModeEnabledWithCompletion
      - (void)getTripodModeEnabledWithCompletion:(void (^_Nonnull)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamTripodModeEnabled
      Description:

      Gets tripod mode status (enabled/disabled). It is supported by Mavic Pro, Mavic Mini, DJI Mini 2, DJI Mini SE.

      Input Parameters:
      BOOL enabledYes if tripod mode is enabled.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(BOOL enabled, NSError *_Nullable error) completionCompletion block to receive the result.
      method setCinematicModeEnabled:withCompletion
      - (void)setCinematicModeEnabled:(BOOL)enabled
      withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Enables/disables cinematic mode. In Cinematic Mode, you can shoot more stable and smooth photos and videos. Aircraft yaw speed will be lower and braking distance will be longer. It's only supported by Mavic Pro, Spark, Mavic 2 Zoom and Mavic 2 Pro.

      Input Parameters:
      BOOL enabledYES to enable cinematic mode.
      DJICompletionBlock completionCompletion block to receive the result.
      method getCinematicModeEnabledWithCompletion
      - (void)getCinematicModeEnabledWithCompletion:(void (^_Nonnull)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Gets cinematic mode status (enabled/disabled). It's only supported by Mavic Pro, Spark, Mavic 2 Zoom and Mavic 2 Pro.

      Input Parameters:
      BOOL enabledYES to enable cinematic mode.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(BOOL enabled, NSError *_Nullable error) completionCompletion block to receive the result.
      method setCinematicBrakeSensitivity:withCompletion
      - (void)setCinematicBrakeSensitivity:(NSUInteger)brakeSensitivity withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Adjusts the braking sensitivity when cinematic mode is enabled. Higher sensitivity can shorten the braking distance in cinematic mode. It's supported by Mavic Pro, Spark, Mavic 2 Zoom and Mavic 2 Pro.

      Input Parameters:
      NSUInteger brakeSensitivityBrake sensitivity in cinematic mode.
      DJICompletionBlock completionCompletion block to receive the result.
      method getCinematicBrakeSensitivityWithCompletion
      - (void)getCinematicBrakeSensitivityWithCompletion:(void (^_Nonnull)(NSUInteger brakeSensitivity, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Gets the braking sensitivity when cinematic mode is enabled. Higher sensitivity can shorten the braking distance in cinematic mode. It's supported by Mavic Pro, Spark, Mavic 2 Zoom and Mavic 2 Pro.

      Input Parameters:
      NSUInteger brakeSensitivityBrake sensitivity in cinematic mode.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSUInteger brakeSensitivity, NSError *_Nullable error) completionCompletion block to receive the result.
      method setCinematicYawSpeed:withCompletion
      - (void)setCinematicYawSpeed:(NSUInteger)yawSpeed withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Adjusts the aircraft's yaw speed when cinematic mode is enabled. It's supported by Mavic Pro, Spark, Mavic 2 Zoom and Mavic 2 Pro.

      Input Parameters:
      NSUInteger yawSpeedThe aircraft's yaw speed in cinematic mode.
      DJICompletionBlock completionCompletion block to receive the result.
      method getCinematicYawSpeedWithCompletion
      - (void)getCinematicYawSpeedWithCompletion:(void (^_Nonnull)(NSUInteger yawSpeed, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Gets the aircraft's yaw speed when cinematic mode is enabled. It's supported by Mavic Pro, Spark, Mavic 2 Zoom and Mavic 2 Pro.

      Input Parameters:
      NSUInteger yawSpeedThe aircraft's yaw speed in cinematic mode.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSUInteger yawSpeed, NSError *_Nullable error) completionCompletion block to receive the result.
      method setTerrainFollowModeEnabled:withCompletion
      - (void)setTerrainFollowModeEnabled:(BOOL)enabled
      withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamTerrainFollowModeEnabled
      Description:

      Enable/disable terrain follow mode. The aircraft uses height information gathered by the onboard ultrasonic system and its downward facing cameras to keep flying at the same height above the ground.

      Input Parameters:
      BOOL enabledThe execution callback with the returned value(s).
      DJICompletionBlock completionCompletion block that receives the setter result.
      method getTerrainFollowModeEnabledWithCompletion
      - (void)getTerrainFollowModeEnabledWithCompletion:(void (^_Nonnull)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamTerrainFollowModeEnabled
      Description:

      Gets terrain mode status (enabled/disabled).

      Input Parameters:
      BOOL enabledYES if terrain follow mode is enabled.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(BOOL enabled, NSError *_Nullable error) completionCompletion block to receive the result.
      Advanced Control Mode
      method
      method setControlMode:withCompletion
      - (void)setControlMode:(DJIFlightControllerControlMode)mode withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamControlMode
      Description:

      Sets the control mode of the flight controller. It is highly recommended you keep the default value of DJIFlightControllerControlModeSmart. See DJIFlightControllerControlMode for details. Only supported by stand-alone A3.

      Input Parameters:
      DJIFlightControllerControlMode modeControl mode to set.
      DJICompletionBlock completionCompletion block that receives the setter execution result.
      method getControlModeWithCompletion
      - (void)getControlModeWithCompletion:(void (^_Nonnull)(DJIFlightControllerControlMode mode, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamControlMode
      Description:

      Gets the control mode of the flight controller.

      Input Parameters:
      DJIFlightControllerControlMode modeThe value of the DJIFlightControllerControlMode Enum.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIFlightControllerControlMode mode, NSError *_Nullable error) completionCompletion block to receive the result.
      method setAutoQuickSpinEnabled:withCompletion
      - (void)setAutoQuickSpinEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamAutoQuickSpinEnabled
      Description:

      Enable/disable Auto Quick Spin. When the gimbal reaches a yaw movement limit, the aircraft will automatically rotate 360 degrees to unwind the gimbal, allowing it to continue moving in the yaw direction. This method is only available when the aircraft is flying at least 3m above the ground. It is only supported by Inspire 2.

      Input Parameters:
      BOOL enabledYES to enable Auto Quick Spin.
      DJICompletionBlock completionCompletion block that receives the setter result.
      method getAutoQuickSpinEnabledWithCompletion
      - (void)getAutoQuickSpinEnabledWithCompletion:(void (^_Nonnull)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamAutoQuickSpinEnabled
      Description:

      Gets current Auto Quick Spin mode (enabled/disabled). It is only supported by Inspire 2.

      Input Parameters:
      BOOL enabledYES if Auto Quick Spin is enabled.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(BOOL enabled, NSError *_Nullable error) completionCompletion block to receive the result.
      Aircraft Heading Turning Speed
      method
      method setAircraftHeadingTurningSpeed:onMode:withCompletion
      - (void)setAircraftHeadingTurningSpeed:(NSInteger)speed
      onMode:(DJIRCFlightModeSwitch)mode
      withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Setting a larger value increases the yaw speed of the aircraft when the control sticks are pressed. The settable range of speed changes according to the mode. When the mode is normal, the speed range is (20,90). When the mode is sport, the speed range is (20,130). When the mode is tripod, the speed range is (20,30). Only supported by Mavic Air 2, DJI Air 2S.

      Input Parameters:
      NSInteger speedThe speed to set for aircraft heading turning.
      DJIRCFlightModeSwitch modeThe mode that the setting will be applied to.
      DJICompletionBlock completionCompletion block to receive the result.
      method getAircraftHeadingTurningSpeedOnMode:withCompletion
      - (void)getAircraftHeadingTurningSpeedOnMode:(DJIRCFlightModeSwitch)mode
      withCompletion:(void (^_Nonnull)(NSInteger speed, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Gets the heading turning speed of the aircraft according to the mode. Only supported by Mavic Air 2, DJI Air 2S.

      Input Parameters:
      DJIRCFlightModeSwitch modeThe mode to query.
      NSInteger speedGets the heading turing speed.
      void (^_Nonnull)(NSInteger speed, NSError *_Nullable error) completionThe completion block that receives the execution result.
      Aircraft Heading Turning Smoothness
      method
      method setAircraftHeadingTurningSmoothness:onMode:withCompletion
      - (void)setAircraftHeadingTurningSmoothness:(NSInteger)smoothFactor
      onMode:(DJIRCFlightModeSwitch)mode
      withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Setting a larger angle increases the yaw buffer when the control sticks are pressed. The value should be in the range [1, 100]. Only supported by Mavic Air 2, DJI Air 2S.

      Input Parameters:
      NSInteger smoothFactorThe smoothness that the setting will be applied to.
      DJIRCFlightModeSwitch modeThe mode that the setting will be applied to.
      DJICompletionBlock completionCompletion block to receive the result.
      method getAircraftHeadingTurningSmoothnessOnMode:withCompletion
      - (void)getAircraftHeadingTurningSmoothnessOnMode:(DJIRCFlightModeSwitch)mode
      withCompletion:(void (^_Nonnull)(NSInteger smoothFactor, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Gets the smoothness of the aircraft heading turn according to the mode. Only supported by Mavic Air 2, DJI Air 2S.

      Input Parameters:
      DJIRCFlightModeSwitch modeThe mode to query.
      NSInteger smoothFactorGets the smoothness value.
      void (^_Nonnull)(NSInteger smoothFactor, NSError *_Nullable error) completionThe completion block that receives the execution result.
      method setPropellerCageProtectionEnabled:withCompletion
      - (void)setPropellerCageProtectionEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Do not turn on the Propeller Cage switch if propeller cages are not mounted. By enabling the Propeller Cage switch, you will set the Force Landing battery level to 15% and disable Wind Check and Propeller Check. When propeller cages are installed, no other accessories (except for official ND filters) can be attached. Only supported by Mavic Mini, DJI Mini 2, DJI Mini SE.

      Input Parameters:
      BOOL enabledYES to enable propeller cage protection.
      DJICompletionBlock completionCompletion block that receives the execution result.
      method getPropellerCageProtectionEnabled
      - (void)getPropellerCageProtectionEnabled:(void (^)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Gets whether the propeller cage switch is turned on.

      Input Parameters:
      BOOL enabledYES if the propeller cage protection is enabled.
      NSError *_Nullable errorError if there is any.
      void (^)(BOOL enabled, NSError *_Nullable error) completionCompletion block that receives the execution result.
      Attitude Flight Mode
      method
      method toggleAttitudeFlightMode:withCompletion
      - (void)toggleAttitudeFlightMode:(BOOL)isOpen withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      YES to change the Tripod(T) mode toggle to Attitude mode toggle from the remote controller. You should called setMultipleFlightModeEnabled:withCompletion to enable multiple flight mode first, otherwise this interfaces take no effect. if this mode is enabled, once you switch the mode toggle on remote controller to Tripod(T) mode, aircraft will enter Attitude mode, in this mode, aircraft is easily distured and drifts horizontally in consequence, you have to manully hover the aircraft. Also, the active braking system is inactive. It is supported only by Matrice 300 RTK.

      Input Parameters:
      BOOL isOpenYES to change the Tripod(T) mode toggle to Attitude mode toggle from the remote controller.
      method getIsAttitudeFlightModeOpen
      - (void)getIsAttitudeFlightModeOpen:(void (^_Nonnull)(BOOL isAttitudeFlightModeOpen, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      YES if custom the Tripod(T) mode to Attitude mode on the remote controller is enabled. It is supported only by Matrice 300 RTK.

      method setLockTakeoffWithoutGPSEnabled:withCompletion
      - (void)setLockTakeoffWithoutGPSEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      When GPS signal low, aircraft unable to auto hover and takeoff restricted. If you want to unlock takeoff without GPS , ensure there no people or obstacles within 2 m around the aircraft, and pay close attention to operating the remote controller at all times to avoid collisions.

      Input Parameters:
      BOOL enabledNO to unlock takeoff without GPS.
      DJICompletionBlock completionCompletion block that receives the execution result.
      method getLockTakeoffWithoutGPSEnabledWithCompletion
      - (void)getLockTakeoffWithoutGPSEnabledWithCompletion:(void (^_Nullable)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Return NO if unlock takeoff without GPS.

      Input Parameters:
      BOOL enabledReturn NO if unlock takeoff without GPS.
      method setCoordinatedTurnEnabled:withCompletion
      - (void)setCoordinatedTurnEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Enables the coordinated turn. Improves aerodynamic efficiency. The aircraft is flying in the direction of the turn, without sideslipping. Only supported by M300 RTK.

      Input Parameters:
      BOOL enabledYES to enable the coordinated turn.
      DJICompletionBlock completionCompletion block that receives the execution result.
      method getCoordinatedTurnEnabledWithCompletion
      - (void)getCoordinatedTurnEnabledWithCompletion:(void (^_Nonnull)(BOOL enabled, NSError * _Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Get whether the coordinated turn switch is on. Only supported by M300 RTK.

      Input Parameters:
      BOOL enabledYES if coordinated turn is enabled.
      NSError * _Nullable errorError if there is any.
      void (^_Nonnull)(BOOL enabled, NSError * _Nullable error) completionCompletion block that receives the execution result.
      Navigation Satellite System
      method
      method setNavigationSatelliteSystem:withCompletion
      - (void)setNavigationSatelliteSystem:(DJINavigationSatelliteSystem)system withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      The selection of satellite positioning system is only supported when the RTK positioning function is turned off, and cannot be modified in the air. If RTK positioning function is turned on, aircraft uses GPS, GLONASS, Galileo, and BDS data to determine location. Only supported by M300 RTK.

      Input Parameters:
      DJINavigationSatelliteSystem systemNavigation satellite system.
      DJICompletionBlock completionCompletion block that receives the execution result.
      method getNavigationSatelliteSystemWithCompletion
      - (void)getNavigationSatelliteSystemWithCompletion:(void (^_Nonnull)(DJINavigationSatelliteSystem system, NSError * _Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Get the navigation satellite system. Only supported by M300 RTK.

      Input Parameters:
      DJINavigationSatelliteSystem systemNavigation satellite system.
      NSError * _Nullable errorError if there is any.
      void (^_Nonnull)(DJINavigationSatelliteSystem system, NSError * _Nullable error) completionCompletion block that receives the execution result.
      Flight Limitation
      method
      method setMaxFlightHeight:withCompletion
      - (void)setMaxFlightHeight:(NSUInteger)maxHeight withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamMaxFlightHeight
      Description:

      Sets the maximum flight height limitation of the aircraft. The maxHeight value must be in the range [20, 500] m.

      Input Parameters:
      NSUInteger maxHeightMaximum height of the aircraft.
      DJICompletionBlock completionCompletion block.
      method getMaxFlightHeightWithCompletion
      - (void)getMaxFlightHeightWithCompletion:(void (^_Nonnull)(NSUInteger height, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamMaxFlightHeight
      Description:

      Gets the maximum flight height limitation of the aircraft.

      Input Parameters:
      NSUInteger heightMaximum flight height of the aircraft.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSUInteger height, NSError *_Nullable error) completionCompletion block to receive the result.
      method setMaxFlightRadius:withCompletion
      - (void)setMaxFlightRadius:(NSUInteger)maxRadius withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamMaxFlightRadius
      Description:

      Sets the maximum flight radius limitation of the aircraft. The radius is calculated from the home point. The maxRadius value must be in the range [15, 8000] m.

      Input Parameters:
      NSUInteger maxRadiusMaximum flight radius of the aircraft.
      DJICompletionBlock completionCompletion block.
      method getMaxFlightRadiusWithCompletion
      - (void)getMaxFlightRadiusWithCompletion:(void (^_Nonnull)(NSUInteger radius, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamMaxFlightRadius
      Description:

      Gets the maximum flight radius limitation of the aircraft.

      Input Parameters:
      NSUInteger radiusMaximum flight radius of the aircraft.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSUInteger radius, NSError *_Nullable error) completionCompletion block to receive the result.
      method setMaxFlightRadiusLimitationEnabled:withCompletion
      - (void)setMaxFlightRadiusLimitationEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamMaxFlightRadiusEnabled
      Description:

      Sets whether the maximum flight radius limitation is enabled. If enabled is NO, there is no maximum flight radius limitation.

      Input Parameters:
      BOOL enabledMaximum flight radius limitation is enabled.
      DJICompletionBlock completionCompletion block.
      method getMaxFlightRadiusLimitationEnabledWithCompletion
      - (void)getMaxFlightRadiusLimitationEnabledWithCompletion:(void (^_Nonnull)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamMaxFlightRadiusEnabled
      Description:

      Gets the maximum flight radius limitation status (enabled/disabled).

      Input Parameters:
      BOOL enabledYES if the maximum flight radius limitation is enabled.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(BOOL enabled, NSError *_Nullable error) completionCompletion block to receive the result.


      Home

      method startGoHomeWithCompletion
      - (void)startGoHomeWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamGoHome
      Description:

      The aircraft will start to go home. The completion block will return execution result once this method is invoked.

      Input Parameters:
      DJICompletionBlock completionCompletion block.
      method cancelGoHomeWithCompletion
      - (void)cancelGoHomeWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamCancelGoHome
      Description:

      The aircraft will stop going home and will hover in place.

      Input Parameters:
      DJICompletionBlock completionCompletion block.
      method setHomeLocation:withCompletion
      - (void)setHomeLocation:(CLLocation *)homeLocation
      withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamHomeLocation
      Description:

      Sets the home location of the aircraft. The home location is where the aircraft returns when commanded by startGoHomeWithCompletion, when its signal is lost or when the battery is below the lowBatteryWarning threshold. The user should be careful setting a new home point location, as sometimes the product will not be under user control when returning home. A home location is valid if it is within 30m of one of the following:

      • initial take-off location
      • aircraft's current location
      • current mobile location with at least kCLLocationAccuracyNearestTenMeters accuracy level
      • current remote controller's location as shown by RC GPS.


      Note: If setting home point around mobile location, before calling this method, the locationServicesEnabled must be true in CLLocationManager, the NSLocationWhenInUseUsageDescription or NSLocationAlwaysUsageDescription key needs to be specified in the applications Info.plist and the requestWhenInUseAuthorization or requestAlwaysAuthorization method of CLLocationManager object needs to be called to get the user's permission to access location services.

      Input Parameters:
      CLLocation * homeLocationHome location latitude and longitude in degrees.
      DJICompletionBlock completionCompletion block.
      method setHomeLocationUsingAircraftCurrentLocationWithCompletion
      - (void)setHomeLocationUsingAircraftCurrentLocationWithCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamHomeLocationUsingCurrentAircraftLocation
      Description:

      Sets the home location of the aircraft to the current location of the aircraft. See setHomeLocation:withCompletion for details on home point use.

      Input Parameters:
      DJICompletionBlock completionCompletion block.
      method getHomeLocationWithCompletion
      - (void)getHomeLocationWithCompletion:(void (^_Nonnull)(CLLocation *_Nullable homeLocation, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamHomeLocation
      Description:

      Gets the home point of the aircraft.

      Input Parameters:
      CLLocation *_Nullable homeLocationThe CLLocationCoordinate2D Struct.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(CLLocation *_Nullable homeLocation, NSError *_Nullable error) completionCompletion block to receive the result.
      method setGoHomeHeightInMeters:withCompletion
      - (void)setGoHomeHeightInMeters:(NSUInteger)height withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamGoHomeHeightInMeters
      Description:

      Sets the minimum altitude, relative to where the aircraft took off, at which the aircraft must be before going home. This can be useful when the user foresees obstacles in the aircraft's flight path. If the aircraft's current altitude is higher than the minimum go home altitude, it will go home at its current altitude. The valid range for the altitude is from 20m to 500m. But if the aircraft is M300 RTK, the limit can beyond 500m.

      Input Parameters:
      NSUInteger heightThe aircraft's default go home altitude.
      DJICompletionBlock completionCompletion block.
      method getGoHomeHeightInMetersWithCompletion
      - (void)getGoHomeHeightInMetersWithCompletion:(void (^_Nonnull)(NSUInteger height, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamGoHomeHeightInMeters
      Description:

      Gets the minimum altitude (relative to the take-off location in meters) at which the aircraft must be before going home.

      Input Parameters:
      NSUInteger heightThe minimum altitude.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSUInteger height, NSError *_Nullable error) completionCompletion block to receive the result.


      Fail Safes

      method setConnectionFailSafeBehavior:withCompletion
      - (void)setConnectionFailSafeBehavior:(DJIConnectionFailSafeBehavior)behavior
      withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamConnectionFailSafeBehavior
      Description:

      Sets the FailSafe action for when the connection between remote controller and aircraft is lost. It is supported by Mavic Mini, DJI Mini 2, DJI Mini SE and Maivic Air 2.

      Input Parameters:
      DJIConnectionFailSafeBehavior behaviorThe DJIConnectionFailSafeBehavior object.
      DJICompletionBlock completionCompletion block to receive the result.
      method getConnectionFailSafeBehaviorWithCompletion
      - (void)getConnectionFailSafeBehaviorWithCompletion:(void (^_Nonnull)(DJIConnectionFailSafeBehavior behavior, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamConnectionFailSafeBehavior
      Description:

      Gets the FailSafe action for when the connection between remote controller and aircraft is lost.

      Input Parameters:
      DJIConnectionFailSafeBehavior behaviorThe value of the DJIConnectionFailSafeBehavior Enum.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIConnectionFailSafeBehavior behavior, NSError *_Nullable error) completionCompletion block to receive the result.
      method setLowBatteryWarningThreshold:withCompletion
      - (void)setLowBatteryWarningThreshold:(uint8_t)percent
      withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamLowBatteryWarningThreshold
      Description:

      Sets the low battery warning threshold as a percentage. The percentage must be in the range of [15, 50]. It is not supported by Mavic Mini, DJI Mini 2, DJI Mini SE, Mavic Air 2 and DJI Air 2S.

      Input Parameters:
      uint8_t percentLow battery warning percentage.
      DJICompletionBlock completionCompletion block.
      method getLowBatteryWarningThresholdWithCompletion
      - (void)getLowBatteryWarningThresholdWithCompletion:(void (^_Nonnull)(uint8_t percent, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamLowBatteryWarningThreshold
      Description:

      Gets the low battery warning threshold as a percentage.

      Input Parameters:
      uint8_t percentThe go home battery percentage threshold.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(uint8_t percent, NSError *_Nullable error) completionCompletion block to receive the result.
      method setSeriousLowBatteryWarningThreshold:withCompletion
      - (void)setSeriousLowBatteryWarningThreshold:(uint8_t)percent
      withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamSeriousLowBatteryWarningThreshold
      Description:

      Sets the serious low battery warning threshold as a percentage. The minimum value is 10. The maximum value is value from getLowBatteryWarningThresholdWithCompletion minus 5. It is supported by Mavic Mini, DJI Mini 2, DJI Mini SE.

      Input Parameters:
      uint8_t percentCritically low battery warning percentage.
      DJICompletionBlock completionCompletion block.
      method getSeriousLowBatteryWarningThresholdWithCompletion
      - (void)getSeriousLowBatteryWarningThresholdWithCompletion:(void (^_Nonnull)(uint8_t percent, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamSeriousLowBatteryWarningThreshold
      Description:

      Gets the serious low battery warning threshold in percentage.

      Input Parameters:
      void (^_Nonnull)(uint8_t percent, NSError *_Nullable error) completionThe completion block with the value returned
      uint8_t percentBattery threshold percentage
      NSError *_Nullable errorError message
      method setSmartReturnToHomeEnabled:withCompletion
      - (void)setSmartReturnToHomeEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Enables/disables Smart Return-To-Home (RTH) feature. When it is enabled, aircraft will request to go home when remaining battery is only enough for completing the go-home action. For Mavic Mini, DJI Mini 2, DJI Mini SE, the aircraft will return to home point when the remaning battery is low.

      Input Parameters:
      BOOL enabledYES to enable smart RTH.
      DJICompletionBlock completionCompletion block that receives the setter execution result.
      method getSmartReturnToHomeEnabledWithCompletion
      - (void)getSmartReturnToHomeEnabledWithCompletion:(void (^)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Determines whether Smart Return-To-Home (RTH) feature is enabled or not. When it is enabled, aircraft will request to go home when remaining battery is only enough for completing the go-home action.

      Input Parameters:
      BOOL enabledYES if Smart RTH is enabled.
      NSError *_Nullable errorError retrieving the value.
      void (^)(BOOL enabled, NSError *_Nullable error) completionCompletion block that receives the setter execution result.
      method confirmSmartReturnToHomeRequest:withCompletion
      - (void)confirmSmartReturnToHomeRequest:(BOOL)confirmed withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Confirms or cancels the Smart Return-To-Home (RTH) request. When Smart RTH is enabled, the aircraft will request to go home when the battery is only enough for going home. Before executing the go-home action, the aircraft will wait for the confirmation from users with 10 seconds count-down. If the "confirmed" parameter is NO, the request is canceled and the aircraft will not execute go-home action. Otherwise, go-home action will start. Smart RTH will be triggered only once during the same flight. Flight controller with firmware version lower than 3.0.0.0 does not support confirming the Smart RTH request. User can either cancel the request or wait for the countdown to start go-home action. It is supported by Mavic Mini, DJI Mini 2, DJI Mini SE, DJI Air 2S and Mavic Air 2.

      Input Parameters:
      BOOL confirmedYES to confirm the request and the aircraft will start go-home immediately.
      DJICompletionBlock completionCompletion block to receive the result.


      Flight Mode

      method getRCSwitchFlightModeMappingWithCompletion
      - (void)getRCSwitchFlightModeMappingWithCompletion:(void (^_Nonnull)(NSArray<NSNumber *> *_Nullable mapping, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamFCControlChannel0Mapping, DJIFlightControllerKey.DJIFlightControllerParamFCControlChannel1Mapping, DJIFlightControllerKey.DJIFlightControllerParamFCControlChannel2Mapping
      Description:

      Gets the mapping between the flight modes and the flight mode switch positions on the remote controller. Elements 0, 1, and 2 of the returned array map to DJIRCFlightModeSwitchOne, DJIRCFlightModeSwitchTwo, and DJIRCFlightModeSwitchThree of the flightModeSwitch. The value of each Enum item represents the corresponding value of the DJIFlightControllerRemoteControllerFlightMode Enum representing the flight mode.
      The mapping is fixed for the Phantom series, Inspire series, Mavic Pro, and M100. For N3, A3, Matrice 600, and Matrice 600 Pro the mapping is firmware dependent. With firmware version 3.2.11.0 or above, the mapping can be customized in DJI Assistant 2.

      Input Parameters:
      NSArray<NSNumber *> *_Nullable mappingThe array of the NSNumber.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSArray<NSNumber *> *_Nullable mapping, NSError *_Nullable error) completionCompletion block to receive the result.
      method setMultipleFlightModeEnabled:withCompletion
      - (void)setMultipleFlightModeEnabled:(BOOL)enabled
      withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Enables/disables multiple-flight mode. When multiple-flight mode is enabled, user can change the aircraft's mode to P/F/A/S mode by toggling the switch on the remote controller. If it is disabled, the aircraft will be in P mode.

      Input Parameters:
      BOOL enabledYES to enable multiple-flight mode.
      DJICompletionBlock completionCompletion block that receives the execution result.
      method getMultipleFlightModeEnabledWithCompletion
      - (void)getMultipleFlightModeEnabledWithCompletion:(void (^)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Determines whether multiple-flight mode is enabled. When multiple-flight mode is enabled, user can change the aircraft's mode to P/F/A/S mode by toggling the switch on the remote controller. If it is disabled, the aircraft will be in P mode.

      Input Parameters:
      BOOL enabledYES if the multiple-flight mode is enabled.
      NSError *_Nullable errorError retrieving the value.
      void (^)(BOOL enabled, NSError *_Nullable error) completionCompletion block that receives the execution result.
      Novice Mode Enabled
      method
      method setNoviceModeEnabled:withCompletion
      - (void)setNoviceModeEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Enables novice mode. When novice mode is enabled, the flight speed will become slower and less responsive handling. For Phantom 4 Pro, enabling novice mode will enable the infrared time-of-flight (TOF) sensors on the left and right.

      Input Parameters:
      BOOL enabledYES to enable novice mode.
      DJICompletionBlock completionCompletion block that receives the execution result.
      method getNoviceModeEnabledWithCompletion
      - (void)getNoviceModeEnabledWithCompletion:(void (^_Nonnull)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Determines whether novice mode is enabled or not. If novice mode is enabled, the flight speed is slower and less responsive handling. For Phantom 4 Pro, enabling novice mode will enable the infrared time-of-flight (TOF) sensors on the left and right.

      Input Parameters:
      BOOL enabledYES if novice mode is enabled.
      NSError *_Nullable errorError if there is any.
      void (^_Nonnull)(BOOL enabled, NSError *_Nullable error) completionCompletion block that receives the execution result.
      Power Supply Port Enabled
      method
      method setPowerSupplyPortEnabled:withCompletion
      - (void)setPowerSupplyPortEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIFlightController.h
      Description:

      Enables the power supply port. It is only supported by M200 series and M200 series v2.

      Input Parameters:
      BOOL enabledYES if power supply port is enabled.
      DJICompletionBlock completionCompletion block that receives the execution result.
      method getPowerSupplyPortEnabledWithCompletion
      - (void)getPowerSupplyPortEnabledWithCompletion:(void (^)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIFlightController.h
      Description:

      Determines whether the power supply port is enabled or not. It is only supported by M200 series and M200 series v2.

      Input Parameters:
      BOOL enabledYES if the power supply port is enabled.
      NSError *_Nullable errorError if there is any.
      void (^)(BOOL enabled, NSError *_Nullable error) completionCompletion block that receives the execution result.


      enum DJINavigationSatelliteSystem
      typedef NS_ENUM (uint8_t, DJINavigationSatelliteSystem)
      Header:DJIFlightControllerBaseTypes.h
      Description:

      This enum defines the navigation satellite system currently being used.

      Enum Members:
      DJINavigationSatelliteSystemGPSAndGLONASSUsing GSP and GLONSS satellite data.
      DJINavigationSatelliteSystemBeiDouOnly use Beidou satellite navigation system.
      State Updates
      protocol
      protocol DJIFlightControllerDelegate
      @protocol DJIFlightControllerDelegate <NSObject>
      Header:DJIFlightController.h
      Inherits From:NSObject
      Description:

      This protocol provides delegate methods to update the flight controller's current state.

      Protocol Methods:

      Protocol Method

      method flightController:didUpdateState
      @optional
      - (void)flightController:(DJIFlightController *_Nonnull)fc didUpdateState:(DJIFlightControllerState *_Nonnull)state
      Header:DJIFlightController.h
      Description:

      Called when the flight controller's current state data has been updated. This method is called 10 times per second.

      Input Parameters:
      DJIFlightController *_Nonnull fcInstance of the flight controller for which the data will be updated.
      DJIFlightControllerState *_Nonnull stateCurrent state of the flight controller.
      method flightController:didUpdateIMUState
      @optional
      - (void)flightController:(DJIFlightController *_Nonnull)fc didUpdateIMUState:(DJIIMUState *_Nonnull)imuState
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamIMUState
      Description:

      Called when the flight controller pushes an IMU state update. The callback method would not be called if the aircraft is flying.

      Input Parameters:
      DJIFlightController *_Nonnull fcInstance of the flight controller for which the data will be updated.
      DJIIMUState *_Nonnull imuStateDJIIMUState object.
      method flightController:didUpdateGravityCenterState
      @optional
      - (void)flightController:(DJIFlightController *_Nonnull)fc didUpdateGravityCenterState:(DJIGravityCenterState *_Nonnull)gravityCenterState
      Header:DJIFlightController.h
      Description:

      Called when the flight controller pushes a gravity center state update.

      Input Parameters:
      DJIFlightController *_Nonnull fcInstance of the flight controller for which the data will be updated.
      DJIGravityCenterState *_Nonnull gravityCenterStateDJIGravityCenterState object.
      method flightController:didUpdateAirSenseSystemInformation
      @optional
      - (void)flightController:(DJIFlightController *_Nonnull)fc didUpdateAirSenseSystemInformation:(DJIAirSenseSystemInformation *_Nonnull)information
      Header:DJIFlightController.h
      Description:

      Called when the flight controller pushes a DJI AirSense system update. Only supported by M200 series, M200 V2 series, M300 RTK series, Mavic 2 Pro, Mavic 2 Zoom, Mavic 2 Enterprise, Mavic 2 Enterprise Dual.

      Input Parameters:
      DJIFlightController *_Nonnull fcInstance of the flight controller for which the data will be updated.
      DJIAirSenseSystemInformation *_Nonnull informationDJI AirSense system information.
      Current State
      class
      Gravity Center State
      class
      Warning Status Item
      class
      Sensors
      class
      class
      Access Locker
      class
      Onboard SDK Device
      class
      struct DJIVirtualStickFlightControlData
      typedef struct
      {
      float pitch;
      float roll;
      float yaw;
      float verticalThrottle;
      } DJIVirtualStickFlightControlData
      Header:DJIFlightControllerBaseTypes.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamSendVirtualStickFlightControlData
      Description:

      Contains all the virtual stick control data needed to move the aircraft in all directions.

      Struct Members:
      float pitchGets aircraft's velocity (m/s) along the y-axis or angle value (in degrees) for pitch. Use DJIVirtualStickRollPitchControlMode to set the velocity or angle mode. Note that the argument has different meanings in different coordinate systems. See the Flight Controller User Guide for more information.
      float rollGets aircraft's velocity (m/s) along the x-axis or angle value (in degrees) for roll. Use DJIVirtualStickRollPitchControlMode to set the velocity or angle mode. Note that the argument has different meanings in different coordinate systems. See the Flight Controller User Guide for more information.
      float yawAngular velocity (degrees/s) or angle (degrees) value for yaw. Use DJIVirtualStickYawControlMode to set angular velocity or angle mode.
      float verticalThrottleGets aircraft's velocity (m/s) or altitude (m) value for verticalControl. Use DJIVirtualStickVerticalControlMode to set velocity or altitude mode.
      enum DJIVirtualStickVerticalControlMode
      typedef NS_ENUM (uint8_t, DJIVirtualStickVerticalControlMode)
      Header:DJIFlightControllerBaseTypes.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamVerticalControlMode
      Description:

      Defines how vertical control values are interpreted by the aircraft.

      Enum Members:
      DJIVirtualStickVerticalControlModeVelocitySets the virtual stick vertical control values to be a vertical velocity. Positive and negative vertical velocity is for the aircraft ascending and descending respectively. Maximum vertical velocity is defined as 4 m/s. Minimum vertical velocity is defined as -4 m/s.
      DJIVirtualStickVerticalControlModePositionSets the virtual stick vertical control values to be an altitude. Maximum position is defined as 500 m. Minimum position is defined as 0 m.
      enum DJIVirtualStickRollPitchControlMode
      typedef NS_ENUM (uint8_t, DJIVirtualStickRollPitchControlMode)
      Header:DJIFlightControllerBaseTypes.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamRollPitchControlMode
      Description:

      Defines how manual roll and pitch values are interpreted by the aircraft.

      Enum Members:
      DJIVirtualStickRollPitchControlModeAngleSets the roll and pitch values to be an angle relative to a level aircraft. In the body coordinate system, positive and negative pitch angle is for the aircraft rotating about the y-axis in the positive direction or negative direction, respectively. Positive and negative roll angle is the positive direction or negative direction rotation angle about the x-axis, respectively. However in the ground coordinate system, positive and negative pitch angle is the angle value for the aircraft moving south and north, respectively. Positive and negative roll angle is the angle when the aircraft is moving east and west, respectively. Maximum angle is defined as 30 degrees. Minimum angle is defined as -30 degrees.
      DJIVirtualStickRollPitchControlModeVelocitySets the roll and pitch values to be a velocity. In the body coordinate system, positive and negative pitch velocity is for the aircraft moving towards the positive direction or negative direction along the pitch axis and y-axis, respectively. Positive and negative roll velocity is when the aircraft is moving towards the positive direction or negative direction along the roll axis and x-axis, respectively. However, in the ground coordinate system, positive and negative pitch velocity is for the aircraft moving east and west, respectively. Positive and negative roll velocity is when the aircraft is moving north and south, respectively. Maximum velocity is defined as 15 meters/s. Minimum velocity is defined as -15 meters/s.
      enum DJIVirtualStickYawControlMode
      typedef NS_ENUM (uint8_t, DJIVirtualStickYawControlMode)
      Header:DJIFlightControllerBaseTypes.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamYawControlMode
      Description:

      Defines how manual yaw values are interpreted by the aircraft.

      Enum Members:
      DJIVirtualStickYawControlModeAngleSets the yaw values to be an angle relative to the north. Positive and negative yaw angle is for the aircraft rotating clockwise and counterclockwise, respectively. Maximum yaw angle is defined as 180 degrees. Minimum yaw angle is defined as -180 degrees.
      DJIVirtualStickYawControlModeAngularVelocitySets the yaw values to be an angular velocity. Positive and negative angular velocity is for the aircraft rotating clockwise and counterclockwise, respectively. Maximum yaw angular velocity is defined as 100 degrees/s. Minimum yaw angular velocity is defined as -100 degrees/s.
      enum DJIVirtualStickFlightCoordinateSystem
      typedef NS_ENUM (uint8_t, DJIVirtualStickFlightCoordinateSystem)
      Header:DJIFlightControllerBaseTypes.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamRollPitchCoordinateSystem
      Description:

      Flight control coordinate system.

      Enum Members:
      DJIVirtualStickFlightCoordinateSystemGroundGround coordinate system.
      DJIVirtualStickFlightCoordinateSystemBodyBody coordinate system.
      Flight Assistance
      enum
      enum DJIFlightControllerControlMode
      typedef NS_ENUM(uint8_t, DJIFlightControllerControlMode)
      Header:DJIFlightControllerBaseTypes.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamControlMode
      Description:

      Control mode of the flight controller. It determines how the pilot can control the aircraft. By default, it is in smart control mode.

      Enum Members:
      DJIFlightControllerControlModeSmartSmart control mode. The aircraft can stabilize its altitude and attitude in smart mode.
      DJIFlightControllerControlModeManualManual control mode. The aircraft will not stabilize its altitude and attitude in manual mode. This mode is for advanced pilots only, and should only be used when the pilot understands the risk of operating in this mode. Any damage to the product when operating in this mode will not be covered under warranty.
      DJIFlightControllerControlModeUnknownUnknown control mode.
      enum DJIFlightOrientationMode
      typedef NS_ENUM (uint8_t, DJIFlightOrientationMode)
      Header:DJIFlightControllerBaseTypes.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamFlightOrientationMode
      Description:

      Tells the aircraft how to interpret flight commands for forward, backward, left and right. See the Flight Controller User Guide for more information.

      Enum Members:
      DJIFlightOrientationModeCourseLockThe aircraft should move relative to a locked course heading.
      DJIFlightOrientationModeHomeLockThe aircraft should move relative radially to the Home Point.
      DJIFlightOrientationModeAircraftHeadingThe aircraft should move relative to the front of the aircraft.
      Flight Wind Warning
      enum
      enum DJIFlightWindWarning
      typedef NS_ENUM(NSUInteger, DJIFlightWindWarning)
      Header:DJIFlightControllerBaseTypes.h
      Description:

      Warning caused by the strong wind.

      Enum Members:
      DJIFlightWindWarningLevel0No wind warning.
      DJIFlightWindWarningLevel1The wind speed is high. Fly with caution and ensure the aircraft remains within the line of sight.
      DJIFlightWindWarningLevel2Strong Wind. Fly with caution and ensure the aircraft remains within line of sight. It is more serious than DJIFlightWindWarningLevel1.
      DJIFlightWindWarningUnknownUnknown.
      Obstacle Sensing Direction
      enum
      enum DJIFlightAssistantObstacleSensingDirection
      typedef NS_ENUM(uint8_t, DJIFlightAssistantObstacleSensingDirection)
      Header:DJIFlightControllerBaseTypes.h
      Description:

      Obstacle sensing direction. It is only supported by Matrice 300 RTK.

      Enum Members:
      DJIFlightAssistantObstacleSensingDirectionUpwardUpward sensing. The upward distance range is 1.1m~30m
      DJIFlightAssistantObstacleSensingDirectionDownwardDownward sensing. The downward distance range is 0.6m~30m
      DJIFlightAssistantObstacleSensingDirectionHorizontalHorizontal Field. The horizontal distance range is 1.1m~40m
      DJIFlightAssistantObstacleSensingDirectionUnknownUnknown sensing direction.
      enum DJIConnectionFailSafeBehavior
      typedef NS_ENUM (uint8_t, DJIConnectionFailSafeBehavior)
      Header:DJIFlightController.h
      SDK Key:DJIFlightControllerKey.DJIFlightControllerParamConnectionFailSafeBehavior
      Description:

      Defines aircraft failsafe action when signal between the remote controller and the aircraft is lost.

      Enum Members:
      DJIConnectionFailSafeBehaviorHoverHover.
      DJIConnectionFailSafeBehaviorLandingLanding.
      DJIConnectionFailSafeBehaviorGoHomeReturn-to-Home.
      DJIConnectionFailSafeBehaviorUnknownUnknown.
      enum DJIFlightControllerRemoteControllerFlightMode
      typedef NS_ENUM(uint8_t, DJIFlightControllerRemoteControllerFlightMode)
      Header:DJIFlightControllerBaseTypes.h
      Description:

      Flight modes that map to the flight mode switch on the remote controller.

      Enum Members:
      DJIFlightControllerRemoteControllerFlightModePPositioning mode. GNSS and Vision Positioning Systems are used for positioning if they are available. For products without F mode, intelligent functions such as missions and intelligent orientation control can be performed in P-mode.
      DJIFlightControllerRemoteControllerFlightModeSSport mode. The maximum flight speed and responsiveness of the aircraft is increased in this mode.
      DJIFlightControllerRemoteControllerFlightModeAAttitude mode. The GNSS and Vision Positioning Systems are not used for positioning. The aircraft only uses the barometer to maintain altitude. If receiving a GNSS signal, the aircraft can automatically return home if the Remote Controller signal is lost and if the Home Point has been recorded successfully.
      DJIFlightControllerRemoteControllerFlightModeGGentle mode. The sensitivity and speed of aircraft will be substantially decreased in gentle mode.
      DJIFlightControllerRemoteControllerFlightModeMManual mode. The aircraft will not stabilize its altitude nor attitude in manual mode. This mode is for advanced pilots only, and should only be used when the pilot understands the risk of operating in this mode. Any damage to the product when operating in this mode will not be covered under warranty. It is supported by stand-alone A3 and N3 and can be enabled in Assistant 2.
      DJIFlightControllerRemoteControllerFlightModeFFunction mode. Performs the same as Positioning mode with intelligent functions such as missions and intelligent orientation control enabled.
      DJIFlightControllerRemoteControllerFlightModeTTripod Mode. This mode drops the aircraft's maximum speed and significantly reduces the control stick sensitivity of the remote controller to give the user the precision needed for accurate framing. It is only supported by Mavic 2.
      DJIFlightControllerRemoteControllerFlightModeUnknownUnknown mode.
      enum DJIFlightControllerSmartRTHState
      typedef NS_ENUM(uint8_t, DJIFlightControllerSmartRTHState)
      Header:DJIFlightControllerBaseTypes.h
      Description:

      State of Smart Return-To-Home (RTH). It is only used when Smart RTH is enabled.

      Enum Members:
      DJIFlightControllerSmartRTHStateIdleSmart RTH is not triggered yet in the current flight. The Smart RTH state will be reset to this value when the aircraft lands.
      DJIFlightControllerSmartRTHStateCountingDownSmart RTH is triggered and the aircraft is counting down. If no response is received within 10 seconds or the user confirms the request, the aircraft will start to go home and the state will change to DJIFlightControllerSmartRTHStateExecuted. If user cancels the request, the state will change to DJIFlightControllerSmartRTHStateCancelled.
      DJIFlightControllerSmartRTHStateExecutedSmart RTH is already executed in the current flight. The state will not be reset until the aircraft lands.
      DJIFlightControllerSmartRTHStateCancelledSmart RTH request is cancelled by the user. The state will not be reset until the aircraft lands.
      DJIFlightControllerSmartRTHStateUnknownUnknown.
      Air Sense System Info
      class
      Simulator Wind Speed
      class