X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=mTaskSimulation.dcl;h=1669f23ca12593a7681b3e76033c8f3e41f96f24;hb=af388f6b2c06d38b400d482ac3ccc1f819b5bf9f;hp=496bd521a3924074043a7ac74923c4676eef4e79;hpb=dd0896b855fc81e10b45b9407fead457a027f645;p=mTask.git diff --git a/mTaskSimulation.dcl b/mTaskSimulation.dcl index 496bd52..1669f23 100644 --- a/mTaskSimulation.dcl +++ b/mTaskSimulation.dcl @@ -1,12 +1,15 @@ definition module mTaskSimulation +import iTasks.API.Core.Types import mTask -instance zero State +:: Display a = Display a + +derive class iTask Display eval :: (Main (Eval t p)) -> [String] | toString t -:: State = - { tasks :: [(Int, State->State)] +:: State` = + { tasks :: [(Int, State`->State`)] , store :: [Dyn] , dpins :: [(DigitalPin, Bool)] , apins :: [(AnalogPin, Int)] @@ -14,11 +17,11 @@ eval :: (Main (Eval t p)) -> [String] | toString t , millis:: Int } -//:: TaskSim :== (Int, State->State) -:: Eval t p = E ((ReadWrite t) State -> (t, State)) -toS2S :: (Eval t p) -> (State->State) +//:: TaskSim :== (Int, State`->State`) +:: Eval t p = E ((ReadWrite t) State` -> (t, State`)) +toS2S :: (Eval t p) -> (State`->State`) -unEval :: (Eval t p) -> ((ReadWrite t) State -> (t, State)) +unEval :: (Eval t p) -> ((ReadWrite t) State` -> (t, State`)) :: ReadWrite t = Rd | Wrt t | Updt (t->t) @@ -66,13 +69,13 @@ instance arg (Eval t p, Eval u q, Eval v r, Eval w s) | type t & type u & type v instance + String readPinA :: AnalogPin [(AnalogPin, Int)] -> Int -writePinA :: AnalogPin Int State -> State +writePinA :: AnalogPin Int State` -> State` class readPinD p :: p [(DigitalPin,Bool)] [(AnalogPin,Int)] -> Bool instance readPinD DigitalPin instance readPinD AnalogPin -class writePinD p :: p Bool State -> State +class writePinD p :: p Bool State` -> State` instance writePinD DigitalPin instance writePinD AnalogPin @@ -81,8 +84,8 @@ instance writePinD AnalogPin derive class iTask DigitalPin, AnalogPin, Dyn, StateInterface, DisplayVar, Pin simulate :: (Main (Eval a p)) -> Task () -toView :: State -> StateInterface -mergeView :: State StateInterface -> State +toView :: State` -> StateInterface +mergeView :: State` StateInterface -> State` :: StateInterface = { serialOut :: Display [String] , analogPins :: [(AnalogPin, Int)] @@ -102,7 +105,7 @@ fromDisplayVar :: DisplayVar Dyn -> Dyn | LCD16x2 String String | DisplayVar [String] -step` :: State -> State +step` :: State` -> State` class stringQuotes t | type t :: (Code t p) -> Code t p instance stringQuotes String