clean up share code and only show published tasks
[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 derive class iTask UserLED
10
11 countAndLed :: Main (ByteCode () Stmt)
12 countAndLed = sds \x=1 In sds \pinnetje=1 In {main =
13 IF (digitalRead D3) (
14 x =. x +. lit 1 :.
15 pub x
16 ) (
17 noOp
18 ) :.
19 IF (pinnetje ==. lit 1) (
20 ledOn LED1
21 ) (
22 IF (pinnetje ==. lit 2) (
23 ledOn LED2
24 ) (
25 ledOn LED3
26 )
27 )}
28
29 blink :: UserLED -> Main (ByteCode () Stmt)
30 blink led = sds \x=1 In {main =
31 IF (x ==. lit 1) (
32 ledOn led ) (
33 ledOff led ) :.
34 x =. lit 1 -. x :. noOp
35 }
36
37 ledtOn :: UserLED -> Main (ByteCode () Stmt)
38 ledtOn d = {main = ledOn d}
39
40 ledtOff :: UserLED -> Main (ByteCode () Stmt)
41 ledtOff d = {main = ledOff d}
42
43 ledSelection :: Task UserLED
44 ledSelection = enterInformation "Select LED" []
45
46 allmTasks :: Map String (Task (Main (ByteCode () Stmt)))
47 allmTasks = 'DM'.fromList [
48 ("countAndLed", treturn countAndLed),
49 ("ledOn", ledSelection @ ledtOn),
50 ("ledOff", ledSelection @ ledtOff),
51 ("blink", ledSelection @ blink)]