package org.intellimate.izou.output; import org.intellimate.izou.identification.Identifiable; import ro.fortsoft.pf4j.AddonAccessible; /** * <p> * An OutputControllerModel is the most basic abstraction for an OutputController. The purpose of this * OutputController is to control the external output device that is attached to Izou in correlation with the * {@link OutputPluginModel} that uses the external output device. * </p> * <p> * For example, a music addon might control what content is played on a TV, but it might not * control the state of the TV (whether it is turned on or off), what mode the TV is in etc. So prior * to the playback of music, the output plugin might call the output controller for the TV and tell it to turn * itself on and to switch to the audio playback mode so that the music can actually be heard. * </p> * <p> * Thus the OutputController controls the state of an external output device. * </p> * * @author Julian Brendl * @version 1.0 */ @AddonAccessible public interface OutputControllerModel extends Identifiable { /** * Turns the external output device that this OutputControllerModel controls on. * * @return Returns true if the device was turned on successfully. */ boolean turnOn(); /** * Turns the external output device that this OutputControllerModel controls off * * @return Returns true if the device was turned off successfully. */ boolean turnOff(); }