updates
[mTask.git] / mTaskInterpret.dcl
index 0fb9efc..2701fcf 100644 (file)
@@ -5,16 +5,31 @@ from Control.Monad.State import :: State, :: StateT
 from Data.Monoid import class Semigroup, class Monoid
 import mTask
 
-:: MTaskMessage 
-       = MTSds Int String
-       | MTTask Int String
+:: MTaskMSGRecv
+       = MTTaskAck Int
+       | MTTaskDelAck Int
+       | MTSDSAck Int
+       | MTSDSDelAck Int
        | MTPub Int String
-       | MTUpd Int String
+       | MTMessage String
        | MTEmpty
 
-instance toString MTaskMessage
-encode :: MTaskMessage -> String
-decode :: String -> MTaskMessage
+:: MTaskMSGSend
+       = MTTask MTaskInterval String
+       | MTTaskDel Int
+       | MTSds Int String
+       | MTUpd Int String
+
+:: MTaskInterval
+       = OneShot
+       | OnInterval Int
+       | OnInterrupt Int
+
+instance toString MTaskInterval
+instance toString MTaskMSGRecv
+instance toString MTaskMSGSend
+encode :: MTaskMSGSend -> String
+decode :: String -> MTaskMSGRecv
 
 :: BC
        = BCNop
@@ -45,6 +60,9 @@ decode :: String -> MTaskMessage
        | BCJmp Int
        | BCJmpT Int
        | BCJmpF Int
+       //UserLED
+       | BCLedOn [Char]
+       | BCLedOff [Char]
        //Serial
        | BCSerialAvail
        | BCSerialPrint
@@ -76,16 +94,19 @@ instance toByteCode Char
 instance toByteCode String
 instance toByteCode Long
 instance toByteCode Button
+instance toByteCode UserLED
+//instance toByteCode MTaskInterval
 
 instance toChar Pin
 instance arith ByteCode
 instance boolExpr ByteCode
 instance analogIO ByteCode
 instance digitalIO ByteCode
-instance If ByteCode Stmt Stmt Stmt
-instance If ByteCode Stmt e Stmt
-instance If ByteCode Stmt Stmt e
-instance If ByteCode x y Expr
+instance userLed ByteCode
+//instance If ByteCode Stmt Stmt Stmt
+//instance If ByteCode e Stmt Stmt
+//instance If ByteCode Stmt e Stmt
+instance If ByteCode x y Stmt
 instance IF ByteCode
 instance noOp ByteCode
 
@@ -94,10 +115,9 @@ instance assign ByteCode
 instance seq ByteCode
 instance serial ByteCode
 
-pub :: (ByteCode a b) -> ByteCode a b
-
-toMessages :: Int (String, BCState) -> [MTaskMessage]
+toMessages :: MTaskInterval (String, BCState) -> ([MTaskMSGSend], BCState)
+toSDSUpdate :: Int Int -> [MTaskMSGSend]
 
 toByteVal :: BC -> [Char]
 toReadableByteCode :: (ByteCode a b) -> (String, BCState)
-toRealByteCode :: (ByteCode a b) -> (String, BCState)
+toRealByteCode :: (ByteCode a b) BCState -> (String, BCState)