named sds's
[mTask.git] / Tasks / mTaskTask.icl
index 46637e8..e828257 100644 (file)
@@ -9,26 +9,28 @@ import iTasks._Framework.Serialization
 derive class iTask MTaskTask, MTaskInterval, Main, ByteCode, Stmt, Expr, BC, BCState, RWST, Identity
 
 makeTask :: String Int -> Task MTaskTask
-makeTask name ident = get currentDateTime 
+makeTask name ident = get currentDateTime
        @ \dt->{MTaskTask | name=name,ident=ident,dateAdded=dt}
 
-sendTaskToDevice :: String (Main (ByteCode a Stmt)) (MTaskDevice, MTaskInterval) -> Task ()
-sendTaskToDevice wta mTask (device, timeout) =
-               get bcStateStore @ toMessages timeout mTask
-       >>= \(msgs, st1)->set st1 bcStateStore
-       >>| toSDSRecords msgs st1 device
-       >>= \sdss->upd ((++) sdss) sdsStore 
+import StdDebug
+import StdMisc
+sendTaskToDevice :: String (Main (ByteCode a Stmt)) (MTaskDevice, MTaskInterval) -> Task [MTaskDevice]
+sendTaskToDevice wta mTask (device, timeout)
+| not (trace_tn "compiling task") = undef
+# (msgs, newState=:{sdss}) = toMessages timeout mTask device.deviceState
+| not (trace_tn "Done compiling task") = undef
+# shares = [makeShare wta "" sdsi sdsval\\{sdsi,sdsval}<-sdss, (MTSds sdsi` _)<-msgs | sdsi == sdsi`]
+= updateShares device ((++) shares)
        >>| sendMessages msgs device
        >>| makeTask wta -1
-       >>= withDevices device o addTask
-       @! ()
+       >>= withDevices device o addTaskUpState newState
        where
-               sharename i = device.deviceChannels +++ "-" +++ toString i
+               addTaskUpState :: BCState MTaskTask MTaskDevice -> MTaskDevice
+               addTaskUpState st task device = { MTaskDevice | device &
+                       deviceState=st, deviceTasks=[task:device.deviceTasks]}
 
-               toSDSRecords :: [MTaskMSGSend] BCState MTaskDevice -> Task [MTaskShare]
-               toSDSRecords s st device = treturn 
-                       [makeShare wta device.deviceName sdsi sdsval
-                       \\{sdsi,sdsval}<-st.sdss, (MTSds sdsi` _)<-s | sdsi == sdsi`]
-
-               addTask :: MTaskTask MTaskDevice -> MTaskDevice
-               addTask task device = {device & deviceTasks=[task:device.deviceTasks]}
+//liftmTask :: String (Main (ByteCode a Stmt)) (MTaskDevice, MTaskInterval) -> Task a
+//liftmTask wta mTask (device, timeout)
+//     = sendTaskToDevice wta mTask (device, timeout)
+//     >>| wait "waiting for task to return" $ sdsFocus
+//     >>| treturn