public async void TakeOff(bool automated = true) { _RequestedState = RequestedState.TakeOff; await Log.Instance.WriteLineAsync("DroneClient:TakeOff"); SendMessageToUI("The Drone is taking off"); }
public async void Land() { _RequestedState = RequestedState.Land; await Log.Instance.WriteLineAsync("DroneClient:Land"); SendMessageToUI("The Drone is landing"); }
public void Takeoff() { if (_navigationData.State.HasFlag(NavigationState.Landed)) { _requestedState = RequestedState.Fly; } }
internal static void RequestStateChange(ManagementObject virtualMachine, RequestedState requestedState) { using (ManagementBaseObject inputParameters = virtualMachine.GetMethodParameters("RequestStateChange")) { inputParameters["RequestedState"] = requestedState; using (ManagementBaseObject outputParameters = virtualMachine.InvokeMethod("RequestStateChange", inputParameters, null)) ValidateOutput(outputParameters); } }
public void ChangeState(RequestedState requestedState) { ManagementBaseObject inParams = _managementObject.GetMethodParameters("RequestStateChange"); inParams["RequestedState"] = requestedState; _managementObject.InvokeMethod("RequestStateChange", inParams, null); }
public async Task <bool> ConnectAsync() { try { if (IsActive) { return(true); } SendMessageToUI("Starting Connection process"); await Log.Instance.WriteLineAsync("DroneClient:Connecting"); _RequestedState = RequestedState.Initialize; _ConfigurationWorker.Start(); _NavDataWorker.Start(); //TODO revoir InitState _CommandWorker.Start(); _WatchdogWorker.Start(); // We Check if the differents workers have been well initialized int attempt = 0; while (!IsActive && attempt < 10) { await Task.Delay(100); attempt++; } if (attempt == 10) { return(false); } SendMessageToUI("All workers have been activated"); attempt = 0; while (_RequestedState != RequestedState.None && attempt < 10) { await Task.Delay(100); attempt++; } if (attempt == 10) { Close(); DisposeOverride(); return(false); } SendMessageToUI("Connected with the Drone successfully"); InitConfiguration(); //SetIndoorConfiguration(); RequestConfiguration(); SendMessageToUI("Configuration sent to the Drone successfully"); return(true); } catch (Exception ex) { SendMessageToUI(ex.Message); return(false); } }
private void OnNavigationPacketAcquired(NavigationPacket packet) { if (_navigationData.State == NavigationState.Unknown) { _requestedState = RequestedState.Initialize; } if (NavigationPacketAcquired != null) { NavigationPacketAcquired(packet); } UpdateNavigationData(packet); }
public override async Task <int> Run() { try { await YAPI.RegisterHub(HubURL); YRelay relay; if (Target.ToLower() == "any") { relay = YRelay.FirstRelay(); if (relay == null) { WriteLine("No module connected (check USB cable) "); return(-1); } Target = await(await relay.get_module()).get_serialNumber(); } WriteLine("using " + Target + ".relay" + Channel); relay = YRelay.FindRelay(Target + ".relay" + Channel); if (await relay.isOnline()) { if (RequestedState.ToUpper() == "ON") { await relay.set_output(YRelay.OUTPUT_ON); } else { await relay.set_output(YRelay.OUTPUT_OFF); } } else { WriteLine("Module not connected (check identification and USB cable)"); } } catch (YAPI_Exception ex) { WriteLine("error: " + ex.Message); } YAPI.FreeAPI(); return(0); }
public async void ResetEmergency() { _RequestedState = RequestedState.ResetEmergency; await Log.Instance.WriteLineAsync("DroneClient:ResetEmergency"); }
public void Hover() { //No command means hovering _RequestedState = RequestedState.None; }
public void Land() { _requestedState = RequestedState.Land; }
public void ResetEmergency() { _requestedState = RequestedState.ResetEmergency; }
private void ProcessRequestedState() { switch (_requestedState) { case RequestedState.None: return; case RequestedState.Initialize: ATCommand cmdNavdataDemo = _configuration.General.NavdataDemo.Set(false).ToCommand(); _commandQueue.Enqueue(cmdNavdataDemo); _commandQueue.Enqueue(new ControlCommand(ControlMode.NoControlMode)); _requestedState = RequestedState.GetConfiguration; return; case RequestedState.GetConfiguration: _configurationAcquisitionWorker.Start(); if (_navigationData.State.HasFlag(NavigationState.Command)) { _commandQueue.Enqueue(new ControlCommand(ControlMode.AckControlMode)); } else { _commandQueue.Enqueue(new ControlCommand(ControlMode.CfgGetControlMode)); _requestedState = RequestedState.None; } break; case RequestedState.Emergency: if (_navigationData.State.HasFlag(NavigationState.Flying)) { _commandQueue.Enqueue(new RefCommand(RefMode.Emergency)); } else { _requestedState = RequestedState.None; } break; case RequestedState.ResetEmergency: _commandQueue.Enqueue(new RefCommand(RefMode.Emergency)); _requestedState = RequestedState.None; break; case RequestedState.Land: if (_navigationData.State.HasFlag(NavigationState.Flying) && _navigationData.State.HasFlag(NavigationState.Landing) == false) { _commandQueue.Enqueue(new RefCommand(RefMode.Land)); } else { _requestedState = RequestedState.None; } break; case RequestedState.Fly: if (_navigationData.State.HasFlag(NavigationState.Landed) && _navigationData.State.HasFlag(NavigationState.Takeoff) == false && _navigationData.State.HasFlag(NavigationState.Emergency) == false && _navigationData.Battery.Low == false) { _commandQueue.Enqueue(new RefCommand(RefMode.Takeoff)); } else { _requestedState = RequestedState.None; } break; default: throw new ArgumentOutOfRangeException(); } }
public void Emergency() { _requestedState = RequestedState.Emergency; }
private void ProcessRequestedState() { switch (_requestedState) { case RequestedState.None: return; case RequestedState.Initialize: ATCommand cmdNavdataDemo = _configuration.General.NavdataDemo.Set(false).ToCommand(); _commandQueue.Enqueue(cmdNavdataDemo); _commandQueue.Enqueue(new ControlCommand(ControlMode.NoControlMode)); _requestedState = RequestedState.GetConfiguration; return; case RequestedState.GetConfiguration: _configurationAcquisitionWorker.Start(); if (_navigationData.State.HasFlag(NavigationState.Command)) { _commandQueue.Enqueue(new ControlCommand(ControlMode.AckControlMode)); } else { _commandQueue.Enqueue(new ControlCommand(ControlMode.CfgGetControlMode)); _requestedState = RequestedState.None; } break; case RequestedState.Emergency: if (_navigationData.State.HasFlag(NavigationState.Flying)) _commandQueue.Enqueue(new RefCommand(RefMode.Emergency)); else _requestedState = RequestedState.None; break; case RequestedState.ResetEmergency: _commandQueue.Enqueue(new RefCommand(RefMode.Emergency)); _requestedState = RequestedState.None; break; case RequestedState.Land: if (_navigationData.State.HasFlag(NavigationState.Flying) && _navigationData.State.HasFlag(NavigationState.Landing) == false) { _commandQueue.Enqueue(new RefCommand(RefMode.Land)); } else _requestedState = RequestedState.None; break; case RequestedState.Fly: if (_navigationData.State.HasFlag(NavigationState.Landed) && _navigationData.State.HasFlag(NavigationState.Takeoff) == false && _navigationData.State.HasFlag(NavigationState.Emergency) == false && _navigationData.Battery.Low == false) { _commandQueue.Enqueue(new RefCommand(RefMode.Takeoff)); } else _requestedState = RequestedState.None; break; default: throw new ArgumentOutOfRangeException(); } }
public async Task<bool> ConnectAsync() { try { if (IsActive) return true; SendMessageToUI("Starting Connection process"); _RequestedState = RequestedState.Initialize; _ConfigurationWorker.Start(); _NavDataWorker.Start(); //TODO revoir InitState _CommandWorker.Start(); _WatchdogWorker.Start(); // We Check if the differents workers have been well initialized int attempt = 0; while (!IsActive && attempt < 10) { await Task.Delay(100); attempt++; } if (attempt == 10) return false; SendMessageToUI("All workers have been activated"); attempt = 0; while (_RequestedState != RequestedState.None && attempt < 10) { await Task.Delay(100); attempt++; } if (attempt == 10) { Close(); DisposeOverride(); return false; } SendMessageToUI("Connected with the Drone successfully"); InitConfiguration(); SetIndoorConfiguration(); RequestConfiguration(); SendMessageToUI("Configuration sent to the Drone successfully"); return true; } catch (Exception ex) { SendMessageToUI(ex.Message); return false; } }
public void Land() { _RequestedState = RequestedState.Land; SendMessageToUI("The Drone is landing"); }
public async void RequestConfiguration() { _RequestedState = RequestedState.GetConfiguration; await Log.Instance.WriteLineAsync("DroneClient:RequestConfiguration"); }
public async Task <bool> ConnectAsync() { bool isConnected = false; try { if (IsActive) { return(true); } else { //We close the workers previously started. Close(); } SendMessageToUI("Starting Connection process"); await Log.Instance.WriteLineAsync("DroneClient:Connecting"); _RequestedState = RequestedState.Initialize; _ConfigurationWorker.Start(); _NavDataWorker.Start(); _CommandWorker.Start(); _WatchdogWorker.Start(); // We Check if the differents workers have been well initialized int attempt = 0; while (!IsActive && attempt < 10) { await Task.Delay(100); attempt++; } if (attempt < 10) { SendMessageToUI("All workers have been activated"); attempt = 0; // We Check if the AR.Drone is well initialized while (_RequestedState != RequestedState.None && attempt < 10) { await Task.Delay(100); attempt++; } if (attempt < 10) { SendMessageToUI("Connected with the Drone successfully"); await InitMultiConfiguration(); SetDefaultConfiguration(); RequestConfiguration(); SendMessageToUI("Configuration sent to the Drone successfully"); isConnected = true; } } } catch (Exception ex) { SendMessageToUI(ex.Message); return(false); } if (!isConnected) { Close(); DisposeOverride(); } return(isConnected); }
public void RequestConfiguration() { _requestedState = RequestedState.GetConfiguration; }
public async void Hover() { //No command means hovering _RequestedState = RequestedState.None; await Log.Instance.WriteLineAsync("DroneClient:Hover"); }
public void Takeoff() { if (_navigationData.State.HasFlag(NavigationState.Landed)) _requestedState = RequestedState.Fly; }
private void OnNavigationPacketAcquired(NavigationPacket packet) { if (_navigationData.State == NavigationState.Unknown) _requestedState = RequestedState.Initialize; if (NavigationPacketAcquired != null) NavigationPacketAcquired(packet); UpdateNavigationData(packet); }
public async Task<bool> ConnectAsync() { bool isConnected = false; try { if (IsActive) return true; else //We close the workers previously started. Close(); SendMessageToUI("Starting Connection process"); await Log.Instance.WriteLineAsync("DroneClient:Connecting"); _RequestedState = RequestedState.Initialize; _ConfigurationWorker.Start(); _NavDataWorker.Start(); _CommandWorker.Start(); _WatchdogWorker.Start(); // We Check if the differents workers have been well initialized int attempt = 0; while (!IsActive && attempt < 10) { await Task.Delay(100); attempt++; } if (attempt < 10) { SendMessageToUI("All workers have been activated"); attempt = 0; // We Check if the AR.Drone is well initialized while (_RequestedState != RequestedState.None && attempt < 10) { await Task.Delay(100); attempt++; } if (attempt < 10) { SendMessageToUI("Connected with the Drone successfully"); await InitMultiConfiguration(); SetDefaultConfiguration(); RequestConfiguration(); SendMessageToUI("Configuration sent to the Drone successfully"); isConnected = true; } } } catch (Exception ex) { SendMessageToUI(ex.Message); return false; } if (!isConnected) { Close(); DisposeOverride(); } return isConnected; }
public void TakeOff(bool automated = true) { _RequestedState = RequestedState.TakeOff; SendMessageToUI("The Drone is taking off"); }