Joli\ArDrone\Client::startUdpNavdata PHP Method

startUdpNavdata() public method

public startUdpNavdata ( )
    public function startUdpNavdata()
    {
        $this->udpNavdata = new UdpNavdata($this->loop);
        $self = $this;
        $this->udpNavdata->on('navdata', function (Frame $navdata) use(&$self) {
            if (count($navdata->getDroneState()) > 0) {
                $stateData = $navdata->getDroneState();
                if ($stateData['emergencyLanding'] && $self->disableEmergency) {
                    //todo: disable emergency state
                } else {
                    //todo: disable emergency state
                }
            }
            $options = $navdata->getOptions();
            if (count($navdata->getDroneState()) > 0 && isset($options['demo'])) {
                // Control drone state
                $optionDemo = $options['demo'];
                $demoData = $optionDemo->getData();
                $currentState = $demoData['controlState'];
                $self->emitState('landing', 'CTRL_TRANS_LANDING', $currentState);
                $self->emitState('landed', 'CTRL_LANDED', $currentState);
                $self->emitState('takeoff', 'CTRL_TRANS_TAKEOFF', $currentState);
                $self->emitState('hovering', 'CTRL_HOVERING', $currentState);
                $self->emitState('flying', 'CTRL_FLYING', $currentState);
                $self->lastState = $currentState;
                $battery = $demoData['batteryPercentage'];
                // battery events
                $stateData = $navdata->getDroneState();
                if ($stateData['lowBattery'] === 1) {
                    $self->emit('lowBattery', [$battery]);
                }
                if ($battery !== $self->lastBattery) {
                    $self->emit('batteryChange', [$battery]);
                    $self->lastBattery = $battery;
                }
                // altitude events
                $altitude = $demoData['altitudeMeters'];
                if ($altitude !== $self->lastAltitude) {
                    $self->emit('altitudeChange', [$altitude]);
                    $self->lastAltitude = $altitude;
                }
            }
            $self->emit('navdata', [$navdata]);
        });
    }