refactoors
[mTask.git] / mTaskCode.icl
index 8402abe..3cec065 100644 (file)
@@ -1,7 +1,11 @@
 implementation module mTaskCode
 
-import iTasks
-import gdynamic, gCons, GenEq, StdMisc, StdArray
+import Generics.gdynamic
+import Generics.gCons
+import StdEnv
+
+//import iTasks
+import GenEq, StdMisc, StdArray
 import mTask
 
 instance toCode MTask where toCode (MTask x) = "Task " + toCode x 
@@ -352,23 +356,6 @@ instance analogIO Code where
 instance noOp Code where noOp = C \rw c.c
 
 :: Code a p = C ((ReadWrite (Code a Expr)) CODE -> CODE)
-:: CODE =
-  { fresh      :: Int
-  , freshMTask :: Int
-  , funs       :: [String]
-  , ifuns                      :: Int
-  , vars         :: [String]
-  , ivars                      :: Int
-  , setup                      :: [String]
-  , isetup       :: Int
-  , loop         :: [String]
-  , iloop                      :: Int
-  , includes  :: [String]
-  , def          :: Def
-  , mode         :: Mode
-  , binds                      :: [String]
-  }
-
 unC :: (Code a p) -> ((ReadWrite (Code a Expr)) CODE -> CODE)
 unC (C f) = f
 
@@ -376,10 +363,10 @@ unC (C f) = f
 :: Mode = /*MainMode |*/ NoReturn | Return String | SubExp | Assign String
 
 setMode :: Mode -> Code a p
-setMode m = C \rw c.{c & mode = m}
+setMode m = C \rw c.{CODE|c & mode` = m}
 
 getMode :: (Mode -> Code a p) -> Code a p
-getMode f = C \rw c.unC (f c.mode) rw c
+getMode f = C \rw c.unC (f c.mode`) rw c
 
 embed :: (Code a p) -> Code a p
 embed e =
@@ -608,7 +595,7 @@ newCode =
   , iloop   = 4
   , includes  = []
   , def     = Setup
-  , mode    = NoReturn
+  , mode`    = NoReturn
   , binds              = []
   }
 
@@ -635,4 +622,8 @@ instance toCode AnalogPin  where toCode x = consName{|*|} x
 instance toCode Pin where
     toCode (Digital p) = toCode p
     toCode (Analog  p) = toCode p
+instance toCode UserLED where
+       toCode LED1 = toCode 1
+       toCode LED2 = toCode 2
+       toCode LED3 = toCode 3