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