X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=MusicPlayer%2FMusicPlayers.groovy;h=92f6c550a9db80f957165d58bc7b713a946d99de;hb=c1b963da95f601ed27b117fd23578cbc352935c7;hp=bf733db3a93bc327219d4f273b507eaf708cc6bd;hpb=7bc2c68bdfb07a54d6e8399e7514d715c78a2398;p=smartthings-infrastructure.git diff --git a/MusicPlayer/MusicPlayers.groovy b/MusicPlayer/MusicPlayers.groovy index bf733db..92f6c55 100644 --- a/MusicPlayer/MusicPlayers.groovy +++ b/MusicPlayer/MusicPlayers.groovy @@ -2,7 +2,6 @@ package MusicPlayer import Timer.SimulatedTimer - public class MusicPlayers { private int deviceNumbers private List musicPlayers @@ -13,6 +12,7 @@ public class MusicPlayers { private String label = "musicPlayer0" private String displayName = "musicPlayer0" private int level = 20 + private int duration = 10 private String mute = "unmuted" private String status = "pause" private int trackNumber = 1 @@ -21,44 +21,61 @@ public class MusicPlayers { - MusicPlayers(Closure sendEvent, int deviceNumbers) { + MusicPlayers(Closure sendEvent, int deviceNumbers, boolean init) { this.sendEvent = sendEvent this.deviceNumbers = deviceNumbers this.musicPlayers = [] - - musicPlayers.add(new MusicPlayer(id, label, displayName, this.level, this.mute, this.status, this.trackNumber, this.trackData, this.trackDescription)) + + if (init) { + this.level = 20 + this.duration = 10 + this.mute = "unmuted" + this.status = "paused" + this.trackNumber = 1 + this.trackData = "someTrack" + this.trackDescription = "someDescriptions" + } else { + this.level = 30 + this.duration = 20 + this.mute = "muted" + this.status = "playing" + this.trackNumber = 2 + this.trackData = "someOtherTrack" + this.trackDescription = "someOtherDescriptions" + } + musicPlayers.add(new MusicPlayer(sendEvent, id, label, displayName, this.level, this.mute, this.status, this.trackNumber, this.trackData, this.trackDescription)) } //By model checker def setValue(LinkedHashMap eventDataMap) { if (eventDataMap["name"] == "status") { if (eventDataMap["value"] != musicPlayers[0].status) { + this.status = eventDataMap["value"] musicPlayers[0].setValue(eventDataMap["value"], "status") - this.status = musicPlayers[0].status sendEvent(eventDataMap) } } else if (eventDataMap["name"] == "level") { - if (eventDataMap["value"] != musicPlayers[0].level) { + if (eventDataMap["value"].toInteger() != musicPlayers[0].level) { + this.level = eventDataMap["value"].toInteger() musicPlayers[0].setValue(eventDataMap["value"], "level") - this.level = musicPlayers[0].level sendEvent(eventDataMap) } } else if (eventDataMap["name"] == "trackDescription") { if (eventDataMap["value"] != musicPlayers[0].trackDescription) { + this.trackDescription = eventDataMap["value"] musicPlayers[0].setValue(eventDataMap["value"], "trackDescription") - this.trackDescription = musicPlayers[0].trackDescription sendEvent(eventDataMap) } } else if (eventDataMap["name"] == "trackData") { if (eventDataMap["value"] != musicPlayers[0].trackData) { - musicPlayers[0].setValue(eventDataMap["value"], "trackData") - this.trackData = musicPlayers[0].trackData + this.trackData = eventDataMap["value"] + musicPlayers[0].setValue(eventDataMap["value"], "trackData") sendEvent(eventDataMap) } } else if (eventDataMap["name"] == "mute") { if (eventDataMap["value"] != musicPlayers[0].mute) { + this.mute = eventDataMap["value"] musicPlayers[0].setValue(eventDataMap["value"], "mute") - this.mute = musicPlayers[0].mute sendEvent(eventDataMap) } } @@ -77,63 +94,179 @@ public class MusicPlayers { def find(Closure Input) { musicPlayers.find(Input) } + def sort(Closure Input) { + musicPlayers.sort(Input) + } def collect(Closure Input) { musicPlayers.collect(Input) } //methods + def on(LinkedHashMap metaData) { + on() + } + def on() { + if (status != "on") { + this.status = "on" + musicPlayers[0].on() + } + } + def off(LinkedHashMap metaData) { + off() + } + def off() { + if (status != "off") { + this.status = "off" + musicPlayers[0].off() + } + } + def mute(LinkedHashMap metaData) { + mute() + } def mute() { - musicPlayers[0].mute() - this.mute = "muted" + if (mute != "muted") { + this.mute = "muted" + musicPlayers[0].mute() + } + } + def nextTrack(LinkedHashMap metaData) { + nextTrack() } def nextTrack() { + if (status != "play") { + this.status = "play" + } + this.trackNumber = this.trackNumber+1 musicPlayers[0].nextTrack() - this.status = "playing" - this.trackNumber = musicPlayers[0].trackNumber + } + def pause(LinkedHashMap metaData) { + pause() } def pause() { - musicPlayers[0].pause() - this.status = "paused" + if (status != "pause") { + this.status = "pause" + musicPlayers[0].pause() + } + } + def play(LinkedHashMap metaData) { + play() } def play() { - musicPlayers[0].play() - this.status = "playing" + if (status != "play") { + this.status = "play" + musicPlayers[0].play() + } + } + def playTrack(LinkedHashMap metaData) { + playTrack("someTrack") + } + def playTrackAndResume(String trackData, int duration) { + playTrack(trackData) + if (duration != this.duration) { + this.duration = duration + } + } + def playTrackAndResume(String trackData, int duration, int level) { + playTrackAndResume(trackData, duration) + if (level != this.level) { + this.level = level + } + } + def playSoundAndTrack(String trackData, int duration, int trackNumber, int level) { + playTrackAndResume(trackData, duration) + if (level != this.level) { + this.level = level + } + if (trackNumber!= this.trackNumber) { + this.trackNumber = trackNumber + } + } + def playTrackAtVolume(String trackData, int level) { + playTrack(trackData) + if (level != this.level) { + this.level = level + } } def playTrack(String trackToPlay) { + if (status != "play") { + this.status = "play" + } musicPlayers[0].playTrack(trackToPlay) - this.status = "playing" - this.trackNumber = musicPlayers[0].trackNumber + } + def previousTrack(LinkedHashMap metaData) { + previousTrack() } def previousTrack() { + if (status != "play") { + this.status = "play" + } + if (this.trackNumber != 1) + this.trackNumber = this.trackNumber-1 musicPlayers[0].previousTrack() - this.status = "playing" - this.trackNumber = musicPlayers[0].trackNumber + } + def restoreTrack(LinkedHashMap metaData) { + restoreTrack() } def restoreTrack(String trackToRestore) { musicPlayers[0].restoreTrack(trackToRestore) } + def resumeTrack(LinkedHashMap metaData) { + resumeTrack() + } def resumeTrack(String trackToResume) { + if (status != "play") { + this.status = "play" + } musicPlayers[0].resumeTrack(trackToResume) - this.status = "playing" + } + def setLevel(LinkedHashMap metaData) { + setLevel() } def setLevel(int level) { - musicPlayers[0].setLevel(level) - this.level = level + if (level != this.level) { + this.level = level + musicPlayers[0].setLevel(level) + } + } + def setTrack(LinkedHashMap metaData) { + setTrack() } def setTrack(String trackToSet) { + if (status != "play") { + this.status = "play" + } musicPlayers[0].setTrack(trackToSet) - this.status = "playing" - this.trackNumber = musicPlayers[0].trackNumber + } + def stop(LinkedHashMap metaData) { + stop() } def stop() { - musicPlayers[0].stop() - this.status = "stopped" + if (status != "stop") { + this.status = "stop" + musicPlayers[0].stop() + } + } + def statesSince(String info, Date dateObj, LinkedHashMap map) { + return musicPlayers[0].statesSince() + } + def playText(LinkedHashMap metaData) { + playText() + } + def playText(String text) { + if (status != "play") { + this.status = "play" + } + musicPlayers[0].playText(text) } def currentValue(String deviceFeature) { musicPlayers[0].currentValue(deviceFeature) } + def latestValue(String deviceFeature) { + musicPlayers[0].latestValue(deviceFeature) + } + def getAt(int ix) { musicPlayers[ix] }