Skip to content

Commit 8b713a6

Browse files
committed
*un*fix :-)
1 parent e9462ba commit 8b713a6

File tree

22 files changed

+570
-491
lines changed

22 files changed

+570
-491
lines changed

drivers/mock/org.kubi.driver.madmock/src/main/java/org/kubi/driver/mock/madmock/MadMockPlugin.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import org.kubi.Device;
66
import org.kubi.Ecosystem;
77
import org.kubi.KubiModel;
8-
import org.kubi.api.Plugin;
8+
import org.kubi.api.KubiPlugin;
99

1010
import java.util.Random;
1111
import java.util.concurrent.Executors;
@@ -15,7 +15,7 @@
1515
/**
1616
* Created by duke on 20/03/15.
1717
*/
18-
public class MadMockPlugin implements Plugin, Runnable {
18+
public class MadMockPlugin implements KubiPlugin, Runnable {
1919

2020
ScheduledExecutorService service = null;
2121

drivers/mock/org.kubi.driver.smartcampus/src/main/java/org/kubi/driver/mock/smartcampus/SmartCampusPlugin.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import org.kubi.KubiModel;
77
import org.kubi.KubiUniverse;
88
import org.kubi.KubiView;
9-
import org.kubi.api.Plugin;
9+
import org.kubi.api.KubiPlugin;
1010

1111
import java.util.concurrent.Executors;
1212
import java.util.concurrent.ScheduledExecutorService;
@@ -15,7 +15,7 @@
1515
/**
1616
* Created by duke on 20/03/15.
1717
*/
18-
public class SmartCampusPlugin implements Plugin, Runnable {
18+
public class SmartCampusPlugin implements KubiPlugin, Runnable {
1919

2020
ScheduledExecutorService service = null;
2121

drivers/zwave/org.kubi.driver.zwave.productstore/src/main/resources/org.kubi.driver.zwave.productstore-all.js

+40-14
Original file line numberDiff line numberDiff line change
@@ -2417,23 +2417,40 @@ var org;
24172417
};
24182418
KCacheLayer.prototype.insert = function (p_key, current, p_obj_insert) {
24192419
if (current == org.kevoree.modeling.api.KConfig.KEY_SIZE - 1) {
2420-
if (this._cachedObjects == null) {
2421-
this._cachedObjects = new org.kevoree.modeling.api.map.LongHashMap(org.kevoree.modeling.api.KConfig.CACHE_INIT_SIZE, org.kevoree.modeling.api.KConfig.CACHE_LOAD_FACTOR);
2422-
}
2423-
this._cachedObjects.put(p_key.part(current), p_obj_insert);
2420+
this.private_insert_object(p_key, current, p_obj_insert);
24242421
}
24252422
else {
24262423
if (this._nestedLayers == null) {
2427-
this._nestedLayers = new org.kevoree.modeling.api.map.LongHashMap(org.kevoree.modeling.api.KConfig.CACHE_INIT_SIZE, org.kevoree.modeling.api.KConfig.CACHE_LOAD_FACTOR);
2424+
this.private_nestedLayers_init();
24282425
}
24292426
var previousLayer = this._nestedLayers.get(p_key.part(current));
2430-
if (previousLayer == null) {
2431-
previousLayer = new org.kevoree.modeling.api.data.cache.KCacheLayer();
2432-
this._nestedLayers.put(p_key.part(current), previousLayer);
2427+
if (previousLayer != null) {
2428+
previousLayer.insert(p_key, current + 1, p_obj_insert);
2429+
}
2430+
else {
2431+
this.private_insert_nested(p_key, current, p_obj_insert);
24332432
}
2434-
previousLayer.insert(p_key, current + 1, p_obj_insert);
24352433
}
24362434
};
2435+
KCacheLayer.prototype.private_insert_object = function (p_key, current, p_obj_insert) {
2436+
if (this._cachedObjects == null) {
2437+
this._cachedObjects = new org.kevoree.modeling.api.map.LongHashMap(org.kevoree.modeling.api.KConfig.CACHE_INIT_SIZE, org.kevoree.modeling.api.KConfig.CACHE_LOAD_FACTOR);
2438+
}
2439+
this._cachedObjects.put(p_key.part(current), p_obj_insert);
2440+
};
2441+
KCacheLayer.prototype.private_nestedLayers_init = function () {
2442+
if (this._nestedLayers == null) {
2443+
this._nestedLayers = new org.kevoree.modeling.api.map.LongHashMap(org.kevoree.modeling.api.KConfig.CACHE_INIT_SIZE, org.kevoree.modeling.api.KConfig.CACHE_LOAD_FACTOR);
2444+
}
2445+
};
2446+
KCacheLayer.prototype.private_insert_nested = function (p_key, current, p_obj_insert) {
2447+
var previousLayer = this._nestedLayers.get(p_key.part(current));
2448+
if (previousLayer == null) {
2449+
previousLayer = new org.kevoree.modeling.api.data.cache.KCacheLayer();
2450+
this._nestedLayers.put(p_key.part(current), previousLayer);
2451+
}
2452+
previousLayer.insert(p_key, current + 1, p_obj_insert);
2453+
};
24372454
KCacheLayer.prototype.dirties = function (result, prefixKeys, current) {
24382455
if (current == org.kevoree.modeling.api.KConfig.KEY_SIZE - 1) {
24392456
if (this._cachedObjects != null) {
@@ -2636,16 +2653,25 @@ var org;
26362653
}
26372654
else {
26382655
var nextLayer = this._nestedLayers.get(key.part(0));
2639-
if (nextLayer == null) {
2640-
nextLayer = new org.kevoree.modeling.api.data.cache.KCacheLayer();
2641-
this._nestedLayers.put(key.part(0), nextLayer);
2656+
if (nextLayer != null) {
2657+
nextLayer.insert(key, 1, payload);
2658+
}
2659+
else {
2660+
this.internal_put(key, payload);
26422661
}
2643-
nextLayer.insert(key, 1, payload);
26442662
if (MultiLayeredMemoryCache.DEBUG) {
26452663
System.out.println(MultiLayeredMemoryCache.prefixDebugPut + ":" + key + "->" + payload + ")");
26462664
}
26472665
}
26482666
};
2667+
MultiLayeredMemoryCache.prototype.internal_put = function (key, payload) {
2668+
var nextLayer = this._nestedLayers.get(key.part(0));
2669+
if (nextLayer == null) {
2670+
nextLayer = new org.kevoree.modeling.api.data.cache.KCacheLayer();
2671+
this._nestedLayers.put(key.part(0), nextLayer);
2672+
}
2673+
nextLayer.insert(key, 1, payload);
2674+
};
26492675
MultiLayeredMemoryCache.prototype.dirties = function () {
26502676
var result = new java.util.ArrayList();
26512677
this._nestedLayers.each(function (loopKey, loopLayer) {
@@ -3776,7 +3802,7 @@ var org;
37763802
function ResolutionHelper() {
37773803
}
37783804
ResolutionHelper.resolve_universe = function (globalTree, objUniverseTree, timeToResolve, originUniverseId) {
3779-
if (globalTree == null) {
3805+
if (globalTree == null || objUniverseTree == null) {
37803806
return originUniverseId;
37813807
}
37823808
var currentUniverse = originUniverseId;

drivers/zwave/org.kubi.driver.zwave/pom.xml

+5
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515
<name>Kubi :: Driver :: ZWave</name>
1616

1717
<dependencies>
18+
<dependency>
19+
<groupId>org.kubi</groupId>
20+
<artifactId>org.kubi.api</artifactId>
21+
<version>${project.version}</version>
22+
</dependency>
1823
<dependency>
1924
<groupId>lu.snt.zwave</groupId>
2025
<artifactId>lu.snt.zwave.driver</artifactId>

drivers/zwave/org.kubi.driver.zwave/src/main/java/org/kubi/driver/zwave/FunctionsFactory.java

+9-34
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
11
package org.kubi.driver.zwave;
22

3-
import com.eclipsesource.json.JsonObject;
43
import lu.snt.zwave.driver.ZWaveKey;
5-
import lu.snt.zwave.protocol.command.ZWControlCommandWithResult;
6-
import lu.snt.zwave.protocol.command.ZWaveFactories;
74
import lu.snt.zwave.protocol.constants.CommandClass;
8-
import lu.snt.zwave.protocol.messages.app_command.SwitchBinaryCommandClass;
9-
import lu.snt.zwave.utils.ZWCallback;
10-
import org.kubi.KubiModel;
115
import org.kubi.KubiView;
126
import org.kevoree.log.Log;
13-
import org.kevoree.modeling.api.Callback;
14-
import org.kevoree.modeling.api.KObject;
15-
import org.kevoree.modeling.api.KOperation;
167
import org.kubi.*;
17-
import org.kubi.meta.MetaFunction;
188

199
/**
2010
* Created by gregory.nain on 20/02/15.
@@ -23,9 +13,9 @@ public class FunctionsFactory {
2313

2414
public static void addFunctionFunction(Device dev, CommandClass cc, ZWaveKey key) {
2515
int ccIndex = cc.getByteValue();
26-
if(ccIndex == CommandClass.SWITCH_BINARY.getByteValue() ) {
16+
if (ccIndex == CommandClass.SWITCH_BINARY.getByteValue()) {
2717
addSwitchBinaryFunction(dev, key);
28-
} else if(ccIndex == CommandClass.SENSOR_MULTILEVEL.getByteValue() ) {
18+
} else if (ccIndex == CommandClass.SENSOR_MULTILEVEL.getByteValue()) {
2919
addSensorMultiLevel(dev, key);
3020
} else {
3121
Log.debug("No function factory for CommandClass:" + cc.getName());
@@ -34,38 +24,24 @@ public static void addFunctionFunction(Device dev, CommandClass cc, ZWaveKey key
3424

3525
public static void addSensorMultiLevel(Device dev, ZWaveKey key) {
3626
KubiView factory = dev.view();
37-
Parameter multiLevelSensorState = factory.createParameter();
27+
StateParameter multiLevelSensorState = factory.createStateParameter();
3828
multiLevelSensorState.setName(CommandClass.SENSOR_MULTILEVEL.getName());
3929
multiLevelSensorState.setValueType("float");
4030
multiLevelSensorState.setPrecision(0.1f);
4131
multiLevelSensorState.setUnit("kW");
42-
dev.addParameters(multiLevelSensorState);
32+
dev.addStateParameters(multiLevelSensorState);
4333
}
4434

4535

46-
public static void addSwitchBinaryFunction(Device dev, ZWaveKey key) {
36+
public static void addSwitchBinaryFunction(Device dev, ZWaveKey key) {
4737
KubiView kv = dev.view();
48-
49-
//add a parameter to the device
50-
Parameter onOffState = kv.createParameter();
38+
ActionParameter onOffState = kv.createActionParameter();
5139
onOffState.setName(CommandClass.SWITCH_BINARY.getName());
5240
onOffState.setValueType("boolean");
5341
onOffState.setRange("[false,true]");
54-
dev.addParameters(onOffState);
55-
56-
//create the function instance
57-
Function switchBinary = kv.createFunction();
58-
switchBinary.setName("Simple Switch");
59-
dev.addFunctions(switchBinary);
60-
61-
//add a input parameter to the function
62-
Parameter switchState = kv.createParameter();
63-
switchState.setName("state");
64-
switchState.setValueType("boolean");
65-
switchState.setRange("[false,true]");
66-
switchBinary.addParameters(switchState);
42+
dev.addActionParameters(onOffState);
6743

68-
//Registers the callback for this function
44+
/*
6945
KubiModel km = kv.universe().model();
7046
km.setInstanceOperation(MetaFunction.OP_EXEC, switchBinary, new KOperation() {
7147
@Override
@@ -124,8 +100,7 @@ public void on(Throwable throwable) {
124100
});
125101
}
126102
});
127-
128-
103+
*/
129104
}
130105

131106

drivers/zwave/org.kubi.driver.zwave/src/main/java/org/kubi/driver/zwave/KeyHandler.java drivers/zwave/org.kubi.driver.zwave/src/main/java/org/kubi/driver/zwave/StickHandler.java

+13-38
Original file line numberDiff line numberDiff line change
@@ -28,29 +28,24 @@
2828
/**
2929
* Created by gregory.nain on 18/02/15.
3030
*/
31-
public class KeyHandler {
32-
33-
public static final String TECHNOLOGY = "ZWave";
31+
public class StickHandler {
3432

3533
private ZWaveKey _key;
3634
private ExecutorService executor = Executors.newSingleThreadExecutor();
3735
private String _homeId;
3836
private KubiModel kubiModel;
39-
private ZWaveProductsStoreModel productStore;
37+
//private ZWaveProductsStoreModel productStore;
4038

41-
public KeyHandler(ZWaveKey key, KubiModel kubiModel, ZWaveProductsStoreModel productStore) {
39+
public StickHandler(ZWaveKey key, KubiModel kubiModel/*, ZWaveProductsStoreModel productStore*/) {
4240
this._key = key;
4341
this.kubiModel = kubiModel;
44-
this.productStore = productStore;
45-
46-
checkOrAddTechnology();
47-
42+
// this.productStore = productStore;
4843
_key.registerApplicationNodeInformationCallback(new ApplicationNodeInfoCallback(this));
4944
_key.registerApplicationCommandCallback(applicationCommandCallback);
5045
_key.addZWaveStateListener(new ZWaveStateListener() {
5146
public void stateChanged(ZWaveState zWaveState) {
5247
if (zWaveState == ZWaveState.READY) {
53-
executor.execute(new UpdateGatewayTask(KeyHandler.this));
48+
executor.execute(new UpdateGatewayTask(StickHandler.this));
5449
}
5550
}
5651
});
@@ -79,31 +74,12 @@ public ZWaveKey getKey() {
7974
public KubiModel getModel() {
8075
return kubiModel;
8176
}
82-
77+
/*
8378
public ZWaveProductsStoreModel getZwaveStorel() {
8479
return productStore;
85-
}
86-
87-
private void checkOrAddTechnology() {
88-
final KubiUniverse universe = kubiModel.universe(0);
89-
final KubiView factory = universe.time(0);
90-
factory.select("/technologies[name=" + TECHNOLOGY + "]").then(new Callback<KObject[]>() {
91-
public void on(KObject[] kObjects) {
92-
if (kObjects.length == 0) {
93-
factory.select("/").then(new Callback<KObject[]>() {
94-
public void on(KObject[] kObjects) {
95-
Log.trace("Adding Technology ZWave");
96-
Ecosystem kubiEcosystem = (Ecosystem) kObjects[0];
97-
kubiEcosystem.addTechnologies(factory.createTechnology().setName(TECHNOLOGY));
98-
kubiModel.save().then(StandardCallback.DISPLAY_ERROR);
99-
}
100-
});
101-
}
102-
}
103-
});
104-
}
105-
80+
}*/
10681

82+
//TODO, maybe do it periodically
10783
private Runnable launchDiscovery = new Runnable() {
10884
@Override
10985
public void run() {
@@ -132,7 +108,6 @@ public void on(ZW_RequestNodeInfo zw_requestNodeInfo) {
132108
}
133109
});
134110
_key.submitCommand(getInitialDataCommand);
135-
136111
}
137112
};
138113

@@ -145,24 +120,24 @@ public void on(ZW_ApplicationCommandHandler zw_applicationCommandHandler) {
145120
if (zw_applicationCommandHandler instanceof MultilevelSensorCommandClass) {
146121
MultilevelSensorCommandClass valueUpdate = (MultilevelSensorCommandClass) zw_applicationCommandHandler;
147122
float kW = (float) (valueUpdate.getValue() / 3412.142);
148-
factory.select("/technologies[name=" + TECHNOLOGY + "]/devices[id=" + valueUpdate.getSourceNode() + "]/parameters[name=" + zw_applicationCommandHandler.getCommandClass().getName() + "]").then(new Callback<KObject[]>() {
123+
factory.select("/technologies[name=" + ZWavePlugin.TECHNOLOGY + "]/devices[id=" + _homeId + "_" + valueUpdate.getSourceNode() + "]/stateParameters[name=" + zw_applicationCommandHandler.getCommandClass().getName() + "]").then(new Callback<KObject[]>() {
149124
@Override
150125
public void on(KObject[] kObjects) {
151126
if (kObjects != null && kObjects.length > 0) {
152-
Parameter param = (Parameter) kObjects[0];
153-
//Log.trace("Parameter Resolved: {}", param);
127+
StateParameter param = (StateParameter) kObjects[0];
128+
Log.trace("Parameter Resolved: {}", param);
154129
param.setValue("" + kW);
155130
kubiModel.save().then(StandardCallback.DISPLAY_ERROR);
156131
}
157132
}
158133
});
159134
} else if (zw_applicationCommandHandler instanceof SwitchBinaryCommandClass) {
160135
SwitchBinaryCommandClass valueUpdate = (SwitchBinaryCommandClass) zw_applicationCommandHandler;
161-
factory.select("/technologies[name=" + TECHNOLOGY + "]/devices[id=" + valueUpdate.getSourceNode() + "]/parameters[name=" + zw_applicationCommandHandler.getCommandClass().getName() + "]").then(new Callback<KObject[]>() {
136+
factory.select("/technologies[name=" + ZWavePlugin.TECHNOLOGY + "]/devices[id=" + _homeId + "_" + valueUpdate.getSourceNode() + "]/actionParameters[name=" + zw_applicationCommandHandler.getCommandClass().getName() + "]").then(new Callback<KObject[]>() {
162137
@Override
163138
public void on(KObject[] kObjects) {
164139
if (kObjects != null && kObjects.length > 0) {
165-
Parameter param = (Parameter) kObjects[0];
140+
StateParameter param = (StateParameter) kObjects[0];
166141
param.setValue(Boolean.toString(valueUpdate.isOn()));
167142
kubiModel.save().then(StandardCallback.DISPLAY_ERROR);
168143
}

drivers/zwave/org.kubi.driver.zwave/src/main/java/org/kubi/driver/zwave/ZWaveConnector.java

-55
This file was deleted.

0 commit comments

Comments
 (0)