using System;
|
|
|
|
namespace HidLibrary
|
|
{
|
|
public class HidReport
|
|
{
|
|
private byte _reportId;
|
|
private byte[] _data = new byte[] {};
|
|
|
|
private readonly HidDeviceData.ReadStatus _status;
|
|
|
|
public HidReport(int reportSize)
|
|
{
|
|
Array.Resize(ref _data, reportSize - 1);
|
|
}
|
|
|
|
public HidReport(int reportSize, HidDeviceData deviceData)
|
|
{
|
|
_status = deviceData.Status;
|
|
|
|
Array.Resize(ref _data, reportSize - 1);
|
|
|
|
if ((deviceData.Data != null))
|
|
{
|
|
|
|
if (deviceData.Data.Length > 0)
|
|
{
|
|
_reportId = deviceData.Data[0];
|
|
Exists = true;
|
|
|
|
if (deviceData.Data.Length > 1)
|
|
{
|
|
var dataLength = reportSize - 1;
|
|
if (deviceData.Data.Length < reportSize - 1) dataLength = deviceData.Data.Length;
|
|
Array.Copy(deviceData.Data, 1, _data, 0, dataLength);
|
|
}
|
|
}
|
|
else Exists = false;
|
|
}
|
|
else Exists = false;
|
|
}
|
|
|
|
public bool Exists { get; private set; }
|
|
public HidDeviceData.ReadStatus ReadStatus { get { return _status; } }
|
|
|
|
public byte ReportId
|
|
{
|
|
get { return _reportId; }
|
|
set
|
|
{
|
|
_reportId = value;
|
|
Exists = true;
|
|
}
|
|
}
|
|
|
|
public byte[] Data
|
|
{
|
|
get { return _data; }
|
|
set
|
|
{
|
|
_data = value;
|
|
Exists = true;
|
|
}
|
|
}
|
|
|
|
public byte[] GetBytes()
|
|
{
|
|
byte[] data = null;
|
|
Array.Resize(ref data, _data.Length + 1);
|
|
data[0] = _reportId;
|
|
Array.Copy(_data, 0, data, 1, _data.Length);
|
|
return data;
|
|
}
|
|
}
|
|
}
|