readyToReturn = 0
ToReturn = ""
eventList = []
+eventAppList = [] # This list maps App1 or App2 to a specific event
eventVarMap = {}
eventVarCounterMap = {}
capabilityMap = {}
'thermostatFanMode' : 5,
'thermostatOperatingState' : 5,
'switch' : 2,
+ 'switch.on' : 1,
+ 'switch.off' : 1,
'location' : 3,
'mode' : 3,
+ 'sunset' : 1,
+ 'sunsetTime' : 1,
+ 'sunrise' : 1,
+ 'sunriseTime' : 1,
'acceleration' : 2,
'acceleration.active' : 1,
'acceleration.inactive' : 1,
def ExtractFunctions(F, appName):
global eventList
+ global eventAppList
global app1Subscribe
global app2Subscribe
Temp = GetToken(F)
variable = Temp
while (Temp != "\"" and Temp != "app" and Temp != "location"):
Temp = GetToken(F)
+ if Temp == "location":
+ # See if we have another case for location
+ Temp = GetToken(F) # Get ','
+ Temp = GetToken(F) # Get '"'
+ if Temp == "\"":
+ Temp = GetToken(F)
+ else:
+ # This is the special case where we will see, e.g., sunset, sunrise, etc.
+ Temp = "location"
if Temp == "\"":
- Temp = GetToken(F)
+ Temp = GetToken(F)
#print "DEBUG: %s - %s" % (variable, Temp)
#print capabilityMap
- if Temp == "app" or Temp == "location":
+ #print "DEBUG: location variable: %s" % Temp
+ if Temp == "app" or Temp == "location" or Temp == "mode" or Temp == "sunset" or Temp == "sunrise" or Temp == "sunsetTime" or Temp == "sunriseTime":
if Temp not in eventList:
eventList.append(Temp)
+ if (appName == "App1"):
+ eventAppList.append("App1")
+ else:
+ eventAppList.append("App2")
elif Temp not in eventList or (variable in capabilityMap.keys() and capabilityMap[variable] not in capabilityList):
# We do not repeat the same capability twice
capability = capabilityMap[variable]
capabilityList.append(capability)
eventList.append(Temp)
+ if (appName == "App1"):
+ eventAppList.append("App1")
+ else:
+ eventAppList.append("App2")
if Temp in eventVarMap.keys():
listOfEvents = eventVarMap[Temp]
listOfEvents.append(variable)
def CountEvents():
global eventList
numOfActualEvents = 0
+ #print "DEBUG: eventlist: %d" % len(eventList)
for event in eventList:
+ #print "DEBUG: Event: %s %d" % (event, eventTypeCounterMap[event])
numOfActualEvents = numOfActualEvents + eventTypeCounterMap[event]
return numOfActualEvents
def ExtractEvents(extractedEvents):
global eventList
+ global eventAppList
global eventVarMap
global capabilityMap
global eventVarCounterMap
extractedEvents.write("\tdef eventNumber = Verify.getInt(0,%d)\n" % (numOfActualEvents - 1))
extractedEvents.write("\tswitch(eventNumber) {\n")
counter = 0
- for i in range(len(eventList)):
+ indexApp1 = 0
+ indexApp2 = eventAppList.index("App2")
+ indexApp2Start = indexApp2
+ #print "DEBUG: App1: %d" % indexApp1
+ #print "DEBUG: App2: %d" % indexApp2
+ #print "DEBUG: eventList: %d" % len(eventList)
+ isApp1 = True
+ while counter < numOfActualEvents:
+ # Interleave events from App1 and App2
+ if isApp1 is True:
+ i = indexApp1
+ indexApp1 = indexApp1 + 1
+ if indexApp2 < len(eventList):
+ isApp1 = False
+ else:
+ i = indexApp2
+ indexApp2 = indexApp2 + 1
+ if indexApp1 < indexApp2Start:
+ isApp1 = True
+ #print "DEBUG: i: %d" % i
extractedEvents.write("\t\tcase %d:\n" % counter)
if eventList[i] == "lock":
#Write two events subsequently
extractedEvents.write(line)
event.close()
elif eventList[i] == "unlock":
- event = open("eventSimulator/unlockEvent.groovy", "r")
- for line in event:
- extractedEvents.write(line)
- event.close()
+ #Don't do anything for this case
+ counter = counter - 1
elif eventList[i] == "contact.open":
event = open("eventSimulator/contactOpenEvent.groovy", "r")
for line in event:
extractedEvents.write(line)
event.close()
elif eventList[i] == "button":
+ #Check which capability
+ variable = eventVarMap[eventList[i]]
+ if eventList[i] not in eventVarCounterMap.keys():
+ eventVarCounterMap[eventList[i]] = 1
+ eventVarCount = 0
+ else:
+ eventVarCount = eventVarCounterMap[eventList[i]]
+ eventVarCounterMap[eventList[i]] = eventVarCount + 1
+ capability = capabilityMap[variable[eventVarCount]]
#Write two events subsequently
- event = open("eventSimulator/buttonPushedEvent.groovy", "r")
+ if capability == "capability.button":
+ event = open("eventSimulator/buttonHeldEvent.groovy", "r")
+ elif capability == "device.aeonKeyFob":
+ event = open("eventSimulator/aeonKeyFobHeldEvent.groovy", "r")
for line in event:
extractedEvents.write(line)
event.close()
extractedEvents.write("\n\t\t\tbreak\n")
counter = counter + 1
extractedEvents.write("\t\tcase %d:\n" % counter)
- event = open("eventSimulator/buttonHeldEvent.groovy", "r")
+ if capability == "capability.button":
+ event = open("eventSimulator/buttonPushedEvent.groovy", "r")
+ elif capability == "device.aeonKeyFob":
+ event = open("eventSimulator/aeonKeyFobPushedEvent.groovy", "r")
for line in event:
extractedEvents.write(line)
event.close()
event.close()
elif eventList[i] == "doorState":
#Write two events subsequently
- extractedEvents.write("\t\t\tdef event = Verify.getInt(0,1)\n")
- extractedEvents.write("\t\t\tif (event == 0) {\n")
event = open("eventSimulator/doorOpenEvent.groovy", "r")
for line in event:
extractedEvents.write(line)
event = open("eventSimulator/relaySwitchOnEvent.groovy", "r")
elif capability == "capability.colorControl":
event = open("eventSimulator/colorControlSwitchOnEvent.groovy", "r")
+ elif capability == "capability.colorTemperature":
+ event = open("eventSimulator/colorTemperatureSwitchOnEvent.groovy", "r")
for line in event:
extractedEvents.write(line)
event.close()
event = open("eventSimulator/relaySwitchOffEvent.groovy", "r")
elif capability == "capability.colorControl":
event = open("eventSimulator/colorControlSwitchOffEvent.groovy", "r")
+ elif capability == "capability.colorTemperature":
+ event = open("eventSimulator/colorTemperatureSwitchOffEvent.groovy", "r")
+ for line in event:
+ extractedEvents.write(line)
+ event.close()
+ elif eventList[i] == "switch.on":
+ #Check which capability
+ variable = eventVarMap[eventList[i]]
+ if eventList[i] not in eventVarCounterMap.keys():
+ eventVarCounterMap[eventList[i]] = 1
+ eventVarCount = 0
+ else:
+ eventVarCount = eventVarCounterMap[eventList[i]]
+ eventVarCounterMap[eventList[i]] = eventVarCount + 1
+ capability = capabilityMap[variable[eventVarCount]]
+ #Write two events subsequently
+ if capability == "capability.switch":
+ event = open("eventSimulator/switchOnDefaultEvent.groovy", "r")
+ elif capability == "capability.switchLevel":
+ event = open("eventSimulator/switchLevelOnDefaultEvent.groovy", "r")
+ elif capability == "capability.relaySwitch":
+ event = open("eventSimulator/relaySwitchOnDefaultEvent.groovy", "r")
+ elif capability == "capability.colorControl":
+ event = open("eventSimulator/colorControlSwitchOnDefaultEvent.groovy", "r")
+ elif capability == "capability.colorTemperature":
+ event = open("eventSimulator/colorTemperatureSwitchOnDefaultEvent.groovy", "r")
+ for line in event:
+ extractedEvents.write(line)
+ event.close()
+ elif eventList[i] == "switch.off":
+ #Check which capability
+ variable = eventVarMap[eventList[i]]
+ if eventList[i] not in eventVarCounterMap.keys():
+ eventVarCounterMap[eventList[i]] = 1
+ eventVarCount = 0
+ else:
+ eventVarCount = eventVarCounterMap[eventList[i]]
+ eventVarCounterMap[eventList[i]] = eventVarCount + 1
+ capability = capabilityMap[variable[eventVarCount]]
+ #Write two events subsequently
+ if capability == "capability.switch":
+ event = open("eventSimulator/switchOffDefaultEvent.groovy", "r")
+ elif capability == "capability.switchLevel":
+ event = open("eventSimulator/switchLevelOffDefaultEvent.groovy", "r")
+ elif capability == "capability.relaySwitch":
+ event = open("eventSimulator/relaySwitchOffDefaultEvent.groovy", "r")
+ elif capability == "capability.colorControl":
+ event = open("eventSimulator/colorControlSwitchOffDefaultEvent.groovy", "r")
+ elif capability == "capability.colorTemperature":
+ event = open("eventSimulator/colorTemperatureSwitchOffDefaultEvent.groovy", "r")
for line in event:
extractedEvents.write(line)
event.close()
for line in event:
extractedEvents.write(line)
event.close()
+ elif eventList[i] == "sunrise":
+ event = open("eventSimulator/locationSunriseEvent.groovy", "r")
+ for line in event:
+ extractedEvents.write(line)
+ event.close()
+ elif eventList[i] == "sunset":
+ event = open("eventSimulator/locationSunsetEvent.groovy", "r")
+ for line in event:
+ extractedEvents.write(line)
+ event.close()
+ elif eventList[i] == "sunsetTime":
+ event = open("eventSimulator/locationSunsetTimeEvent.groovy", "r")
+ for line in event:
+ extractedEvents.write(line)
+ event.close()
+ elif eventList[i] == "sunriseTime":
+ event = open("eventSimulator/locationSunriseTimeEvent.groovy", "r")
+ for line in event:
+ extractedEvents.write(line)
+ event.close()
elif eventList[i] == "acceleration":
#Write two events subsequently
event = open("eventSimulator/accelerationActiveEvent.groovy", "r")
event = open("eventSimulator/musicPlayerLevelEvent.groovy", "r")
elif capability == "capability.switchLevel":
event = open("eventSimulator/switchLevelEvent.groovy", "r")
+ elif capability == "capability.colorControl":
+ event = open("eventSimulator/colorLevelChangeEvent.groovy", "r")
for line in event:
extractedEvents.write(line)
event.close()