1 implementation module Utils.SDS
4 import iTasks._Framework.Store
5 import Devices.mTaskDevice
6 import Shares.mTaskShare
8 import qualified Data.Map as DM
9 from Data.Func import $
12 memoryShare :: String a -> Shared a | iTask a
13 memoryShare s d = sdsFocus s $ memoryStore s $ Just d
15 deviceStoreNP :: Shared [MTaskDevice]
16 deviceStoreNP = sdsFocus Nothing $ deviceStore
18 deviceStore :: RWShared (Maybe Int) [MTaskDevice] [MTaskDevice]
19 deviceStore = SDSSource {SDSSource
20 | name = "deviceStore"
21 , read = \_->read realDeviceStore
22 , write= \p w->appFst ((<$) (lens p)) o write w realDeviceStore
27 lens (Just p) (Just p`) = p` == -1 || p == p`
29 realDeviceStore :: Shared [MTaskDevice]
30 realDeviceStore = sharedStore "mTaskDevices" []
32 bcStateStore :: Shared BCState
33 bcStateStore = memoryShare "mTaskBCState" zero
35 mTaskTaskStore :: Shared [String]
36 mTaskTaskStore = memoryShare "mTaskTasks" $ 'DM'.keys allmTasks