started with device handshake
[mTask.git] / mTaskInterpret.dcl
index d104b02..f64cf62 100644 (file)
@@ -15,8 +15,9 @@ from Generics.gCons import class gCons, generic conses, generic consName, generi
        | MTTaskDelAck Int
        | MTSDSAck Int
        | MTSDSDelAck Int
-       | MTPub Int String
+       | MTPub Int BCValue
        | MTMessage String
+       | MTDevSpec MTaskDeviceSpec
        | MTEmpty
 
 :: MTaskMSGSend
@@ -30,6 +31,14 @@ from Generics.gCons import class gCons, generic conses, generic consName, generi
        | OnInterval Int
        | OnInterrupt Int
 
+:: MTaskDeviceSpec =
+               {haveLed :: Bool
+               ,haveAio :: Bool
+               ,haveDio :: Bool
+               ,maxTask :: Int //Should be number of bytes reserved in total for shares, tasks and functions
+               ,maxSDS  :: Int
+       }
+
 :: BCValue = E.e: BCValue e & mTaskType e
 
 instance toString MTaskInterval
@@ -84,7 +93,7 @@ decode :: String -> MTaskMSGRecv
        | BCDigitalWrite Pin
        | BCTest AnalogPin
 
-derive gPrint BCValue
+derive gPrint BCValue, MTaskDeviceSpec
 derive consIndex BCValue
 derive consName BCValue
 derive conses BCValue
@@ -104,8 +113,7 @@ derive gEq BCValue
 :: BCShare = {
                sdsi :: Int,
                sdspub :: Bool,
-               sdsval :: Dynamic,
-               sdsbc :: String
+               sdsval :: BCValue
        }
 
 :: BCState = {
@@ -120,11 +128,10 @@ class fromByteCode a :: String -> a
 class mTaskType a | toByteCode, fromByteCode, iTask, TC a
 
 instance toByteCode Int, Bool, Char, Long, String, Button, UserLED, BCValue
-instance fromByteCode Int, Bool, Char, Long, String, Button, UserLED
+instance fromByteCode Int, Bool, Char, Long, String, Button, UserLED, BCValue
 instance toByteCode MTaskInterval
-instance fromByteCode MTaskInterval
+instance fromByteCode MTaskInterval, MTaskDeviceSpec
 
-instance toChar Pin
 instance arith ByteCode
 instance boolExpr ByteCode
 instance analogIO ByteCode