(==) a b = a.deviceChannels == b.deviceChannels
startupDevices :: Task [MTaskDevice]
-startupDevices = upd (map reset) deviceStore
+startupDevices = upd (map reset) deviceStoreNP
where reset d = {d & deviceTask=Nothing, deviceTasks=[], deviceError=Nothing}
withDevice :: (MTaskDevice -> Task a) String -> Task a | iTask a
-withDevice f s = get deviceStore
+withDevice f s = get deviceStoreNP
>>= \ds->case 'DL'.find (\d->d.deviceName == s) ds of
Nothing = throw "Device not available"
Just d = f d
manageDevices :: (MTaskDevice (Shared Channels) -> Task ()) [MTaskDevice] -> Task ()
manageDevices processFun ds = anyTask [
- addDevice deviceStore processFun <<@ Title "Add new device" @! ():
+ addDevice deviceStoreNP processFun <<@ Title "Add new device" @! ():
[viewDevice processFun d
<<@ Title d.deviceName\\d<-ds]]
<<@ ArrangeWithTabs @! ()
>>| wait "Waiting for the channels to empty" (\(r,s,ss)->isEmpty s) (channels d)
>>| upd (\(r,s,ss)->(r,s,True)) (channels d)
>>| maybe (treturn ()) (flip removeTask topLevelTasks) d.deviceTask
- >>| upd (filter ((<>)d)) deviceStore
+ >>| upd (filter ((<>)d)) deviceStoreNP
// >>| cleanSharesDevice d.deviceName
@! ()
realMessageSend msgs (r,s,ss) = (r,msgs++s,ss)
withDevices :: MTaskDevice (MTaskDevice -> MTaskDevice) -> Task [MTaskDevice]
-withDevices a trans = upd (map \b->if (b == a) (trans b) b) deviceStore
+withDevices a trans = upd (map \b->if (b == a) (trans b) b) deviceStoreNP
deviceTaskAcked :: MTaskDevice Int Int -> Task [MTaskDevice]
deviceTaskAcked dev i mem