import Button.Buttons
import ThreeAxis.ThreeAxis
import ThreeAxis.ThreeAxises
+import Momentary.Momentary
+import Momentary.Momentaries
import Timer.SimulatedTimer
//GlobalVariables
-@Field def location = new LocationVar()
+@Field def location = new LocationVar({}, true)
//Settings variable defined to settings on purpose
@Field def settings = [app: "app"]
//Global variable for state[mode]
@Field File extractedObjectsConstructorApp1 = new File("Extractor/App1/extractedObjectsConstructorApp1.groovy")
@Field File extractedObjectsConstructorApp2 = new File("Extractor/App2/extractedObjectsConstructorApp2.groovy")
-
+//Set this to true for global-state variable conflict
+@Field assignDifferentModes = true
+@Field chooseMode = 0
//Empty the files
if (App == "App1") {
globalObjects.write("")
extractedObjectsApp1.write("")
extractedObjectsConstructorApp1.write("")
+ if (assignDifferentModes)
+ chooseMode = 0
} else if (App == "App2") {
extractedObjectsApp2.write("")
extractedObjectsConstructorApp2.write("")
+ if (assignDifferentModes)
+ chooseMode = 2
}
@Field def threeAxisObject0
@Field def threeAxisObject1
@Field def threeAxisObject2
+//Global Object for class momentary switch device!
+@Field momentaryObjects = 0
+@Field def momentaryObject0
+@Field def momentaryObject1
+@Field def momentaryObject2
//Global variables
extractedObjectsConstructorApp2.append(metaData['name']+" = obj.accelerationSensorObject\n")
}
break
+ case "capability.momentary":
+ globalObjects.eachLine { line ->
+ if(line.contains("momentoryObject")){
+ contains = 1
+ }
+ }
+
+ if (contains == 0)
+ globalObjects.append("@Field def momentaryObject = new Momentaries(sendEvent, 1)\n")
+
+ if (momentaryObjects == 0) {
+ momentaryObject0 = metaData['name']
+ this[momentaryObject0] = new Momentaries({}, 1)
+ } else if (momentaryObjects == 1) {
+ momentaryObject1 = metaData['name']
+ this[momentaryObject1] = new Momentaries({}, 1)
+ } else if (momentaryObjects == 2) {
+ momentaryObject2 = metaData['name']
+ this[momentaryObject2] = new Momentaries({}, 1)
+ }
+
+ momentaryObjects=momentaryObjects+1
+
+ settings.put(metaData['name'], new Momentaries({}, 1))
+
+ if (App == "App1") {
+ extractedObjectsApp1.append("//Object for class momentory switch class!\n")
+ extractedObjectsApp1.append("def "+metaData['name']+"\n")
+ extractedObjectsConstructorApp1.append(metaData['name']+" = obj.momentaryObject\n")
+ } else {
+ extractedObjectsApp2.append("//Object for class momentory Sensor!\n")
+ extractedObjectsApp2.append("def "+metaData['name']+"\n")
+ extractedObjectsConstructorApp2.append(metaData['name']+" = obj.momentaryObject\n")
+ }
+ break
case "capability.motionSensor":
globalObjects.eachLine { line ->
if(line.contains("motionSensorObject")){
case "mode":
//def randomVariable = Math.abs(new Random().nextInt() % 3)
def modes = ["away", "home", "night"]
- def userInput = modes[1]
+ // Always assign a different mode to each app
+ def userInput
+ if (assignDifferentModes) {
+ userInput = modes[chooseMode]
+ if (chooseMode < 3)
+ chooseMode++;
+ else
+ chooseMode = chooseMode%3
+ } else {
+ userInput = modes[1]
+ }
if (modeVariables == 0) {
mode0 = metaData['name']
GlobalVariablesBothApps.write("")
GlobalVariablesBothApps.append("//Creating Global variables for both apps\n")
GlobalVariablesBothApps.append("@Field def sendEvent = {eventDataMap -> eventHandler(eventDataMap)}\n")
- GlobalVariablesBothApps.append("@Field def locationObject = new LocationVar(sendEvent)\n")
+ GlobalVariablesBothApps.append("@Field def locationObject = new LocationVar(sendEvent, init)\n")
GlobalVariablesBothApps.append("@Field def appObject = new Touched(sendEvent, 0)\n")
globalObjects.withReader { reader ->