Time and Net is also necessary
This commit is contained in:
parent
989d8b263a
commit
68c38fed52
83
simulation/src/de/c3ma/ollo/mockup/ESP8266Net.java
Normal file
83
simulation/src/de/c3ma/ollo/mockup/ESP8266Net.java
Normal file
@ -0,0 +1,83 @@
|
||||
package de.c3ma.ollo.mockup;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InterruptedIOException;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
import java.nio.file.Files;
|
||||
|
||||
import org.luaj.vm2.LuaFunction;
|
||||
import org.luaj.vm2.LuaTable;
|
||||
import org.luaj.vm2.LuaValue;
|
||||
import org.luaj.vm2.lib.OneArgFunction;
|
||||
import org.luaj.vm2.lib.TwoArgFunction;
|
||||
import org.luaj.vm2.lib.ZeroArgFunction;
|
||||
|
||||
import de.c3ma.ollo.LuaSimulation;
|
||||
|
||||
/**
|
||||
* created at 29.12.2017 - 01:29:40<br />
|
||||
* creator: ollo<br />
|
||||
* project: WS2812Emulation<br />
|
||||
* $Id: $<br />
|
||||
* @author ollo<br />
|
||||
*/
|
||||
public class ESP8266Net extends TwoArgFunction {
|
||||
|
||||
public static final int PORTNUMBER_OFFSET = 4000;
|
||||
|
||||
@Override
|
||||
public LuaValue call(LuaValue modname, LuaValue env) {
|
||||
env.checkglobals();
|
||||
final LuaTable net = new LuaTable();
|
||||
net.set("createServer", new CreateServerFunction());
|
||||
|
||||
//FIXME net.set("send", new SendFunction());
|
||||
net.set("TCP", "TCP");
|
||||
env.set("net", net);
|
||||
env.get("package").get("loaded").set("net", net);
|
||||
return net;
|
||||
}
|
||||
|
||||
private class CreateServerFunction extends OneArgFunction {
|
||||
|
||||
@Override
|
||||
public LuaValue call(LuaValue arg) {
|
||||
final LuaTable srv = new LuaTable();
|
||||
srv.set("listen", new ListenFunction());
|
||||
return srv;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private class ListenFunction extends TwoArgFunction {
|
||||
|
||||
@Override
|
||||
public LuaValue call(LuaValue port, LuaValue function) {
|
||||
int portnumber = port.checkint();
|
||||
LuaFunction onListenFunction = function.checkfunction();
|
||||
|
||||
System.out.println("[Net] listening " + portnumber + "(simulating at " + (PORTNUMBER_OFFSET+ portnumber) + ")");
|
||||
|
||||
try
|
||||
{
|
||||
ServerSocket serverSocket = new ServerSocket(PORTNUMBER_OFFSET+portnumber);
|
||||
serverSocket.setSoTimeout( 60000 ); // Timeout after one minute
|
||||
|
||||
Socket client = serverSocket.accept();
|
||||
|
||||
}
|
||||
catch ( InterruptedIOException iioe )
|
||||
{
|
||||
System.err.println( "Timeout nach einer Minute!" );
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
System.out.println("[Net] server running");
|
||||
return LuaValue.valueOf(true);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
78
simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java
Normal file
78
simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java
Normal file
@ -0,0 +1,78 @@
|
||||
package de.c3ma.ollo.mockup;
|
||||
|
||||
import org.luaj.vm2.Globals;
|
||||
import org.luaj.vm2.LuaFunction;
|
||||
import org.luaj.vm2.LuaTable;
|
||||
import org.luaj.vm2.LuaValue;
|
||||
import org.luaj.vm2.Varargs;
|
||||
import org.luaj.vm2.lib.OneArgFunction;
|
||||
import org.luaj.vm2.lib.ThreeArgFunction;
|
||||
import org.luaj.vm2.lib.TwoArgFunction;
|
||||
import org.luaj.vm2.lib.VarArgFunction;
|
||||
import org.luaj.vm2.lib.ZeroArgFunction;
|
||||
|
||||
import de.c3ma.ollo.LuaThreadTmr;
|
||||
|
||||
/**
|
||||
* created at 29.12.2017 - 00:07:22<br />
|
||||
* creator: ollo<br />
|
||||
* project: Time Emulation<br />
|
||||
*
|
||||
* Simulating the following modules:
|
||||
* Sntp
|
||||
* rtctime
|
||||
*
|
||||
* $Id: $<br />
|
||||
* @author ollo<br />
|
||||
*/
|
||||
public class ESP8266Time extends TwoArgFunction {
|
||||
|
||||
@Override
|
||||
public LuaValue call(LuaValue modname, LuaValue env) {
|
||||
env.checkglobals();
|
||||
final LuaTable sntp = new LuaTable();
|
||||
sntp.set("sync", new SyncFunction());
|
||||
env.set("sntp", sntp);
|
||||
final LuaTable rtctime = new LuaTable();
|
||||
rtctime.set("get", new GetFunction());
|
||||
env.set("rtctime", rtctime);
|
||||
env.get("package").get("loaded").set("sntp", sntp);
|
||||
env.get("package").get("loaded").set("rtctime", rtctime);
|
||||
|
||||
return sntp;
|
||||
}
|
||||
|
||||
private class SyncFunction extends ThreeArgFunction {
|
||||
|
||||
@Override
|
||||
public LuaValue call(LuaValue server, LuaValue callbackSuccess, LuaValue callbackFailure) {
|
||||
String serverName = server.checkjstring();
|
||||
LuaFunction cb = callbackSuccess.checkfunction();
|
||||
System.out.println("[SNTP] sync " + serverName);
|
||||
|
||||
/*FIXME also make it possible to simulate the time */
|
||||
int seconds = (int) (System.currentTimeMillis() / 1000);
|
||||
int useconds = (int) (System.currentTimeMillis() % 1000);
|
||||
cb.call(LuaValue.valueOf(seconds), LuaValue.valueOf(useconds), LuaValue.valueOf(serverName));
|
||||
|
||||
return LuaValue.valueOf(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private class GetFunction extends ZeroArgFunction {
|
||||
|
||||
@Override
|
||||
public LuaValue call() {
|
||||
LuaValue[] v = new LuaValue[2];
|
||||
/*FIXME also make it possible to simulate the time */
|
||||
int seconds = (int) (System.currentTimeMillis() / 1000);
|
||||
int useconds = (int) (System.currentTimeMillis() % 1000);
|
||||
v[0] = LuaValue.valueOf(seconds);
|
||||
v[1] = LuaValue.valueOf(useconds);
|
||||
return LuaValue.varargsOf(v).arg1();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user