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
      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:didUpdateChargeRemaining
      @optional
      - (void)remoteController:(DJIRemoteController *)rc didUpdateChargeRemaining:(DJIRCChargeRemaining)chargeRemaining
      Header:DJIRemoteController.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamChargeRemaining
      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.
      DJIRCChargeRemaining chargeRemainingCurrent state of the Remote Controller's battery state.
      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 - Hardware
      struct
      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 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 wheel) value in the range of [-660,660], where 0 is untouched and positive is turned in the clockwise direction.
      DJIRCRightWheel rightWheelCurrent state of the upper right wheel on the Remote Controller (Camera Settings Dial).
      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 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). It is not supported by remote controllers for Mavic Air or Spark.
      DJIRCButton c2ButtonCurrent state of custom button 2 (right Back Button).
      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.
      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 wheel on the Remote Controller).

      Struct Members:
      BOOL isPresentYES if right wheel present.
      BOOL isClickedYES if wheel is being pressed.
      BOOL isTurnedYES if wheel value has changed.
      NSInteger valueWheel 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.
      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.
      State Updates - GPS
      struct
      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 Inspire and M100 Remote Controllers have GPS.

      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.
      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.
      State Updates - Battery
      struct
      struct DJIRCChargeRemaining
      typedef struct
      {
      uint32_t remainingChargeInmAh;
      uint8_t remainingChargeInPercent;
      } DJIRCChargeRemaining
      Header:DJIRemoteControllerBaseTypes.h
      SDK Key:DJIRemoteControllerKey.DJIRemoteControllerParamChargeRemaining
      Description:

      Remote Controller's battery info.

      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].
      State Updates - Focus
      struct
      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.
      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.
      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.
      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 wheel on the Remote Controller) will control.

      Enum Members:
      DJIRCGimbalAxisPitchThe upper left wheel will control the gimbal's pitch.
      DJIRCGimbalAxisRollThe upper left wheel will control the gimbal's roll.
      DJIRCGimbalAxisYawThe upper left wheel 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%.
      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).
      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:
      DJIRCButtonActionCustom0Custom action with value 0. In DJI Go, this value represents the action to toggle the camera setting view.
      DJIRCButtonActionCustom3Custom action with value 3. In DJI Go, this value represents the action to switch the the live view and the map view.
      DJIRCButtonActionCustom4Custom action with value 4. In DJI Go, this value represents the action to clear the flight path in the map view.
      DJIRCButtonActionCustom5Custom action with value 5. In DJI Go, this value represents the action to toggle the battery setting view.
      DJIRCButtonActionCustom7Custom action with value 7. In DJI Go, this value represents the action to trigger central exposure metering.
      DJIRCButtonActionCustom8Custom action with value 8. In DJI Go, this value represents the action to toggle AE lock.
      DJIRCButtonActionCustom9Custom action with value 9. In DJI Go, this value represents the action to toggle the LEDs on the four arms.
      DJIRCButtonActionResetFPVGimbalReset FPV gimbal attitude to the center, the gimbal will rotate 45 degrees in pitch axis up and down when the action is trigger.
      DJIRCButtonActionCustom13Custom action with value 13. In DJI Go, this value represents the action to expand the live view from the FPV camera.
      DJIRCButtonActionQuickSpinTrigger a Quick Spin. This action is handled by the firmware.
      DJIRCButtonActionCustom16Custom action with value 16. In DJI Go, this value represents the action to toggle the playback view.
      DJIRCButtonActionCustom17Custom action with value 17. In DJI Go, this value represents the action to trigger focusing at the center of the live view.
      DJIRCButtonActionCustom23Custom action with value 23. In DJI Go, this value represents the action to request gimbal control (for the slave remote controller).
      DJIRCButtonActionCustom24Custom action with value 24. In DJI Go, this value represents the action to toggle the modes of the gimbal.
      DJIRCButtonActionCustom25Custom action with value 25. In DJI Go, this value represents the action to toggle the customizable button setting view.
      DJIRCButtonActionCustom26Custom action with value 26. In DJI Go, this value represents the action to toggle AF and MF for camera.
      DJIRCButtonActionCustom27Custom action with value 27. In DJI Go, this value represents the action to dismiss the warning tips.
      DJIRCButtonActionCustom28Custom action with value 28. In DJI Go, this value represents the action to toggle the automatic movement of the landing gear.
      DJIRCButtonActionCustom29Custom action with value 29. In DJI Go, this value represents the action to toggle the warning list view.
      DJIRCButtonActionSwitchFrequencySwitch frequency bands of the remote controller. This action is handled by the firmware.
      DJIRCButtonActionFocusTrigger the camera focus. This action is handled by the firmware.
      DJIRCButtonActionCustom41Custom action with value 41. In DJI Go, this value represents the action to toggle the composition mode for the Spotlight.
      DJIRCButtonActionCustom43Custom action with value 43. In DJI Go, this value represents the action to toggle the peak focus.
      DJIRCButtonActionCustom44Custom action with value 44. In DJI Go, this value represents the action to toggle the display of grid.
      DJIRCButtonActionCustom45Custom action with value 45. In DJI Go, this value represents the action to toggle the display of histogram.
      DJIRCButtonActionCustom46Custom action with value 46. In DJI Go, this value represents the action to switch the white balance settings.
      DJIRCButtonActionCustom47Custom action with value 47. In DJI Go, this value represents the action to toggle the over-exposure warning.
      DJIRCButtonActionCustom52Custom action with value 52. In DJI Go, this value represents the action to reset the gimbal yaw to align with the aircraft heading.
      DJIRCButtonActionToggleLandingGearRetract or deploy the landing gear. This action is handled by the firmware.
      DJIRCButtonActionCustom59Custom action with value 59. In DJI Go, this value represents the action to toggle the radar map.
      DJIRCButtonActionCustom60Custom action with value 60. In DJI Go, this value represents the action to toggle the downward vision sensors.
      DJIRCButtonActionCustom61Custom action with value 61. In DJI Go, this value represents the action to toggle the forward obstacle avoidance.
      DJIRCButtonActionCustom63Custom action with value 63. In DJI Go, this value represents the action to toggle the full screen mode.
      DJIRCButtonActionCustom100Custom action with value 100. This value is reserved for SDK applications.
      DJIRCButtonActionCustom101Custom action with value 101. This value is reserved for SDK applications.
      DJIRCButtonActionCustom102Custom action with value 102. This value is reserved for SDK applications.
      DJIRCButtonActionCustom103Custom action with value 103. This value is reserved for SDK applications.
      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.
      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.
      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.
      Master/Slave RC
      enum
      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.
      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 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.

      Calibration Component State
      class
      Calibration Progress
      class
      Aggregation State
      class
      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

      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. 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 wheel (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 wheel 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.


      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.

      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.

      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.

      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 and M210 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.
      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.


      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.