Added additional logic to the AnimeMatrix USB classes to re-use them.

This commit is contained in:
IceStormNG
2023-07-22 22:47:14 +02:00
parent 8cedcb7b5d
commit d9cba16218
3 changed files with 67 additions and 6 deletions

View File

@@ -6,11 +6,17 @@ namespace GHelper.AnimeMatrix.Communication
{
public abstract class Device : IDisposable
{
private static UsbProvider _usbProvider;
protected UsbProvider? _usbProvider;
private static ushort _vendorId;
private static ushort _productId;
private static int _maxFeatureReportLength;
protected ushort _vendorId;
protected ushort _productId;
protected int _maxFeatureReportLength;
protected Device(ushort vendorId, ushort productId)
{
_vendorId = vendorId;
_productId = productId;
}
protected Device(ushort vendorId, ushort productId, int maxFeatureReportLength)
{
@@ -20,7 +26,17 @@ namespace GHelper.AnimeMatrix.Communication
SetProvider();
}
public void SetProvider()
public ushort VendorID()
{
return _vendorId;
}
public ushort ProductID()
{
return _productId;
}
public virtual void SetProvider()
{
_usbProvider = new WindowsUsbProvider(_vendorId, _productId, _maxFeatureReportLength);
}
@@ -36,6 +52,11 @@ namespace GHelper.AnimeMatrix.Communication
public byte[] Get(Packet packet)
=> _usbProvider?.Get(packet.Data);
public void Read(byte[] data)
=> _usbProvider?.Read(data);
public void Write(byte[] data)
=> _usbProvider?.Write(data);
public void Dispose()
{
_usbProvider?.Dispose();