// >>| upd (removeShares d) sdsStore
@! ()
-sendToDevice :: String (Main (ByteCode () Stmt)) (MTaskDevice, MTaskInterval) -> Task ()
-sendToDevice wta mTask (device, timeout) =
- get bcStateStore @ toMessages timeout o toRealByteCode (unMain mTask)
- >>= \(msgs, st1)->set st1 bcStateStore
- >>| toSDSRecords st1
- >>= \sdss->set sdss sdsStore//MTaskShareaddToSDSShare
- >>| sendMessages msgs device
- >>| makeTask wta -1
- >>= withDevices device o addTask
- @! ()
- where
- sharename i = device.deviceChannels +++ "-" +++ toString i
- toSDSRecords st = sequence "" [makeShare wta sdsi sdsval\\{sdsi,sdspub,sdsval}<-st.sdss]// | sdspub]
-
- addTask :: MTaskTask MTaskDevice -> MTaskDevice
- addTask task device = {device & deviceTasks=[task:device.deviceTasks]}
sendMessages :: [MTaskMSGSend] -> (MTaskDevice -> Task Channels)
sendMessages msgs = upd (\(r,s,ss)->(r,msgs++s,ss)) o channels