pro3_control_panel_v2/ViewModels/JLinkPageViewModel.cs
2025-12-23 14:12:21 +08:00

72 lines
2.2 KiB
C#

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<string> { "123456789", "987654321", "555555555" };
SelectedSerialNumber = AvailableSerialNumbers.FirstOrDefault();
ApSessions = new ObservableCollection<JLinkApSessionViewModel>
{
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<string> AvailableSerialNumbers { get; }
public string? SelectedSerialNumber
{
get => _selectedSerialNumber;
set => SetProperty(ref _selectedSerialNumber, value);
}
public ObservableCollection<JLinkApSessionViewModel> 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).");
}
}
}