add readme
[mTask.git] / README.md
1 # mTask
2
3 ### Introduction
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
7 device.
8
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.
11
12 *mTasks* are written in [clean][clean] and specifically using the
13 [iTasks][itasks] library.
14
15 ### Workings of an *mTask* system
16 *mTasks* are routines that are executed in a round robin fashion
17
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.
22 **TODO**
23
24 ### Usage
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].
28
29 The following programs are available as of now:
30 - `mTaskExamples`
31
32 This compiles a list of mTask examples to `C` code.
33
34 - `mTaskMakeSymbols`
35
36 This creates the `mTaskSymbols.h` header file
37
38 - `mTaskInterpret`
39
40 This compiles a subset of *mTasks* to bytecode.
41
42 ### Protocol
43 The engine starts with no tasks. To send a new task the following protocol must
44 be adhered.
45 **TODO**
46
47 ### Bytecode operations
48 The header file for the interpreter with the corresponding bytevalues can be
49 generated by running `mTaskMakeSymbols`.
50
51 ### Author(s)
52 Initial work has been done by Pieter Koopman. Extensions have been made by Mart
53 Lubbers.
54
55 [clm]: https://svn.cs.ru.nl/repos/clean-tools/trunk/clm
56 [clean]: clean.cs.ru.nl
57 [itasks]: clean.cs.ru.nl/ITasks