public void UpdateStatus(int value) { int i = 0; bool changed = false; var s = new DeviceStatus(); foreach (var p in Status) { var b = (value & (1 << i)) == 0 ? 0 : 1; if (b != p.Value) { changed = true; } s.Add(p.Key, b); } if (changed) { Status = s; Changed?.Invoke(this, value); } }