>>| upd (filter ((==)d)) deviceStore
@! ()
-sendToDevice :: String (Main (ByteCode () Stmt)) (MTaskDevice, Int) -> Task ()
+sendToDevice :: String (Main (ByteCode () Stmt)) (MTaskDevice, MTaskInterval) -> Task ()
sendToDevice wta mTask (device, timeout) =
- get bcStateStore @ toMessages timeout o toRealByteCode (unMain mTask)
+ get bcStateStore
+ @ (\st->toMessages timeout (toRealByteCode (unMain mTask) {st & sdss=[]}))
>>= \(msgs, st1)->set st1 bcStateStore @ toSDSRecords
>>= \sdss->upd ((++)sdss) sdsStore//MTaskShareaddToSDSShare
>>| makeShares sdss
>>| sendMessage device msgs
>>| makeTask wta -1
- >>= withDevices device o addTask timeout
+ >>= withDevices device o addTask
@! ()
where
sharename i = device.deviceChannels +++ "-" +++ toString i
\\(i,[d1,d2])<-st.sdss]
makeShares = foldr (\sh t->set sh.initValue (getSDSStore sh) >>| t) (treturn ())
- addTask :: Int MTaskTask MTaskDevice -> MTaskDevice
- addTask timeout task device = {device & deviceTasks=[task:device.deviceTasks]}
+ addTask :: MTaskTask MTaskDevice -> MTaskDevice
+ addTask task device = {device & deviceTasks=[task:device.deviceTasks]}
sendMessage :: MTaskDevice [MTaskMSGSend] -> Task ()
sendMessage dev msgs = upd (\(r,s,ss)->(r,msgs++s,ss)) (channels dev) @! ()