connectDevice :: (MTaskDevice (Shared Channels) -> Task ()) MTaskDevice -> Task ()
connectDevice pf d = let ch = channels d in appendTopLevelTask 'DM'.newMap True
(pf d ch -||- catchAll (getSynFun d.deviceData ch) errorHandle)
- >>= \tid->withDevices d (\d->{d&deviceTask=Just tid,deviceError=Nothing}) @! ()
+ >>= \tid->withDevices d (\d->{d&deviceTask=Just tid,deviceError=Nothing})
+ >>| upd (\(r,s,ss)->(r,s++[MTSpec],ss)) ch
+ @! ()
where
errorHandle e = withDevices d (\d->{d&deviceTask=Nothing,deviceError=Just e})
deleteDevice d = upd (\(r,s,ss)->(r,s,True)) (channels d)
>>| maybe (treturn ()) (flip removeTask topLevelTasks) d.deviceTask
>>| upd (filter ((<>)d)) deviceStore
+// >>| upd (removeShares d) sdsStore
@! ()
sendToDevice :: String (Main (ByteCode () Stmt)) (MTaskDevice, MTaskInterval) -> Task ()