public ControllerModel(string tableName, ITable table) : base(tableName, table) { if (controlModes == null) { FillControlModeOptions(); } table.AddTableListenerOnSynchronizationContext(SynchronizationContext.Current, (modifiedTable, key, value, _) => { switch (key) { case nameof(Mode): Mode = (ControlMode)(int)(double)value; break; case "Value": ShowValue((double)value); break; default: break; } }, NetworkTables.NotifyFlags.NotifyImmediate | NetworkTables.NotifyFlags.NotifyUpdate | NetworkTables.NotifyFlags.NotifyNew); ZeroOutput = new Command(() => Numbers["Value"] = 0.0); ClearGraph = new Command(() => { lock (syncRoot) { OutputPoints.Clear(); SetpointLine.Clear(); } }); }
public NetworkTableBackedLookup(ITable table) { bool validType = Value.GetSupportedValueTypes().Contains(typeof(T)); if (!validType) { throw new InvalidOperationException($"Generic type {typeof(T)} is not supported"); } this.table = table; table.AddTableListenerOnSynchronizationContext(SynchronizationContext.Current, (changedTable, key, value, flags) => NotifyPropertyChanged(System.Windows.Data.Binding.IndexerName)); }
public CommandModel(string tableName, ITable table) : base(tableName, table) { table.AddTableListenerOnSynchronizationContext(SynchronizationContext.Current, (modifiedTable, key, value, _) => { switch (key) { //case nameof(Mode): // Mode = (ControlMode)(int)(double)value; // break; //case "Value": // ShowValue((double)value); // break; default: break; } }, NetworkTables.NotifyFlags.NotifyImmediate | NetworkTables.NotifyFlags.NotifyUpdate | NetworkTables.NotifyFlags.NotifyNew); }