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 :: 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
- >>= \sdss->upd (mergeShares sdss) sdsStore
+ >>| toSDSRecords msgs st1 device
+ >>= \sdss->updateShares device ((++) sdss)
>>| sendMessages msgs device
>>| makeTask wta -1
>>= withDevices device o addTask
where
sharename i = device.deviceChannels +++ "-" +++ toString i
- toSDSRecords :: [MTaskMSGSend] BCState -> Task [MTaskShare]
- toSDSRecords s st = sequence ""
+ toSDSRecords :: [MTaskMSGSend] BCState MTaskDevice -> Task [MTaskShare]
+ toSDSRecords s st device = treturn
[makeShare wta sdsi sdsval
- \\{sdsi,sdspub,sdsval}<-st.sdss
- , (MTSds sdsi` _)<-s
- | sdsi == sdsi`]
-
- mergeShares a b = a ++ b
+ \\{sdsi,sdsval}<-st.sdss, (MTSds sdsi` _)<-s | sdsi == sdsi`]
addTask :: MTaskTask MTaskDevice -> MTaskDevice
addTask task device = {device & deviceTasks=[task:device.deviceTasks]}