using System.Collections.ObjectModel; using System.Linq; using System.Windows.Input; using AmebaPro3_ControlPanel.Utilities; namespace AmebaPro3_ControlPanel.ViewModels; public class JLinkPageViewModel : PageViewModelBase { private string? _selectedSerialNumber; private JLinkApSessionViewModel? _selectedApSession; public JLinkPageViewModel() { Title = "Debugger"; AvailableSerialNumbers = new ObservableCollection { "123456789", "987654321", "555555555" }; SelectedSerialNumber = AvailableSerialNumbers.FirstOrDefault(); ApSessions = new ObservableCollection { new("Cortex M33 - Processor NP"), new("Cortex M33 - Processor MP"), new("Cortex M23 - Processor FP"), new("Cortex CA32 - Processor AP") }; SelectedApSession = ApSessions.FirstOrDefault(); RefreshSerialsCommand = new RelayCommand(_ => RefreshSerials()); ConnectJLinkCommand = new RelayCommand(_ => ConnectJLink()); } public ObservableCollection AvailableSerialNumbers { get; } public string? SelectedSerialNumber { get => _selectedSerialNumber; set => SetProperty(ref _selectedSerialNumber, value); } public ObservableCollection ApSessions { get; } public JLinkApSessionViewModel? SelectedApSession { get => _selectedApSession; set => SetProperty(ref _selectedApSession, value); } public ICommand RefreshSerialsCommand { get; } public ICommand ConnectJLinkCommand { get; } private void RefreshSerials() { AvailableSerialNumbers.Clear(); AvailableSerialNumbers.Add("123456789"); AvailableSerialNumbers.Add("987654321"); AvailableSerialNumbers.Add("555555555"); SelectedSerialNumber ??= AvailableSerialNumbers.FirstOrDefault(); } private void ConnectJLink() { foreach (var session in ApSessions) { session.SetSessionConnected(true); session.LogLines.Add($"Attached to {session.Title} via J-Link {(SelectedSerialNumber ?? "N/A")} (UI placeholder)."); } } }