-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})
- >>| upd (\(r,s,ss)->(r,s++[MTSpec],ss)) ch
- @! ()
+//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})
+// >>| upd (\(r,s,ss)->(r,s++[MTSpec],ss)) ch
+// @! ()
+// where
+// errorHandle e = withDevices d (\d->{d&deviceTask=Nothing,deviceError=Just e}) @! ()
+connectDevice :: (MTaskDevice (Shared Channels) -> Task ()) MTaskDevice -> Task Channels
+connectDevice procFun device = let ch = channels device
+ in appendTopLevelTask 'DM'.newMap True
+ ( procFun device ch
+ -||- catchAll (getSynFun device.deviceData ch) errHdl)
+ >>= \tid->withDevices device (\d->{d&deviceTask=Just tid,deviceError=Nothing})
+ >>| upd (\(r,s,ss)->(r,s++[MTSpec],ss)) ch