1 //Create a class for music player
3 import Timer.SimulatedTimer
6 import gov.nasa.jpf.vm.Verify
8 public class MusicPlayers {
9 private int deviceNumbers
10 private List musicPlayers
13 //For one device(We cannot have obj.id)-> We should have obj[0].id
14 private String id = "musicPlayerID0"
15 private String label = "musicPlayer0"
16 private String displayName = "musicPlayer0"
17 private int level = 20
18 private String mute = "unmuted"
19 private String status = "paused"
20 private int trackNumber = 1
21 private String trackData = "someTrack"
22 private String trackDescription = "someDescriptions"
26 MusicPlayers(Closure sendEvent, int deviceNumbers) {
27 this.sendEvent = sendEvent
28 this.deviceNumbers = deviceNumbers
29 this.musicPlayers = []
31 /*def initLevel = Verify.getIntFromList(10, 20, 30)
32 this.level = initLevel
33 def initMute = Verify.getBoolean()
39 def initStatus = Verify.getInt(0,2)
40 if (initStatus == 0) {
41 this.status = "paused"
42 } else if (initStatus == 1) {
43 this.status = "playing"
45 this.status = "stopped"
50 def initTrack = Verify.getIntFromList(1, 2, 3)
51 this.trackNumber = initTrack
52 def initData = Verify.getBoolean()
54 this.trackData = "someTrack"
56 this.trackData = "someOtherTrack"
58 def initDesc = Verify.getBoolean()
60 this.trackDescription = "someDescriptions"
62 this.trackDescription = "someOtherDescriptions"
64 >>>>>>> a02c9807815a35c0f57241ee6510a3d312499049
65 musicPlayers.add(new MusicPlayer(sendEvent, id, label, displayName, this.level, this.mute, this.status, this.trackNumber, this.trackData, this.trackDescription))
69 def setValue(LinkedHashMap eventDataMap) {
70 if (eventDataMap["name"] == "status") {
71 if (eventDataMap["value"] != musicPlayers[0].status) {
72 this.status = eventDataMap["value"]
73 musicPlayers[0].setValue(eventDataMap["value"], "status")
74 sendEvent(eventDataMap)
76 } else if (eventDataMap["name"] == "level") {
77 if (eventDataMap["value"].toInteger() != musicPlayers[0].level) {
78 this.level = eventDataMap["value"].toInteger()
79 musicPlayers[0].setValue(eventDataMap["value"], "level")
80 sendEvent(eventDataMap)
82 } else if (eventDataMap["name"] == "trackDescription") {
83 if (eventDataMap["value"] != musicPlayers[0].trackDescription) {
84 this.trackDescription = eventDataMap["value"]
85 musicPlayers[0].setValue(eventDataMap["value"], "trackDescription")
86 sendEvent(eventDataMap)
88 } else if (eventDataMap["name"] == "trackData") {
89 if (eventDataMap["value"] != musicPlayers[0].trackData) {
90 this.trackData = eventDataMap["value"]
91 musicPlayers[0].setValue(eventDataMap["value"], "trackData")
92 sendEvent(eventDataMap)
94 } else if (eventDataMap["name"] == "mute") {
95 if (eventDataMap["value"] != musicPlayers[0].mute) {
96 this.mute = eventDataMap["value"]
97 musicPlayers[0].setValue(eventDataMap["value"], "mute")
98 sendEvent(eventDataMap)
103 //Methods for closures
104 def count(Closure Input) {
105 musicPlayers.count(Input)
110 def each(Closure Input) {
111 musicPlayers.each(Input)
113 def find(Closure Input) {
114 musicPlayers.find(Input)
116 def sort(Closure Input) {
117 musicPlayers.sort(Input)
119 def collect(Closure Input) {
120 musicPlayers.collect(Input)
125 if (mute != "muted") {
127 musicPlayers[0].mute()
131 if (status != "playing") {
132 this.status = "playing"
134 this.trackNumber = this.trackNumber+1
135 musicPlayers[0].nextTrack()
138 if (status != "paused") {
139 this.status = "paused"
140 musicPlayers[0].pause()
144 if (status != "playing") {
145 this.status = "playing"
146 musicPlayers[0].play()
149 def playTrack(String trackToPlay) {
150 if (status != "playing") {
151 this.status = "playing"
153 musicPlayers[0].playTrack(trackToPlay)
155 def previousTrack() {
156 if (status != "playing") {
157 this.status = "playing"
159 if (this.trackNumber != 1)
160 this.trackNumber = this.trackNumber-1
161 musicPlayers[0].previousTrack()
163 def restoreTrack(String trackToRestore) {
164 musicPlayers[0].restoreTrack(trackToRestore)
166 def resumeTrack(String trackToResume) {
167 if (status != "playing") {
168 this.status = "playing"
170 musicPlayers[0].resumeTrack(trackToResume)
172 def setLevel(int level) {
173 if (level != this.level) {
175 musicPlayers[0].setLevel(level)
178 def setTrack(String trackToSet) {
179 if (status != "playing") {
180 this.status = "playing"
182 musicPlayers[0].setTrack(trackToSet)
185 if (status != "stopped") {
186 this.status = "stopped"
187 musicPlayers[0].stop()
190 def playText(String text) {
191 if (status != "playing") {
192 this.status = "playing"
194 musicPlayers[0].playText(text)
197 def currentValue(String deviceFeature) {
198 musicPlayers[0].currentValue(deviceFeature)
201 def latestValue(String deviceFeature) {
202 musicPlayers[0].latestValue(deviceFeature)