5 eventAppList = [] # This list maps App1 or App2 to a specific event
7 eventVarCounterMap = {}
15 # Mapping for event type and number of events
16 # e.g., switch has 2 events: on and off
17 eventTypeCounterMap = {'lock': 2,
31 'thermostatFanMode' : 5,
32 'thermostatOperatingState' : 5,
45 'colorTemperature' : 1,
56 'trackDescription' : 1,
60 'heatingSetpoint' : 1,
61 'coolingSetpoint' : 1,
62 'thermostatSetpoint' : 1,
65 'consumableStatus' : 1,
73 'soundPressureLevel' : 1,
75 'ultravioletIndex': 1,
85 'tamper.tampered' : 2,
87 'doorState.closed' : 1,
96 'motion.inactive' : 1,
102 'presence.present' : 1,
103 'presence.not present' : 1,
105 'smoke.detected' : 1,
108 'carbonMonoxide.detected' : 1,
109 'carbonMonoxide.clear' : 1,
110 'carbonMonoxide.tested' : 1,
111 'thermostatMode.cool' : 1,
112 'thermostatMode.auto' : 1,
113 'thermostatMode.emergencyHeat' : 1,
114 'thermostatMode.heat' : 1,
115 'thermostatMode.off' : 1,
116 'thermostatFanMode.auto' : 1,
117 'thermostatFanMode.fanCirculate' : 1,
118 'thermostatFanMode.circulate' : 1,
119 'thermostatFanMode.fanOn' : 1,
120 'thermostatFanMode.on' : 1,
123 'fanMode.fanCirculate' : 1,
124 'fanMode.circulate' : 1,
131 'acceleration.active' : 1,
132 'acceleration.inactive' : 1,
133 'sleeping.sleeping' : 1,
134 'sleeping.not sleeping' : 1,
142 Skip = ['\n', '\t', ' ']
143 Special = ["(", "\"", ":", ",", "{", "}", ")", "/", "*"]
169 def ExtractFunctions(F, appName):
175 while (Temp != "EOF"):
176 if (Temp == "def" or Temp == "private"):
178 if (Temp == "def" or Temp == "private"):
181 if (GetToken(F) == "("): #We have a function to create object for
182 if (appName == "App1"):
183 extractedFunctionsApp1.write("//Global Object for functions in subscribe method!\n")
184 extractedFunctionsApp1.write("def %s = this.&" % NameofFunc)
185 extractedFunctionsApp1.write("%s\n" % NameofFunc)
187 extractedFunctionsApp2.write("//Global Object for functions in subscribe method!\n")
188 extractedFunctionsApp2.write("def %s = this.&" % NameofFunc)
189 extractedFunctionsApp2.write("%s\n" % NameofFunc)
191 #Check subscribed events
192 if (Temp == "initialize" or Temp == "installed"):
196 # If it is a schedule function, then extract the scheduled method and put it as one of the events
197 if (Temp == "schedule"):
198 eventList.append("schedule")
199 if (appName == "App1"):
200 eventAppList.append("App1")
202 eventAppList.append("App2")
206 # If this is a " then get the next one still---we are interested in the scheduled function name
209 # Insert function name into the map
210 if "schedule" in eventVarMap.keys():
211 listOfEvents = eventVarMap["schedule"]
212 listOfEvents.append(Temp)
214 eventVarMap["schedule"] = [Temp]
216 #Check input capability
217 if (Temp == "input"):
220 variable = GetToken(F)
221 Temp = GetToken(F) #Get '"'
222 Temp = GetToken(F) #Get ','
225 capability = GetToken(F)
226 capabilityMap[variable] = capability
228 #Check subscribed events
229 if (Temp == "subscribe"):
230 if (appName == "App1"):
238 while (Temp != "\"" and Temp != "app" and Temp != "location"):
240 if Temp == "location":
241 # See if we have another case for location
242 Temp = GetToken(F) # Get ','
243 Temp = GetToken(F) # Get '"'
247 # This is the special case where we will see, e.g., sunset, sunrise, etc.
252 #print "DEBUG: %s - %s" % (variable, Temp)
254 #print "DEBUG: location variable: %s" % Temp
256 #This is a bogus event, just skip it...
259 if Temp == "app" or Temp == "location" or Temp == "position" or Temp == "mode" or Temp == "mode.away" or Temp == "mode.home" or Temp == "mode.night" or \
260 Temp == "sunset" or Temp == "sunrise" or Temp == "sunsetTime" or Temp == "sunriseTime":
261 if Temp not in eventList:
262 eventList.append(Temp)
263 if (appName == "App1"):
264 eventAppList.append("App1")
266 eventAppList.append("App2")
267 elif Temp not in eventList or (variable in capabilityMap.keys() and capabilityMap[variable] not in capabilityList):
268 # We do not repeat the same capability twice
269 capability = capabilityMap[variable]
270 capabilityList.append(capability)
271 eventList.append(Temp)
272 if (appName == "App1"):
273 eventAppList.append("App1")
275 eventAppList.append("App2")
276 if Temp in eventVarMap.keys():
277 listOfEvents = eventVarMap[Temp]
278 listOfEvents.append(variable)
280 eventVarMap[Temp] = [variable]
281 #print "DEBUG: %s - %s" % (variable, Temp)
285 #Check and analyze capabilities for physical interaction
286 AnalyzeCapabilities(Temp, appName, F)
290 #Warn if there is a potential for physical interaction
291 AnalyzePhysicalInteraction(app1Capabilities, app2Capabilities)
292 AnalyzePhysicalInteraction(app2Capabilities, app1Capabilities)
294 def AnalyzeCapabilities(Temp, appName, F):
296 if (Temp == "capability.switch" or
297 Temp == "capability.switchLevel" or
298 Temp == "capability.illuminanceMeasurement" or
299 Temp == "capability.colorControl" or
300 Temp == "capability.colorTemperature" or
302 Temp == "capability.motionSensor" or
303 Temp == "capability.accelerationSensor" or
305 Temp == "capability.valve" or
306 Temp == "capability.waterSensor" or
308 Temp == "capability.musicPlayer" or
309 Temp == "capability.alarm" or
310 Temp == "capability.speechSynthesis" or
311 Temp == "capability.soundSensor"):
312 if (appName == "App1"):
313 app1Capabilities.append(Temp)
315 app2Capabilities.append(Temp)
316 if (Temp == "capability"):
317 Temp = GetToken(F) #Get '"'
318 Temp = GetToken(F) #Get 'Music'
319 Temp = Temp + GetToken(F) #Get 'Player'
320 if (Temp == "MusicPlayer"):
321 if (appName == "App1"):
322 app1Capabilities.append("capability.musicPlayer")
324 app2Capabilities.append("capability.musicPlayer")
326 def AnalyzePhysicalInteraction(app1Capab, app2Capab):
328 if ("capability.illuminanceMeasurement" in app1Capab) and ("capability.switch" in app2Capab or
329 "capability.switchLevel" in app2Capab or "capability.colorControl" or "capability.colorTemperature" in app2Capab):
330 print ("\nWARNING: Potential PHYSICAL CONFLICT (light) detected between App1 and App2!\n")
332 # TODO: Technically this is not entirely precise since we need to be able to detect that the other app creates motion
333 if ("capability.motionSensor" in app1Capab) or ("capability.accelerationSensor" in app1Capab):
334 print ("\nWARNING: Potential PHYSICAL CONFLICT (motion) detected between App1 and App2!\n")
336 if ("capability.waterSensor" in app1Capab) and ("capability.valve" in app2Capab or
337 "capability.switch" in app2Capab):
338 print ("\nWARNING: Potential PHYSICAL CONFLICT (water) detected between App1 and App2!\n")
340 if ("capability.soundSensor" in app1Capab) and ("capability.musicPlayer" in app2Capab or
341 "capability.alarm" in app2Capab or "capability.speechSynthesis" in app2Capab):
342 print ("\nWARNING: Potential PHYSICAL CONFLICT (sound) detected between App1 and App2!\n")
346 numOfActualEvents = 0
347 #print "DEBUG: eventlist: %d" % len(eventList)
348 #print "DEBUG: eventlist: %s" % eventList
349 for event in eventList:
350 print("DEBUG: Event: %s %d" % (event, eventTypeCounterMap[event]))
351 numOfActualEvents = numOfActualEvents + eventTypeCounterMap[event]
352 return numOfActualEvents
354 def ExtractEvents(extractedEvents):
359 global eventVarCounterMap
360 # Count the number of events
361 numOfActualEvents = CountEvents()
362 # Use the following lines to print out numbers of events
363 #evtFile = open("numberOfEvents", "a+")
364 #evtFile.write(str(numOfActualEvents))
367 extractedEvents.write("while(true) {\n")
368 # We use Verify.getIntFromList() instead of Verify.getInt() since we want to manipulate the
369 # choices in the list/set to implement POR
370 #extractedEvents.write("\tdef eventNumber = Verify.getInt(0,%d)\n" % (numOfActualEvents - 1))
371 extractedEvents.write("\tdef eventNumber = Verify.getIntFromList(0,")
372 if (numOfActualEvents == 1):
373 extractedEvents.write("1)\n")
375 for x in range (1, numOfActualEvents - 1):
376 extractedEvents.write("%d," % x)
377 extractedEvents.write("%d)\n" % (numOfActualEvents - 1))
378 extractedEvents.write("\tswitch(eventNumber) {\n")
381 if "App2" in eventAppList:
382 indexApp2 = eventAppList.index("App2")
384 indexApp2 = len(eventList)
385 indexApp2Start = indexApp2
386 #print "DEBUG: App1: %d" % indexApp1
387 #print "DEBUG: App2: %d" % indexApp2
388 #print "DEBUG: eventList: %d" % len(eventList)
393 if indexApp2Start > 0:
397 while counter < numOfActualEvents:
398 # Interleave events from App1 and App2
401 indexApp1 = indexApp1 + 1
402 if indexApp2 < len(eventList):
406 indexApp2 = indexApp2 + 1
407 if indexApp1 < indexApp2Start:
409 #print "DEBUG: i: %d" % i
410 extractedEvents.write("\t\tcase %d:\n" % counter)
411 if eventList[i] == "schedule":
412 variable = eventVarMap[eventList[i]]
413 if eventList[i] not in eventVarCounterMap.keys():
414 eventVarCounterMap[eventList[i]] = 1
417 eventVarCount = eventVarCounterMap[eventList[i]]
418 eventVarCounterMap[eventList[i]] = eventVarCount + 1
419 currentMethod = variable[eventVarCount]
420 extractedEvents.write("\t\t\t// Scheduled method in installed() or intialize()\n")
421 extractedEvents.write("\t\t\t%s.%s()" % (eventAppList[i].lower(), currentMethod))
422 elif eventList[i] == "lock":
423 #Write two events subsequently
424 event = open("eventSimulator/lockLockedEvent.groovy", "r")
426 extractedEvents.write(line)
428 extractedEvents.write("\n\t\t\tbreak\n")
429 counter = counter + 1
430 extractedEvents.write("\t\tcase %d:\n" % counter)
431 event = open("eventSimulator/lockUnlockedEvent.groovy", "r")
433 extractedEvents.write(line)
435 elif eventList[i] == "lock.locked":
436 event = open("eventSimulator/lockLockedEvent.groovy", "r")
438 extractedEvents.write(line)
440 elif eventList[i] == "lock.unlocked":
441 event = open("eventSimulator/lockUnlockedEvent.groovy", "r")
443 extractedEvents.write(line)
445 elif eventList[i] == "nfcTouch":
446 event = open("eventSimulator/nfcTouchEvent.groovy", "r")
448 extractedEvents.write(line)
450 elif eventList[i] == "app": #Case for Touched event
451 event = open("eventSimulator/appTouchEvent.groovy", "r")
453 extractedEvents.write(line)
455 elif eventList[i] == "button":
456 #Check which capability
457 variable = eventVarMap[eventList[i]]
458 if eventList[i] not in eventVarCounterMap.keys():
459 eventVarCounterMap[eventList[i]] = 1
462 eventVarCount = eventVarCounterMap[eventList[i]]
463 eventVarCounterMap[eventList[i]] = eventVarCount + 1
464 capability = capabilityMap[variable[eventVarCount]]
465 #Write two events subsequently
466 if capability == "capability.button":
467 event = open("eventSimulator/buttonHeldEvent.groovy", "r")
468 elif capability == "device.aeonKeyFob":
469 event = open("eventSimulator/aeonKeyFobHeldEvent.groovy", "r")
471 extractedEvents.write(line)
473 extractedEvents.write("\n\t\t\tbreak\n")
474 counter = counter + 1
475 extractedEvents.write("\t\tcase %d:\n" % counter)
476 if capability == "capability.button":
477 event = open("eventSimulator/buttonPushedEvent.groovy", "r")
478 elif capability == "device.aeonKeyFob":
479 event = open("eventSimulator/aeonKeyFobPushedEvent.groovy", "r")
481 extractedEvents.write(line)
483 elif eventList[i] == "button.pushed":
484 event = open("eventSimulator/buttonPushedEvent.groovy", "r")
486 extractedEvents.write(line)
488 elif eventList[i] == "button.held":
489 event = open("eventSimulator/buttonHeldEvent.groovy", "r")
491 extractedEvents.write(line)
493 elif eventList[i] == "water":
494 #Write two events subsequently
495 event = open("eventSimulator/waterDryEvent.groovy", "r")
497 extractedEvents.write(line)
499 extractedEvents.write("\n\t\t\tbreak\n")
500 counter = counter + 1
501 extractedEvents.write("\t\tcase %d:\n" % counter)
502 event = open("eventSimulator/waterWetEvent.groovy", "r")
504 extractedEvents.write(line)
506 elif eventList[i] == "water.dry":
507 event = open("eventSimulator/waterDryEvent.groovy", "r")
509 extractedEvents.write(line)
511 elif eventList[i] == "water.wet":
512 event = open("eventSimulator/waterWetEvent.groovy", "r")
514 extractedEvents.write(line)
516 elif eventList[i] == "presence":
517 #Check which capability
518 variable = eventVarMap[eventList[i]]
519 if eventList[i] not in eventVarCounterMap.keys():
520 eventVarCounterMap[eventList[i]] = 1
523 eventVarCount = eventVarCounterMap[eventList[i]]
524 eventVarCounterMap[eventList[i]] = eventVarCount + 1
525 capability = capabilityMap[variable[eventVarCount]]
526 #Write two events subsequently
527 if capability == "capability.presenceSensor":
528 event = open("eventSimulator/presencePresentEvent.groovy", "r")
529 elif capability == "capability.beacon":
530 event = open("eventSimulator/beaconPresentEvent.groovy", "r")
532 extractedEvents.write(line)
534 extractedEvents.write("\n\t\t\tbreak\n")
535 counter = counter + 1
536 extractedEvents.write("\t\tcase %d:\n" % counter)
537 if capability == "capability.presenceSensor":
538 event = open("eventSimulator/presenceLeftEvent.groovy", "r")
539 elif capability == "capability.beacon":
540 event = open("eventSimulator/beaconLeftEvent.groovy", "r")
542 extractedEvents.write(line)
544 elif eventList[i] == "presence.present":
545 event = open("eventSimulator/presencePresentEvent.groovy", "r")
547 extractedEvents.write(line)
549 elif eventList[i] == "presence.not present" or eventList[i] == "presence.not":
550 event = open("eventSimulator/presenceLeftEvent.groovy", "r")
552 extractedEvents.write(line)
554 elif eventList[i] == "doorState":
555 #Write two events subsequently
556 event = open("eventSimulator/doorOpenEvent.groovy", "r")
558 extractedEvents.write(line)
560 extractedEvents.write("\n\t\t\tbreak\n")
561 counter = counter + 1
562 extractedEvents.write("\t\tcase %d:\n" % counter)
563 event = open("eventSimulator/doorClosedEvent.groovy", "r")
565 extractedEvents.write(line)
567 elif eventList[i] == "doorState.open":
568 event = open("eventSimulator/doorOpenEvent.groovy", "r")
570 extractedEvents.write(line)
572 elif eventList[i] == "doorState.closed":
573 event = open("eventSimulator/doorClosedEvent.groovy", "r")
575 extractedEvents.write(line)
577 elif eventList[i] == "motion":
578 #Write two events subsequently
579 event = open("eventSimulator/motionActiveEvent.groovy", "r")
581 extractedEvents.write(line)
583 extractedEvents.write("\n\t\t\tbreak\n")
584 counter = counter + 1
585 extractedEvents.write("\t\tcase %d:\n" % counter)
586 event = open("eventSimulator/motionInactiveEvent.groovy", "r")
588 extractedEvents.write(line)
590 elif eventList[i] == "motion.active":
591 event = open("eventSimulator/motionActiveEvent.groovy", "r")
593 extractedEvents.write(line)
595 elif eventList[i] == "motion.inactive":
596 event = open("eventSimulator/motionInactiveEvent.groovy", "r")
598 extractedEvents.write(line)
600 elif eventList[i] == "smoke":
601 #Write three events subsequently
602 event = open("eventSimulator/smokeClearEvent.groovy", "r")
604 extractedEvents.write(line)
606 extractedEvents.write("\n\t\t\tbreak\n")
607 counter = counter + 1
608 extractedEvents.write("\t\tcase %d:\n" % counter)
609 event = open("eventSimulator/smokeDetectedEvent.groovy", "r")
611 extractedEvents.write(line)
613 extractedEvents.write("\n\t\t\tbreak\n")
614 counter = counter + 1
615 extractedEvents.write("\t\tcase %d:\n" % counter)
616 event = open("eventSimulator/smokeTestedEvent.groovy", "r")
618 extractedEvents.write(line)
620 elif eventList[i] == "smoke.clear":
621 event = open("eventSimulator/smokeClearEvent.groovy", "r")
623 extractedEvents.write(line)
625 elif eventList[i] == "smoke.detected":
626 event = open("eventSimulator/smokeDetectedEvent.groovy", "r")
628 extractedEvents.write(line)
630 elif eventList[i] == "smoke.tested":
631 event = open("eventSimulator/smokeTestedEvent.groovy", "r")
633 extractedEvents.write(line)
635 elif eventList[i] == "carbonMonoxide":
636 #Check which capability
637 variable = eventVarMap[eventList[i]]
638 if eventList[i] not in eventVarCounterMap.keys():
639 eventVarCounterMap[eventList[i]] = 1
642 eventVarCount = eventVarCounterMap[eventList[i]]
643 eventVarCounterMap[eventList[i]] = eventVarCount + 1
644 capability = capabilityMap[variable[eventVarCount]]
645 #Write three events subsequently
646 if capability == "capability.smokeDetector":
647 event = open("eventSimulator/smokeCarbonMonoxideClearEvent.groovy", "r")
648 elif capability == "capability.carbonMonoxideDetector":
649 event = open("eventSimulator/carbonMonoxideClearEvent.groovy", "r")
651 extractedEvents.write(line)
653 extractedEvents.write("\n\t\t\tbreak\n")
654 counter = counter + 1
655 extractedEvents.write("\t\tcase %d:\n" % counter)
656 if capability == "capability.smokeDetector":
657 event = open("eventSimulator/smokeCarbonMonoxideDetectedEvent.groovy", "r")
658 elif capability == "capability.carbonMonoxideDetector":
659 event = open("eventSimulator/carbonMonoxideDetectedEvent.groovy", "r")
661 extractedEvents.write(line)
663 extractedEvents.write("\n\t\t\tbreak\n")
664 counter = counter + 1
665 extractedEvents.write("\t\tcase %d:\n" % counter)
666 if capability == "capability.smokeDetector":
667 event = open("eventSimulator/smokeCarbonMonoxideTestedEvent.groovy", "r")
668 elif capability == "capability.carbonMonoxideDetector":
669 event = open("eventSimulator/carbonMonoxideTestedEvent.groovy", "r")
671 extractedEvents.write(line)
673 elif eventList[i] == "carbonMonoxide.clear":
674 #Check which capability
675 variable = eventVarMap[eventList[i]]
676 if eventList[i] not in eventVarCounterMap.keys():
677 eventVarCounterMap[eventList[i]] = 1
680 eventVarCount = eventVarCounterMap[eventList[i]]
681 eventVarCounterMap[eventList[i]] = eventVarCount + 1
682 capability = capabilityMap[variable[eventVarCount]]
683 #Write three events subsequently
684 if capability == "capability.smokeDetector":
685 event = open("eventSimulator/smokeCarbonMonoxideClearEvent.groovy", "r")
686 elif capability == "capability.carbonMonoxideDetector":
687 event = open("eventSimulator/carbonMonoxideClearEvent.groovy", "r")
689 extractedEvents.write(line)
691 elif eventList[i] == "carbonMonoxide.detected":
692 #Check which capability
693 variable = eventVarMap[eventList[i]]
694 if eventList[i] not in eventVarCounterMap.keys():
695 eventVarCounterMap[eventList[i]] = 1
698 eventVarCount = eventVarCounterMap[eventList[i]]
699 eventVarCounterMap[eventList[i]] = eventVarCount + 1
700 capability = capabilityMap[variable[eventVarCount]]
701 #Write three events subsequently
702 if capability == "capability.smokeDetector":
703 event = open("eventSimulator/smokeCarbonMonoxideDetectedEvent.groovy", "r")
704 elif capability == "capability.carbonMonoxideDetector":
705 event = open("eventSimulator/carbonMonoxideDetectedEvent.groovy", "r")
707 extractedEvents.write(line)
709 elif eventList[i] == "carbonMonoxide.tested":
710 #Check which capability
711 variable = eventVarMap[eventList[i]]
712 if eventList[i] not in eventVarCounterMap.keys():
713 eventVarCounterMap[eventList[i]] = 1
716 eventVarCount = eventVarCounterMap[eventList[i]]
717 eventVarCounterMap[eventList[i]] = eventVarCount + 1
718 capability = capabilityMap[variable[eventVarCount]]
719 #Write three events subsequently
720 if capability == "capability.smokeDetector":
721 event = open("eventSimulator/smokeCarbonMonoxideTestedEvent.groovy", "r")
722 elif capability == "capability.carbonMonoxideDetector":
723 event = open("eventSimulator/carbonMonoxideTestedEvent.groovy", "r")
725 extractedEvents.write(line)
727 elif eventList[i] == "battery":
728 #Check which capability
729 variable = eventVarMap[eventList[i]]
730 if eventList[i] not in eventVarCounterMap.keys():
731 eventVarCounterMap[eventList[i]] = 1
734 eventVarCount = eventVarCounterMap[eventList[i]]
735 eventVarCounterMap[eventList[i]] = eventVarCount + 1
736 capability = capabilityMap[variable[eventVarCount]]
737 if capability == "capability.smokeDetector":
738 event = open("eventSimulator/smokeDetectorBatteryEvent.groovy", "r")
739 elif capability == "capability.battery":
740 event = open("eventSimulator/batteryBatteryEvent.groovy", "r")
742 extractedEvents.write(line)
744 elif eventList[i] == "thermostatMode":
745 #Write five events subsequently
746 event = open("eventSimulator/thermostatAutoModeEvent.groovy", "r")
748 extractedEvents.write(line)
750 extractedEvents.write("\n\t\t\tbreak\n")
751 counter = counter + 1
752 extractedEvents.write("\t\tcase %d:\n" % counter)
753 event = open("eventSimulator/thermostatCoolModeEvent.groovy", "r")
755 extractedEvents.write(line)
757 extractedEvents.write("\n\t\t\tbreak\n")
758 counter = counter + 1
759 extractedEvents.write("\t\tcase %d:\n" % counter)
760 event = open("eventSimulator/thermostatEmergencyHeatModeEvent.groovy", "r")
762 extractedEvents.write(line)
764 extractedEvents.write("\n\t\t\tbreak\n")
765 counter = counter + 1
766 extractedEvents.write("\t\tcase %d:\n" % counter)
767 event = open("eventSimulator/thermostatHeatModeEvent.groovy", "r")
769 extractedEvents.write(line)
771 extractedEvents.write("\n\t\t\tbreak\n")
772 counter = counter + 1
773 extractedEvents.write("\t\tcase %d:\n" % counter)
774 event = open("eventSimulator/thermostatOffModeEvent.groovy", "r")
776 extractedEvents.write(line)
778 elif eventList[i] == "thermostatMode.cool":
779 event = open("eventSimulator/thermostatCoolModeEvent.groovy", "r")
781 extractedEvents.write(line)
783 elif eventList[i] == "thermostatMode.auto":
784 event = open("eventSimulator/thermostatAutoModeEvent.groovy", "r")
786 extractedEvents.write(line)
788 elif eventList[i] == "thermostatMode.emergencyHeat":
789 event = open("eventSimulator/thermostatEmergencyHeatModeEvent.groovy", "r")
791 extractedEvents.write(line)
793 elif eventList[i] == "thermostatMode.heat":
794 event = open("eventSimulator/thermostatHeatModeEvent.groovy", "r")
796 extractedEvents.write(line)
798 elif eventList[i] == "thermostatMode.off":
799 event = open("eventSimulator/thermostatOffModeEvent.groovy", "r")
801 extractedEvents.write(line)
803 elif eventList[i] == "thermostatFanMode" or eventList[i] == "fanMode":
804 #Write five events subsequently
805 event = open("eventSimulator/thermostatAutoFanModeEvent.groovy", "r")
807 extractedEvents.write(line)
809 extractedEvents.write("\n\t\t\tbreak\n")
810 counter = counter + 1
811 extractedEvents.write("\t\tcase %d:\n" % counter)
812 event = open("eventSimulator/thermostatFanCirculateFanModeEvent.groovy", "r")
814 extractedEvents.write(line)
816 extractedEvents.write("\n\t\t\tbreak\n")
817 counter = counter + 1
818 extractedEvents.write("\t\tcase %d:\n" % counter)
819 event = open("eventSimulator/thermostatCirculateFanModeEvent.groovy", "r")
821 extractedEvents.write(line)
823 extractedEvents.write("\n\t\t\tbreak\n")
824 counter = counter + 1
825 extractedEvents.write("\t\tcase %d:\n" % counter)
826 event = open("eventSimulator/thermostatFanOnFanModeEvent.groovy", "r")
828 extractedEvents.write(line)
830 extractedEvents.write("\n\t\t\tbreak\n")
831 counter = counter + 1
832 extractedEvents.write("\t\tcase %d:\n" % counter)
833 event = open("eventSimulator/thermostatOnFanModeEvent.groovy", "r")
835 extractedEvents.write(line)
837 elif eventList[i] == "thermostatFanMode.auto" or eventList[i] == "fanMode.auto":
838 event = open("eventSimulator/thermostatAutoFanModeEvent.groovy", "r")
840 extractedEvents.write(line)
842 elif eventList[i] == "thermostatFanMode.fanCirculate" or eventList[i] == "fanMode.fanCirculate":
843 event = open("eventSimulator/thermostatFanCirculateFanModeEvent.groovy", "r")
845 extractedEvents.write(line)
847 elif eventList[i] == "thermostatFanMode.circulate" or eventList[i] == "fanMode.circulate":
848 event = open("eventSimulator/thermostatCirculateFanModeEvent.groovy", "r")
850 extractedEvents.write(line)
852 elif eventList[i] == "thermostatFanMode.fanOn" or eventList[i] == "fanMode.fanOn":
853 event = open("eventSimulator/thermostatFanOnFanModeEvent.groovy", "r")
855 extractedEvents.write(line)
857 elif eventList[i] == "thermostatFanMode.on" or eventList[i] == "fanMode.on":
858 event = open("eventSimulator/thermostatOnFanModeEvent.groovy", "r")
860 extractedEvents.write(line)
862 elif eventList[i] == "thermostatOperatingState":
863 #Write five events subsequently
864 event = open("eventSimulator/thermostatOperatingStateAutoEvent.groovy", "r")
866 extractedEvents.write(line)
868 extractedEvents.write("\n\t\t\tbreak\n")
869 counter = counter + 1
870 extractedEvents.write("\t\tcase %d:\n" % counter)
871 event = open("eventSimulator/thermostatOperatingStateCoolEvent.groovy", "r")
873 extractedEvents.write(line)
875 extractedEvents.write("\n\t\t\tbreak\n")
876 counter = counter + 1
877 extractedEvents.write("\t\tcase %d:\n" % counter)
878 event = open("eventSimulator/thermostatOperatingStateOffEvent.groovy", "r")
880 extractedEvents.write(line)
882 extractedEvents.write("\n\t\t\tbreak\n")
883 counter = counter + 1
884 extractedEvents.write("\t\tcase %d:\n" % counter)
885 event = open("eventSimulator/thermostatOperatingStateEmergencyHeatEvent.groovy", "r")
887 extractedEvents.write(line)
889 extractedEvents.write("\n\t\t\tbreak\n")
890 counter = counter + 1
891 extractedEvents.write("\t\tcase %d:\n" % counter)
892 event = open("eventSimulator/thermostatOperatingStateHeatEvent.groovy", "r")
894 extractedEvents.write(line)
896 elif eventList[i] == "switch":
897 #Check which capability
898 variable = eventVarMap[eventList[i]]
899 if eventList[i] not in eventVarCounterMap.keys():
900 eventVarCounterMap[eventList[i]] = 1
903 eventVarCount = eventVarCounterMap[eventList[i]]
904 eventVarCounterMap[eventList[i]] = eventVarCount + 1
905 capability = capabilityMap[variable[eventVarCount]]
906 #Write two events subsequently
907 if capability == "capability.switch":
908 event = open("eventSimulator/switchOnEvent.groovy", "r")
909 elif capability == "capability.switchLevel":
910 event = open("eventSimulator/switchLevelOnEvent.groovy", "r")
911 elif capability == "capability.relaySwitch":
912 event = open("eventSimulator/relaySwitchOnEvent.groovy", "r")
913 elif capability == "capability.colorControl":
914 event = open("eventSimulator/colorControlSwitchOnEvent.groovy", "r")
915 elif capability == "capability.colorTemperature":
916 event = open("eventSimulator/colorTemperatureSwitchOnEvent.groovy", "r")
918 extractedEvents.write(line)
920 extractedEvents.write("\n\t\t\tbreak\n")
921 counter = counter + 1
922 extractedEvents.write("\t\tcase %d:\n" % counter)
923 if capability == "capability.switch":
924 event = open("eventSimulator/switchOffEvent.groovy", "r")
925 elif capability == "capability.switchLevel":
926 event = open("eventSimulator/switchLevelOffEvent.groovy", "r")
927 elif capability == "capability.relaySwitch":
928 event = open("eventSimulator/relaySwitchOffEvent.groovy", "r")
929 elif capability == "capability.colorControl":
930 event = open("eventSimulator/colorControlSwitchOffEvent.groovy", "r")
931 elif capability == "capability.colorTemperature":
932 event = open("eventSimulator/colorTemperatureSwitchOffEvent.groovy", "r")
934 extractedEvents.write(line)
936 elif eventList[i] == "switch.on":
937 #Check which capability
938 variable = eventVarMap[eventList[i]]
939 if eventList[i] not in eventVarCounterMap.keys():
940 eventVarCounterMap[eventList[i]] = 1
943 eventVarCount = eventVarCounterMap[eventList[i]]
944 eventVarCounterMap[eventList[i]] = eventVarCount + 1
945 capability = capabilityMap[variable[eventVarCount]]
946 if capability == "capability.switch":
947 event = open("eventSimulator/switchOnEvent.groovy", "r")
948 elif capability == "capability.switchLevel":
949 event = open("eventSimulator/switchLevelOnEvent.groovy", "r")
950 elif capability == "capability.relaySwitch":
951 event = open("eventSimulator/relaySwitchOnEvent.groovy", "r")
952 elif capability == "capability.colorControl":
953 event = open("eventSimulator/colorControlSwitchOnEvent.groovy", "r")
954 elif capability == "capability.colorTemperature":
955 event = open("eventSimulator/colorTemperatureSwitchOnEvent.groovy", "r")
957 extractedEvents.write(line)
959 elif eventList[i] == "switch.off":
960 #Check which capability
961 variable = eventVarMap[eventList[i]]
962 if eventList[i] not in eventVarCounterMap.keys():
963 eventVarCounterMap[eventList[i]] = 1
966 eventVarCount = eventVarCounterMap[eventList[i]]
967 eventVarCounterMap[eventList[i]] = eventVarCount + 1
968 capability = capabilityMap[variable[eventVarCount]]
969 if capability == "capability.switch":
970 event = open("eventSimulator/switchOffEvent.groovy", "r")
971 elif capability == "capability.switchLevel":
972 event = open("eventSimulator/switchLevelOffEvent.groovy", "r")
973 elif capability == "capability.relaySwitch":
974 event = open("eventSimulator/relaySwitchOffEvent.groovy", "r")
975 elif capability == "capability.colorControl":
976 event = open("eventSimulator/colorControlSwitchOffEvent.groovy", "r")
977 elif capability == "capability.colorTemperature":
978 event = open("eventSimulator/colorTemperatureSwitchOffEvent.groovy", "r")
980 extractedEvents.write(line)
982 elif eventList[i] == "location" or eventList[i] == "position" or eventList[i] == "mode": #Case for Location event
983 #Write three events subsequently
984 event = open("eventSimulator/locationHomeEvent.groovy", "r")
986 extractedEvents.write(line)
988 extractedEvents.write("\n\t\t\tbreak\n")
989 counter = counter + 1
990 extractedEvents.write("\t\tcase %d:\n" % counter)
991 event = open("eventSimulator/locationAwayEvent.groovy", "r")
993 extractedEvents.write(line)
995 extractedEvents.write("\n\t\t\tbreak\n")
996 counter = counter + 1
997 extractedEvents.write("\t\tcase %d:\n" % counter)
998 event = open("eventSimulator/locationNightEvent.groovy", "r")
1000 extractedEvents.write(line)
1002 elif eventList[i] == "mode.home":
1003 event = open("eventSimulator/locationHomeEvent.groovy", "r")
1005 extractedEvents.write(line)
1007 elif eventList[i] == "mode.away":
1008 event = open("eventSimulator/locationAwayEvent.groovy", "r")
1010 extractedEvents.write(line)
1012 elif eventList[i] == "mode.night":
1013 event = open("eventSimulator/locationNightEvent.groovy", "r")
1015 extractedEvents.write(line)
1017 elif eventList[i] == "sunrise":
1018 event = open("eventSimulator/locationSunriseEvent.groovy", "r")
1020 extractedEvents.write(line)
1022 elif eventList[i] == "sunset":
1023 event = open("eventSimulator/locationSunsetEvent.groovy", "r")
1025 extractedEvents.write(line)
1027 elif eventList[i] == "sunsetTime":
1028 event = open("eventSimulator/locationSunsetTimeEvent.groovy", "r")
1030 extractedEvents.write(line)
1032 elif eventList[i] == "sunriseTime":
1033 event = open("eventSimulator/locationSunriseTimeEvent.groovy", "r")
1035 extractedEvents.write(line)
1037 elif eventList[i] == "acceleration":
1038 #Write two events subsequently
1039 event = open("eventSimulator/accelerationActiveEvent.groovy", "r")
1041 extractedEvents.write(line)
1043 extractedEvents.write("\n\t\t\tbreak\n")
1044 counter = counter + 1
1045 extractedEvents.write("\t\tcase %d:\n" % counter)
1046 event = open("eventSimulator/accelerationInactiveEvent.groovy", "r")
1048 extractedEvents.write(line)
1050 elif eventList[i] == "acceleration.active":
1051 event = open("eventSimulator/accelerationActiveEvent.groovy", "r")
1053 extractedEvents.write(line)
1055 elif eventList[i] == "acceleration.inactive":
1056 event = open("eventSimulator/accelerationInactiveEvent.groovy", "r")
1058 extractedEvents.write(line)
1060 elif eventList[i] == "sleeping":
1061 #Write two events subsequently
1062 event = open("eventSimulator/sleepSleepingEvent.groovy", "r")
1064 extractedEvents.write(line)
1066 extractedEvents.write("\n\t\t\tbreak\n")
1067 counter = counter + 1
1068 extractedEvents.write("\t\tcase %d:\n" % counter)
1069 event = open("eventSimulator/sleepNotSleepingEvent.groovy", "r")
1071 extractedEvents.write(line)
1073 elif eventList[i] == "sleeping.sleeping":
1074 event = open("eventSimulator/sleepSleepingEvent.groovy", "r")
1076 extractedEvents.write(line)
1078 elif eventList[i] == "sleeping.not sleeping":
1079 event = open("eventSimulator/sleepNotSleepingEvent.groovy", "r")
1081 extractedEvents.write(line)
1083 elif eventList[i] == "goal":
1084 #Write two events subsequently
1085 event = open("eventSimulator/stepGoalHighEvent.groovy", "r")
1087 extractedEvents.write(line)
1089 extractedEvents.write("\n\t\t\tbreak\n")
1090 counter = counter + 1
1091 extractedEvents.write("\t\tcase %d:\n" % counter)
1092 event = open("eventSimulator/stepGoalLowEvent.groovy", "r")
1094 extractedEvents.write(line)
1096 elif eventList[i] == "steps":
1097 #Write two events subsequently
1098 event = open("eventSimulator/stepStepsHighEvent.groovy", "r")
1100 extractedEvents.write(line)
1102 extractedEvents.write("\n\t\t\tbreak\n")
1103 counter = counter + 1
1104 extractedEvents.write("\t\tcase %d:\n" % counter)
1105 event = open("eventSimulator/stepStepsLowEvent.groovy", "r")
1107 extractedEvents.write(line)
1109 elif eventList[i] == "color":
1110 event = open("eventSimulator/colorChangeEvent.groovy", "r")
1112 extractedEvents.write(line)
1114 elif eventList[i] == "colorTemperature":
1115 event = open("eventSimulator/colorTemperatureEvent.groovy", "r")
1117 extractedEvents.write(line)
1119 elif eventList[i] == "hue":
1120 event = open("eventSimulator/hueChangeEvent.groovy", "r")
1122 extractedEvents.write(line)
1124 elif eventList[i] == "saturation":
1125 event = open("eventSimulator/saturationChangeEvent.groovy", "r")
1127 extractedEvents.write(line)
1129 elif eventList[i] == "energy":
1130 event = open("eventSimulator/energyMeterEvent.groovy", "r")
1132 extractedEvents.write(line)
1134 elif eventList[i] == "power":
1135 #Write two events subsequently
1136 event = open("eventSimulator/powerMeterHighPowerEvent.groovy", "r")
1138 extractedEvents.write(line)
1140 extractedEvents.write("\n\t\t\tbreak\n")
1141 counter = counter + 1
1142 extractedEvents.write("\t\tcase %d:\n" % counter)
1143 event = open("eventSimulator/powerMeterLowPowerEvent.groovy", "r")
1145 extractedEvents.write(line)
1147 elif eventList[i] == "illuminance":
1148 event = open("eventSimulator/illuminanceMeasurementLowEvent.groovy", "r")
1150 extractedEvents.write(line)
1152 extractedEvents.write("\n\t\t\tbreak\n")
1153 counter = counter + 1
1154 extractedEvents.write("\t\tcase %d:\n" % counter)
1155 event = open("eventSimulator/illuminanceMeasurementHighEvent.groovy", "r")
1157 extractedEvents.write(line)
1159 elif eventList[i] == "humidity":
1160 event = open("eventSimulator/humidityHighMeasurementEvent.groovy", "r")
1162 extractedEvents.write(line)
1164 extractedEvents.write("\n\t\t\tbreak\n")
1165 counter = counter + 1
1166 extractedEvents.write("\t\tcase %d:\n" % counter)
1167 event = open("eventSimulator/humidityLowMeasurementEvent.groovy", "r")
1169 extractedEvents.write(line)
1171 elif eventList[i] == "alarm":
1172 #Write four events subsequently
1173 event = open("eventSimulator/alarmBothEvent.groovy", "r")
1175 extractedEvents.write(line)
1177 extractedEvents.write("\n\t\t\tbreak\n")
1178 counter = counter + 1
1179 extractedEvents.write("\t\tcase %d:\n" % counter)
1180 event = open("eventSimulator/alarmSirenEvent.groovy", "r")
1182 extractedEvents.write(line)
1184 extractedEvents.write("\n\t\t\tbreak\n")
1185 counter = counter + 1
1186 extractedEvents.write("\t\tcase %d:\n" % counter)
1187 event = open("eventSimulator/alarmStrobeEvent.groovy", "r")
1189 extractedEvents.write(line)
1191 extractedEvents.write("\n\t\t\tbreak\n")
1192 counter = counter + 1
1193 extractedEvents.write("\t\tcase %d:\n" % counter)
1194 event = open("eventSimulator/alarmOffEvent.groovy", "r")
1196 extractedEvents.write(line)
1198 elif eventList[i] == "alarm.both":
1199 event = open("eventSimulator/alarmBothEvent.groovy", "r")
1201 extractedEvents.write(line)
1203 elif eventList[i] == "alarm.siren":
1204 event = open("eventSimulator/alarmSirenEvent.groovy", "r")
1206 extractedEvents.write(line)
1208 elif eventList[i] == "alarm.strobe":
1209 event = open("eventSimulator/alarmStrobeEvent.groovy", "r")
1211 extractedEvents.write(line)
1213 elif eventList[i] == "alarm.off":
1214 event = open("eventSimulator/alarmOffEvent.groovy", "r")
1216 extractedEvents.write(line)
1218 elif eventList[i] == "contact" or eventList[i] == "tamper.tampered":
1219 #Check which capability
1220 variable = eventVarMap[eventList[i]]
1221 if eventList[i] not in eventVarCounterMap.keys():
1222 eventVarCounterMap[eventList[i]] = 1
1225 eventVarCount = eventVarCounterMap[eventList[i]]
1226 eventVarCounterMap[eventList[i]] = eventVarCount + 1
1227 capability = capabilityMap[variable[eventVarCount]]
1228 #Write two events subsequently
1229 if capability == "capability.contactSensor":
1230 event = open("eventSimulator/contactDefaultClosedEvent.groovy", "r")
1231 elif capability == "capability.valve":
1232 event = open("eventSimulator/valveClosedEvent.groovy", "r")
1234 extractedEvents.write(line)
1236 extractedEvents.write("\n\t\t\tbreak\n")
1237 counter = counter + 1
1238 extractedEvents.write("\t\tcase %d:\n" % counter)
1239 if capability == "capability.contactSensor":
1240 event = open("eventSimulator/contactDefaultOpenEvent.groovy", "r")
1241 elif capability == "capability.valve":
1242 event = open("eventSimulator/valveOpenEvent.groovy", "r")
1244 extractedEvents.write(line)
1246 elif eventList[i] == "contact.closed":
1247 #Check which capability
1248 variable = eventVarMap[eventList[i]]
1249 if eventList[i] not in eventVarCounterMap.keys():
1250 eventVarCounterMap[eventList[i]] = 1
1253 eventVarCount = eventVarCounterMap[eventList[i]]
1254 eventVarCounterMap[eventList[i]] = eventVarCount + 1
1255 capability = capabilityMap[variable[eventVarCount]]
1256 if capability == "capability.contactSensor":
1257 event = open("eventSimulator/contactDefaultClosedEvent.groovy", "r")
1258 elif capability == "capability.valve":
1259 event = open("eventSimulator/valveClosedEvent.groovy", "r")
1261 extractedEvents.write(line)
1263 elif eventList[i] == "contact.open":
1264 variable = eventVarMap[eventList[i]]
1265 if eventList[i] not in eventVarCounterMap.keys():
1266 eventVarCounterMap[eventList[i]] = 1
1269 eventVarCount = eventVarCounterMap[eventList[i]]
1270 eventVarCounterMap[eventList[i]] = eventVarCount + 1
1271 capability = capabilityMap[variable[eventVarCount]]
1272 if capability == "capability.contactSensor":
1273 event = open("eventSimulator/contactDefaultOpenEvent.groovy", "r")
1274 elif capability == "capability.valve":
1275 event = open("eventSimulator/valveOpenEvent.groovy", "r")
1277 extractedEvents.write(line)
1279 elif eventList[i] == "status":
1280 #Write three events subsequently
1281 event = open("eventSimulator/musicPlayerPlayingEvent.groovy", "r")
1283 extractedEvents.write(line)
1285 extractedEvents.write("\n\t\t\tbreak\n")
1286 counter = counter + 1
1287 extractedEvents.write("\t\tcase %d:\n" % counter)
1288 event = open("eventSimulator/musicPlayerStoppedEvent.groovy", "r")
1290 extractedEvents.write(line)
1292 extractedEvents.write("\n\t\t\tbreak\n")
1293 counter = counter + 1
1294 extractedEvents.write("\t\tcase %d:\n" % counter)
1295 event = open("eventSimulator/musicPlayerPausedEvent.groovy", "r")
1297 extractedEvents.write(line)
1299 elif eventList[i] == "status.playing":
1300 event = open("eventSimulator/musicPlayerPlayingEvent.groovy", "r")
1302 extractedEvents.write(line)
1304 elif eventList[i] == "status.stopped":
1305 event = open("eventSimulator/musicPlayerStoppedEvent.groovy", "r")
1307 extractedEvents.write(line)
1309 elif eventList[i] == "status.paused":
1310 event = open("eventSimulator/musicPlayerPausedEvent.groovy", "r")
1312 extractedEvents.write(line)
1314 elif eventList[i] == "level":
1315 #Check which capability
1316 variable = eventVarMap[eventList[i]]
1317 if eventList[i] not in eventVarCounterMap.keys():
1318 eventVarCounterMap[eventList[i]] = 1
1321 eventVarCount = eventVarCounterMap[eventList[i]]
1322 eventVarCounterMap[eventList[i]] = eventVarCount + 1
1323 capability = capabilityMap[variable[eventVarCount]]
1324 if capability == "capability.musicPlayer":
1325 event = open("eventSimulator/musicPlayerLevelEvent.groovy", "r")
1326 elif capability == "capability.switchLevel":
1327 event = open("eventSimulator/switchLevelEvent.groovy", "r")
1328 elif capability == "capability.colorControl":
1329 event = open("eventSimulator/colorLevelChangeEvent.groovy", "r")
1330 elif capability == "capability.switch":
1331 event = open("eventSimulator/switchLevelChangeEvent.groovy", "r")
1333 extractedEvents.write(line)
1335 elif eventList[i] == "trackDescription":
1336 event = open("eventSimulator/musicPlayerTrackDescriptionEvent.groovy", "r")
1338 extractedEvents.write(line)
1340 elif eventList[i] == "trackData":
1341 event = open("eventSimulator/musicPlayerTrackDataEvent.groovy", "r")
1343 extractedEvents.write(line)
1345 elif eventList[i] == "mute":
1346 #Write two events subsequently
1347 event = open("eventSimulator/musicPlayerUnmutedEvent.groovy", "r")
1349 extractedEvents.write(line)
1351 extractedEvents.write("\n\t\t\tbreak\n")
1352 counter = counter + 1
1353 extractedEvents.write("\t\tcase %d:\n" % counter)
1354 event = open("eventSimulator/musicPlayerMutedEvent.groovy", "r")
1356 extractedEvents.write(line)
1358 elif eventList[i] == "mute.muted":
1359 event = open("eventSimulator/musicPlayerUnmutedEvent.groovy", "r")
1361 extractedEvents.write(line)
1363 elif eventList[i] == "mute.unmuted":
1364 event = open("eventSimulator/musicPlayerMutedEvent.groovy", "r")
1366 extractedEvents.write(line)
1368 elif eventList[i] == "temperature":
1369 #Check which capability
1370 variable = eventVarMap[eventList[i]]
1371 if eventList[i] not in eventVarCounterMap.keys():
1372 eventVarCounterMap[eventList[i]] = 1
1375 eventVarCount = eventVarCounterMap[eventList[i]]
1376 eventVarCounterMap[eventList[i]] = eventVarCount + 1
1377 capability = capabilityMap[variable[eventVarCount]]
1378 #Write two events subsequently
1379 if capability == "capability.thermostat":
1380 event = open("eventSimulator/temperatureHighEvent.groovy", "r")
1381 elif capability == "capability.temperatureMeasurement":
1382 event = open("eventSimulator/temperatureHighMeasurementEvent.groovy", "r")
1384 extractedEvents.write(line)
1386 extractedEvents.write("\n\t\t\tbreak\n")
1387 counter = counter + 1
1388 extractedEvents.write("\t\tcase %d:\n" % counter)
1389 if capability == "capability.thermostat":
1390 event = open("eventSimulator/temperatureLowEvent.groovy", "r")
1391 elif capability == "capability.temperatureMeasurement":
1392 event = open("eventSimulator/temperatureLowMeasurementEvent.groovy", "r")
1394 extractedEvents.write(line)
1396 elif eventList[i] == "heatingSetpoint":
1397 event = open("eventSimulator/heatingSetpointEvent.groovy", "r")
1399 extractedEvents.write(line)
1401 elif eventList[i] == "coolingSetpoint":
1402 event = open("eventSimulator/coolingSetpointEvent.groovy", "r")
1404 extractedEvents.write(line)
1406 elif eventList[i] == "thermostatSetpoint":
1407 event = open("eventSimulator/thermostatSetpointEvent.groovy", "r")
1409 extractedEvents.write(line)
1411 elif eventList[i] == "threeAxis":
1412 event = open("eventSimulator/threeAxisChangeEvent.groovy", "r")
1414 extractedEvents.write(line)
1416 elif eventList[i] == "carbonDioxide":
1417 event = open("eventSimulator/carbonDioxideEvent.groovy", "r")
1419 extractedEvents.write(line)
1421 elif eventList[i] == "consumableStatus":
1422 event = open("eventSimulator/consumableStatusEvent.groovy", "r")
1424 extractedEvents.write(line)
1426 elif eventList[i] == "pH":
1427 event = open("eventSimulator/pHEvent.groovy", "r")
1429 extractedEvents.write(line)
1431 elif eventList[i] == "pressure":
1432 event = open("eventSimulator/pressureEvent.groovy", "r")
1434 extractedEvents.write(line)
1436 elif eventList[i] == "shock":
1437 event = open("eventSimulator/shockEvent.groovy", "r")
1439 extractedEvents.write(line)
1441 elif eventList[i] == "lqi":
1442 event = open("eventSimulator/lqiEvent.groovy", "r")
1444 extractedEvents.write(line)
1446 elif eventList[i] == "rssi":
1447 event = open("eventSimulator/rssiEvent.groovy", "r")
1449 extractedEvents.write(line)
1451 elif eventList[i] == "sound":
1452 event = open("eventSimulator/soundEvent.groovy", "r")
1454 extractedEvents.write(line)
1456 elif eventList[i] == "soundPressureLevel":
1457 event = open("eventSimulator/soundPressureLevelEvent.groovy", "r")
1459 extractedEvents.write(line)
1461 elif eventList[i] == "tamper":
1462 event = open("eventSimulator/tamperEvent.groovy", "r")
1464 extractedEvents.write(line)
1466 elif eventList[i] == "voltage":
1467 event = open("eventSimulator/voltageEvent.groovy", "r")
1469 extractedEvents.write(line)
1471 elif eventList[i] == "ultravioletIndex":
1472 event = open("eventSimulator/ultravioletIndexEvent.groovy", "r")
1474 extractedEvents.write(line)
1476 elif eventList[i] == "windowShade":
1477 event = open("eventSimulator/windowShadeEvent.groovy", "r")
1479 extractedEvents.write(line)
1482 ###TODO: Add more events later
1483 extractedEvents.write("\n\t\t\tbreak\n")
1484 counter = counter + 1
1485 extractedEvents.write("\t}\n")
1486 extractedEvents.write("\tprintln(\"\\nEVENT NUMBER: \" + eventNumber)\n");
1487 extractedEvents.write("}\n")
1489 def CheckIfOnlyTouchEvents():
1490 #Check and throw an error if it is all touch events
1491 #This is called Direct-Direct interaction and we do not model-check for this case
1492 # TODO: Commenting out this code since we do this in the analysis itself
1494 onlyTouchEvents = True
1495 for item in eventList:
1496 if item != "nfcTouch" and item != "app" and item != "button":
1497 onlyTouchEvents = False
1498 if onlyTouchEvents is True and app1Subscribe is True and app2Subscribe is True:
1499 # Write error log file
1500 extractError = open("appCreationError.log", "w+")
1501 extractError.write("Direct-Direct Interaction detected: we are skipping this pair...\n")
1502 extractError.close()
1503 raise Exception("\n\nDirect-Direct Interaction detected: we are skipping this pair...\n\n")
1506 #Extract objects to call functions from App1
1507 F1 = open("Extractor/App1/App1.groovy", "r")
1508 extractedFunctionsApp1 = open("Extractor/App1/extractedFunctionsApp1.groovy", "w+")
1509 ExtractFunctions(F1, "App1")
1512 #Extract objects to call functions from App2
1513 F2 = open("Extractor/App2/App2.groovy", "r")
1514 extractedFunctionsApp2 = open("Extractor/App2/extractedFunctionsApp2.groovy", "w+")
1515 ExtractFunctions(F2, "App2")
1518 #Prepare eventSimulator file while parsing the App1 and App2 files
1519 extractedEvents = open("eventSimulator/eventSimulator.groovy", "w+")
1520 CheckIfOnlyTouchEvents()
1521 ExtractEvents(extractedEvents)
1522 extractedEvents.close()
1524 #Save the extracted methods and app1 in a same file to extract information
1525 extractorFile = open("Extractor/extractorFile.groovy", "w+")
1526 Extractor = open("Extractor/Extractor.groovy", "r")
1527 F1 = open("Extractor/App1/App1.groovy", "r")
1529 extractorFile.write("////////////////////\n")
1530 extractorFile.write("@Field App\n")
1531 extractorFile.write("App = \"App1\"")
1532 extractorFile.write("\n")
1533 for line in Extractor:
1534 extractorFile.write(line)
1535 extractorFile.write("\n\n")
1537 extractorFile.write(line)
1538 extractorFile.close()
1541 #Run the file to extract the objects
1542 os.system("groovy -classpath lib/jpf.jar Extractor/extractorFile.groovy")
1545 #Save the extracted methods and app2 in a same file to extract information
1546 extractorFile = open("Extractor/extractorFile.groovy", "w+")
1547 Extractor = open("Extractor/Extractor.groovy", "r")
1548 F2 = open("Extractor/App2/App2.groovy", "r")
1550 extractorFile.write("////////////////////\n")
1551 extractorFile.write("@Field App\n")
1552 extractorFile.write("App = \"App2\"")
1553 extractorFile.write("\n")
1554 for line in Extractor:
1555 extractorFile.write(line)
1556 extractorFile.write("\n\n")
1558 extractorFile.write(line)
1559 #Run the file to extract the objects
1560 extractorFile.close()
1563 os.system("groovy -classpath lib/jpf.jar Extractor/extractorFile.groovy")