private async Task SetNoiseControlAsync(NoiseControlType type) { string value; switch (type) { case NoiseControlType.NoiseControlMax: value = "anc&value=2"; break; case NoiseControlType.NoiseControlOn: value = "anc&value=1"; break; case NoiseControlType.NoiseControlOff: value = "off&value=1"; break; case NoiseControlType.StreetMode: value = "aoc&value=1"; break; case NoiseControlType.StreetModeMax: value = "aoc&value=2"; break; default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } await _parrotClient.SendMessageAsync(new ParrotMessage(ResourceType.NoiseControlSet, value)); }
// Event handlers private async void ParrotClientOnConnectedEvent(object sender, EventArgs eventArgs) { Enabled = await GetNoiseControlEnabledAsync(); Type = Enabled ? await GetNoiseControlAsync() : NoiseControlType.NoiseControlOff; // Dispatch initial event so the UI can update. ChangedEvent?.AsyncSafeInvoke(this, EventArgs.Empty); }
public async Task SetTypeAsync(NoiseControlType type) { // Don't have to change if this is already the current type. if (Type == type) { return; } await SetNoiseControlAsync(type); Enabled = type != NoiseControlType.NoiseControlOff; Type = type; ChangedEvent?.AsyncSafeInvoke(this, EventArgs.Empty); }
private async void ParrotClientOnNotificationEvent(object sender, NotifyEventArgs notifyEventArgs) { if (notifyEventArgs.Resource != ResourceType.NoiseControlGet) { return; } var newType = await GetNoiseControlAsync(); if (newType == Type) { return; } Type = newType; // Dispatch event so the UI can update. ChangedEvent?.AsyncSafeInvoke(this, EventArgs.Empty); }