|
|
|
|
@ -2,26 +2,46 @@ |
|
|
|
|
// Created: 2021-04-09 |
|
|
|
|
// Copyright(c) 2021 SimonG. All Rights Reserved. |
|
|
|
|
|
|
|
|
|
using System; |
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
using Lib.Audio.Factories; |
|
|
|
|
using Lib.Audio.Interfaces; |
|
|
|
|
using Lib.Driver.Factories; |
|
|
|
|
using Lib.Driver.Interfaces; |
|
|
|
|
|
|
|
|
|
namespace Mystify |
|
|
|
|
{ |
|
|
|
|
public class MainModel |
|
|
|
|
{ |
|
|
|
|
private readonly IDevice _device; |
|
|
|
|
private readonly IControllableCollector _controllableCollector; |
|
|
|
|
private readonly IDriverLoader _driverLoader; |
|
|
|
|
private readonly IDeviceFactory _deviceFactory; |
|
|
|
|
private readonly IControllableCollectorFactory _controllableCollectorFactory; |
|
|
|
|
|
|
|
|
|
public MainModel(IDeviceFactory deviceFactory, IControllableCollectorFactory controllableCollectorFactory) |
|
|
|
|
private IDevice? _device; |
|
|
|
|
private IControllableCollector? _controllableCollector; |
|
|
|
|
|
|
|
|
|
public MainModel(IDriverLoaderFactory driverLoaderFactory, IDeviceFactory deviceFactory, IControllableCollectorFactory controllableCollectorFactory) |
|
|
|
|
{ |
|
|
|
|
_driverLoader = driverLoaderFactory.Create(); |
|
|
|
|
_deviceFactory = deviceFactory; |
|
|
|
|
_controllableCollectorFactory = controllableCollectorFactory; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public List<IChannel>? Channels => _device?.Channels; |
|
|
|
|
public List<IControllable>? Controllables => _controllableCollector?.Controllables; |
|
|
|
|
public string? DeviceName => _device?.Name; |
|
|
|
|
|
|
|
|
|
public void LoadDriverAndDevice(string driverPath) |
|
|
|
|
{ |
|
|
|
|
_device = deviceFactory.Create(); |
|
|
|
|
_controllableCollector = controllableCollectorFactory.Create(); |
|
|
|
|
IDriver? driver = _driverLoader.Load(driverPath); |
|
|
|
|
|
|
|
|
|
if (driver == null) |
|
|
|
|
throw new Exception("Driver could not be loaded."); |
|
|
|
|
|
|
|
|
|
_device = _deviceFactory.Create(driver); |
|
|
|
|
_controllableCollector = _controllableCollectorFactory.Create(); |
|
|
|
|
|
|
|
|
|
_device.StartCommunication(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public List<IChannel> Channels => _device.Channels; |
|
|
|
|
public List<IControllable> Controllables => _controllableCollector.Controllables; |
|
|
|
|
} |
|
|
|
|
} |