public MainViewModel(MainWindow mainWindow) { CurrentSerialPort = new ViewModelProperty <string>(ConnectToArduino); CurrentProgrammerProfile = new ViewModelProperty <string>(LoadProfile); SerialPorts = new ViewModelProperty <IEnumerable <string> >(); ProgrammerProfiles = new ViewModelProperty <IEnumerable <string> >(); SerialPortMenuItems = new ReadOnlyViewModelProperty <List <SerialPortMenuItem> >(SerialPorts, () => { var items = new List <SerialPortMenuItem>(); if (SerialPorts.Value != null) { foreach (var item in SerialPorts.Value) { items.Add(new SerialPortSelectionItem(this, item)); } } if (items.Count == 0) { items.Add(NoPortsAvailable.Value); } return(items); }); SerialMonitor = new SerialMonitor(); TestButtonDeckCommand = new ActionCommandModel(() => !string.IsNullOrEmpty(CurrentSerialPort.Value), OnTestButtonDeck); LoggingCommand = new ActionCommandModel(() => true, OnOpenLogging); OpenProgrammer = new ActionCommandModel(() => true, OnOpenProgrammer); LogListener = new LogListener(); RootLogger = new LoggerFactory().Create(LogListener); Communication = new ButtonDeckCommunication(RootLogger); MainWindow = mainWindow; }
internal void Connect(ButtonDeckCommunication communication) { Communication = communication; Communication.ToggleStateChanged += Communication_ToggleStateChanged; Communication.VersionResponse += Communication_VersionResponse; Communication.HeartbeatResponse += Communication_HeartbeatResponse; Communication.LEDBrightness += Communication_LEDBrightness; Communication.ButtonUp += Communication_ButtonUp; Communication.ButtonDown += Communication_ButtonDown; Communication.InvalidResponse += Communication_InvalidResponse; Communication.AcknowledgedResponse += Communication_AcknowledgedResponse; }
public ActionRouter(ILogger logger, ButtonDeckCommunication communication) { _logger = CategoryLogger.Create(nameof(ActionRouter), logger); Communication = communication; Communication.ToggleStateChanged += Communication_ToggleStateChanged; Communication.VersionResponse += Communication_VersionResponse; Communication.HeartbeatResponse += Communication_HeartbeatResponse; Communication.LEDBrightness += Communication_LEDBrightness; Communication.ButtonUp += Communication_ButtonUp; Communication.ButtonDown += Communication_ButtonDown; Communication.InvalidResponse += Communication_InvalidResponse; Communication.AcknowledgedResponse += Communication_AcknowledgedResponse; Deck = ButtonDeckInformation.Default; Initialise(); }