DJI Mobile SDK Documentation

      class DJIRemoteController

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

      This class represents the remote controller of the aircraft. It provides methods to change the settings of the physical remote controller. For some products (e.g. Inspire 1 and Matrice 100), the class provides methods to manager the slave/master mode of the remote controllers. A remote controller is a device that can have a GPS, battery, radio, buttons, sticks, wheels, and output ports for video. The mobile device is connected to the remote controller, which is always sending out information about what everything is doing. The normal remote controller is called the master. A slave wirelessly connects to the master remote controller at 5 GHz, and the aircraft can also download information to the slave. The slave can send gimbal control commands to the master. This configuration allows one person to fly the aircraft while another person controls the gimbal. This object is available from the DJIAircraft subclass off DJIBaseProduct.

      Class Members:
      struct
      struct DJIStick
      typedef struct {
      int horizontalPosition;
      int verticalPosition;
      } DJIStick
      Header:DJIStick.h
      Description:

      DJI hardware stick. For example, the joystick on a remote controller, or the gimbal control stick on a handheld controller.

      Struct Members:
      int horizontalPositionGet the stick's horizontal position value, the value it's in the range of [-660, 660].
      int verticalPositionGet the stick's vertical position value, the value it's in the range of [-660, 660].
      State Updates - Hardware
      struct
      struct DJIRCRightWheel
      typedef struct
      {
      BOOL isPresent;
      BOOL isTurned;
      BOOL isClicked;
      NSInteger value;
      } DJIRCRightWheel
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Current state of the Camera Settings Dial (upper right dial on the Remote Controller).

      Struct Members:
      BOOL isPresentYES if right wheel present.
      BOOL isClickedYES if wheel is being pressed.
      BOOL isTurnedYES if dial value has changed.
      NSInteger valueDial value in the range of [-660, 660]. The value represents the difference in an operation.
      struct DJIRCTransformationSwitch
      typedef struct
      {
      BOOL isPresent;
      DJIRCTransformationSwitchState state;
      } DJIRCTransformationSwitch
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Transformation Switch position. The Transformation Switch is around the Return To Home Button on Inspire, Inspire 1 and M100 Remote Controllers, and controls the state of the aircraft's landing gear.

      Struct Members:
      BOOL isPresentYES if the Transformation Switch present.
      DJIRCTransformationSwitchState stateCurrent transformation switch state.
      enum DJIRCFlightModeSwitch
      typedef NS_ENUM (uint8_t, DJIRCFlightModeSwitch)
      Header:DJIRemoteControllerBaseTypes.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamRCHardwareFlightModeSwitchState
      Description:

      Remote Controller Flight Mode switch position.

      Enum Members:
      DJIRCFlightModeSwitchOnePosition One. For all products except Mavic Pro, this is the left most position of the flight mode switch on a remote controller from the perspective of the pilot. For example, on a Phantom 4 remote controller, Position One is labeled "A". For Mavic Pro, Spark and Mavic Air, this is the position that is furthest away from the pilot and labeled "Sport".
      DJIRCFlightModeSwitchTwoPosition Two. For all products except Mavic Pro, this is the middle position of the flight mode switch on a remote controller from the perspective of the pilot. For example, on a Phantom 4 remote controller, Position Two is labeled "S". For Mavic Pro, Spark and Mavic Air, this is the position that is closest to the pilot (the P position).
      DJIRCFlightModeSwitchThreePosition Three. For all products except Mavic Pro, this is the right most position of the flight mode switch on a remote controller from the perspective of the pilot. For example, on a Phantom 4 remote controller, Position Two is labeled "P". Mavic Pro, Spark or Mavic Air does not have a third position for the flight mode switch.
      struct DJIRCButton
      typedef struct
      {
      BOOL isPresent;
      BOOL isClicked;
      } DJIRCButton
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Remote Controller has numerous momentary push buttons, which will use this state.

      Struct Members:
      BOOL isPresentYES if the hardware button is present.
      BOOL isClickedYES if button is pressed down.
      struct DJIRCFiveDButton
      typedef struct{
      BOOL isPresent;
      DJIRCFiveDButtonDirection verticalDirection;
      DJIRCFiveDButtonDirection horizontalDirection;
      BOOL isClicked;
      }DJIRCFiveDButton
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      State of the 5D button on the remote controller. Vertical movement, horizontal movement and if it is pressed are not exclusive.

      Struct Members:
      BOOL isPresentYES if 5D button is present.
      DJIRCFiveDButtonDirection verticalDirectionGet the movement in the vertical direction of the 5D button. Up is the positive direction and down is the negative direction.
      DJIRCFiveDButtonDirection horizontalDirectionGet the movement in the horizontal direction of the 5D button. Right is the positive direction and left is the negative direction.
      BOOL isClickedYES if the 5D button is pressed down.
      struct DJIRCHardwareState
      typedef struct
      {
      DJIStick leftStick;
      DJIStick rightStick;
      int leftWheel;
      DJIRCRightWheel rightWheel;
      true
      true
      trueint leftDials;
      true
      true
      trueint rightDials;
      DJIRCTransformationSwitch transformationSwitch;
      DJIRCFlightModeSwitch flightModeSwitch;
      DJIRCButton goHomeButton;
      DJIRCButton recordButton;
      DJIRCButton shutterButton;
      DJIRCButton playbackButton;
      DJIRCButton photoAndVideoToggleButton;
      DJIRCButton shootPhotoAndRecordButton;
      DJIRCButton pauseButton;
      DJIRCButton c1Button;
      DJIRCButton c2Button;
      DJIRCButton fnButton;
      DJIRCFiveDButton fiveDButton;
      } DJIRCHardwareState
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Remote Controller's current state.

      Struct Members:
      DJIStick leftStickGet left stick.
      DJIStick rightStickGet right stick.
      int leftWheelGimbal Dial's (upper left dial) value in the range of [-660,660], where 0 is untouched and positive is turned in the clockwise direction.
      DJIRCRightWheel rightWheelCurrent state of the Camera Settings Dial (upper right dial) on the Remote Controller.
      int leftDialsDials value in the range of [-660, 660]. The value represents the difference in an operation. Only Supported by Cendence.
      int rightDialsDials value in the range of [-660, 660]. The value represents the difference in an operation. Only Supported by Cendence.
      DJIRCTransformationSwitch transformationSwitchCurrent state of the Transformation Switch on the Remote Controller.
      DJIRCFlightModeSwitch flightModeSwitchCurrent position of the Flight Mode Switch on the Remote Controller.
      DJIRCButton goHomeButtonCurrent state of the Return To Home Button.
      DJIRCButton recordButtonCurrent state of the Video Recording Button.
      DJIRCButton photoAndVideoToggleButtonCurrent state of the Photo and Video Toggle Button.
      DJIRCButton shootPhotoAndRecordButtonCurrent state of the Photo and Record Button.
      DJIRCButton shutterButtonCurrent state of the Shutter Button.
      DJIRCButton playbackButtonCurrent state of the Playback Button. The Playback Button is not supported on Phantom 4 remote controllers.
      DJIRCButton pauseButtonCurrent state of the Pause Button. The Pause button is only supported on Phantom 4 remote controllers.
      DJIRCButton c1ButtonCurrent state of custom button 1 (left Back Button). For Mavic Air 2 and DJI Air 2S, There is no custom button 1, we use Fn button instead, one click on Fn button represents custom button 1. It is not supported by remote controllers for Mavic Air or Spark.
      DJIRCButton c2ButtonCurrent state of custom button 2 (right Back Button). For Mavic Air 2 and DJI Air 2S, There is no custom button 2, we use Fn button instead, double clicks on Fn button represents custom button 2.
      DJIRCButton fnButtonCurrent state of fn button. It is only supported by remote controllers for Spark or Mavic Air.
      DJIRCFiveDButton fiveDButtonCurrent state of the 5D button. The button can be moved up, down, left and right and can be pressed. The 5D button is supported by Mavic Pro and Mavic 2 remote controllers.
      enum DJIRCTransformationSwitchState
      typedef NS_ENUM (uint8_t, DJIRCTransformationSwitchState)
      Header:DJIRemoteControllerBaseTypes.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamTransformationSwitchState
      Description:

      Transformation Switch position states.

      Enum Members:
      DJIRCTransformationSwitchStateRetractRetract landing gear switch state.
      DJIRCTransformationSwitchStateDeployDeploy landing gear switch state.
      DJIRCTransformationSwitchStateUnknownUnknown.
      enum DJIRCFiveDButtonDirection
      typedef NS_ENUM(NSUInteger, DJIRCFiveDButtonDirection)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Movement direction of the remote controller's 5D button.

      Enum Members:
      DJIRCFiveDButtonDirectionMiddleButton has no movement in either the vertical direction or the horizontal direction.
      DJIRCFiveDButtonDirectionPositiveButton is moved in the positive direction which is up or right.
      DJIRCFiveDButtonDirectionNegativeButton is moved in the negative direction which is down or left.
      RC Battery State
      struct
      struct DJIRCBatteryState
      typedef struct
      {
      uint32_t remainingChargeInmAh;
      uint8_t remainingChargeInPercent;
      bool isCharging;
      } DJIRCBatteryState
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Remote Controller's battery information. Only supported by DJI Smart Controller Enterprise with firmware version v01.00.01.01 and above.

      Struct Members:
      uint32_t remainingChargeInmAhThe remaining power in the Remote Controller's battery in milliamp hours (mAh).
      uint8_t remainingChargeInPercentThe remaining power in the Remote Controller's battery as a percentage in the range of [0, 100].
      bool isChargingWhether battery of remote controller is charging. The battery may be fully charged when it returns false.
      State Updates - GPS
      struct
      struct DJIRCGPSTime
      typedef struct
      {
      uint8_t hour;
      uint8_t minute;
      uint8_t second;
      uint16_t year;
      uint8_t month;
      uint8_t day;
      } DJIRCGPSTime
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Remote Controller's GPS time.

      Struct Members:
      uint8_t hourHour value of Remote Controller's GPS time.
      uint8_t minuteMinute value of Remote Controller's GPS time.
      uint8_t secondSecond value of Remote Controller's GPS time.
      uint16_t yearYear value of Remote Controller's GPS time.
      uint8_t monthMonth value of Remote Controller's GPS time.
      uint8_t dayDay value of Remote Controller's GPS time.
      struct DJIRCGPSData
      typedef struct
      {
      DJIRCGPSTime time;
      CLLocationCoordinate2D location;
      float eastSpeed;
      float northSpeed;
      int satelliteCount;
      float accuracy;
      BOOL isValid;
      } DJIRCGPSData
      Header:DJIRemoteControllerBaseTypes.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamGPSData
      Description:

      Remote Controller's GPS data. Only supported by Remote Controller using DJI Lightbridge.

      Struct Members:
      DJIRCGPSTime timeThe Remote Controller's GPS time.
      CLLocationCoordinate2D locationThe Remote Controller's location.
      float eastSpeedThe Remote Controller's speed in the East direction in meters/second. A negative speed means the Remote Controller is moving in the West direction.
      float northSpeedThe Remote Controller's speed in the North direction in meters/second. A negative speed means the Remote Controller is moving in the South direction.
      int satelliteCountThe number of GPS satellites the Remote Controller detects.
      float accuracyThe the margin of error, in meters, for the GPS location.
      BOOL isValidYES if the GPS data is valid. The data is not valid if there are too few satellites or the signal strength is too low.
      Master/Slave RC
      class
      enum DJIRCMode
      typedef NS_ENUM (uint8_t, DJIRCMode)
      Header:DJIRemoteControllerBaseTypes.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamMode
      Description:

      Remote Controller mode of operation can be normal (single RC connected to aircraft), master, slave, or unknown.

      Enum Members:
      DJIRCModeMasterRemote Controller is a master (will route a connected slave Remote Controller's commands to the aircraft).
      DJIRCModeSlaveRemote Controller is currently a slave Remote Controller (sends commands to aircraft through a master Remote Controller).
      DJIRCModeNormalRemote Controller is not connected to another Remote Controller.
      DJIRCModeUnknownThe Remote Controller's mode is unknown.
      enum DJIRCCalibrationState
      typedef NS_ENUM(uint8_t, DJIRCCalibrationState)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Remote Controller's calibration state.

      Enum Members:
      DJIRCCalibrationStateNotCalibratingThere is currently no Remote Controller calibration happening.
      DJIRCCalibrationStateRecordingCenterPositionCurrently recording the joystick in its center position (joystick is untouched).
      DJIRCCalibrationStateRecordingExtremePositionsCurrently recording the extreme joystick positions, when joysticks are all the way to their max in any direction (left, right, up, or down).
      DJIRCCalibrationStateExitThe Remote Controller is exiting calibration.
      enum DJIRCConnectToMasterResult
      typedef NS_ENUM (uint8_t, DJIRCConnectToMasterResult)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Result when a slave Remote Controller tries to join a master Remote Controller.

      Enum Members:
      DJIRCConnectToMasterResultAcceptedThe slave Remote Controller's attempt to join the master Remote Controller was successful.
      DJIRCConnectToMasterResultPasswordErrorThe slave Remote Controller's attempt to join the master Remote Controller was unsuccessful due to a password error.
      DJIRCConnectToMasterResultRejectedThe slave Remote Controller's attempt to join the master Remote Controller was rejected.
      DJIRCConnectToMasterResultMaximumCapacityThe slave Remote Controller's attempt to join the master Remote Controller was unsuccessful because the master Remote Controller is at the maximum number of slaves it can have.
      DJIRCConnectToMasterResultTimeoutThe slave Remote Controller's attempt to join the master Remote Controller was unsuccessful because the request timed out.
      DJIRCConnectToMasterResultUnknownThe result of the slave Remote Controller's attempt to join the master Remote Controller is unknown.
      struct DJIRCGimbalControlSpeedCoefficient
      typedef struct
      {
      uint8_t pitchSpeedCoefficient;
      uint8_t rollSpeedCoefficient;
      uint8_t yawSpeedCoefficient;
      } DJIRCGimbalControlSpeedCoefficient
      Header:DJIRemoteControllerBaseTypes.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamGimbalControlSpeedCoefficient
      Description:

      Remote Controller's gimbal control speed.

      Struct Members:
      uint8_t pitchSpeedCoefficientGimbal's pitch speed with range [0, 100].
      uint8_t rollSpeedCoefficientGimbal's roll speed with range [0, 100].
      uint8_t yawSpeedCoefficientGimbal's yaw speed with range [0, 100].
      enum DJIRCRequestGimbalControlResult
      typedef NS_ENUM (uint8_t, DJIRCRequestGimbalControlResult)
      Header:DJIRemoteControllerBaseTypes.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamRequestGimbalControl
      Description:

      Result when a slave Remote Controller requests permission to control the gimbal.

      Enum Members:
      DJIRCRequestGimbalControlResultAcceptedThe master Remote Controller agrees to the slave's request.
      DJIRCRequestGimbalControlResultRejectedThe master Remote Controller denies the slave's request. If the slave Remote Controller wants to control the gimbal, it must send a request to the master Remote Controller first. Then the master Remote Controller can decide to approve or deny the request.
      DJIRCRequestGimbalControlResultTimeoutThe slave Remote Controller's request timed out.
      DJIRCRequestGimbalControlResultUnknownThe slave Remote Controller's request is unknown.
      State Updates - Master/Slave
      enum
      enum DJIRCGimbalMappingStyle
      typedef NS_ENUM (uint8_t, DJIRCGimbalMappingStyle)
      Header:DJIRemoteControllerBaseTypes.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamGimbalMappingStyle
      Description:

      The gimbal control stick mapping styles.

      Enum Members:
      DJIRCGimbalMappingStyleDefaultDefault
      DJIRCGimbalMappingStyleCustomCustom
      DJIRCGimbalMappingStyleUnknownUnknown
      struct DJIRCGimbalStickMapping
      typedef struct
      {
      DJIRCGimbalStickMappingTarget target;
      BOOL isReversed;
      } DJIRCGimbalStickMapping
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      A struct representing a custom mapping configuration.

      Struct Members:
      DJIRCGimbalStickMappingTarget targetThe specific control to be mapped.
      BOOL isReversedwhether or not the control is to be reversed.
      State Updates - Focus
      enum
      enum DJIRCFocusControllerControlType
      typedef NS_ENUM (uint8_t, DJIRCFocusControllerControlType)
      Header:DJIRemoteControllerBaseTypes.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamFocusControllerControlType
      Description:

      Remote Focus Control Type.

      Enum Members:
      DJIRCFocusControllerControlTypeApertureControl Aperture.
      DJIRCFocusControllerControlTypeFocalLengthControl Focal Length.
      DJIRCFocusControllerControlTypeFocusDistanceAdjust focus distance.
      DJIRCFocusControllerControlTypeUnknownUnknown types.
      enum DJIRCFocusControllerDirection
      typedef NS_ENUM (uint8_t, DJIRCFocusControllerDirection)
      Header:DJIRemoteControllerBaseTypes.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamFocusControllerDirection
      Description:

      Remote Focus Control Direction.

      Enum Members:
      DJIRCRemoteFocusControlDirectionClockwiseClockwise.
      DJIRCRemoteFocusControlDirectionCounterClockwiseCounterClockwise.
      DJIRCRemoteFocusControlDirectionUnknownUnknown.
      struct DJIRCFocusControllerState
      typedef struct
      {
      BOOL isWorking;
      DJIRCFocusControllerControlType controlType;
      DJIRCFocusControllerDirection direction;
      } DJIRCFocusControllerState
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Remote Controller's Remote Focus State. The focus product has one dial (focus control) that controls two separate parts of the camera: focal length and aperture. However it can only control one of these at any one time and is an absolute dial, meaning that a specific rotational position of the dial corresponds to a specific focal length or aperture. This means that whenever the dial control mode is changed, the dial first has to be reset to the new mode's previous dial position before the dial can be used to adjust the setting of the new mode. Example workflow:

      1. Use dial to set an Aperture of f2.2
      2. Change dial control mode to focal length (set DJIRCFocusControllerControlType)
      3. Use the dial to change the focal length
      4. Change dial control mode back to aperture
      5. Adjust dial back to f2.2
      6. Now the dial can be used to adjust the aperture.

      Struct Members:
      BOOL isWorkingYES if the focus control works. The control can be either changing the Aperture or Focal Length. If it is NO, follow the DJIRCFocusControllerDirection to rotate the Remote Focus Device until it turns to YES again.
      DJIRCFocusControllerControlType controlTypeRemote Focus Control Type.
      DJIRCFocusControllerDirection directionRemote Focus Control Direction. Use this with the isWorking value. It will give you the correct rotation direction when isWorking is NO.
      State Updates
      protocol
      protocol DJIRemoteControllerDelegate
      @protocol DJIRemoteControllerDelegate <NSObject>
      Header:DJIRemoteController.h
      Inherits From:NSObject
      Description:

      This protocol provides delegate methods to receive the updated information related to the remote controller.

      Protocol Methods:

      Protocol Method

      method remoteController:didUpdateHardwareState
      @optional
      - (void)remoteController:(DJIRemoteController *)rc didUpdateHardwareState:(DJIRCHardwareState)state
      Header:DJIRemoteController.h
      Description:

      Callback function that updates the Remote Controller's current hardware state (e.g. the state of the physical buttons and joysticks).

      Input Parameters:
      DJIRemoteController * rcInstance of the Remote Controller for which the hardware state will be updated.
      DJIRCHardwareState stateCurrent state of the Remote Controller's hardware state.
      method remoteController:didUpdateGPSData
      @optional
      - (void)remoteController:(DJIRemoteController *)rc didUpdateGPSData:(DJIRCGPSData)gpsData
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamGPSData
      Description:

      Callback function that updates the Remote Controller's current GPS data.

      Input Parameters:
      DJIRemoteController * rcInstance of the Remote Controller for which the GPS data will be updated.
      DJIRCGPSData gpsDataCurrent state of the Remote Controller's GPS data.
      method remoteController:didUpdateBatteryState
      @optional
      - (void)remoteController:(DJIRemoteController *)rc didUpdateBatteryState:(DJIRCBatteryState)batteryState
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamBatteryState
      Description:

      Callback function that updates the Remote Controller's current battery state.

      Input Parameters:
      DJIRemoteController * rcInstance of the Remote Controller for which the battery state will be updated.
      DJIRCBatteryState batteryStateCurrent state of the Remote Controller's battery.
      method remoteController:didReceiveGimbalControlRequestFromSlave
      @optional
      - (void)remoteController:(DJIRemoteController *)rc didReceiveGimbalControlRequestFromSlave:(DJIRCInformation *)information
      Header:DJIRemoteController.h
      Description:

      Callback function that gets called when a slave Remote Controller makes a request to a master Remote Controller to control the gimbal using the method requestGimbalControlRightWithCallbackBlock.

      Input Parameters:
      DJIRemoteController * rcInstance of the Remote Controller.
      DJIRCInformation * informationInformation of the slave making the request to the master Remote Controller.
      method remoteController:didUpdateFocusControllerState
      @optional
      - (void)remoteController:(DJIRemoteController *)rc didUpdateFocusControllerState:(DJIRCFocusControllerState)state
      Header:DJIRemoteController.h
      Description:

      Callback function that updates the Remote Focus State, only support Focus product. If the isRCRemoteFocusCheckingSupported is YES, this delegate method will be called.

      Input Parameters:
      DJIRemoteController * rcInstance of the Remote Controller for which the battery state will be updated.
      DJIRCFocusControllerState stateCurrent state of the Remote Focus state.
      method remoteController:didUpdateMasterSlaveState
      @optional
      - (void)remoteController:(DJIRemoteController *)rc didUpdateMasterSlaveState:(DJIRCMasterSlaveState *)state
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamMasterSlaveState
      Description:

      Callback function that updates the remote controller's state related to the master and slave mode. Only supported by Inspire 2.

      Input Parameters:
      DJIRemoteController * rcInstance of the Remote Controller
      DJIRCMasterSlaveState * stateThe remote controller's state related to the master and slave mode.
      method remoteController:didUpdateButtonAction
      @optional
      - (void)remoteController:(DJIRemoteController *)rc didUpdateButtonAction:(DJIRCButtonAction)action
      Header:DJIRemoteController.h
      Description:

      Callback function that receives the button action triggered by a button click. The relationship between a button and an action is defined by DJIRCButtonConfiguration. It is only supported by Cendence.

      Input Parameters:
      DJIRemoteController * rcInstance of the Remote Controller
      DJIRCButtonAction actionThe action triggered by a button click.
      method remoteController:didUpdateCalibrationProgress
      @optional
      - (void)remoteController:(DJIRemoteController *)rc didUpdateCalibrationProgress:(DJIRCCalibrationProgress *)progress
      Header:DJIRemoteController.h
      Description:

      Delegate method that receives the calibration progress of the remote controller. The remote controller will start to update the progress after the calibration is started successfully.

      Input Parameters:
      DJIRemoteController * rcThe remote controller.
      DJIRCCalibrationProgress * progressThe calibration progress of the remote controller.
      method remoteController:didUpdateMultiDevicePairingState
      @optional
      - (void)remoteController:(DJIRemoteController *)rc didUpdateMultiDevicePairingState:(DJIRCMultiDeviceAggregationState *)state
      Header:DJIRemoteController.h
      Description:

      Delegate method to receive the latest pairing state from the remote controller that supporting multi-device pairing.

      Input Parameters:
      DJIRemoteController * rcRemote controller that updates the pairing state.
      DJIRCMultiDeviceAggregationState * stateThe latest pairing state.
      method remoteController:didUpdateRTKChannelEnabled
      @optional
      - (void)remoteController:(DJIRemoteController *)rc didUpdateRTKChannelEnabled:(BOOL)enabled
      Header:DJIRemoteController.h
      Description:

      Delegate method to receive the current RTK channel enabled from the remote controller that supporting multi-device pairing.

      Input Parameters:
      DJIRemoteController * rcRemote controller that updates the pairing state.
      BOOL enabledThe current RTK channel enabled.
      State Updates - Secondary Video
      enum
      enum DJIRCSecondaryVideoOutputPort
      typedef NS_ENUM (uint8_t, DJIRCSecondaryVideoOutputPort)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Remote Controller port to which to send secondary video (in addition to USB video sent to the Mobile Device).

      Enum Members:
      DJIRCSecondaryVideoOutputPortHDMIHDMI port.
      DJIRCSecondaryVideoOutputPortSDISDI port.
      DJIRCSecondaryVideoOutputPortUnknownUnknown.
      enum DJIRCSecondaryVideoDisplayMode
      typedef NS_ENUM (uint8_t, DJIRCSecondaryVideoDisplayMode)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Defines the combination of video sources to form the secondary output video. The secondary output can display video streams from one or two input sources. When the encode mode is single: Source 1 represents video from one of the Source1Only input ports (HDMI or AV). Source 2 represents video from EXT input port (HD Gimbal Camera). When the encode mode is dual: Source 1 represents video from HDMI input port. Source 2 represents video from AV input port.

      Enum Members:
      DJIRCSecondaryVideoDisplayModeSource1OnlyDisplays video from Source 1 only. When the current encode mode is single, the secondary output will display video from HDMI or AV input. When the current encode mode is dual, the secondary output will display video from HDMI input.
      DJIRCSecondaryVideoDisplayModeSource2OnlyDisplays video from Source 2 only. When the current encode mode is single, the secondary output will display video from HD Gimbal camera. When the current encode mode is dual, the secondary output will display video from AV input.
      DJIRCSecondaryVideoDisplayModePIPSource1MainDisplays the video from Source 1 as the main subject, and the video from Source 2 in a mini window (Picture in Picture, or PIP).
      DJIRCSecondaryVideoDisplayModePIPSource2MainDisplays the video from Source 2 as the main subject, and the video from Source 1 in a mini window (Picture in Picture, or PIP).
      DJIRCSecondaryVideoDisplayModeUnknownUnknown output mode.
      enum DJIRCSecondaryVideoOSDUnit
      typedef NS_ENUM (uint8_t, DJIRCSecondaryVideoOSDUnit)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      OSD data units.

      Enum Members:
      DJIRCSecondaryVideoOSDUnitImperialImperial.
      DJIRCSecondaryVideoOSDUnitMetricMetric.
      DJIRCSecondaryVideoOSDUnitUnknownUnknown.
      enum DJIRCSecondaryVideoFormat
      typedef NS_ENUM (uint8_t, DJIRCSecondaryVideoFormat)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Secondary output video resolution and frame rate.

      Enum Members:
      DJIRCSecondaryVideoFormat1080I60FPS1080I 60FPS.
      DJIRCSecondaryVideoFormat1080I50FPS1080I 50FPS.
      DJIRCSecondaryVideoFormat1080P60FPS1080P 60FPS.
      DJIRCSecondaryVideoFormat1080P50FPS1080P 50FPS.
      DJIRCSecondaryVideoFormat1080P30FPS1080P 30FPS.
      DJIRCSecondaryVideoFormat1080P25FPS1080P 25FPS.
      DJIRCSecondaryVideoFormat1080P24FPS1080P 24FPS.
      DJIRCSecondaryVideoFormat720P60FPS720P 60FPS.
      DJIRCSecondaryVideoFormat720P50FPS720P 50FPS.
      DJIRCSecondaryVideoFormat720P30FPS720P 30FPS.
      DJIRCSecondaryVideoFormat720P25FPS720P 25FPS.
      DJIRCSecondaryVideoFormat720P24FPS720P 24FPS.
      DJIRCSecondaryVideoFormatUnknownUnknown.
      State Updates - PIP Position
      enum
      enum DJIRCPIPPosition
      typedef NS_ENUM (uint8_t, DJIRCPIPPosition)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      PIP (Picture In Picture) position on the screen relative to the main subject video.

      Enum Members:
      DJIRCPIPPositionTopLeftPIP is on the screen's top left.
      DJIRCPIPPositionTopRightPIP is on the screen's top right.
      DJIRCPIPPositionBottomLeftPIP is on the screen's bottom left.
      DJIRCPIPPositionBottomRightPIP is on the screen's bottom right.
      DJIRCPIPPositionUnknownPIP is on the screen's bottom right.
      Aircraft Pairing
      enum
      enum DJIRCPairingState
      typedef NS_ENUM (uint8_t, DJIRCPairingState)
      Header:DJIRemoteControllerBaseTypes.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamPairingState
      Description:

      Remote Controller pairing state.

      Enum Members:
      DJIRCPairingStateStateUnpairedThe Remote Controller is not pairing.
      DJIRCPairingStateStatePairingThe Remote Controller is currently pairing.
      DJIRCPairingStateStateSwitchingThe Remote Controller is switching rc firmware.
      DJIRCPairingStateStateSwitchingEndThe remote control has finished switching RC firmware.
      DJIRCPairingStateStatePairedThe Remote Controller's pairing was completed.
      DJIRCPairingStateStateUnknownThe Remote Controller's pairing state is unknown.
      Customize RC
      class
      enum DJIRCGimbalAxis
      typedef NS_ENUM (uint8_t, DJIRCGimbalAxis)
      Header:DJIRemoteControllerBaseTypes.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamLeftWheelGimbalControlAxis
      Description:

      Defines what the Gimbal Dial (upper left dial on the Remote Controller) will control.

      Enum Members:
      DJIRCGimbalAxisPitchThe upper left dial will control the gimbal's pitch.
      DJIRCGimbalAxisRollThe upper left dial will control the gimbal's roll.
      DJIRCGimbalAxisYawThe upper left dial will control the gimbal's yaw.
      Mobile Device Charging
      enum
      enum DJIRCChargeMobileMode
      typedef NS_ENUM (uint8_t, DJIRCChargeMobileMode)
      Header:DJIRemoteControllerBaseTypes.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamChargeMobileMode
      Description:

      Modes to charge an iOS mobile device. Only supported by Inspire 2.

      Enum Members:
      DJIRCChargeMobileModeNeverThe remote controller does not charge the mobile device.
      DJIRCChargeMobileModeAlwaysThe remote controller charges the mobile device until the the mobile device is fully charged.
      DJIRCChargeMobileModeIntelligentThe remote controller charges the mobile device in an intelligent mode: The remote controller starts charging when the mobile device's battery is lowered then 20% and stops charging when the mobile device's battery is above 50%. It is only supported by Inspire 2.
      DJIRCChargeMobileModeUnknownThe Remote Controller's charging mode is unknown.
      Calibration Component
      enum
      enum DJIRCCalibrationComponent
      typedef NS_ENUM (uint8_t, DJIRCCalibrationComponent)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      The components on the remote controller that requires calibration.

      Enum Members:
      DJIRCCalibrationComponentLeftStickVerticalThe components on the remote controller that requires calibration.
      DJIRCCalibrationComponentLeftStickHorizontalThe horizontal dimension of the left stick. To calibrate it, user should move the left stick left and right.
      DJIRCCalibrationComponentRightStickVerticalThe vertical dimension of the right stick. To calibrate it, user should move the right stick up and down.
      DJIRCCalibrationComponentRightStickHorizontalThe horizontal dimension of the right stick. To calibrate it, user should move the right stick left and right.
      DJIRCCalibrationComponentLeftWheelThe upper left wheel (gimbal dial).
      DJIRCCalibrationComponentRightWheelThe upper right wheel.
      DJIRCCalibrationComponentLeftLeverThe left lever.
      DJIRCCalibrationComponentRightLeverThe right lever.
      DJIRCCalibrationComponentUnknownUnknown.
      Calibration Overall State
      enum
      enum DJIRCCalibrationOverallState
      typedef NS_ENUM (uint8_t, DJIRCCalibrationOverallState)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      The overall state of the remote controller's calibration.

      Enum Members:
      DJIRCCalibrationOverallStateRecordingCenterThe calibration is started and the remote controller is recording the center position of components. In this phase, user should not move the components.
      DJIRCCalibrationOverallStateRecordingPhysicalLimitsThe remote controller has recorded the center position of components and is recording the physical limits. In this phase, user should move components (sticks and wheels) all the way to the physical limits in any direction.
      DJIRCCalibrationOverallStateTimeoutThe calibration took too long to finish.
      DJIRCCalibrationOverallStateFailedThe calibration failed. Use error to check the reason.
      DJIRCCalibrationOverallStateSucceededThe calibration succeeded.
      DJIRCCalibrationOverallStateUnknownUnknown.
      Cendence Button Action
      enum
      enum DJIRCButtonAction
      typedef NS_ENUM(NSUInteger, DJIRCButtonAction)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Actions that can be assigned to a customizable button. Some of the actions are reserved and the firmware will execute the corresponding actions even when the application is not connected. Some of the actions are defined by the mobile applications. The application is responsible for implementing the non firmware actions. The definitions used in DJI Go are provided. It is usually recommended to follow DJI Go's definitions for compability so if DJI Go is used at the same time as the SDK application the actions will be expected in both applications.

      Enum Members:
      DJIRCButtonActionCustom0Toggle the camera setting view. The action has to be implemented by the application itself.
      DJIRCButtonActionResetGimbalResets the gimbal attitude. The pitch and the yaw will point to the origin. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom3Switch the live view and the map view. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom4Clear the flight path in the map view. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom5Toggle the battery setting view. The action has to be implemented by the application itself.
      DJIRCButtonActionCentralExposureMeteringTrigger central exposure metering. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom8Toggles the AE Lock setting. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom9Toggle the LEDs on the four arms. The action has to be implemented by the application itself.
      DJIRCButtonActionResetFPVGimbalReset FPV gimbal attitude to the center, the gimbal will rotate 45 degrees in pitch axis up and down when the action is trigger. It is supported by the firmware of Matrice 200 series and Matrice 200 V2 series. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom13Expand the live view from the FPV camera. The action has to be implemented by the application itself.
      DJIRCButtonActionQuickSpinTrigger a Quick Spin. It is supported by the firmware of Inspire 2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom16Toggle the playback view. The action has to be implemented by the application itself.
      DJIRCButtonActionCenterFocusTriggers focusing at the center of the live view. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom23Request gimbal control (for the slave remote controller). The action has to be implemented by the application itself.
      DJIRCButtonActionToggleGimbalModeToggle DJIGimbalModeYawFollow and DJIGimbalModeFree for gimbal. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom25Toggle the customizable button setting view. The action has to be implemented by the application itself.
      DJIRCButtonActionToggleFocusToggle AF and MF for camera. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom27Dismiss the warning tips. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom28Toggle the automatic movement of the landing gear. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom29Toggle the warning list view. The action has to be implemented by the application itself.
      DJIRCButtonActionSwitchFrequencySwitch frequency bands of the remote controller. It is supported by the firmware of Matrice 200 series. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom31Set the home location of the aircraft to the current location of the aircraft. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom32Set the home location of the aircraft to the current location of the remote controller. The action has to be implemented by the application itself.
      DJIRCButtonActionFocusTrigger the camera focus. It is supported by the firmware of Matrice 200 series and Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom41Toggle the composition mode for the Spotlight. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom43Toggle the peak focus. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom44Toggle the display of grid. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom45Toggle the display of histogram. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom46Switch the white balance settings. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom47Toggle the over-exposure warning. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom52Reset the gimbal yaw to align with the aircraft heading. The action has to be implemented by the application itself.
      DJIRCButtonActionToggleLandingGearRetract or deploy the landing gear. It is supported by the firmware of Inspire 2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom59Toggle the radar map. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom60Toggle the downward vision sensors. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom61Toggle the forward obstacle avoidance. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom62Switch the video source of the secondary video feeder between fpv and camera. The action has to be implemented by the application itself.
      DJIRCButtonActionCustom63Toggle the full screen mode. The action has to be implemented by the application itself.
      DJIRCButtonActionZoomOutZoom out. It is only supported by Z30 camera. It is supported by the firmware of Matrice 200 V2 series. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionZoomInZoom in. It is only supported by Z30 camera. It is supported by the firmware of Matrice 200 V2 series. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom102Custom action with value 102. This value is reserved for SDK applications.
      DJIRCButtonActionToggleDisplayModeToggle the DJICameraDisplayMode. It is only supported by XT2 camera. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom104Custom action with value 104. This value is reserved for SDK applications.
      DJIRCButtonActionCustom105Custom action with value 105. This value is reserved for SDK applications.
      DJIRCButtonActionCustom106Custom action with value 106. This value is reserved for SDK applications.
      DJIRCButtonActionCustom107Custom action with value 107. This value is reserved for SDK applications.
      DJIRCButtonActionCustom108Custom action with value 108. This value is reserved for SDK applications.
      DJIRCButtonActionCustom109Custom action with value 109. This value is reserved for SDK applications.
      DJIRCButtonActionNotDefinedNot defined. It is used to present that no action is bound to a button.
      DJIRCButtonActionCustom150Triggers the widget of the payload device in the index of 0. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom151Triggers the widget of the payload device in the index of 1. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom152Triggers the widget of the payload device in the index of 2. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom153Triggers the widget of the payload device in the index of 3. It is supported by the firmware of Matrice 200 V2 series. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom154Triggers the widget of the payload device in the index of 4. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom155Triggers the widget of the payload device in the index of 5. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom156Triggers the widget of the payload device in the index of 6. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom157Triggers the widget of the payload device in the index of 7. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom158Triggers the widget of the payload device in the index of 8. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom159Triggers the widget of the payload device in the index of 9. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom160Triggers the widget of the payload device in the index of 10. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom161Triggers the widget of the payload device in the index of 11. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom162Triggers the widget of the payload device in the index of 12. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom163Triggers the widget of the payload device in the index of 13. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      DJIRCButtonActionCustom164Triggers the widget of the payload device in the index of 14. It is supported by the firmware of Matrice 200 series v2. For the other products, the action has to be implemented by the application itself.
      RC Customizable Button
      enum
      enum DJIRCCustomizableButton
      typedef NS_ENUM(NSUInteger, DJIRCCustomizableButton)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      The customizable buttons.

      Enum Members:
      DJIRCCustomizableButtonC1The button with C1 label.
      DJIRCCustomizableButtonC2The button with C2 label.
      DJIRCCustomizableButtonC3The button with C3 label.
      DJIRCCustomizableButtonC4The button with C4 label.
      DJIRCCustomizableButtonBAThe button with BA label.
      DJIRCCustomizableButtonBBThe button with BB label.
      DJIRCCustomizableButtonBCThe button with BC label.
      DJIRCCustomizableButtonBDThe button with BD label.
      DJIRCCustomizableButtonBEThe button with BE label.
      DJIRCCustomizableButtonBFThe button with BF label.
      DJIRCCustomizableButtonBGThe button with BG label.
      DJIRCCustomizableButtonBHThe button with BH label.
      DJIRCCustomizableButtonTDThe button with TD label.
      DJIRCCustomizableButtonMENUThe button with MENU label.
      DJIRCCustomizableButtonLSThe button with LS label.
      DJIRCCustomizableButtonRSThe button with RS label.
      DJIRCCustomizableButtonLWThe button with LW label.
      DJIRCCustomizableButtonRWThe button with RW label.
      DJIRCCustomizableButtonUnknownUnknown.
      RC Pairing Device
      enum
      enum DJIRCPairingDevice
      typedef NS_ENUM (uint8_t, DJIRCPairingDevice)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Types of the device that the remote controller can pair with. It is only used when the remote controller supports multi-device pairing. Only Supported by Phantom 4 RTK.

      Enum Members:
      DJIRCPairingDeviceAircraftThe device to be paired with is an aircraft.
      DJIRCPairingDeviceRTKBaseStationThe device to be paired with is an RTK base station.
      DJIRCPairingDeviceUnknownUnknown.
      Multi Device State
      enum
      enum DJIRCMultiDeviceState
      typedef NS_ENUM(uint8_t, DJIRCMultiDeviceState)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      The state (e.g. unpaired, paired, connected, etc.) of a device that may connected to the remote controller. It is only used when the remote controller supports multi-device pairing. Only supported by DJI Phantom 4 RTK.

      Enum Members:
      DJIRCMultiDeviceStateUnpairedThe remote controller is unpaired with the device. This state is for both aircraft and base station.
      DJIRCMultiDeviceStatePairingThe remote controller is pairing with the device. This state is only for aircraft.
      DJIRCMultiDeviceStatePairedThe remote controller is paired. This state is only for aircraft.
      DJIRCMultiDeviceStateDisconnectedThe remote controller is paired with the device but the connection between the device and the remote controller is broken. The remote controller already remembers the device and the connection will receover automatically when it is possible. This state is only for base station. Only Supported by Phantom 4 RTK.
      DJIRCMultiDeviceStateConnectedThe remote controller is paired with the device and it is connected to the device. This state is only for base station.
      DJIRCMultiDeviceStateUnknownUnknown.
      soft Switch JoyStick Mode
      enum
      enum DJIRCSoftSwitchJoyStickMode
      typedef NS_ENUM (uint8_t, DJIRCSoftSwitchJoyStickMode)
      Header:DJIRemoteControllerBaseTypes.h
      Description:

      Joy stick mode on the remote controller. It is only used when the remote controller doesn't have a mode switch. Only Supported by Mavic Mini, DJI Mini SE.

      Enum Members:
      DJIRCSoftSwitchJoyStickMode_SSet the joy stick to sport mode. Only Supported by Mavic Mini, DJI Mini SE.
      DJIRCSoftSwitchJoyStickMode_PSet the joy stick to position mode. Only Supported by Mavic Mini, DJI Mini SE.
      DJIRCSoftSwitchJoyStickMode_TSet the joy stick to tripod mode. Only Supported by Mavic Mini, DJI Mini SE.
      DJIRCSoftSwitchJoyStickModeUnknownUnknown.
      method setSoftSwitchJoyStickMode:completion
      - (void)setSoftSwitchJoyStickMode:(DJIRCSoftSwitchJoyStickMode)mode completion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Sets the joy stick mode on the remote controller. It is only used when the remote controller doesn't have a mode switch. Only Supported by Mavic Mini, DJI Mini SE.

      method getSoftSwitchJoyStickModeWithCompletion
      - (void)getSoftSwitchJoyStickModeWithCompletion:(void(^)(DJIRCSoftSwitchJoyStickMode mode, NSError * error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the joy stick mode on the remote controller. It is only used when the remote controller doesn't have a mode switch. Only Supported by Mavic Mini, DJI Mini SE.

      const DJIRemoteControllerDisplayNameMavicPro
      extern NSString *const DJIRemoteControllerDisplayNameMavicPro
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of Mavic Pro's remote controller.

      const DJIRemoteControllerDisplayNameInspire1
      extern NSString *const DJIRemoteControllerDisplayNameInspire1
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of the remote controller for Inspire 1 series and Matrice 100.

      const DJIRemoteControllerDisplayNameLightbridge2
      extern NSString *const DJIRemoteControllerDisplayNameLightbridge2
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of the remote controller for Lightbridge 2 wireless module. The module is used by stand-alone Lightbridge 2, A3, N3 and Matrice 600 series.

      const DJIRemoteControllerDisplayNameInspire2
      extern NSString *const DJIRemoteControllerDisplayNameInspire2
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of the remote controller for Inspire 2 and Matrice 200 series.

      const DJIRemoteControllerDisplayNameCendence
      extern NSString *const DJIRemoteControllerDisplayNameCendence
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of the Cendence remote controller.

      const DJIRemoteControllerDisplayNameCendenceSDR
      extern NSString *const DJIRemoteControllerDisplayNameCendenceSDR
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of the Cendence SDR remote controller.

      const DJIRemoteControllerDisplayNamePhantom3Professinal
      extern NSString *const DJIRemoteControllerDisplayNamePhantom3Professinal
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of the remote controller for Phantom 3 Professional, Phantom 3 Advanced and Phantom 4.

      const DJIRemoteControllerDisplayNamePhantom3Standard
      extern NSString *const DJIRemoteControllerDisplayNamePhantom3Standard
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of Phantom 3 Standard's remote controller.

      const DJIRemoteControllerDisplayNamePhantom4Pro
      extern NSString *const DJIRemoteControllerDisplayNamePhantom4Pro
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of Phantom 4 Pro's remote controller.

      const DJIRemoteControllerDisplayNamePhantom4Advanced
      extern NSString *const DJIRemoteControllerDisplayNamePhantom4Advanced
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of Phantom 4 Advanced's remote controller.

      const DJIRemoteControllerDisplayNamePhantom4ProV2
      extern NSString *const DJIRemoteControllerDisplayNamePhantom4ProV2
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of the remote controller for Phantom 4 Pro V2.

      const DJIRemoteControllerDisplayNamePhantom4RTK
      extern NSString *const DJIRemoteControllerDisplayNamePhantom4RTK
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of the remote controller for Phantom 4 RTK.

      const DJIRemoteControllerDisplayNameSpark
      extern NSString *const DJIRemoteControllerDisplayNameSpark
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of Spark's remote controller.

      const DJIRemoteControllerDisplayNameMavicAir
      extern NSString *const DJIRemoteControllerDisplayNameMavicAir
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of Mavic Air's remote controller.

      const DJIRemoteControllerDisplayNameMavic2
      extern NSString *const DJIRemoteControllerDisplayNameMavic2
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of Mavic 2's remote controller.

      const DJIRemoteControllerDisplayNameMavic2Enterprise
      extern NSString *const DJIRemoteControllerDisplayNameMavic2Enterprise
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of Mavic 2 Enterprise's remote controller.

      const DJIRemoteControllerDisplayNameSmartControllerEnterprise
      extern NSString *const DJIRemoteControllerDisplayNameSmartControllerEnterprise
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of DJI Smart Controller.

      const DJIRemoteControllerDisplayNameMavicMini
      extern NSString *const DJIRemoteControllerDisplayNameMavicMini
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of Mavic Mini/DJI Mini SE's remote controller.

      const DJIRemoteControllerDisplayNameMavicAir2
      extern NSString *const DJIRemoteControllerDisplayNameMavicAir2
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of Mavic Air 2's remote controller.

      const DJIRemoteControllerDisplayNameDJIMini2
      extern NSString *const DJIRemoteControllerDisplayNameDJIMini2
      Header:DJIRemoteControllerDisplayNames.h
      Description:

      The display name of DJI Mini 2's remote controller.

      Calibration Component State
      class
      Calibration Progress
      class
      Aggregation State
      class


      State Updates

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

      Returns the delegate of Remote Controller.

      See Also:

      DJIRemoteControllerDelegate


      Aircraft Pairing

      Enter Pairing Mode
      method
      method startPairingWithCompletion
      - (void)startPairingWithCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamStartPairing
      Description:

      Enters pairing mode, in which the Remote Controller starts pairing with the aircraft. This method is used when the Remote Controller no longer recognizes which aircraft it is paired with.

      Input Parameters:
      DJICompletionBlock completionCompletion block.
      Exit Pairing Mode
      method
      method stopPairingWithCompletion
      - (void)stopPairingWithCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamStopPairing
      Description:

      Exits pairing mode.

      Input Parameters:
      DJICompletionBlock completionCompletion block.
      method getPairingStateWithCompletion
      - (void)getPairingStateWithCompletion:(void (^_Nonnull)(DJIRCPairingState state, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamPairingState
      Description:

      Gets the pairing status as the Remote Controller is pairing with the aircraft.

      Input Parameters:
      DJIRCPairingState stateThe pairing state.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCPairingState state, NSError *_Nullable error) completionCompletion block.


      Multi Device Pairing

      Pairing Supported
      method
      method isMultiDevicePairingSupported
      - (BOOL)isMultiDevicePairingSupported
      Header:DJIRemoteController.h
      Description:

      Determines if multi-device pairing supported by the remote controller. When the remote controller supports multi-device pairing, it can be paired to more than one device (e.g. aircraft, RTK base station) at the same time. When this feature is supported, use startMultiDevicePairingWithTarget:withCompletion and stopMultiDevicePairingWithCompletion to start and stop pairing instead of using the following methods:
      - startPairingWithCompletion
      - stopPairingWithCompletion
      - getPairingStateWithCompletion. This feature is only supported by Phantom 4 RTK.

      Return:
      BOOLYES if multi-device pairing is supported.
      method startMultiDevicePairingWithTarget:withCompletion
      - (void)startMultiDevicePairingWithTarget:(DJIRCPairingDevice)target
      withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Starts pairing a target with the specific type (aircraft or RTK base station). This paring method is for Phantom 4 RTK only. To use RTK feature with a base station, the Phantom 4 RTK remote controller need to pair both the base station and the aircraft at the same time.
      CAUTION: pairing an RTK base station will unpair the paired aircraft. Therefore, to use the base station properly, the user needs to pair the base station first, and the aircraft after. It is only supported when isMultiDevicePairingSupported returns YES.

      Input Parameters:
      DJIRCPairingDevice targetThe device target to start multi-device pairing.
      DJICompletionBlock completionCompletion block.
      method stopMultiDevicePairingWithCompletion
      - (void)stopMultiDevicePairingWithCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Stops the multi-device pairing. It is used after the pairing is started and before the remote controller is paired to a device successfully. It is not necessary to call this method if the remote controller is paired to a device successfully. Only Supported by Phantom 4 RTK.

      Input Parameters:
      DJICompletionBlock completionCompletion block.


      RTK Channel

      method setRTKChannelEnabled:withCompletion
      - (void)setRTKChannelEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Enables the RTK channel on the remote controller. When RTK air system is using the base station as the reference station, the remote controller should enable the RTK channel and reserve some bandwidth for data transmission between the base station and the air system.
      CAUTION: toggling RTK channel will reset the airlink between the remote controller and the aircraft. The airlink may take 3 seconds to recover. DO NOT enable/disable the channel when the aircraft is flying. If the base station is reconnected, you need to call this interface to enabled the RTK channel again. Only Supported by Phantom 4 RTK.

      Input Parameters:
      BOOL enabledYES to enable the RTK channel on the remote controller.
      DJICompletionBlock completionCompletion block.


      Customize RC

      Flight Control Stick Mapping
      method
      method setCustomAircraftMapping:withCompletion
      -(void)setCustomAircraftMapping:(DJIRCAircraftMapping *)mapping withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamCustomAircraftMapping
      Description:

      Set the mapping of custom style. It will change the current mapping style to DJIRCAircraftMappingStyleCustom. The setting will only take effect when the remote controller is in master mode.

      Input Parameters:
      DJIRCAircraftMapping * mappingThe remote controller aircraft mapping.
      DJICompletionBlock completionCompletion block that receives the execution result.
      method getCustomAircraftMappingWithCompletion
      -(void)getCustomAircraftMappingWithCompletion:(void (^_Nonnull)(DJIRCAircraftMapping *_Nullable mapping, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamCustomAircraftMapping
      Description:

      Retrieves the stick mapping associated with the custom style.

      Input Parameters:
      DJIRCAircraftMapping *_Nullable mappingThe remote controller aircraft mapping.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCAircraftMapping *_Nullable mapping, NSError *_Nullable error) completionCompletion block that receives the execution result.
      method setAircraftMappingStyle:withCompletion
      -(void)setAircraftMappingStyle:(DJIRCAircraftMappingStyle)style withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamAircraftMappingStyle
      Description:

      Sets the Remote Controller's control mode.

      Input Parameters:
      DJIRCAircraftMappingStyle styleRemote controller control mode to be set.
      DJICompletionBlock completionThe execution callback with the execution result returned.
      method getAircraftMappingStyleWithCompletion
      -(void)getAircraftMappingStyleWithCompletion:(void (^_Nonnull)(DJIRCAircraftMappingStyle style, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamAircraftMappingStyle
      Description:

      Gets the Remote Controller's control mode.

      Input Parameters:
      DJIRCAircraftMappingStyle styleThe remote controller aircraft mapping.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCAircraftMappingStyle style, NSError *_Nullable error) completionCompletion block that receives the execution result.
      method setLeftWheelGimbalControlAxis:withCompletion
      - (void)setLeftWheelGimbalControlAxis:(DJIRCGimbalAxis)axis withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamLeftWheelGimbalControlAxis
      Description:

      Sets which of the gimbal directions the top left dial (Gimbal Dial) on the Remote Controller will control. The three options (pitch, roll, and yaw) are outlined in the enum named DJIRCGimbalAxis.

      Input Parameters:
      DJIRCGimbalAxis axisGimbal direction to be set that the top left dial on the Remote Controller will control.
      DJICompletionBlock completionCompletion block.
      method getLeftWheelGimbalControlAxisWithCompletion
      - (void)getLeftWheelGimbalControlAxisWithCompletion:(void (^_Nonnull)(DJIRCGimbalAxis axis, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamLeftWheelGimbalControlAxis
      Description:

      Gets which of the gimbal directions the top left wheel (Gimbal Dial) on the Remote Controller will control.

      Input Parameters:
      DJIRCGimbalAxis axisThe gimbal directions of the top left wheel on the remote controller.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCGimbalAxis axis, NSError *_Nullable error) completionCompletion block.
      method setLeftWheelGimbalControlSpeedCoefficient:withCompletion
      - (void)setLeftWheelGimbalControlSpeedCoefficient:(NSUInteger)coefficient withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Sets gimbal rotation speed of the top left wheel (Gimbal Dial) on the Remote Controller. The valid range is [0, 100].

      Input Parameters:
      NSUInteger coefficientGimbal control speed coefficient to be set. Setting it to zero can disable the gimbal control by the top left wheel.
      DJICompletionBlock completionCompletion block.
      method getLeftWheelGimbalControlSpeedCoefficientWithCompletion
      - (void)getLeftWheelGimbalControlSpeedCoefficientWithCompletion:(void (^_Nonnull)(NSUInteger coefficient, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets gimbal rotation speed of the top left wheel (Gimbal Dial) on the Remote Controller. The valid range is [0, 100].

      Input Parameters:
      NSUInteger coefficientThe gimbal control speed coefficient of the top left wheel on the Remote Controller. When it is zero, gimbal control by the top left wheel is disabled.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSUInteger coefficient, NSError *_Nullable error) completionCompletion block.
      method setCustomButtonTags:withCompletion
      - (void)setCustomButtonTags:(DJIRCCustomButtonTags *)tags withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamCustomButtonTags
      Description:

      Sets custom button's (Back Button's) tags, which can be used by the user to record user settings for a particular Remote Controller. Unlike all other buttons, switches and sticks on the Remote Controller, the custom buttons only send state to the Mobile Device and not the aircraft.

      Input Parameters:
      DJIRCCustomButtonTags * tagsBack Buttons' custom tags, the value should in the range of [0, 255].
      DJICompletionBlock completionCompletion block.
      method getCustomButtonTagsWithCompletion
      - (void)getCustomButtonTagsWithCompletion:(void (^_Nonnull)(DJIRCCustomButtonTags *_Nullable tags,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamCustomButtonTags
      Description:

      Gets the custom button's (Back Button's) tags.

      Input Parameters:
      DJIRCCustomButtonTags *_Nullable tagsBack Buttons' custom tags.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCCustomButtonTags *_Nullable tags, NSError *_Nullable error) completionCompletion block.
      method setC1ButtonBindingEnabled:withCompletion
      - (void)setC1ButtonBindingEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamC1ButtonBindingEnabled
      Description:

      Set C1 button enable binding DJI Go app state. If it's enabled, when the user presses the C1 button, an alertView will pop up and ask if you want to open the DJI Go app. This feature only supports MFI certificated Remote Controller.
      @attention This feature will affect the user of DJI Go app, we suggest you to call this interface to enable the C1 binding feature when your application enter background. Otherwise, the C1 button will be unbound with DJI Go app forever.

      Input Parameters:
      BOOL enabledEnable C1 button bind DJI Go app.
      DJICompletionBlock completionCompletion block.
      method getC1ButtonBindingEnabledWithCompletion
      - (void)getC1ButtonBindingEnabledWithCompletion:(void (^_Nonnull)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamC1ButtonBindingEnabled
      Description:

      Gets the C1 button enable binding DJI Go app state. This feature only supports MFI certificated Remote Controller.

      Input Parameters:
      BOOL enabledThe enable value.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(BOOL enabled, NSError *_Nullable error) completionCompletion block.
      method setShutterButtonBindingEnabled:withCompletion
      - (void)setShutterButtonBindingEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Enables invoking shooting photo interface when the shutter button is pressed. Mavic 2 series remote controller's shutter button will not work physically when connecting to Mobile SDK. This setting will be stored in software application localized storage paired with the RC SN key, which means, if the application is killed, it will be set to enabled by default when the application is relaunched. It is only supported by Mavic 2 series.

      Input Parameters:
      BOOL enabledYES to enable invoking shooting photo interface when the shutter button is pressed.
      DJICompletionBlock completionCompletion block.
      method getShutterButtonBindingEnabledWithCompletion
      - (void)getShutterButtonBindingEnabledWithCompletion:(void (^_Nonnull)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets if shooting photo interface is involved when the shutter button is pressed. It is only supported by Mavic 2 series.

      Input Parameters:
      BOOL enabledIf shooting photo interface is invoking when the shutter button is pressed.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(BOOL enabled, NSError *_Nullable error) completionCompletion block.
      method setRecordButtonBindingEnabled:withCompletion
      - (void)setRecordButtonBindingEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Enables invoking video record interface when the record button is pressed. Mavic 2 series remote controller's record button will not work physically when connecting to Mobile SDK. This setting will be stored in software application localized storage paired with the RC SN key. Only supported by Mavic 2 series.

      Input Parameters:
      BOOL enabledYES to enable invoking video record interface when the record button is pressed.
      DJICompletionBlock completionCompletion block.
      method getRecordButtonBindingEnabledWithCompletion
      - (void)getRecordButtonBindingEnabledWithCompletion:(void (^_Nonnull)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets if video record interface is involved when the record button is pressed. It is only supported by Mavic 2 series.

      Input Parameters:
      BOOL enabledIf video record interface is invoking when the record button is pressed.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(BOOL enabled, NSError *_Nullable error) completionCompletion block.
      method setPhotoAndVideoToggleButtonBindingEnabled:withCompletion
      - (void)setPhotoAndVideoToggleButtonBindingEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      YES to switch camera flat mode between photo and video when the photoAndVideoToggleButton button is pressed. NO when photoAndVideoToggleButton button is pressed, we will not bind any event. You can monitor the button and handle custom events by yourself. This setting will be stored in software application localized storage paired with the RC SN key, which means. Only supported by Mavic Air 2, DJI Air 2S.

      Input Parameters:
      BOOL enabledYES to switch camera flat mode between photo and video when the photoAndVideoToggleButton button is pressed.
      DJICompletionBlock completionCompletion block.
      method getPhotoAndVideoToggleButtonBindingEnabledWithCompletion
      - (void)getPhotoAndVideoToggleButtonBindingEnabledWithCompletion:(void (^_Nonnull)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets whether switching camera flat mode between photo and video is enabled when the photoAndVideoToggleButton button is pressed. It is only supported by Mavic Air 2.

      Input Parameters:
      BOOL enabledGets the enable value.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(BOOL enabled, NSError *_Nullable error) completionCompletion block.
      method setShootPhotoAndRecordButtonBindingEnabled:withCompletion
      - (void)setShootPhotoAndRecordButtonBindingEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      YES to enable invoking shoot photo or record interface when the record button is pressed depend on the photoAndVideoToggleButton button state. NO when photoAndVideoToggleButton button is pressed, we will not bind any event. You can monitor the button and handle custom events by yourself. This setting will be stored in software application localized storage paired with the RC SN key. Only supported by Mavic AIr 2, DJI Air 2S.

      Input Parameters:
      BOOL enabledYES to enable invoking shoot photo or record interface when the record button is pressed depend on the photoAndVideoToggleButton button state.
      DJICompletionBlock completionCompletion block.
      method getShootPhotoAndRecordButtonBindingEnabledWithCompletion
      - (void)getShootPhotoAndRecordButtonBindingEnabledWithCompletion:(void (^_Nonnull)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets if shoot photo or video record interface is involved when the photoAndVideoToggleButton button is pressed. It is only supported by Mavic Air 2, DJI Air 2S.

      Input Parameters:
      BOOL enabledGets the enable value.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(BOOL enabled, NSError *_Nullable error) completionCompletion block.


      Mobile Device Charging

      Charge Mobile Mode
      method
      method setChargeMobileMode:withCompletion
      - (void)setChargeMobileMode:(DJIRCChargeMobileMode)mode withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Sets the charge mode of a connected iOS device. Note: Android devices are always charging when connected to the remote controller. It is only supported by Inspire 2, M200 series, Cendence and Mavic 2 series.

      Input Parameters:
      DJIRCChargeMobileMode modeCharge Mobile mode.
      DJICompletionBlock completionCompletion block that receives the setter result.
      method getChargeMobileModeWithCompletion
      - (void)getChargeMobileModeWithCompletion:(void (^_Nonnull)(DJIRCChargeMobileMode mode, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamChargeMobileMode
      Description:

      Gets the mode to charge the connected iOS device. Note that Android devices are always charging when connected to the remote controller. It is only supported by Inspire 2, M200 series, Cendence, and Mavic 2 series.

      Input Parameters:
      DJIRCChargeMobileMode modeThe mode to charge the connected iOS device.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCChargeMobileMode mode, NSError *_Nullable error) completionCompletion block.


      Master/Slave RC

      method isMasterSlaveModeSupported
      - (BOOL)isMasterSlaveModeSupported
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamIsMasterSlaveModeSupported
      Description:

      Query method to check if the Remote Controller supports master/slave mode. Master-slave mode is supported by the Inspire 1, Inspire 1 Pro, Matrice 100, Lightbridge 2 (including Matrice 600, Matrice 600 Pro, A3 and N3) and Inspire 2. Inspire 2 is using a new set of interfaces to control the master and slave connection.
      - Similar to other products, Inspire 2's remote controller also use set/get DJIRCMode to change the mode.
      - A slave remote controller can use getMastersWithCompletion and connectToMasterWithID:authorizationCode:withCompletion to join a master remote controller.
      - A master remote controller can use setMasterAuthorizationCode:withCompletion to change the authentication code.

      Return:
      BOOLA boolean value.
      Mode Selection
      method
      method setMode:withCompletion
      - (void)setMode:(DJIRCMode)mode withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamMode
      Description:

      Sets the Remote Controller's mode. See the DJIRCMode enum for all possible Remote Controller modes. The master and slave modes are only supported for the Inspire 1, Inspire 1 Pro, M100, Lightbridge 2 (including Matrice 600, Matrice 600 Pro, A3 and N3) and Inspire 2. It's not supported by Matrice 300 RTK.

      Input Parameters:
      DJIRCMode modeMode of type DJIRCMode to be set for the Remote Controller.
      DJICompletionBlock completionCompletion block.
      method getModeWithCompletion
      - (void)getModeWithCompletion:(void (^_Nonnull)(DJIRCMode mode,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamMode
      Description:

      Gets the Remote Controller's mode. It is supported by the Inspire 1, Inspire 1 Pro, Matrice 100, Lightbridge 2 (including Matrice 600, Matrice 600 Pro, A3 and N3) and Inspire 2.

      Input Parameters:
      DJIRCMode modeThe Remote Controller's mode.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCMode mode, NSError *_Nullable error) completionCompletion block.
      method getMasterSlaveConnectionStateWithCompletion
      - (void)getMasterSlaveConnectionStateWithCompletion:(void (^_Nonnull)(BOOL isConnected,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamMasterSlaveConnectionState
      Description:

      Gets the Remote Controller's master and slave connection state. It is supported by the Inspire 1, Inspire 1 Pro, Matrice 100, Lightbridge 2 (including Matrice 600, Matrice 600 Pro, A3 and N3) and Inspire 2.

      Input Parameters:
      BOOL isConnectedYes if the master and slave remote controller are connected.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(BOOL isConnected, NSError *_Nullable error) completionCompletion block.
      Identifier
      method
      method setName:withCompletion
      - (void)setName:(NSString *_Nonnull)name withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamName
      Description:

      Sets the Remote Controller's name.

      Input Parameters:
      NSString *_Nonnull nameRemote controller name to be set. Six characters at most.
      DJICompletionBlock completionCompletion block.
      method getNameWithCompletion
      - (void)getNameWithCompletion:(void (^_Nonnull)(NSString *_Nullable name, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamName
      Description:

      Gets the Remote Controller's name.

      Input Parameters:
      NSString *_Nullable nameThe remote controller's name.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSString *_Nullable name, NSError *_Nullable error) completionCompletion block.
      method setPassword:withCompletion
      - (void)setPassword:(NSString *_Nonnull)password withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamPassword
      Description:

      Sets the Remote Controller's password.

      Input Parameters:
      NSString *_Nonnull passwordRemote controller password to be set, using a string consisted by 4 digits.
      DJICompletionBlock completionCompletion block.
      method getPasswordWithCompletion
      - (void)getPasswordWithCompletion:(void (^_Nonnull)(NSString *_Nullable password, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamPassword
      Description:

      Gets the Remote Controller's password.

      Input Parameters:
      NSString *_Nullable passwordThe remote controller's password.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSString *_Nullable password, NSError *_Nullable error) completionCompletion block.
      Connection - Master
      method
      method getSlaveListWithCompletion
      - (void)getSlaveListWithCompletion:(void (^_Nonnull)(NSArray<DJIRCInformation *> *_Nullable slaveList, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamSlaveList
      Description:

      Used by the current master Remote Controller to get all the slaves connected to it.

      Input Parameters:
      NSArray<DJIRCInformation *> *_Nullable slaveListThe array of DJIRCInformation objects.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSArray<DJIRCInformation *> *_Nullable slaveList, NSError *_Nullable error) completionThe completion block.
      method startMasterSearchingWithUpdateBlock:withCompletion
      - (void)startMasterSearchingWithUpdateBlock:(void (^_Nonnull)(NSArray<DJIRCInformation *> *_Nonnull masters))updateBlock
      withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamStartMasterSearching
      Description:

      Starts a search by slave Remote Controller for nearby master Remote Controllers.

      Input Parameters:
      NSArray<DJIRCInformation *> *_Nonnull mastersRC information of master remote controllers
      void (^_Nonnull)(NSArray<DJIRCInformation *> *_Nonnull masters) updateBlockupdateBlock called every 1 seconds.
      DJICompletionBlock completionBlock that receives the information of available master remote controllers. updateBlock will be called repeated with 1 second interval once master searching is started successfully. It will stop when the searching is stopped either by the remote controller itself or by calling stopMasterSearchingWithCompletion.
      method stopMasterSearchingWithCompletion
      - (void)stopMasterSearchingWithCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamStopMasterSearching
      Description:

      Used by a slave Remote Controller to stop the search for nearby master Remote Controllers.

      Input Parameters:
      DJICompletionBlock completionRemote execution result callback block.
      method getMasterSearchingStateWithCompletion
      - (void)getMasterSearchingStateWithCompletion:(void (^_Nonnull)(BOOL isStarted, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamMasterSearchingState
      Description:

      Returns the state of the master Remote Controller search. The search is initiated by the Mobile Device, but performed by the Remote Controller. Therefore, if the Mobile Device's application crashes while a search is ongoing, this method can be used to let the new instance of the application understand the Remote Controller state.

      Input Parameters:
      BOOL isStartedisStarted value.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(BOOL isStarted, NSError *_Nullable error) completionRemote execution result callback block.
      method connectToMasterWithCredentials:withCompletion
      - (void)connectToMasterWithCredentials:(DJIRCCredentials* _Nullable)credentials
      withCompletion:(void (^_Nonnull)(DJIRCConnectToMasterResult result, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamConnectToMasterWithCredentials
      Description:

      Used by a slave Remote Controller to join a master Remote Controller. If the master Remote Controller accepts the request, the master Remote Controller will control the aircraft, and the slave Remote Controller will control the gimbal and/or be able to view the downlink video.

      Input Parameters:
      DJIRCCredentials* _Nullable credentialsInclude master's name and master's password.
      DJIRCConnectToMasterResult resultThe result of joining master remote controller.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCConnectToMasterResult result, NSError *_Nullable error) completionCompletion block.
      method getConnectedMasterCredentials
      - (void)getConnectedMasterCredentials:(void (^_Nonnull)(DJIRCCredentials* _Nullable credentials, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamConnectedMasterCredentials
      Description:

      Returns the master Remote Controller's information, which includes the unique identifier, name, and password.

      Input Parameters:
      DJIRCCredentials* _Nullable credentialsInclude master's name and master's password.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCCredentials* _Nullable credentials, NSError *_Nullable error) completionRemote execution result callback block.
      Inspire 2 Connection - Master
      method
      method setMasterAuthorizationCode:withCompletion
      - (void)setMasterAuthorizationCode:(NSString*)authorizationCode
      withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamMasterAuthorizationCode
      Description:

      Sets the authorization code of a master remote controller. The slave remote controller needs to know the authorization code in order to join the master. A valid input is a string with 6 digits. The default value is "888888". It can only be called when the remote controller is in master mode.

      Input Parameters:
      NSString* authorizationCodeAuthorization code to set.
      DJICompletionBlock completionCompletion block that receives the setter result.
      Inspire 2 Connection - Slave
      method
      method getMastersWithCompletion
      - (void)getMastersWithCompletion:(void (^_Nonnull)(NSArray<NSString *> *_Nullable masters,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamMasters
      Description:

      Gets a list of the nearby remote controllers in master mode. It can only be called when the remote controller is in slave mode.

      Input Parameters:
      NSArray<NSString *> *_Nullable mastersThe array of master remote controllers.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSArray<NSString *> *_Nullable masters, NSError *_Nullable error) completionThe completion block.
      method connectToMasterWithID:authorizationCode:withCompletion
      - (void)connectToMasterWithID:(NSString *_Nonnull)masterID
      authorizationCode:(NSString *_Nullable)code
      withCompletion:(void (^_Nonnull)(DJIRCConnectToMasterResult result, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamConnectToMasterWithIDAndAuthorizationCode
      Description:

      Joins the master remote controller with the specific ID. If the remote controller has joined the same master before, the authorization code is not required until the master remote controller changes its authorization code. In this case, code can be nil. It can only be called when the remote controller is in slave mode.

      Input Parameters:
      NSString *_Nonnull masterIDMaster remote controller with the specific ID to join.
      NSString *_Nullable codeAuthorization code of the master remote controller.
      DJIRCConnectToMasterResult resultThe DJIRCJoinMasterResult object.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCConnectToMasterResult result, NSError *_Nullable error) completionThe completion block.
      Request Gimbal Control
      method
      method requestGimbalControlWithCompletion
      - (void)requestGimbalControlWithCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Requests the gimbal control from the other remote controller. Different from requestLegacyGimbalControlWithCompletion, the gimbal control permission is transferred to the remote controller without the reply from the master remote controller. The master remote controller can attain the gimbal control back by calling the same method. It is only supported by Inspire 2, M200 series and Cendence.

      Input Parameters:
      DJICompletionBlock completionThe completion block.
      method respondToRequestForGimbalControl:fromSlaveRC
      -(void) respondToRequestForGimbalControl:(BOOL)response fromSlaveRC:(uint32_t)rcID
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamRespondToRequestForGimbalControl
      Description:

      When a slave Remote Controller requests a master Remote Controller to control the gimbal, this method is used by a master Remote Controller to respond to the slave Remote Controller's request.

      Input Parameters:
      BOOL response<code>YES</code> if the master Remote Controller agrees to give the slave Remote Controller the right to control the gimbal.
      uint32_t rcIDThe slave Remote Controller's identifier.
      Gimbal Control - Slave
      method
      method requestLegacyGimbalControlWithCompletion
      - (void)requestLegacyGimbalControlWithCompletion:(void (^_Nonnull)(DJIRCRequestGimbalControlResult result, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamRequestGimbalControl
      Description:

      Called by the slave Remote Controller to request gimbal control from the master Remote Controller. It is only supported by Inspire 1 and DJI Lightbridge 2.

      Input Parameters:
      DJIRCRequestGimbalControlResult resultDJIRCRequestGimbalControlResult object.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCRequestGimbalControlResult result, NSError *_Nullable error) completionRemote execution result callback block.
      method setGimbalMappingStyle:withCompletion
      -(void)setGimbalMappingStyle:(DJIRCGimbalMappingStyle)style withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamGimbalMappingStyle
      Description:

      Sets the Remote Controller's slave control mode.

      Input Parameters:
      DJIRCGimbalMappingStyle styleControl mode to be set.
      DJICompletionBlock completionRemote execution result error callback.
      method getGimbalMappingStyleWithCompletion
      -(void)getGimbalMappingStyleWithCompletion:(void (^_Nonnull)(DJIRCGimbalMappingStyle style, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamGimbalMappingStyle
      Description:

      Gets the Remote Controller's slave control mode.

      Input Parameters:
      DJIRCGimbalMappingStyle styleMapping style.
      NSError *_Nullable errorError state of asynchronous execution.
      void (^_Nonnull)(DJIRCGimbalMappingStyle style, NSError *_Nullable error) completionThe execution callback with the value(s) returned.
      method setGimbalControlSpeedCoefficient:withCompletion
      - (void)setGimbalControlSpeedCoefficient:(DJIRCGimbalControlSpeedCoefficient)speedCoefficient withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamGimbalControlSpeedCoefficient
      Description:

      Called by the slave Remote Controller to set the gimbal's pitch, roll, and yaw speed with a range of [0, 100].

      Input Parameters:
      DJIRCGimbalControlSpeedCoefficient speedCoefficientSpeed to be set for gimbal's pitch, roll, and yaw, which should be in the range of [0, 100].
      DJICompletionBlock completionCompletion block.
      method getGimbalControlSpeedCoefficientWithCompletion
      - (void)getGimbalControlSpeedCoefficientWithCompletion:(void (^_Nonnull)(DJIRCGimbalControlSpeedCoefficient speedCoefficient, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamGimbalControlSpeedCoefficient
      Description:

      Gets the current slave's gimbal's pitch, roll, and yaw speed with a range of [0, 100].

      Input Parameters:
      DJIRCGimbalControlSpeedCoefficient speedCoefficientThe DJIRCGimbalControlSpeedCoefficient object.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCGimbalControlSpeedCoefficient speedCoefficient, NSError *_Nullable error) completionThe completion block.
      Custom Gimbal Mapping
      method
      method setCustomGimbalMapping:withCompletion
      -(void)setCustomGimbalMapping:(DJIRCGimbalMapping *)mapping withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamCustomGimbalMapping
      Description:

      Sets the Remote Controller's slave control mode.

      Input Parameters:
      DJIRCGimbalMapping * mappingThe DJIRCGimbalMapping object.
      DJICompletionBlock completionRemote execution result completion block.
      method getCustomGimbalMappingWithCompletion
      -(void)getCustomGimbalMappingWithCompletion:(void (^_Nonnull)(DJIRCGimbalMapping *_Nullable mapping, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamCustomGimbalMapping
      Description:

      Gets the Remote Controller's slave control mode.

      Input Parameters:
      DJIRCGimbalMapping *_Nullable mappingThe DJIRCGimbalMapping object.
      NSError *_Nullable errorError retrieving the value
      void (^_Nonnull)(DJIRCGimbalMapping *_Nullable mapping, NSError *_Nullable error) completionRemote execution result completion block.


      Cendence Custom Buttons

      Check Support
      property
      property isCustomizableButtonSupported
      @property(nonatomic, readonly) BOOL isCustomizableButtonSupported
      Header:DJIRemoteController.h
      Description:

      YES if the remote controller supports customizable buttons. With the customizable buttons, the user can define the action bound to a button. When the button is clicked, the corresponding action can be received from the delegate method remoteController:didUpdateButtonAction. Only Cendence supports customizable buttons. This is distinct from remote controllers with buttons C1 and C2 that support custom tags and a binding to DJI Go.

      Button Profile Group
      method
      method getButtonProfileGroupsWithCompletion
      - (void)getButtonProfileGroupsWithCompletion:(void (^)(NSArray<NSString *> *_Nullable groups,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the names of the customizable button profile groups. The configurations of the customizable buttons are organized as groups. The maximum number of groups is 5 and each group contains 3 profiles. It is only valid when isCustomizableButtonSupported returns YES.

      Input Parameters:
      NSArray<NSString *> *_Nullable groupsThe names of the customizable button profile groups.
      NSError *_Nullable errorError if there is any.
      void (^)(NSArray<NSString *> *_Nullable groups, NSError *_Nullable error) completionThe completion block to receive the result.
      method addButtonProfileGroup:withCompletion
      - (void)addButtonProfileGroup:(NSString *)groupName withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Adds a group of customizable button profiles. Three default profiles will be created for the newly added group. The default profile can accessed through defaultButtonActions. It is only valid when isCustomizableButtonSupported returns YES.

      Input Parameters:
      NSString * groupNameThe name of the group to be added.
      DJICompletionBlock completionThe completion block to receive the result.
      method removeButtonProfileGroup:withCompletion
      - (void)removeButtonProfileGroup:(NSString *)groupName withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Removes a group from the customizable button profiles. There must be at least one group, therefore, the removal of the last group will fail. It is only valid when isCustomizableButtonSupported returns YES.

      Input Parameters:
      NSString * groupNameThe name of the group to be removed.
      DJICompletionBlock completionThe completion block to receive the result.
      method renameButtonProfileGroup:to:withCompletion
      - (void)renameButtonProfileGroup:(NSString *)oldProfileName to:(NSString *)newProfileName withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Renames a profile group to a new name. It is only valid when isCustomizableButtonSupported returns YES.

      Input Parameters:
      NSString * oldProfileNameThe name of the group to be renamed.
      NSString * newProfileNameThe new profile group name.
      DJICompletionBlock completionThe completion block to receive the result.
      method selectButtonProfileGroup:withCompletion
      - (void)selectButtonProfileGroup:(NSString *)groupName withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Selects the customizable button profile group. The profile with 0 configIndex in the group will be applied. It is only valid when isCustomizableButtonSupported returns YES.

      Input Parameters:
      NSString * groupNameThe name of the group to select.
      DJICompletionBlock completionThe completion block to receive the result.
      method getSelectedButtonProfileGroupWithCompletion
      - (void)getSelectedButtonProfileGroupWithCompletion:(void (^)(NSString *_Nullable groupName,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the name of the selected customizable button profile group. It is only valid when isCustomizableButtonSupported returns YES.

      Input Parameters:
      NSString *_Nullable groupNameThe name of the selected profile group.
      NSError *_Nullable errorError if there is any.
      void (^)(NSString *_Nullable groupName, NSError *_Nullable error) completionCompletion block to receive the result.
      method selectButtonProfile:withCompletion
      - (void)selectButtonProfile:(uint8_t)profileIndex withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Selects the customizable button profile with the specific index in the selected profile group. It is only valid when isCustomizableButtonSupported returns YES.

      Input Parameters:
      uint8_t profileIndexThe index of the profile to select. The valid range is [0, 2].
      DJICompletionBlock completionCompletion block to receive the result.
      method getSelectedButtonProfileWithCompletion
      - (void)getSelectedButtonProfileWithCompletion:(void (^_Nonnull)(uint8_t profileIndex,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the index of the selected button profile in the selected group. It is only valid when isCustomizableButtonSupported returns YES.

      Input Parameters:
      uint8_t profileIndexThe index of the selected profile.
      NSError *_Nullable errorError if there is any.
      void (^_Nonnull)(uint8_t profileIndex, NSError *_Nullable error) completionThe completion block to receive the result.
      method setButtonConfig:withCompletion
      - (void)setButtonConfig:(DJIRCButtonConfiguration *)config withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Customizes the button configuration. The configuration will be applied to the remote controller immediately and will be stored into the selected profile of the selected profile group. It is only valid when isCustomizableButtonSupported returns YES. Supported by the Cendence remote controller.

      Input Parameters:
      DJIRCButtonConfiguration * configThe configuration to be set.
      DJICompletionBlock completionCompletion block if there is any.
      method getButtonConfigWithCompletion
      - (void)getButtonConfigWithCompletion:(void (^)(DJIRCButtonConfiguration *_Nullable config,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the button configuration being applied to the remote controller. It is only valid when isCustomizableButtonSupported returns YES. Supported by the Cendence remote controller.

      Input Parameters:
      DJIRCButtonConfiguration *_Nullable configThe current configuration.
      NSError *_Nullable errorError if there is any.
      void (^)(DJIRCButtonConfiguration *_Nullable config, NSError *_Nullable error) completionCompletion block to receive the result.
      method resetButtonConfigWithCompletion
      - (void)resetButtonConfigWithCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Resets the selected button configuration to the default settings. The default configuration will be applied to the remote controller and will be stored into the selected index of the activated user. It is only valid when isCustomizableButtonSupported returns YES.

      Input Parameters:
      DJICompletionBlock completionCompletion block to receive the result.
      method customizeButton:withAction:withCompletion
      - (void)customizeButton:(DJIRCCustomizableButton)button withAction:(DJIRCButtonAction)action withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Customizes the action of a button. The new setting will be applied to the remote controller and will be stored into the selected profile index of the selected profile group. It is only valid when isCustomizableButtonSupported returns YES.

      Input Parameters:
      DJIRCCustomizableButton buttonThe customizable button.
      DJIRCButtonAction actionThe action to be bound to the button.
      DJICompletionBlock completionCompletion block to receive the result.
      method fetchCustomizedActionOfButton:withCompletion
      - (void)fetchCustomizedActionOfButton:(DJIRCCustomizableButton)button withCompletion:(void (^)(DJIRCButtonAction action,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Fetches the customized action of a button in the selected configuration. It is only valid when isCustomizableButtonSupported returns YES.

      Input Parameters:
      DJIRCCustomizableButton buttonThe customizable button.
      DJIRCButtonAction actionThe customized action bound to the button.
      NSError *_Nullable errorError if there is any.
      void (^)(DJIRCButtonAction action, NSError *_Nullable error) completionCompletion block to receive the result.


      RC Commands

      method setControllingGimbalIndex:withCompletion
      - (void)setControllingGimbalIndex:(NSUInteger)index withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Directs commands of the physical buttons on the remote controller (rotating gimbal, shoot photo, record video, etc.) to the specific gimbal, when there are multiple gimbals connected. If there is only one gimbal connected, this setting is reset to the remaining gimbal. Enabling setAttitudeSynchronizationEnabled:withCompletion will reset this setting to index 0 and when setAttitudeSynchronizationEnabled:withCompletion is enabled, index can only be set to 0. It is only supported by M210, M210 RTK and Matrice 300 RTK.

      Input Parameters:
      NSUInteger indexIndex of the gimbal to receive the remote controller commands.
      DJICompletionBlock completionCompletion block to receive the result.
      method getControllingGimbalIndexWithCompletion
      - (void)getControllingGimbalIndexWithCompletion:(void (^)(NSUInteger index,
      truetruetruetruetruetruetruetruetruetruetruetruetruetrue NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      The index of the gimbal that the remote controller is controlling. Commands of the physical buttons (rotating gimbal, shoot photo, record video, etc.) will be directed to the specific gimbal. If there is only one gimbal connected, this setting is reset to the remaining gimbal's index. Enabling setAttitudeSynchronizationEnabled:withCompletion will reset the value to 0. For product that supports only one gimbal, the value is always 0.

      Input Parameters:
      NSUInteger indexGet the index of the gimbal that the remote controller is controlling.
      NSError *_Nullable errorError retrieving the value.
      void (^)(NSUInteger index, NSError *_Nullable error) completionCompletion block to receive the result.
      Check Calibration Supported
      method
      method isCalibrationSupported
      - (BOOL)isCalibrationSupported
      Header:DJIRemoteController.h
      Description:

      Query method to check if the Remote Controller supports calibration.

      Return:
      BOOLA boolean value.
      Calibration Components
      method
      method getCalibrationComponentsWithCompletion
      - (void)getCalibrationComponentsWithCompletion:(void (^)(NSArray<NSNumber *> *components, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the hardware components (sticks or dials) on the remote controller that requires calibration. After starting the calibration, user should move the components returned by this method to their physical limits to complete the calibration. It is only supported by Phantom 4 RTK.

      Input Parameters:
      NSArray<NSNumber *> * componentsThe hardware components requiring calibration. Each element in the array is a value of DJIRCCalibrationComponent.
      NSError *_Nullable errorError retrieving the value.
      void (^)(NSArray<NSNumber *> *components, NSError *_Nullable error) completionCompletion block to receive the result.
      Start Calibration
      method
      method startCalibrationWithCompletion
      - (void)startCalibrationWithCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Starts the calibration for the remote controller. Before starting the calibration, all the hardware components requiring calibration (see getCalibrationComponentsWithCompletion) should be returned to their midpoints. The calibration progress for each component can be received from remoteController:didUpdateCalibrationProgress. It is only supported by Phantom 4 RTK.

      Input Parameters:
      DJICompletionBlock completionCompletion block to receive the result.
      Stop Calibration
      method
      method stopCalibrationWithCompletion
      - (void)stopCalibrationWithCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Stops the calibration for the remote controller.
      CAUTION: stopping the calibration before each hardware component returns its physical limits at least once may cause error in the remote controller. Resolve the error by restarting the calibration. It is only supported by Phantom 4 RTK.

      Input Parameters:
      DJICompletionBlock completionCompletion block to receive the result.


      Secondary Video

      Check Supported
      method
      method isSecondaryVideoOutputSupported
      - (BOOL)isSecondaryVideoOutputSupported
      Header:DJIRemoteController.h
      Description:

      Return whether secondary video output supported. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Return:
      BOOLA boolean value.
      method setSecondaryVideoOutputEnabled:withCompletion
      - (void)setSecondaryVideoOutputEnabled:(BOOL)enabled
      withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Enable secondary video output on Remote Controller. The remote controller outputs video to the Mobile Device by default. This will enable a secondary video stream to one of the Remote Controller's physical HDMI and SDI ports. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      BOOL enabledEnables secondary video output.
      DJICompletionBlock completionCompletion block.
      method getSecondaryVideoOutputEnabledWithCompletion
      - (void)getSecondaryVideoOutputEnabledWithCompletion:(void (^_Nonnull)(BOOL enabled, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets whether secondary video output on Remote Controller is enabled. The Remote Controller outputs video to the Mobile Device by default, but a secondary video can be routed to its HDMI or SDI port. Use setSecondaryVideoOutputEnabled:withCompletion to enable or disable, and setSecondaryVideoOutputPort:withCompletion to choose the port. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      BOOL enabledThe enabled value.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(BOOL enabled, NSError *_Nullable error) completionCompletion block.
      method setSecondaryVideoOutputPort:withCompletion
      - (void)setSecondaryVideoOutputPort:(DJIRCSecondaryVideoOutputPort)port
      withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Sets secondary video output port on Remote Controller. HDMI or SDI are possible. Only one port can be active at once. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      DJIRCSecondaryVideoOutputPort portSecondary video output port.
      DJICompletionBlock completionCompletion block.
      method getSecondaryVideoOutputPortWithCompletion
      - (void)getSecondaryVideoOutputPortWithCompletion:(void (^_Nonnull)(DJIRCSecondaryVideoOutputPort port,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the secondary video output port on Remote Controller. HDMI or SDI are possible. Only one port can be active at once. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      DJIRCSecondaryVideoOutputPort portThe value of the DJIRCSecondaryVideoOutputPort Enum.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCSecondaryVideoOutputPort port, NSError *_Nullable error) completionCompletion block.
      method setSecondaryVideoDisplayMode:withCompletion
      - (void)setSecondaryVideoDisplayMode:(DJIRCSecondaryVideoDisplayMode)mode
      withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Sets the secondary video output Picture in Picture (PIP) display mode. The remote controller module can connect to both an FPV camera (through the HDMI and AV ports) and a camera mounted on the HD Gimbal (through the Gimbal port). The output video can then be a combination of the two video sources. Either a single video source can be displayed, or one can be displayed within the other (as a Picture in Picture, or PIP). If the mode is set incorrectly, then no output video will be displayed. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      DJIRCSecondaryVideoDisplayMode modePicture in Picture (PIP) display mode.
      DJICompletionBlock completionCompletion block.
      method getSecondaryVideoDisplayModeWithCompletion
      - (void)getSecondaryVideoDisplayModeWithCompletion:(void (^_Nonnull)(DJIRCSecondaryVideoDisplayMode videoDisplayMode,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the secondary video output Picture in Picture (PIP) display mode. The air link module can connect to both an FPV camera (through the HDMI and AV ports) and a camera mounted on the HD Gimbal (through the Gimbal port). The output video can then be a combination of the two video sources. Either a single video source can be displayed, or one can be displayed within the other (as a Picture in Picture, or PIP). It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      DJIRCSecondaryVideoDisplayMode videoDisplayModeThe value of the DJIRCSecondaryVideoDisplayMode Enum.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCSecondaryVideoDisplayMode videoDisplayMode, NSError *_Nullable error) completionCompletion block to receive the result.
      method setSecondaryVideoOSDEnabled:withCompletion
      - (void)setSecondaryVideoOSDEnabled:(BOOL)enabled
      withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Enables and disables On Screen Display (OSD) overlay on the secondary video. OSD is flight data like altitude, attitude etc. And can be overlayed on the PIP video. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      BOOL enabledDetermines whether to display OSD on screen.
      DJICompletionBlock completionCompletion block.
      Get OSD Enabled
      method
      method getSecondaryVideoOSDEnabled
      - (void)getSecondaryVideoOSDEnabled:(void (^_Nonnull)(BOOL enabled,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Determines whether On Screen Display (OSD) is overlayed on the video feed.

      Input Parameters:
      BOOL enabledThe enabled value.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(BOOL enabled, NSError *_Nullable error) completionCompletion block to receive the result.
      method setSecondaryVideoOSDTopMargin:withCompletion
      - (void)setSecondaryVideoOSDTopMargin:(NSUInteger)margin
      withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Sets the OSD top margin in video pixels. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      NSUInteger marginTop margin of OSD. The range is [0, 50].
      DJICompletionBlock completionCompletion block.
      method getSecondaryVideoOSDTopMarginWithCompletion
      - (void)getSecondaryVideoOSDTopMarginWithCompletion:(void (^_Nonnull)(NSUInteger margin,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the OSD top margin in video pixels. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      NSUInteger marginThe OSD top margin value.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSUInteger margin, NSError *_Nullable error) completionCompletion block to receive the result.
      method setSecondaryVideoOSDLeftMargin:withCompletion
      - (void)setSecondaryVideoOSDLeftMargin:(NSUInteger)margin
      withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Sets the OSD left margin in video pixels. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      NSUInteger marginLeft margin of OSD. The range is [0, 50].
      DJICompletionBlock completionCompletion block.
      method getSecondaryVideoOSDLeftMarginWithCompletion
      - (void)getSecondaryVideoOSDLeftMarginWithCompletion:(void (^_Nonnull)(NSUInteger margin,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the OSD left margin in video pixels. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      NSUInteger marginThe OSD left margin value.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSUInteger margin, NSError *_Nullable error) completionCompletion block to receive the result.
      method setSecondaryVideoOSDBottomMargin:withCompletion
      - (void)setSecondaryVideoOSDBottomMargin:(NSUInteger)margin
      withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Sets the OSD bottom margin in video pixels. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      NSUInteger marginBottom margin of OSD. The range is [0, 50].
      DJICompletionBlock completionCompletion block.
      method getSecondaryVideoOSDBottomMarginWithCompletion
      - (void)getSecondaryVideoOSDBottomMarginWithCompletion:(void (^_Nonnull)(NSUInteger margin,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the OSD bottom margin in video pixels. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      NSUInteger marginThe OSD bottom margin value.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSUInteger margin, NSError *_Nullable error) completionCompletion block to receive the result.
      method setSecondaryVideoOSDRightMargin:withCompletion
      - (void)setSecondaryVideoOSDRightMargin:(NSUInteger)margin
      withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Sets the OSD right margin in video pixels. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      NSUInteger marginRight margin of OSD. The range is [0, 50].
      DJICompletionBlock completionCompletion block.
      method getSecondaryVideoOSDRightMarginWithCompletion
      - (void)getSecondaryVideoOSDRightMarginWithCompletion:(void (^_Nonnull)(NSUInteger margin,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the OSD right margin in video pixels. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      NSUInteger marginThe OSD right margin value.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(NSUInteger margin, NSError *_Nullable error) completionCompletion block to receive the result.
      method setSecondaryVideoOSDUnit:withCompletion
      - (void)setSecondaryVideoOSDUnit:(DJIRCSecondaryVideoOSDUnit)unit
      withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Sets the OSD units to either metric or imperial. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      DJIRCSecondaryVideoOSDUnit unitOSD units.
      DJICompletionBlock completionCompletion block.
      method getSecondaryVideoOSDUnitWithCompletion
      - (void)getSecondaryVideoOSDUnitWithCompletion:(void (^_Nonnull)(DJIRCSecondaryVideoOSDUnit unit,
      NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the OSD units (metric or imperial). It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      DJIRCSecondaryVideoOSDUnit unitThe value of the DJIRCSecondaryVideoOSDUnit Enum.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCSecondaryVideoOSDUnit unit, NSError *_Nullable error) completionCompletion block to receive the result.
      method setSecondaryVideoOutputFormatForHDMI:withCompletion
      - (void)setSecondaryVideoOutputFormatForHDMI:(DJIRCSecondaryVideoFormat)format
      withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Sets the Remote Controller HDMI video port output video format. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      DJIRCSecondaryVideoFormat formatThe value of the DJIRCSecondaryVideoFormat Enum.
      DJICompletionBlock completionCompletion block to receive the result.
      method getSecondaryVideoOutputFormatForHDMItWithCompletion
      - (void)getSecondaryVideoOutputFormatForHDMItWithCompletion:(void (^_Nonnull)(DJIRCSecondaryVideoFormat format, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the Remote Controller HDMI video port output video format. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      DJIRCSecondaryVideoFormat formatThe value of the DJIRCSecondaryVideoFormat Enum.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCSecondaryVideoFormat format, NSError *_Nullable error) completionCompletion block to receive the result.
      method setSecondaryVideoOutputFormatForSDI:withCompletion
      - (void)setSecondaryVideoOutputFormatForSDI:(DJIRCSecondaryVideoFormat)format
      withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Sets the Remote Controller SDI video port output video format. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      DJIRCSecondaryVideoFormat formatThe value of the DJIRCSecondaryVideoFormat Enum.
      DJICompletionBlock completionCompletion block to receive the result.
      method getSecondaryVideoOutputFormatForSDIWithCompletion
      - (void)getSecondaryVideoOutputFormatForSDIWithCompletion:(void (^_Nonnull)(DJIRCSecondaryVideoFormat format, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the Remote Controller SDI video port output video format. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      DJIRCSecondaryVideoFormat formatThe value of the DJIRCSecondaryVideoFormat Enum.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCSecondaryVideoFormat format, NSError *_Nullable error) completionCompletion block to receive the result.
      method setSecondaryVideoPIPPosition:withCompletion
      - (void)setSecondaryVideoPIPPosition:(DJIRCPIPPosition)position withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Sets the PIP (Picture In Picture) position relative to the top left corner of the main subject video feed. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      DJIRCPIPPosition positionPosition of the PIP on the screen.
      DJICompletionBlock completionCompletion block.
      method getSecondaryVideoPIPPositionWithCompletion
      - (void)getSecondaryVideoPIPPositionWithCompletion:(void (^_Nonnull)(DJIRCPIPPosition position, NSError *_Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Gets the PIP (Picture In Picture) position relative to the top left corner of the main subject video feed. It is supported by Phantom 4 Professional, Matrice 200, Matrice 200 series V2, Inspire 1 and Inspire 2.

      Input Parameters:
      DJIRCPIPPosition positionThe value of the DJIRemoteController_DJIRCPIPPosition Enum.
      NSError *_Nullable errorError retrieving the value.
      void (^_Nonnull)(DJIRCPIPPosition position, NSError *_Nullable error) completionCompletion block to receive the result.


      Live View

      method setLiveViewSimultaneousOutputEnabled:withCompletion
      - (void)setLiveViewSimultaneousOutputEnabled:(BOOL)enabled withCompletion:(DJICompletionBlock)completion
      Header:DJIRemoteController.h
      Description:

      Enables the setting to output video to both the mobile device and the HDMI port on the remote controller simultaneously. When it is disabled and the remote controller is connected to a HDMI display, the mobile device will not receive the live view. It is only supported by Inspire 1 and M100.

      Input Parameters:
      BOOL enabledYES to enable live view simultaneous output.
      DJICompletionBlock completionCompletion block to receive the result.
      method getLiveViewSimultaneousOutputEnabledWithCompletion
      - (void)getLiveViewSimultaneousOutputEnabledWithCompletion:(void(^_Nonnull)(BOOL enabled, NSError* _Nullable error))completion
      Header:DJIRemoteController.h
      Description:

      Determines whether the setting to output video to both the mobile device and the HDMI port on the remote controller simultaneously is enabled or not. When it is disabled and the remote controller is connected to a HDMI display, the mobile device will not receive the live view. It is only supported by Inspire 1 and M100.

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


      Focus

      Check Remote Focus Support
      method
      method isFocusControllerSupported
      - (BOOL)isFocusControllerSupported
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamIsFocusControllerSupported
      Description:

      Query method to check if the Remote Controller supports Remote Focus State Checking.

      Return:
      BOOLA boolean value.