| MTTaskDelAck Int
| MTSDSAck Int
| MTSDSDelAck Int
- | MTPub Int String
+ | MTPub Int BCValue
| MTMessage String
+ | MTDevSpec MTaskDeviceSpec
| MTEmpty
:: MTaskMSGSend
= MTTask MTaskInterval String
| MTTaskDel Int
- | MTSds Int String
- | MTUpd Int String
+ | MTSds Int BCValue
+ | MTUpd Int BCValue
+ | MTSpec
:: MTaskInterval
= OneShot
| 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
| BCDigitalWrite Pin
| BCTest AnalogPin
-derive gPrint BCValue
+derive gPrint BCValue, MTaskDeviceSpec
derive consIndex BCValue
derive consName BCValue
derive conses BCValue
derive consNum BCValue
derive class gCons Long, UserLED, Button, AnalogPin, DigitalPin, PinMode, Pin
-derive class iTask UserLED, Long, Pin, Button, AnalogPin, DigitalPin, PinMode
+derive class iTask UserLED, Long, Pin, Button, AnalogPin, DigitalPin, PinMode, MTaskDeviceSpec
derive gEditor BCValue
derive gText BCValue
derive JSONEncode BCValue
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
instance seq ByteCode
instance serial ByteCode
-toMessages :: MTaskInterval (String, BCState) -> ([MTaskMSGSend], BCState)
-toSDSUpdate :: Int Int -> [MTaskMSGSend]
+toMessages :: MTaskInterval (Main (ByteCode a b)) BCState -> ([MTaskMSGSend], BCState)
toByteVal :: BC -> String
toReadableByteCode :: (ByteCode a b) BCState -> (String, BCState)