use of com.ociweb.iot.maker.FogRuntime in project FogLight-Examples by oci-pronghorn.
the class AppTest method testApp.
@Test
public void testApp() {
FogRuntime runtime = FogRuntime.test(new IoTApp());
ScriptedNonThreadScheduler scheduler = (ScriptedNonThreadScheduler) runtime.getScheduler();
scheduler.startup();
TestHardware hardware = (TestHardware) runtime.getHardware();
hardware.setI2CValueToRead((byte) 4, new byte[] { 0, 0, 0 }, 3);
int iterations = 10;
while (--iterations >= 0) {
scheduler.run();
// test application here
}
}
use of com.ociweb.iot.maker.FogRuntime in project FogLight-Examples by oci-pronghorn.
the class AppTest method testApp.
@Test
public void testApp() {
FogRuntime runtime = FogRuntime.test(new IoTApp());
ScriptedNonThreadScheduler scheduler = (ScriptedNonThreadScheduler) runtime.getScheduler();
TestHardware hardware = (TestHardware) runtime.getHardware();
hardware.portReader = new BasicTestPortReader();
hardware.clearI2CWriteCount();
// 970 will give us 200 BPM and a delay of 300 ms
hardware.write(IoTApp.ROTARY_ANGLE_PORT, 970);
scheduler.startup();
long lastTime = 0;
int ticks = 5;
hardware.clearCaputuredFirstTimes();
hardware.clearCaputuredHighs();
boolean isMetronomeRunning = false;
long startTime = System.currentTimeMillis();
while (ticks > 0) {
scheduler.run();
long time = hardware.getFirstTime(IoTApp.BUZZER_PORT);
if (0 != time) {
int high = hardware.getCapturedHigh(IoTApp.BUZZER_PORT);
if (0 != high) {
ticks--;
if (0 != lastTime) {
if (isMetronomeRunning) {
long durationMs = (time - lastTime);
// due to assertions and garbage when unit tests are run we can not be so strict here
int overheadForTesting = 10;
int window = 300;
// this is a little too quick now... and under the threshold.
// assertTrue(durationMs+" at "+time, durationMs>=(window-overheadForTesting));
assertTrue(durationMs + " at " + time, durationMs <= (window + overheadForTesting));
} else {
isMetronomeRunning = true;
}
}
lastTime = time;
hardware.clearCaputuredFirstTimes();
hardware.clearCaputuredHighs();
} else {
// low
}
}
}
int count = hardware.getI2CWriteCount();
System.out.println(count);
int c = count;
while (c > 0) {
hardware.outputLastI2CWrite(System.out, c--).append("\n");
}
assertEquals("Did not find all the ticks.", 0, ticks);
scheduler.shutdown();
scheduler.awaitTermination(10, TimeUnit.SECONDS);
}
use of com.ociweb.iot.maker.FogRuntime in project FogLight-Examples by oci-pronghorn.
the class IoTApp method configureTimeBasedColorChange.
protected void configureTimeBasedColorChange(FogRuntime runtime) {
final FogCommandChannel channel0 = runtime.newCommandChannel(FogRuntime.PIN_WRITER | FogRuntime.I2C_WRITER | GreenCommandChannel.DYNAMIC_MESSAGING);
runtime.addPubSubListener((topic, payload) -> {
turnOnRed(channel0);
channel0.block(State.REDLIGHT.getTime());
channel0.publishTopic("GREEN", w -> {
});
return true;
}).addSubscription("RED");
final FogCommandChannel channel1 = runtime.newCommandChannel(FogRuntime.PIN_WRITER | FogRuntime.I2C_WRITER | GreenCommandChannel.DYNAMIC_MESSAGING);
runtime.addPubSubListener((topic, payload) -> {
turnOnGreen(channel1);
channel1.block(State.GREENLIGHT.getTime());
channel1.publishTopic("YELLOW", w -> {
});
return true;
}).addSubscription("GREEN");
final FogCommandChannel channel2 = runtime.newCommandChannel(FogRuntime.PIN_WRITER | FogRuntime.I2C_WRITER | GreenCommandChannel.DYNAMIC_MESSAGING);
runtime.addPubSubListener((topic, payload) -> {
turnOnYellow(channel2);
channel2.block(State.YELLOWLIGHT.getTime());
channel2.publishTopic("RED", w -> {
});
return true;
}).addSubscription("YELLOW");
final FogCommandChannel channel4 = runtime.newCommandChannel(FogRuntime.PIN_WRITER | FogRuntime.I2C_WRITER | GreenCommandChannel.DYNAMIC_MESSAGING);
runtime.addStartupListener(() -> {
channel4.publishTopic("RED", w -> {
});
});
}
use of com.ociweb.iot.maker.FogRuntime in project FogLight-Examples by oci-pronghorn.
the class AppTest method testApp.
@Test
public void testApp() {
FogRuntime runtime = FogRuntime.test(new Snake());
ScriptedNonThreadScheduler scheduler = (ScriptedNonThreadScheduler) runtime.getScheduler();
TestHardware hardware = (TestHardware) runtime.getHardware();
scheduler.startup();
int iterations = 10;
while (--iterations >= 0) {
scheduler.run();
// test application here
}
scheduler.shutdown();
}
Aggregations