Add packets for list devices.

This commit is contained in:
2019-10-12 22:34:27 +01:00
parent 083517b8ed
commit b655b617c8
3 changed files with 35 additions and 8 deletions

View File

@@ -31,26 +31,38 @@
// ****************************************************************************/
using System;
using System.Runtime.InteropServices;
using DiscImageChef.CommonTypes.Interop;
using PlatformID = DiscImageChef.CommonTypes.Interop.PlatformID;
namespace DiscImageChef.Devices
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct DeviceInfo
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
public string Path;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string Vendor;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string Model;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string Serial;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string Bus;
public bool Supported;
[MarshalAs(UnmanagedType.U1)] public bool Supported;
}
public partial class Device
{
public static DeviceInfo[] ListDevices()
{
switch(DetectOS.GetRealPlatformID())
switch (DetectOS.GetRealPlatformID())
{
case PlatformID.Win32NT: return Windows.ListDevices.GetList();
case PlatformID.Linux: return Linux.ListDevices.GetList();

View File

@@ -2,6 +2,8 @@ namespace DiscImageChef.Devices.Remote
{
public enum DicPacketType : byte
{
Hello = 1
Hello = 1,
CommandListDevices = 2,
ResponseListDevices = 3
}
}

View File

@@ -2,7 +2,7 @@ using System.Runtime.InteropServices;
namespace DiscImageChef.Devices.Remote
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct DicPacketHeader
{
public ulong id;
@@ -12,10 +12,10 @@ namespace DiscImageChef.Devices.Remote
public DicPacketType packetType;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] spare;
public readonly byte[] spare;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct DicPacketHello
{
public DicPacketHeader hdr;
@@ -29,7 +29,7 @@ namespace DiscImageChef.Devices.Remote
public byte maxProtocol;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public byte[] spare;
public readonly byte[] spare;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string sysname;
@@ -40,4 +40,17 @@ namespace DiscImageChef.Devices.Remote
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string machine;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct DicPacketCommandListDevices
{
public DicPacketHeader hdr;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct DicPacketResponseListDevices
{
public readonly DicPacketHeader hdr;
public readonly ushort devices;
}
}