where
dropEmpty (r,s,ss) = (filter ((=!=)MTEmpty) r,s,ss)
-sendToDevice :: (Map String (Main (ByteCode () Stmt))) String (MTaskDevice, Int) -> Task ()
-sendToDevice tmap mTask (device, timeout) =
- get bcStateStore @ createBytecode
+sendToDevice :: String (Main (ByteCode () Stmt)) (MTaskDevice, Int) -> Task ()
+sendToDevice wta mTask (device, timeout) =
+ get bcStateStore
+ >>= \st->treturn (toMessages timeout (toRealByteCode (unMain mTask) st))
>>= \(msgs, st1)->set st1 bcStateStore @ toSDSRecords
>>= \sdss->upd ((++)sdss) sdsStore//MTaskShareaddToSDSShare
>>| makeShares sdss
>>| sendMessage device msgs
- >>| makeTask mTask -1
+ >>| makeTask wta -1
>>= \task->withDevices device (addTask timeout task)
@! ()
where
- createBytecode st = toMessages timeout $ toRealByteCode (unMain $ fromJust ('DM'.get mTask tmap)) st
sharename i = device.deviceChannels +++ "-" +++ toString i
toSDSRecords st = [{MTaskShare |
initValue=toInt d1*265 + toInt d2,
- withTask=mTask,
+ withTask=wta,
identifier=i,
realShare="mTaskSDS-" +++ toString i}
\\(i,[d1,d2])<-st.sdss]