package it.cavallium.warppi; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.URISyntaxException; import java.net.URL; import java.util.List; import java.util.Map; import it.cavallium.warppi.boot.StartupArguments; import it.cavallium.warppi.device.DeviceStateDevice; import it.cavallium.warppi.device.display.BacklightOutputDevice; import it.cavallium.warppi.device.display.DisplayOutputDevice; import it.cavallium.warppi.device.input.KeyboardInputDevice; import it.cavallium.warppi.device.input.TouchInputDevice; import it.cavallium.warppi.util.Error; public interface Platform { ConsoleUtils getConsoleUtils(); Gpio getGpio(); StorageUtils getStorageUtils(); ImageUtils getImageUtils(); Settings getSettings(); void setThreadName(Thread t, String name); void setThreadDaemon(Thread t); void setThreadDaemon(Thread t, boolean value); void exit(int value); void gc(); boolean isJavascript(); void setRunningOnRaspberry(boolean b); boolean isRunningOnRaspberry(); String getOsName(); void alphaChanged(boolean val); void shiftChanged(boolean val); Semaphore newSemaphore(); Semaphore newSemaphore(int i); URLClassLoader newURLClassLoader(URL[] urls); TouchInputDevice getTouchInputDevice(); KeyboardInputDevice getKeyboardInputDevice(); DisplayOutputDevice getDisplayOutputDevice(); BacklightOutputDevice getBacklightOutputDevice(); DeviceStateDevice getDeviceStateDevice(); void throwNewExceptionInInitializerError(String text); String[] stacktraceToString(Error e); /** * Determines the list of files containing DSL rules to load. * * @return a List of paths of files which contain DSL rules. * Each String in the returned List can be passed as an argument to * {@link StorageUtils#getResourceStream(String)} to access the corresponding file's contents. * @throws IOException if an IO error occurs while getting the list of rule file paths. */ List getRuleFilePaths() throws IOException; public interface Gpio { int valueOutput(); int valuePwmOutput(); int valueInput(); int valueHigh(); int valueLow(); Object valueUnknownBoardType(); void wiringPiSetupPhys(); void pinMode(int i, int type); void digitalWrite(int pin, int val); void digitalWrite(int pin, boolean val); void pwmWrite(int pin, int val); void delayMicroseconds(int t); int digitalRead(int pin); Object getBoardType(); } public interface ConsoleUtils { int OUTPUTLEVEL_NODEBUG = 0; int OUTPUTLEVEL_DEBUG_MIN = 1; int OUTPUTLEVEL_DEBUG_VERBOSE = 4; AdvancedOutputStream out(); int getOutputLevel(); public interface AdvancedOutputStream { void println(Object str); void println(int level); void println(int level, Object str); void print(int level, String str); void println(int level, String prefix, String str); void println(int level, String... parts); } } public interface StorageUtils { int OpenOptionWrite = 0; int OpenOptionCreate = 1; boolean exists(File f); File get(String path); File get(String... path); @Deprecated() File getResource(String string) throws IOException, URISyntaxException; boolean doesResourceExist(String string) throws IOException; InputStream getResourceStream(String string) throws IOException; List readAllLines(File file) throws IOException; String read(InputStream input) throws IOException; List walk(File dir) throws IOException; File relativize(File rulesPath, File f); File resolve(File file, String string); File getParent(File f); void createDirectories(File dir) throws IOException; void write(File f, byte[] bytes, int... options) throws IOException; List readAllLines(InputStream input) throws IOException; String getBasePath(); } public interface Semaphore { void release(); void acquire() throws InterruptedException; } public interface URLClassLoader { Class loadClass(String name) throws ClassNotFoundException; void close() throws IOException; } public interface ImageUtils { ImageReader load(InputStream resourceStream) throws IOException; public interface ImageReader { int[] getImageMatrix(); int[] getSize(); } } public interface Settings { boolean isDebugEnabled(); void setDebugEnabled(boolean debugOn); default String getCalculatorName() { return "WarpPI"; } default String getCalculatorNameLowercase() { return "warppi"; } default String getCalculatorNameUppercase() { return "WARPPI"; } } void setArguments(StartupArguments args); }