from Generics.gCons import class gCons, generic conses, generic consName, generic consIndex, generic consNum
:: MTaskMSGRecv
- = MTTaskAck Int
+ = MTTaskAck Int Int
| 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
+ ,bytesMemory :: Int
+ }
+
:: BCValue = E.e: BCValue e & mTaskType e
instance toString MTaskInterval
//Binary Bool ops
| BCAnd
| BCOr
+ //Binary ops
| BCEq
| BCNeq
| BCLes
| BCAnalogWrite Pin
| BCDigitalRead Pin
| BCDigitalWrite Pin
- | BCTest AnalogPin
+ //Return
+ | BCReturn
-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
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
instance If ByteCode x y Stmt
instance IF ByteCode
instance noOp ByteCode
+instance retrn ByteCode
instance sds ByteCode
instance assign 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)