*mTasks* are written in [clean][clean] and specifically using the
[iTasks][itasks] library.
-### Workings of an *mTask* system
-*mTasks* are routines that are executed in a round robin fashion
+### How to setup the iTask system
+Get the latest iTask and run Make. Make sure to have `gcc-5`.
-### Communication back to the server via shared data sources
-When a shared data source is updated the *mTask* can publish this data back to
-the server. This is usefull when for example a temperature reaches a certain
-threshhold. How this communication will be done is yet to be researched.
-**TODO**
+### How to setup the interpreter
+For the linux version install `gcc` and run `make -f Makefile.linux` in the
+`./int` directory
-### Usage
-All programs can be built by running `make`. Note that you need the latest
-`clm` version if you want to use the `Makefile` since hierarchical modules are
-used. This version can be found [here][clm].
-
-The following programs are available as of now:
-- `mTaskExamples`
-
- This compiles a list of mTask examples to `C` code.
-
-- `mTaskMakeSymbols`
-
- This creates the `mTaskSymbols.h` header file
-
-- `mTaskInterpret`
-
- This compiles a subset of *mTasks* to bytecode.
+For the STM version install `gcc-arm-none-eabi` and run `make` in the `./int`
+directory. To flash the binary to the device install (a recent version of)
+`openocd` and run `make flash` in the `./int` directory.
### Protocol
-The engine starts with no tasks. To send a new task the following protocol must
-be adhered.
-**TODO**
+The server can send task specifications to the microcontroller by sending:
+| id | length
+| 's' | n | n bytes | newline
-### Bytecode operations
-The header file for the interpreter with the corresponding bytevalues can be
-generated by running `mTaskMakeSymbols`.
+Where n is a 16bit integer.
### Author(s)
Initial work has been done by Pieter Koopman. Extensions have been made by Mart
Lubbers.
-[clm]: https://svn.cs.ru.nl/repos/clean-tools/trunk/clm
[clean]: clean.cs.ru.nl
[itasks]: clean.cs.ru.nl/ITasks