# Switches
#variables=currentSwitch
# Lights
-#variables=currentColor,currentHue,currentSaturation,currentLevel,currentSwitch,colorTemperature
+variables=colorChanged,currentHue,currentSaturation,currentLevel,currentSwitch,colorTemperature
# Speeches
-variables=level,oneUser
+#variables=level,oneUser
# Music players
#variables=status,level,trackDescription,trackData,mute
# Relay switch
byte type = getType(ti, executedInsn);
String value = getValue(ti, executedInsn, type);
//System.out.println("\n\n" + ti.getStackTrace() + "\n\n");
- String writer = getWriter(ti.getStack());
+ String writer = getWriter(ti.getStack());
// Just return if the writer is not one of the listed apps in the .jpf file
if (writer == null)
return;
// Conflict is declared when:
// 1) Current writer != previous writer, e.g., App1 vs. App2
// 2) Current value != previous value, e.g., "locked" vs. "unlocked"
+ if (current.value == null) {
+
+ StringBuilder sb = new StringBuilder();
+ sb.append("Conflict between apps " + current.writer + " and " + writer + ": ");
+ sb.append("Current value cannot be read (null value)... Please double check with your app output!");
+ Instruction nextIns = ti.createAndThrowException("java.lang.RuntimeException", sb.toString());
+ ti.setNextPC(nextIns);
+ }
if (!current.value.equals(value)) {
StringBuilder sb = new StringBuilder();