X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=mTaskCode.icl;h=cca5a6730b00693454ba24e91baa11690003365d;hb=71726cdfddd9dfa11395f10ef3b5af28613fd5a0;hp=8402abe01f439e15b07066bb0f6e84babe2fcdf9;hpb=4d5f3a126218768cf63fc693a095dd42247aa2c9;p=mTask.git diff --git a/mTaskCode.icl b/mTaskCode.icl index 8402abe..cca5a67 100644 --- a/mTaskCode.icl +++ b/mTaskCode.icl @@ -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 @@ -74,6 +78,7 @@ instance sds Code where in setCode Var +.+ c (type2string v + " " + name + " = " + toCode v + ";\n") +.+ setCode Setup +.+ unMain body} con f = defCode f + pub _ = undef defCode :: ((Code t p) -> In t (Main (Code u q))) -> Main (Code u r) | type t defCode f = @@ -352,23 +357,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 +364,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 +596,7 @@ newCode = , iloop = 4 , includes = [] , def = Setup - , mode = NoReturn + , mode` = NoReturn , binds = [] } @@ -635,4 +623,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