You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

99 lines
2.5 KiB

using System;
using System.Threading.Tasks;
namespace HidLibrary
{
public delegate void InsertedEventHandler();
public delegate void RemovedEventHandler();
public enum DeviceMode
{
NonOverlapped = 0,
Overlapped = 1
}
[Flags]
public enum ShareMode
{
Exclusive = 0,
ShareRead = NativeMethods.FILE_SHARE_READ,
ShareWrite = NativeMethods.FILE_SHARE_WRITE
}
public delegate void ReadCallback(HidDeviceData data);
public delegate void ReadReportCallback(HidReport report);
public delegate void WriteCallback(bool success);
public interface IHidDevice : IDisposable
{
event InsertedEventHandler Inserted;
event RemovedEventHandler Removed;
IntPtr Handle { get; }
bool IsOpen { get; }
bool IsConnected { get; }
string Description { get; }
HidDeviceCapabilities Capabilities { get; }
HidDeviceAttributes Attributes { get; }
string DevicePath { get; }
bool MonitorDeviceEvents { get; set; }
void OpenDevice();
void OpenDevice(DeviceMode readMode, DeviceMode writeMode, ShareMode shareMode);
void CloseDevice();
HidDeviceData Read();
void Read(ReadCallback callback);
void Read(ReadCallback callback, int timeout);
Task<HidDeviceData> ReadAsync(int timeout = 0);
HidDeviceData Read(int timeout);
void ReadReport(ReadReportCallback callback);
void ReadReport(ReadReportCallback callback, int timeout);
Task<HidReport> ReadReportAsync(int timeout = 0);
HidReport ReadReport(int timeout);
HidReport ReadReport();
bool ReadFeatureData(out byte[] data, byte reportId = 0);
bool ReadProduct(out byte[] data);
bool ReadManufacturer(out byte[] data);
bool ReadSerialNumber(out byte[] data);
void Write(byte[] data, WriteCallback callback);
bool Write(byte[] data);
bool Write(byte[] data, int timeout);
void Write(byte[] data, WriteCallback callback, int timeout);
Task<bool> WriteAsync(byte[] data, int timeout = 0);
void WriteReport(HidReport report, WriteCallback callback);
bool WriteReport(HidReport report);
bool WriteReport(HidReport report, int timeout);
void WriteReport(HidReport report, WriteCallback callback, int timeout);
Task<bool> WriteReportAsync(HidReport report, int timeout = 0);
HidReport CreateReport();
bool WriteFeatureData(byte[] data);
}
}