-sendToDevice :: (Map String (Main (ByteCode () Stmt))) String (MTaskDevice, Int) -> Task ()
-sendToDevice tmap mTask (device, timeout) =
- get bcStateStore @ createBytecode
- >>= \(msgs, st1)->set st1 bcStateStore @ toSDSRecords
- >>= \sdss->upd ((++)sdss) sdsStore//MTaskShareaddToSDSShare
- >>| makeShares sdss
- >>| sendMessage device msgs
- >>| makeTask mTask -1
- >>= \task->withDevices device (addTask timeout task)
+deleteDevice :: MTaskDevice -> Task ()
+deleteDevice d = upd (\(r,s,ss)->(r,s,True)) (channels d)
+ >>| maybe (treturn ()) (flip removeTask topLevelTasks) d.deviceTask
+ >>| upd (filter ((==)d)) deviceStore
+ @! ()
+
+sendToDevice :: String (Main (ByteCode () Stmt)) (MTaskDevice, MTaskInterval) -> Task ()
+sendToDevice wta mTask (device, timeout) =
+ traceValue "starting to send"
+ >>| get bcStateStore @ toMessages timeout o toRealByteCode (unMain mTask)
+ >>= \(msgs, st1)->traceValue "messages generated"
+ >>| set st1 bcStateStore
+ >>| traceValue "bcstate store updated"
+ >>| toSDSRecords st1
+ >>= \sdss->traceValue "Shares created"
+ >>| set sdss sdsStore//MTaskShareaddToSDSShare
+ >>| traceValue "Shares store updated"
+ >>| sendMessages msgs device
+ >>| traceValue "Messages sent"
+ >>| makeTask wta -1
+ >>= \t->traceValue "Task made"
+ >>| withDevices device (addTask t)
+ >>| traceValue "Tasks share updated"