rewrite generation to rws
[mTask.git] / mTaskSimulation.dcl
index 2b13acf..ed86068 100644 (file)
@@ -1,10 +1,15 @@
 definition module mTaskSimulation
 
+from iTasks.API.Core.Types import class iTask, :: Task, generic gEditor, generic gText, generic JSONEncode, generic JSONDecode, generic gDefault, :: Editor, :: TextFormat, :: JSONNode
 import mTask
 
+:: 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)]
@@ -12,13 +17,11 @@ eval :: (Main (Eval t p)) -> [String] | toString t
   , millis:: Int
   }
 
-state0 :: State
-
-//:: 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,12 +105,12 @@ 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
 instance stringQuotes t
 
-derive   toGenDynamic (), MTask, DigitalPin, AnalogPin, Pin, [], Long //, Servo
-derive fromGenDynamic (), MTask, DigitalPin, AnalogPin, Pin, [], Long //, Servo
+derive   toGenDynamic (), MTask, DigitalPin, AnalogPin, Pin, [], Long, UserLED //, Servo
+derive fromGenDynamic (), MTask, DigitalPin, AnalogPin, Pin, [], Long, UserLED //, Servo
 instance ==   ()