import iTasks
import Devices.mTaskDevice
-
import iTasks._Framework.Serialization
derive class iTask MTaskTask, MTaskInterval, Main, ByteCode, Stmt, Expr, BC, BCState, RWST, Identity
makeTask name ident = get currentDateTime
@ \dt->{MTaskTask | name=name,ident=ident,dateAdded=dt}
-sendTaskToDevice :: String (Main (ByteCode () Stmt)) (MTaskDevice, MTaskInterval) -> Task ()
-sendTaskToDevice wta mTask (device, timeout) =
- get bcStateStore @ toMessages timeout mTask
- >>= \(msgs, st1)->set st1 bcStateStore
- >>| toSDSRecords msgs st1
- >>= \sdss->upd (mergeShares 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) = toMessages timeout mTask device.deviceState
+| not (trace_tn "Done compiling task") = undef
+# shares = [makeShare wta sdsi sdsval\\{sdsi,sdsval}<-newState.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
-
- toSDSRecords :: [MTaskMSGSend] BCState -> Task [MTaskShare]
- toSDSRecords s st = sequence ""
- [makeShare wta sdsi sdsval
- \\{sdsi,sdspub,sdsval}<-st.sdss
- , (MTSds sdsi` _)<-s
- | sdsi == sdsi`]
-
- mergeShares a b = a ++ b
-
- addTask :: MTaskTask MTaskDevice -> MTaskDevice
- addTask task device = {device & deviceTasks=[task:device.deviceTasks]}
+ addTaskUpState :: BCState MTaskTask MTaskDevice -> MTaskDevice
+ addTaskUpState st task device = { MTaskDevice | device &
+ deviceState=st, deviceTasks=[task:device.deviceTasks]}