using Common.Messaging; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Messaging; using MultiTerm.Protocols.Types; namespace MultiTerm.Protocols.Serial; public partial class SerialProtocolSettingsViewModel : ProtocolSettingsViewModel, ISerialProtocolSettings { public override ProtocolType ProtocolType => ProtocolType.Serial; [ObservableProperty] private int baudRate = 115200; [ObservableProperty] private string portName = ""; [ObservableProperty] private Parity parity = Parity.None; [ObservableProperty] private int dataBits = 8; [ObservableProperty] private StopBits stopBits = StopBits.One; [ObservableProperty] private Handshake handshake = Handshake.None; // TODO public string NewlineSequenceOnSend => throw new NotImplementedException(); public string NewlineOnReceivedSequence => throw new NotImplementedException(); public SerialProtocolSettingsViewModel(IMessenger messenger) : base(messenger) { } public bool AreValid() { if (String.IsNullOrEmpty(this.PortName)) { this.messenger.Send(new ProtocolSettingsInvalidMessage(nameof(this.PortName), "Null or empty")); return false; } if (this.PortName.ToLower().StartsWith("com") == false) { this.messenger.Send(new ProtocolSettingsInvalidMessage(nameof(this.PortName), "Must start with COM")); return false; } if (this.DataBits < 5 && this.DataBits > 8 && this.DataBits != 16) { this.messenger.Send(new ProtocolSettingsInvalidMessage(nameof(this.DataBits), "Must be 5...8 or 16")); return false; } return true; } }