WarpPI/core/src/main/java/it/cavallium/warppi/gui/screens/KeyboardDebugScreen.java

235 lines
9.1 KiB
Java
Raw Normal View History

package it.cavallium.warppi.gui.screens;
2017-01-16 17:57:09 +01:00
2019-02-27 23:29:03 +01:00
import it.cavallium.warppi.WarpPI;
import it.cavallium.warppi.StaticVars;
import it.cavallium.warppi.event.KeyPressedEvent;
import it.cavallium.warppi.event.KeyReleasedEvent;
2018-10-05 16:00:15 +02:00
import it.cavallium.warppi.gui.HistoryBehavior;
import it.cavallium.warppi.gui.graphicengine.Renderer;
2017-01-16 17:57:09 +01:00
public class KeyboardDebugScreen extends Screen {
public String key;
public String keyevent;
public static int keyX;
public static int keyY;
public static String[] log = new String[] { "POWER ON", "LOADING", "LOADED", "DONE", "---" };
2017-01-16 17:57:09 +01:00
public long beforetime;
2017-01-16 17:57:09 +01:00
public KeyboardDebugScreen() {
super();
2018-10-05 16:00:15 +02:00
historyBehavior = HistoryBehavior.DONT_KEEP_IN_HISTORY;
2017-01-16 17:57:09 +01:00
}
2017-01-16 17:57:09 +01:00
@Override
public void created() throws InterruptedException {}
2017-01-16 17:57:09 +01:00
@Override
2018-03-17 00:09:40 +01:00
public void initialized() throws InterruptedException {}
2017-01-16 17:57:09 +01:00
@Override
public void graphicInitialized() throws InterruptedException {}
2017-01-16 17:57:09 +01:00
@Override
public void render() {
2019-02-27 23:29:03 +01:00
final Renderer renderer = WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().renderer;
WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().fonts[2].use(WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().display);
renderer.glColor4f(0.75f, 0.0f, 0.0f, 1.0f);
renderer.glDrawStringRight(d.display.getDisplaySize()[0] - 10, 30, "-" + keyevent.toUpperCase() + "-");
2017-01-16 17:57:09 +01:00
if (keyevent != "NONE") {
2019-02-27 23:29:03 +01:00
WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().fonts[2].use(WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().display);
renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
renderer.glDrawStringLeft(10, 30, "Key position");
2018-09-22 11:17:30 +02:00
renderer.glDrawStringLeft(10, 45, "X: " + KeyboardDebugScreen.keyX + ", Y:" + KeyboardDebugScreen.keyY);
renderer.glDrawStringLeft(10, 65, "Key value");
renderer.glDrawStringLeft(10, 80, key);
2017-01-16 17:57:09 +01:00
}
2019-02-27 23:29:03 +01:00
WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().fonts[3].use(WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().display);
renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
for (int i = 0; i < 5; i++) {
if (KeyboardDebugScreen.log[i] != null) {
2018-09-22 11:17:30 +02:00
renderer.glDrawStringLeft(10, 230 + 15 * (i + 1), KeyboardDebugScreen.log[i].toUpperCase());
2018-09-28 11:39:28 +02:00
}
}
2017-01-16 17:57:09 +01:00
//FROM SERIAL
renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
renderer.glFillColor(-80 + 100 + 200, 90, 5, 5);
renderer.glFillColor(-80 + 100, 100, 200, 70);
2019-02-27 23:29:03 +01:00
WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().fonts[2].use(WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().display);
renderer.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
2018-09-22 11:17:30 +02:00
renderer.glDrawStringCenter(-80 + 100 + 200 / 2, 100 + 70 / 2 - renderer.getCurrentFont().getCharacterHeight() / 2, "FROM SERIAL");
2019-02-27 23:29:03 +01:00
WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().fonts[3].use(WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().display);
renderer.glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
2017-01-16 17:57:09 +01:00
for (int i = 0; i < 8; i++) {
2018-09-28 11:39:28 +02:00
if (KeyboardDebugScreen.pinsA[i] == 1) {
renderer.glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
} else if (KeyboardDebugScreen.pinsA[i] == 2) {
renderer.glColor4f(0.5f, 0.5f, 1.0f, 1.0f);
2018-09-28 11:39:28 +02:00
} else if (KeyboardDebugScreen.pinsA[i] == -1) {
renderer.glColor4f(0.7f, 0.7f, 0.7f, 1.0f);
2018-09-28 11:39:28 +02:00
} else if (KeyboardDebugScreen.pinsA[i] == 0) {
renderer.glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
}
renderer.glFillColor(-80 + 103 + 25 * (7 - i), 80, 20, 20);
renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
2018-09-22 11:17:30 +02:00
renderer.glDrawStringCenter(-80 + 113 + 25 * (7 - i), 90 - renderer.getCurrentFont().getCharacterHeight() / 2, "" + (i + 1));
2017-01-16 17:57:09 +01:00
}
for (int i = 15; i >= 8; i--) {
2018-09-28 11:39:28 +02:00
if (KeyboardDebugScreen.pinsA[i] == 1) {
renderer.glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
} else if (KeyboardDebugScreen.pinsA[i] == 2) {
renderer.glColor4f(0.5f, 0.5f, 1.0f, 1.0f);
2018-09-28 11:39:28 +02:00
} else if (KeyboardDebugScreen.pinsA[i] == -1) {
renderer.glColor4f(0.7f, 0.7f, 0.7f, 1.0f);
2018-09-28 11:39:28 +02:00
} else if (KeyboardDebugScreen.pinsA[i] == 0) {
renderer.glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
}
renderer.glFillColor(-80 + 103 + 25 * (i - 8), 170, 20, 20);
renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
2018-09-22 11:17:30 +02:00
renderer.glDrawStringCenter(-80 + 113 + 25 * (i - 8), 180 - renderer.getCurrentFont().getCharacterHeight() / 2, "" + (i + 1));
2017-01-16 17:57:09 +01:00
}
for (int i = 0; i < 8; i++) {
2018-09-28 11:39:28 +02:00
if (KeyboardDebugScreen.dataA[i]) {
renderer.glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
} else {
renderer.glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
}
2018-09-22 11:17:30 +02:00
renderer.glFillColor(-80 + 160 + 10 * i, 150, 8, 8);
2017-01-16 17:57:09 +01:00
}
//TO SERIAL
renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
renderer.glFillColor(150 + 90, 200, 5, 5);
renderer.glFillColor(150 + 100, 100, 200, 70);
2019-02-27 23:29:03 +01:00
WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().fonts[2].use(WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().display);
renderer.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
2018-09-22 11:17:30 +02:00
renderer.glDrawStringCenter(150 + 100 + 200 / 2, 100 + 70 / 2 - renderer.getCurrentFont().getCharacterHeight() / 2, "TO SERIAL");
2019-02-27 23:29:03 +01:00
WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().fonts[3].use(WarpPI.INSTANCE.getHardwareDevice().getDisplayManager().display);
renderer.glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
2017-01-16 17:57:09 +01:00
for (int i = 15; i >= 8; i--) {
2018-09-28 11:39:28 +02:00
if (KeyboardDebugScreen.pinsB[i] == 1) {
renderer.glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
} else if (KeyboardDebugScreen.pinsB[i] == 2) {
renderer.glColor4f(0.5f, 0.5f, 1.0f, 1.0f);
2018-09-28 11:39:28 +02:00
} else if (KeyboardDebugScreen.pinsB[i] == -1) {
renderer.glColor4f(0.7f, 0.7f, 0.7f, 1.0f);
2018-09-28 11:39:28 +02:00
} else if (KeyboardDebugScreen.pinsB[i] == 0) {
renderer.glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
}
renderer.glFillColor(150 + 103 + 25 * (15 - i), 80, 20, 20);
renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
2018-09-22 11:17:30 +02:00
renderer.glDrawStringCenter(150 + 113 + 25 * (15 - i), 90 - renderer.getCurrentFont().getCharacterHeight() / 2, "" + (i + 1));
2017-01-16 17:57:09 +01:00
}
for (int i = 7; i >= 0; i--) {
2018-09-28 11:39:28 +02:00
if (KeyboardDebugScreen.pinsB[i] == 1) {
renderer.glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
} else if (KeyboardDebugScreen.pinsB[i] == 2) {
renderer.glColor4f(0.5f, 0.5f, 1.0f, 1.0f);
2018-09-28 11:39:28 +02:00
} else if (KeyboardDebugScreen.pinsB[i] == -1) {
renderer.glColor4f(0.7f, 0.7f, 0.7f, 1.0f);
2018-09-28 11:39:28 +02:00
} else if (KeyboardDebugScreen.pinsB[i] == 0) {
renderer.glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
}
2018-09-22 11:17:30 +02:00
renderer.glFillColor(150 + 103 + 25 * i, 170, 20, 20);
renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
2018-09-22 11:17:30 +02:00
renderer.glDrawStringCenter(150 + 113 + 25 * i, 180 - renderer.getCurrentFont().getCharacterHeight() / 2, "" + (i + 1));
2017-01-16 17:57:09 +01:00
}
for (int i = 0; i < 8; i++) {
2018-09-28 11:39:28 +02:00
if (KeyboardDebugScreen.dataB[i]) {
renderer.glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
} else {
renderer.glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
}
2018-09-22 11:17:30 +02:00
renderer.glFillColor(150 + 160 + 10 * i, 150, 8, 8);
2017-01-16 17:57:09 +01:00
}
2017-01-16 17:57:09 +01:00
//GPIO
for (int i = 0; i < 40; i++) {
2018-09-28 11:39:28 +02:00
if (KeyboardDebugScreen.gpio[i] == true) {
renderer.glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
} else {
renderer.glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
}
2017-01-16 17:57:09 +01:00
if (i % 2 == 0) {
2018-09-22 11:17:30 +02:00
renderer.glFillColor(53 + 15 * (i / 2), 50, 5, 5);
renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
2018-09-22 11:17:30 +02:00
renderer.glDrawStringCenter(55 + 15 * (i / 2), 60, "" + (i + 1));
2017-01-16 17:57:09 +01:00
} else {
renderer.glFillColor(53 + 15 * ((i - 1) / 2), 40, 5, 5);
renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
renderer.glDrawStringCenter(55 + 15 * ((i - 1) / 2), 35 - renderer.getCurrentFont().getCharacterHeight(), "" + (i + 1));
2017-01-16 17:57:09 +01:00
}
}
2017-01-16 17:57:09 +01:00
//KEYS
2018-09-28 11:39:28 +02:00
for (int c = 0; c < 8; c++) {
2017-01-16 17:57:09 +01:00
for (int r = 0; r < 8; r++) {
2018-09-28 11:39:28 +02:00
if (KeyboardDebugScreen.ks[c][r]) {
renderer.glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
} else {
renderer.glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
2018-09-28 11:39:28 +02:00
}
renderer.glFillColor(250 + 6 * c, 250 + 6 * r, 5, 5);
2017-01-16 17:57:09 +01:00
}
2018-09-28 11:39:28 +02:00
}
2017-01-16 17:57:09 +01:00
}
@Override
2018-09-22 11:17:30 +02:00
public void beforeRender(final float dt) {
if (System.currentTimeMillis() - beforetime >= 1000) {
2017-01-16 17:57:09 +01:00
keyevent = "NONE";
2018-09-22 11:17:30 +02:00
KeyboardDebugScreen.keyX = 0;
KeyboardDebugScreen.keyY = 0;
2017-01-16 17:57:09 +01:00
key = "";
}
}
@Override
public boolean mustBeRefreshed() {
return true;
}
@Override
2018-09-22 11:17:30 +02:00
public boolean onKeyPressed(final KeyPressedEvent k) {
2017-01-16 17:57:09 +01:00
beforetime = System.currentTimeMillis();
keyevent = "PRESSED";
2018-09-22 11:17:30 +02:00
KeyboardDebugScreen.keyX = 0;
KeyboardDebugScreen.keyY = 0;
2017-01-16 17:57:09 +01:00
key = k.toString();
return false;
}
@Override
2018-09-22 11:17:30 +02:00
public boolean onKeyReleased(final KeyReleasedEvent k) {
2017-01-16 17:57:09 +01:00
beforetime = System.currentTimeMillis();
keyevent = "RELEASED";
2018-09-22 11:17:30 +02:00
KeyboardDebugScreen.keyX = 0;
KeyboardDebugScreen.keyY = 0;
2017-01-16 17:57:09 +01:00
key = k.toString();
return false;
}
public static int[] pinsA = new int[] { 2, 2, 2, 2, 2, 2, 2, 1, -1, -1, 0, 0, 0, 0, 2, -1 };
public static int[] pinsB = new int[] { 0, 0, 2, 2, 2, 2, -1, 1, 0, -1, 2, 2, 2, 2, 0, -1 };
2017-01-16 17:57:09 +01:00
public static boolean[] dataA = new boolean[8];
public static boolean[] dataB = new boolean[8];
public static boolean[][] ks = new boolean[8][8];
public static boolean[] gpio = new boolean[40];
2018-09-22 11:17:30 +02:00
public static void log(final String str) {
final String[] newlog = KeyboardDebugScreen.log;
2018-09-28 11:39:28 +02:00
for (int i = 1; i < 5; i++) {
newlog[i - 1] = newlog[i];
2018-09-28 11:39:28 +02:00
}
2017-01-16 17:57:09 +01:00
newlog[4] = "[" + System.currentTimeMillis() + "]" + str;
2018-09-22 11:17:30 +02:00
KeyboardDebugScreen.log = newlog;
2017-01-16 17:57:09 +01:00
}
2018-10-04 12:38:54 +02:00
@Override
public String getSessionTitle() {
return "Keyboard debug";
}
2017-01-16 17:57:09 +01:00
}