started with device handshake
[mTask.git] / mTaskInterpret.dcl
index 92f6683..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
@@ -121,7 +130,7 @@ 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, BCValue
 instance toByteCode MTaskInterval
-instance fromByteCode MTaskInterval
+instance fromByteCode MTaskInterval, MTaskDeviceSpec
 
 instance arith ByteCode
 instance boolExpr ByteCode