1
0
mirror of https://github.com/DarthAffe/CUE.NET.git synced 2025-12-13 00:58:31 +00:00

Added some xml-comments

This commit is contained in:
Darth Affe 2015-10-14 20:32:01 +02:00
parent 9c57e3257f
commit 0f402a6ecd
10 changed files with 101 additions and 8 deletions

View File

@ -10,14 +10,22 @@ using CUE.NET.Native;
namespace CUE.NET.Devices.Generic namespace CUE.NET.Devices.Generic
{ {
/// <summary>
/// Represents a generic CUE-device. (keyboard, mouse, headset, ...)
/// </summary>
public abstract class AbstractCueDevice : ICueDevice public abstract class AbstractCueDevice : ICueDevice
{ {
private UpdateMode _updateMode = UpdateMode.AutoOnEffect;
#region Properties & Fields #region Properties & Fields
/// <summary>
/// Gets generic information provided by CUE for the device.
/// </summary>
public IDeviceInfo DeviceInfo { get; } public IDeviceInfo DeviceInfo { get; }
private UpdateMode _updateMode = UpdateMode.AutoOnEffect;
/// <summary>
/// Gets or sets the update-mode for the device.
/// </summary>
public UpdateMode UpdateMode public UpdateMode UpdateMode
{ {
get { return _updateMode; } get { return _updateMode; }
@ -27,10 +35,16 @@ namespace CUE.NET.Devices.Generic
CheckUpdateLoop(); CheckUpdateLoop();
} }
} }
/// <summary>
/// Gets or sets the update-frequency in seconds. (Calculate by using '1f / updates per second')
/// </summary>
public float UpdateFrequency { get; set; } = 1f / 30f; public float UpdateFrequency { get; set; } = 1f / 30f;
private Dictionary<int, CorsairLed> Leds { get; } = new Dictionary<int, CorsairLed>(); private Dictionary<int, CorsairLed> Leds { get; } = new Dictionary<int, CorsairLed>();
/// <summary>
/// Indicates if the device has an active effect to deal with.
/// </summary>
protected abstract bool HasEffect { get; } protected abstract bool HasEffect { get; }
private CancellationTokenSource _updateTokenSource; private CancellationTokenSource _updateTokenSource;
@ -41,12 +55,19 @@ namespace CUE.NET.Devices.Generic
#region Events #region Events
/// <summary>
/// Occurs when a catched exception is thrown inside the device.
/// </summary>
public event OnExceptionEventHandler OnException; public event OnExceptionEventHandler OnException;
#endregion #endregion
#region Constructors #region Constructors
/// <summary>
/// Initializes a new instance of the <see cref="AbstractCueDevice"/> class.
/// </summary>
/// <param name="info">The generic information provided by CUE for the device.</param>
protected AbstractCueDevice(IDeviceInfo info) protected AbstractCueDevice(IDeviceInfo info)
{ {
this.DeviceInfo = info; this.DeviceInfo = info;
@ -58,6 +79,11 @@ namespace CUE.NET.Devices.Generic
#region Methods #region Methods
/// <summary>
/// Gets the LED-Object with the specified id.
/// </summary>
/// <param name="ledId">The LED-Id to look for.</param>
/// <returns></returns>
protected CorsairLed GetLed(int ledId) protected CorsairLed GetLed(int ledId)
{ {
if (!Leds.ContainsKey(ledId)) if (!Leds.ContainsKey(ledId))
@ -66,6 +92,9 @@ namespace CUE.NET.Devices.Generic
return Leds[ledId]; return Leds[ledId];
} }
/// <summary>
/// Checks if automatic updates should occur and starts/stops the update-loop if needed.
/// </summary>
protected async void CheckUpdateLoop() protected async void CheckUpdateLoop()
{ {
bool shouldRun; bool shouldRun;
@ -111,6 +140,10 @@ namespace CUE.NET.Devices.Generic
} }
} }
/// <summary>
/// Perform an update for all dirty keys, or all keys if flushLeds is set to true.
/// </summary>
/// <param name="flushLeds">Specifies whether all keys (including clean ones) should be updated.</param>
public virtual void Update(bool flushLeds = false) public virtual void Update(bool flushLeds = false)
{ {
IList<KeyValuePair<int, CorsairLed>> ledsToUpdate = (flushLeds ? Leds : Leds.Where(x => x.Value.IsDirty)).ToList(); IList<KeyValuePair<int, CorsairLed>> ledsToUpdate = (flushLeds ? Leds : Leds.Where(x => x.Value.IsDirty)).ToList();
@ -148,6 +181,11 @@ namespace CUE.NET.Devices.Generic
Marshal.FreeHGlobal(ptr); Marshal.FreeHGlobal(ptr);
} }
/// <summary>
/// Handles the needed event-calls for an exception.
/// </summary>
/// <param name="ex"></param>
/// <exception cref="Exception">A delegate callback throws an exception.</exception>
protected void ManageException(Exception ex) protected void ManageException(Exception ex)
{ {
OnException?.Invoke(this, new OnExceptionEventArgs(ex)); OnException?.Invoke(this, new OnExceptionEventArgs(ex));

View File

@ -7,16 +7,32 @@ using CUE.NET.Helper;
namespace CUE.NET.Devices.Generic namespace CUE.NET.Devices.Generic
{ {
/// <summary>
/// Represents a single LED of a CUE-device.
/// </summary>
public class CorsairLed public class CorsairLed
{ {
#region Properties & Fields #region Properties & Fields
/// <summary>
/// Indicates whether the LED has changed an internal state.
/// </summary>
public bool IsDirty => RequestedColor != _color; public bool IsDirty => RequestedColor != _color;
/// <summary>
/// Indicate whether the Color of the LED was set since the last update.
/// </summary>
public bool IsUpdated { get; private set; } public bool IsUpdated { get; private set; }
/// <summary>
/// Gets the Color the LED should be set to on the next update.
/// </summary>
public Color RequestedColor { get; private set; } = Color.Transparent; public Color RequestedColor { get; private set; } = Color.Transparent;
private Color _color = Color.Transparent; private Color _color = Color.Transparent;
/// <summary>
/// Gets the current color of the LED. Sets the <see cref="RequestedColor" /> for the next update and mark the LED as <see cref="IsUpdated" />.
/// </summary>
public Color Color public Color Color
{ {
get { return _color; } get { return _color; }
@ -30,12 +46,15 @@ namespace CUE.NET.Devices.Generic
} }
} }
/// <summary>
/// Gets or sets if the color of this LED can be changed.
/// </summary>
public bool IsLocked { get; set; } = false; public bool IsLocked { get; set; } = false;
#endregion #endregion
#region Constructors #region Constructors
internal CorsairLed() { } internal CorsairLed() { }
#endregion #endregion

View File

@ -1,9 +1,24 @@
namespace CUE.NET.Devices.Generic.Enums namespace CUE.NET.Devices.Generic.Enums
{ {
/// <summary>
/// Contains list of available update modes.
/// </summary>
public enum UpdateMode public enum UpdateMode
{ {
/// <summary>
/// The device will not perform automatic updates. Updates will only occur if <see cref="CUE.NET.Devices.ICueDevice.Update" /> is called.
/// </summary>
Manual, Manual,
/// <summary>
/// The device will perform automatic updates at the rate set in <see cref="CUE.NET.Devices.ICueDevice.UpdateFrequency" />
/// as long as an <see cref="CUE.NET.Devices.Keyboard.Effects.IEffect" /> is attached.
/// </summary>
AutoOnEffect, AutoOnEffect,
/// <summary>
/// The device will perform automatic updates at the rate set in <see cref="CUE.NET.Devices.ICueDevice.UpdateFrequency" />.
/// </summary>
Continuous Continuous
} }
} }

View File

@ -10,17 +10,17 @@ namespace CUE.NET.Devices.Generic
#region Properties & Fields #region Properties & Fields
/// <summary> /// <summary>
/// Device type. /// Gets the device type. (<see cref="CUE.NET.Devices.Generic.Enums.CorsairDeviceType" />)
/// </summary> /// </summary>
public CorsairDeviceType Type { get; } public CorsairDeviceType Type { get; }
/// <summary> /// <summary>
/// Device model (like “K95RGB”). /// Gets the device model (like “K95RGB”).
/// </summary> /// </summary>
public string Model { get; } public string Model { get; }
/// <summary> /// <summary>
/// Flags that describes device capabilities /// Get a flag that describes device capabilities. (<see cref="CUE.NET.Devices.Generic.Enums.CorsairDeviceCaps" />)
/// </summary> /// </summary>
public CorsairDeviceCaps CapsMask { get; } public CorsairDeviceCaps CapsMask { get; }

View File

@ -2,16 +2,26 @@
namespace CUE.NET.Devices.Generic namespace CUE.NET.Devices.Generic
{ {
/// <summary>
/// Represents the information supplied with an OnException-event.
/// </summary>
public class OnExceptionEventArgs : EventArgs public class OnExceptionEventArgs : EventArgs
{ {
#region Properties & Fields #region Properties & Fields
/// <summary>
/// Gets the exception which is responsible for the event-call.
/// </summary>
public Exception Exception { get; } public Exception Exception { get; }
#endregion #endregion
#region Constructors #region Constructors
/// <summary>
/// Initializes a new instance of the <see cref="OnExceptionEventArgs"/> class.
/// </summary>
/// <param name="exception">The exception which is responsible for the event-call.</param>
public OnExceptionEventArgs(Exception exception) public OnExceptionEventArgs(Exception exception)
{ {
this.Exception = exception; this.Exception = exception;

View File

@ -3,6 +3,9 @@
namespace CUE.NET.Devices.Headset namespace CUE.NET.Devices.Headset
{ {
//TODO DarthAffe 20.09.2015: Find someone to test this //TODO DarthAffe 20.09.2015: Find someone to test this
/// <summary>
/// Stub for planned headset-support.
/// </summary>
public class CorsairHeadset : AbstractCueDevice public class CorsairHeadset : AbstractCueDevice
{ {
#region Properties & Fields #region Properties & Fields

View File

@ -3,6 +3,9 @@ using CUE.NET.Native;
namespace CUE.NET.Devices.Headset namespace CUE.NET.Devices.Headset
{ {
/// <summary>
/// Stub for planned headset-support.
/// </summary>
public class CorsairHeadsetDeviceInfo : GenericDeviceInfo public class CorsairHeadsetDeviceInfo : GenericDeviceInfo
{ {
internal CorsairHeadsetDeviceInfo(_CorsairDeviceInfo nativeInfo) internal CorsairHeadsetDeviceInfo(_CorsairDeviceInfo nativeInfo)

View File

@ -7,7 +7,6 @@ namespace CUE.NET.Devices
public interface ICueDevice public interface ICueDevice
{ {
IDeviceInfo DeviceInfo { get; } IDeviceInfo DeviceInfo { get; }
UpdateMode UpdateMode { get; set; } UpdateMode UpdateMode { get; set; }

View File

@ -3,6 +3,9 @@
namespace CUE.NET.Devices.Mouse namespace CUE.NET.Devices.Mouse
{ {
//TODO DarthAffe 20.09.2015: Find someone to test this //TODO DarthAffe 20.09.2015: Find someone to test this
/// <summary>
/// Stub for planned headset-support.
/// </summary>
public class CorsairMouse : AbstractCueDevice public class CorsairMouse : AbstractCueDevice
{ {
#region Properties & Fields #region Properties & Fields

View File

@ -7,6 +7,9 @@ using CUE.NET.Native;
namespace CUE.NET.Devices.Mouse namespace CUE.NET.Devices.Mouse
{ {
/// <summary>
/// Stub for planned headset-support.
/// </summary>
public class CorsairMouseDeviceInfo : GenericDeviceInfo public class CorsairMouseDeviceInfo : GenericDeviceInfo
{ {
#region Properties & Fields #region Properties & Fields