public async Task <bool> SetCombinedInputMode(byte modeCombinationIndex, uint delta = 1, bool notify = true) { if (Capabilities.HasFlag(PortCapabilities.Input) && Capabilities.HasFlag(PortCapabilities.Combinable)) { var modeCombination = ModeCombinations.ElementAtOrDefault(modeCombinationIndex); if (modeCombination != default) { // combined input SendMessage(new PortInputFormatSetupCombinedMessage(Port, PortInputFormatSetupSubCommands.Lock_LPF2_Device_For_Setup)); IsLocked = true; await Task.Delay(1000); InputModes.Clear(); var modeAndDatasetCombinations = new List <byte>(); foreach (var mode in modeCombination.ToModes()) { SendMessage(new PortInputFormatSetupSingleMessage(Port, mode, delta, notify)); for (int i = 1; i <= ModeInformation[mode].ValueFormat[0]; i++) { var modeAndDatasetInfo = mode << 4; modeAndDatasetInfo |= (i - 1); modeAndDatasetCombinations.Add((byte)modeAndDatasetInfo); } do { await Task.Delay(500); }while (!InputModes.ContainsKey(mode)); } SendMessage(new PortInputFormatSetupCombinedSetModeDatasetMessage(Port, modeCombinationIndex, modeAndDatasetCombinations)); do { await Task.Delay(500); }while (IsLocked); InputMode = modeCombination; return(true); } } return(false); }
/// <summary> /// Removes all input modes currently associated with the node editor /// </summary> public void ClearInputModes() { InputModes.Clear(); }