4 *mTasks* are small imperative tasks that can be run on an embedded device like
5 arduino/ESPxxx/Nucleo arm boards. They are communicated to the device in
6 bytecode which is interpreted by the engine that has to be programmed on the
9 The devices suitable for *mTasks* are not limited to embedded devices. In the
10 `int` folder is a `C` reference implementation available for intel machines.
12 *mTasks* are written in [clean][clean] and specifically using the
13 [iTasks][itasks] library.
15 ### Workings of an *mTask* system
16 *mTasks* are routines that are executed in a round robin fashion
18 ### Communication back to the server via shared data sources
19 When a shared data source is updated the *mTask* can publish this data back to
20 the server. This is usefull when for example a temperature reaches a certain
21 threshhold. How this communication will be done is yet to be researched.
25 All programs can be built by running `make`. Note that you need the latest
26 `clm` version if you want to use the `Makefile` since hierarchical modules are
27 used. This version can be found [here][clm].
29 The following programs are available as of now:
32 This compiles a list of mTask examples to `C` code.
36 This creates the `mTaskSymbols.h` header file
40 This compiles a subset of *mTasks* to bytecode.
43 The server can send task specifications to the microcontroller by sending:
45 | 's' | n | n bytes | newline
47 Where n is a 16bit integer.
49 ### Bytecode operations
50 The header file for the interpreter with the corresponding bytevalues can be
51 generated by running `mTaskMakeSymbols`.
54 Initial work has been done by Pieter Koopman. Extensions have been made by Mart
57 [clm]: https://svn.cs.ru.nl/repos/clean-tools/trunk/clm
58 [clean]: clean.cs.ru.nl
59 [itasks]: clean.cs.ru.nl/ITasks