7d872efff6b4d4c61ef24bcf2956f503b6ed4386
[mTask.git] / Tasks / Examples.icl
1 implementation module Tasks.Examples
2
3 import qualified Data.Map as DM
4 import mTask
5
6 import iTasks._Framework.Serialization
7
8 derive class iTask UserLED, Main, ByteCode, Stmt, BC, BCState
9
10 countAndLed :: Main (ByteCode () Stmt)
11 countAndLed = sds \x=1 In sds \pinnetje=1 In {main =
12 IF (digitalRead D3) (
13 x =. x +. lit 1 :.
14 pub x
15 ) (
16 noOp
17 ) :.
18 IF (pinnetje ==. lit 1) (
19 ledOn LED1
20 ) (
21 IF (pinnetje ==. lit 2) (
22 ledOn LED2
23 ) (
24 ledOn LED3
25 )
26 )}
27
28 blink :: UserLED -> Main (ByteCode () Stmt)
29 blink led = sds \x=1 In {main =
30 IF (x ==. lit 1) (
31 ledOn led ) (
32 ledOff led ) :.
33 x =. lit 1 -. x :. noOp
34 }
35
36 ledtOn :: UserLED -> Main (ByteCode () Stmt)
37 ledtOn d = {main = ledOn d}
38
39 ledtOff :: UserLED -> Main (ByteCode () Stmt)
40 ledtOff d = {main = ledOff d}
41
42 ledSelection :: Task UserLED
43 ledSelection = enterInformation "Select LED" []
44
45 allmTasks :: Map String (Task (Main (ByteCode () Stmt)))
46 allmTasks = 'DM'.fromList [
47 ("countAndLed", treturn countAndLed),
48 ("ledOn", ledSelection @ ledtOn),
49 ("ledOff", ledSelection @ ledtOff),
50 ("blink", ledSelection @ blink)]