dji-sdk / Mobile-SDK-iOS

DJI Mobile SDK for iOS: http://developer.dji.com/mobile-sdk/
Other
577 stars 256 forks source link

Leds can be opened but can't closed #438

Open ninja342 opened 3 years ago

ninja342 commented 3 years ago
flightController.getLEDsEnabledSettings { (settings, err) in
            print("led settings: \(settings)")
            print("get led err: \(String(describing: err))")

            let ledSettings = DJIMutableFlightControllerLEDsSettings()
            ledSettings.beaconOn = false
            ledSettings.rearLEDsOn = false
            ledSettings.frontLEDsOn = false
            ledSettings.statusIndicatorOn = false
            if settings.frontLEDsOn {
                ledSettings.frontLEDsOn = false
            } else {
                ledSettings.frontLEDsOn = true
            }
            self.flightController.setLEDsEnabledSettings(ledSettings) { error  in
                print("led settings error: \(String(describing: error))")

            }

        }

I am using the code above to toogle front leds on and off but the code only works when leds off and it turns on the leds but after that it doesn't work for closing leds back even if error returns nil.

dji-dev commented 3 years ago

Agent comment from Luce Luo in Zendesk ticket #43518:

Dear Customer,

Thank you for contacting DJI. To help us collect questions in detail, please fill in the form below and we will handle this ticket once we have received it. https://formcrafts.com/a/dji-developer-feedback-en

Thanks,

Luce Luo DJI Dev Team

kripper commented 1 year ago

This works for the Android SDK:

djiAircraft.getFlightController().getLEDsEnabledSettings(new CommonCallbacks.CompletionCallbackWith<LEDsSettings>() {
            @Override
            public void onSuccess(LEDsSettings ledsSettings) {
                LEDsSettings.Builder builder = new LEDsSettings.Builder();
                builder.frontLEDsOn(enabled);
                builder.beaconsOn(ledsSettings.areBeaconsOn());
                builder.rearLEDsOn(ledsSettings.areRearLEDsOn());
                builder.statusIndicatorOn(true);
                djiAircraft.getFlightController().setLEDsEnabledSettings(
                        builder.build(),
                        new CommonCallbacks.CompletionCallback() {
                            @Override
                            public void onResult(DJIError error) {
                                if (error == null) {
                                    Log.d(TAG, "LEDs settings successfully set");
                                } else {
                                    Log.e(TAG, "Failed to set LEDs settings: " + error.getDescription());
                                }
                            }
                        }
                );