using System; using System.Collections.Generic; using System.Threading.Tasks; using Artemis.Core.DeviceProviders; namespace Artemis.Core.Services; /// /// A service that allows you manage an /// public interface IDeviceService : IArtemisService { /// /// Gets a read-only collection containing all enabled but suspended device providers /// IReadOnlyCollection SuspendedDeviceProviders { get; } /// /// Gets a read-only collection containing all enabled devices /// IReadOnlyCollection EnabledDevices { get; } /// /// Gets a read-only collection containing all registered devices /// IReadOnlyCollection Devices { get; } /// /// Identifies the device by making it blink white 5 times /// /// void IdentifyDevice(ArtemisDevice device); /// /// Adds the given device provider and its devices. /// /// void AddDeviceProvider(DeviceProvider deviceProvider); /// /// Removes the given device provider and its devices. /// /// void RemoveDeviceProvider(DeviceProvider deviceProvider); /// /// Applies auto-arranging logic to the surface /// void AutoArrangeDevices(); /// /// Apples the best available to the provided /// /// void LoadDeviceLayout(ArtemisDevice device); /// /// Enables the provided device /// /// The device to enable void EnableDevice(ArtemisDevice device); /// /// Disables the provided device /// /// The device to disable void DisableDevice(ArtemisDevice device); /// /// Saves the configuration of the provided device to persistent storage /// /// void SaveDevice(ArtemisDevice artemisDevice); /// /// Saves the configuration of all current devices to persistent storage /// void SaveDevices(); /// /// Suspends all active device providers /// void SuspendDeviceProviders(); /// /// Resumes all previously active device providers /// void ResumeDeviceProviders(); /// /// Occurs when a single device was added. /// event EventHandler DeviceAdded; /// /// Occurs when a single device was removed. /// event EventHandler DeviceRemoved; /// /// Occurs when a single device was disabled /// event EventHandler DeviceEnabled; /// /// Occurs when a single device was disabled. /// event EventHandler DeviceDisabled; /// /// Occurs when a device provider was added. /// event EventHandler DeviceProviderAdded; /// /// Occurs when a device provider was removed. /// event EventHandler DeviceProviderRemoved; /// /// Occurs when the surface has had modifications to its LED collection /// event EventHandler LedsChanged; }