using System;
using System.Windows.Controls;
namespace MassiveKnob.Plugin
{
///
/// Represents a connection to a Massive Knob device.
///
public interface IMassiveKnobDeviceInstance : IDisposable
{
///
/// Called right after this instance is created.
///
/// Provides an interface to the Massive Knob settings and device. Can be stored until the device instance is disposed.
void Initialize(IMassiveKnobDeviceContext context);
///
/// Called when a device should display it's settings. Assume the width is variable, height is
/// determined by the UserControl. Return null to indicate there are no settings for this device.
///
UserControl CreateSettingsControl();
///
/// Called when the state of an analog output should be changed.
///
/// The index of the analog output to set.
/// The analog value in the range of 0 to 100.
void SetAnalogOutput(int analogOutputIndex, byte value);
///
/// Called when the state of a digital output should be changed.
///
/// The index of the digital output to set.
/// Whether the signal is on or off.
void SetDigitalOutput(int digitalOutputIndex, bool on);
}
}