summaryrefslogtreecommitdiff
path: root/components/external/espruino/src/jsinteractive.h
diff options
context:
space:
mode:
Diffstat (limited to 'components/external/espruino/src/jsinteractive.h')
-rw-r--r--components/external/espruino/src/jsinteractive.h105
1 files changed, 105 insertions, 0 deletions
diff --git a/components/external/espruino/src/jsinteractive.h b/components/external/espruino/src/jsinteractive.h
new file mode 100644
index 0000000000..6d67bb6788
--- /dev/null
+++ b/components/external/espruino/src/jsinteractive.h
@@ -0,0 +1,105 @@
+/*
+ * This file is part of Espruino, a JavaScript interpreter for Microcontrollers
+ *
+ * Copyright (C) 2013 Gordon Williams <[email protected]>
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * ----------------------------------------------------------------------------
+ * Interactive Shell implementation
+ * ----------------------------------------------------------------------------
+ */
+#ifndef JSINTERACTIVE_H_
+#define JSINTERACTIVE_H_
+
+#include "jsparse.h"
+#include "jshardware.h"
+
+#define JSI_WATCHES_NAME ">watches"
+#define JSI_TIMERS_NAME ">timers"
+#define JSI_HISTORY_NAME ">history"
+#define JSI_INIT_CODE_NAME ">init"
+#define JSI_ONINIT_NAME "onInit"
+
+/// autoLoad = do we load the current state if it exists?
+void jsiInit(bool autoLoad);
+void jsiKill();
+
+void jsiLoop();
+
+/// Tries to get rid of some memory (by clearing command history). Returns true if it got rid of something, false if it didn't.
+bool jsiFreeMoreMemory();
+
+bool jsiHasTimers(); // are there timers still left to run?
+JsParse *jsiGetParser();
+
+/// Queue up callbacks for other things (touchscreen? network?)
+void jsiQueueObjectCallbacks(JsVar *object, const char *callbackName, JsVar *arg0, JsVar *arg1);
+
+
+IOEventFlags jsiGetDeviceFromClass(JsVar *deviceClass);
+JsVar *jsiGetClassNameFromDevice(IOEventFlags device);
+
+/// Change the console to a new location
+void jsiSetConsoleDevice(IOEventFlags device);
+/// Get the device that the console is currently on
+IOEventFlags jsiGetConsoleDevice();
+/// Transmit a byte
+void jsiConsolePrintChar(char data);
+/// Transmit a string
+void jsiConsolePrint(const char *str);
+/// Write the formatted string to the console (see vcbprintf)
+void jsiConsolePrintf(const char *fmt, ...);
+/// Print the contents of a string var - directly
+void jsiConsolePrintStringVar(JsVar *v);
+/// Transmit an integer
+void jsiConsolePrintInt(JsVarInt d);
+/// Transmit a position in the lexer (for reporting errors)
+void jsiConsolePrintPosition(struct JsLex *lex, int tokenPos);
+/// Transmit the current line, along with a marker of where the error was (for reporting errors)
+void jsiConsolePrintTokenLineMarker(struct JsLex *lex, int tokenPos);
+/// Print the contents of a string var to a device - directly
+void jsiTransmitStringVar(IOEventFlags device, JsVar *v);
+/// If the input line was shown in the console, remove it
+void jsiConsoleRemoveInputLine();
+/// Change what is in the inputline into something else (and update the console)
+void jsiReplaceInputLine(JsVar *newLine);
+
+/// Flags for jsiSetBusy - THESE SHOULD BE 2^N
+typedef enum {
+ BUSY_INTERACTIVE = 1,
+ BUSY_TRANSMIT = 2,
+ // ??? = 4
+} JsiBusyDevice;
+/// Shows a busy indicator, if one is set up
+void jsiSetBusy(JsiBusyDevice device, bool isBusy);
+/// Shows a sleep indicator, if one is set up
+void jsiSetSleep(bool isSleep);
+
+
+// for jswrap_interactive/io.c ----------------------------------------------------
+typedef enum {
+ TODO_NOTHING = 0,
+ TODO_FLASH_SAVE = 1,
+ TODO_FLASH_LOAD = 2,
+ TODO_RESET = 4,
+} TODOFlags;
+#define USART_CALLBACK_NAME "_callback"
+#define USART_BAUDRATE_NAME "_baudrate"
+#define DEVICE_OPTIONS_NAME "_options"
+
+extern Pin pinBusyIndicator;
+extern Pin pinSleepIndicator;
+extern bool echo;
+extern bool allowDeepSleep;
+void jsiDumpState();
+void jsiSetTodo(TODOFlags newTodo);
+#define TIMER_MIN_INTERVAL 0.1 // in milliseconds
+extern JsVarRef timerArray; // Linked List of timers to check and run
+extern JsVarRef watchArray; // Linked List of input watches to check and run
+// end for jswrap_interactive/io.c ------------------------------------------------
+
+
+#endif /* JSINTERACTIVE_H_ */