implementation module Utils.SDS import iTasks import iTasks._Framework.Store import Devices.mTaskDevice import Shares.mTaskShare import Tasks.Examples import qualified Data.Map as DM from Data.Func import $ import Data.Tuple memoryShare :: String a -> Shared a | iTask a memoryShare s d = sdsFocus s $ memoryStore s $ Just d deviceStoreNP :: Shared [MTaskDevice] deviceStoreNP = sdsFocus Nothing $ deviceStore deviceStore :: RWShared (Maybe Int) [MTaskDevice] [MTaskDevice] deviceStore = SDSSource {SDSSource | name = "deviceStore" , read = \_->read realDeviceStore , write= \p w->appFst ((<$) (lens p)) o write w realDeviceStore } lens Nothing _ = True lens _ Nothing = True lens (Just p) (Just p`) = p` == -1 || p == p` realDeviceStore :: Shared [MTaskDevice] realDeviceStore = sharedStore "mTaskDevices" [] bcStateStore :: Shared BCState bcStateStore = memoryShare "mTaskBCState" zero mTaskTaskStore :: Shared [String] mTaskTaskStore = memoryShare "mTaskTasks" $ 'DM'.keys allmTasks