From 22afc1e4c48ecb59cfb04ed2de1761a8af6dbff3 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 8 May 2019 21:45:58 +0200 Subject: [PATCH] improved simulation: GPIO added and dofile adapted --- main.lua | 10 ++-- simulation/config.lua | 1 + .../src/de/c3ma/ollo/WS2812Simulation.java | 3 ++ .../de/c3ma/ollo/mockup/DoFileFunction.java | 5 +- .../src/de/c3ma/ollo/mockup/ESP8266GPIO.java | 51 +++++++++++++++++++ 5 files changed, 61 insertions(+), 9 deletions(-) create mode 100644 simulation/src/de/c3ma/ollo/mockup/ESP8266GPIO.java diff --git a/main.lua b/main.lua index 29fc813..2c0f00c 100644 --- a/main.lua +++ b/main.lua @@ -1,7 +1,5 @@ -- Main Module -displayword = {} - function startSetupMode() tmr.stop(0) tmr.stop(1) @@ -56,12 +54,12 @@ function displayTime() else words.briPercent=nil end - dofile("displayword.lc") - if (displayword ~= nil) then - ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4) + dp = dofile("displayword.lc") + if (dp ~= nil) then + ledBuf = dp.generateLEDs(words, color, color1, color2, color3, color4) print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " char: " .. tostring(displayword.data.drawnCharacters)) end - displayword = nil + dp = nil if (ledBuf ~= nil) then --if lines 4 to 6 are inverted due to hardware-fuckup, unfuck it here if ((inv46 ~= nil) and (inv46 == "on")) then diff --git a/simulation/config.lua b/simulation/config.lua index 7c38a41..bb7c61c 100644 --- a/simulation/config.lua +++ b/simulation/config.lua @@ -12,3 +12,4 @@ color4=string.char(tonumber(green2*0.2), 0, 0) colorBg=string.char(0,0,0) -- black is the default background color sntpserverhostname="ptbtime1.ptb.de" timezoneoffset=1 +dim="on" diff --git a/simulation/src/de/c3ma/ollo/WS2812Simulation.java b/simulation/src/de/c3ma/ollo/WS2812Simulation.java index 1c4cff9..147a20e 100644 --- a/simulation/src/de/c3ma/ollo/WS2812Simulation.java +++ b/simulation/src/de/c3ma/ollo/WS2812Simulation.java @@ -13,6 +13,7 @@ import org.luaj.vm2.lib.jse.JsePlatform; import de.c3ma.ollo.mockup.DoFileFunction; import de.c3ma.ollo.mockup.ESP8266Adc; import de.c3ma.ollo.mockup.ESP8266File; +import de.c3ma.ollo.mockup.ESP8266GPIO; import de.c3ma.ollo.mockup.ESP8266Net; import de.c3ma.ollo.mockup.ESP8266Node; import de.c3ma.ollo.mockup.ESP8266Time; @@ -46,11 +47,13 @@ public class WS2812Simulation implements LuaSimulation { globals.load(espTmr); globals.load(espFile); globals.load(espNode); + globals.load(new ESP8266GPIO()); globals.load(adc); globals.load(new ESP8266Wifi()); globals.load(new ESP8266Net()); globals.load(new ESP8266Time()); globals.set("dofile", doFile); + adc.setADC(50); try { File tempFile = File.createTempFile("NodemcuSimuFile", ""); diff --git a/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java b/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java index c9e6250..a7b5660 100644 --- a/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java +++ b/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java @@ -26,14 +26,13 @@ public class DoFileFunction extends OneArgFunction { public LuaValue call(LuaValue luaFilename) { String filename = luaFilename.checkjstring(); - System.out.println("[Nodemcu] dofile " + filename); + //System.out.println("[Nodemcu] dofile " + filename); File f = new File(workingDir.getAbsolutePath() + File.separator + filename); if (f.exists()) { LuaValue chunk = this.globals.loadfile(f.getAbsolutePath()); - chunk.call(); - return LuaValue.valueOf(true); + return chunk.call(); } else { return LuaValue.valueOf(false); } diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266GPIO.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266GPIO.java new file mode 100644 index 0000000..5212d00 --- /dev/null +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266GPIO.java @@ -0,0 +1,51 @@ +package de.c3ma.ollo.mockup; + +import org.luaj.vm2.LuaTable; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.Varargs; +import org.luaj.vm2.lib.TwoArgFunction; +import org.luaj.vm2.lib.VarArgFunction; + +/** + * created at 08.05.2019 - 21:33:04
+ * creator: ollo
+ * project: ESP8266GPIO Emulation
+ * $Id: $
+ * @author ollo
+ */ +public class ESP8266GPIO extends TwoArgFunction { + + @Override + public LuaValue call(LuaValue modname, LuaValue env) { + env.checkglobals(); + final LuaTable gpio = new LuaTable(); + gpio.set("mode", new Mode()); + gpio.set("read", new Read(this)); + env.set("gpio", gpio); + env.get("package").get("loaded").set("gpio", gpio); + return gpio; + } + + private class Read extends VarArgFunction { + + private ESP8266GPIO mGpio = null; + + Read(ESP8266GPIO gpio) { + this.mGpio = gpio; + } + + public Varargs invoke(Varargs varargs) { + int pin = varargs.toint(0); + //FIXME add here something to simulate a pin pressing + return LuaValue.valueOf((int)1); + } + } + + private class Mode extends VarArgFunction { + + public Varargs invoke(Varargs varargs) { + System.out.println("[GPIO] mode GPIO" + varargs.toint(0) + "=" + varargs.toint(1)); + return LuaValue.valueOf(true); + } + } +}