Inheritance: extends Evenement\EventEmitter
Beispiel #1
0
 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', array($battery));
             }
             if ($battery !== $self->lastBattery) {
                 $self->emit('batteryChange', array($battery));
                 $self->lastBattery = $battery;
             }
             // altitude events
             $altitude = $demoData['altitudeMeters'];
             if ($altitude !== $self->lastAltitude) {
                 $self->emit('altitudeChange', array($altitude));
                 $self->lastAltitude = $altitude;
             }
         }
         $self->emit('navdata', array($navdata));
     });
 }