1 definition module mTaskSimulation
5 eval :: (Main (Eval t p)) -> [String] | toString t
7 { tasks :: [(Int, State->State)]
9 , dpins :: [(DigitalPin, Bool)]
10 , apins :: [(AnalogPin, Int)]
17 //:: TaskSim :== (Int, State->State)
18 :: Eval t p = E ((ReadWrite t) State -> (t, State))
19 toS2S :: (Eval t p) -> (State->State)
21 unEval :: (Eval t p) -> ((ReadWrite t) State -> (t, State))
23 :: ReadWrite t = Rd | Wrt t | Updt (t->t)
25 (>>==) infixl 1 :: (Eval a p) (a -> Eval b q) -> Eval b r
26 //(>>== ) (E f) g = E \r s. let (a, s2) = f Rd s; (E h) = g a in h Rd s2
30 yield :: t (Eval s p) -> Eval t Expr
31 //yield a (E f) = E (\r s.(\(_,t).(a,t)) (f r s))
34 instance boolExpr Eval
35 instance If Eval p q Expr
39 defEval2 :: t ((Eval t p)->Main (Eval u q)) -> (Main (Eval u q)) | dyn t
42 defEval :: ((Eval t p)->In t (Main (Eval u q))) -> (Main (Eval u q)) | dyn t
43 instance fun Eval x | arg x
44 instance mtask Eval x | arg x
45 instance mtasks Eval x y | arg x & arg y
46 instance setDelay Eval
48 class toExpr v where toExpr :: (v t p) -> v t Expr
55 instance digitalIO Eval
56 instance analogIO Eval
59 class arg x :: x -> Int
61 instance arg (Eval t p) | type t
62 instance arg (Eval t p, Eval u q) | type t & type u
63 instance arg (Eval t p, Eval u q, Eval v r) | type t & type u & type v
64 instance arg (Eval t p, Eval u q, Eval v r, Eval w s) | type t & type u & type v
68 readPinA :: AnalogPin [(AnalogPin, Int)] -> Int
69 writePinA :: AnalogPin Int State -> State
71 class readPinD p :: p [(DigitalPin,Bool)] [(AnalogPin,Int)] -> Bool
72 instance readPinD DigitalPin
73 instance readPinD AnalogPin
75 class writePinD p :: p Bool State -> State
76 instance writePinD DigitalPin
77 instance writePinD AnalogPin
79 // ----- Interactive Simulation ----- //
81 derive class iTask DigitalPin, AnalogPin, Dyn, StateInterface, DisplayVar, Pin
83 simulate :: (Main (Eval a p)) -> Task ()
84 toView :: State -> StateInterface
85 mergeView :: State StateInterface -> State
87 { serialOut :: Display [String]
88 , analogPins :: [(AnalogPin, Int)]
89 , digitalPins :: [(DigitalPin, Bool)]
90 , var2iables :: [DisplayVar]
92 , taskCount :: Display Int
95 toDisplayVar :: Dyn -> DisplayVar
96 fromDisplayVar :: DisplayVar Dyn -> Dyn
102 | LCD16x2 String String
103 | DisplayVar [String]
105 step` :: State -> State
107 class stringQuotes t | type t :: (Code t p) -> Code t p
108 instance stringQuotes String
109 instance stringQuotes t
111 derive toGenDynamic (), MTask, DigitalPin, AnalogPin, Pin, [], Long //, Servo
112 derive fromGenDynamic (), MTask, DigitalPin, AnalogPin, Pin, [], Long //, Servo