X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=Utils%2FSDS.icl;h=a7c376341a23dbf844bd764dddc323cc9742ccac;hb=684c702b39ebd339cb123a24f1f37a63d708e688;hp=f1184a86da57874142febd6a3f35b791e11128a4;hpb=b3d2bd33a99a2dbdc4907b6876a965c16c37314c;p=mTask.git diff --git a/Utils/SDS.icl b/Utils/SDS.icl index f1184a8..a7c3763 100644 --- a/Utils/SDS.icl +++ b/Utils/SDS.icl @@ -4,21 +4,33 @@ 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 $ - -derive class iTask MTaskShare, BCState +import Data.Tuple memoryShare :: String a -> Shared a | iTask a -memoryShare s d = sdsFocus s $ memoryStore "" $ Just d +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 + } -deviceStore :: Shared [MTaskDevice] -deviceStore = sharedStore "mTaskDevices" [] +lens Nothing _ = True +lens _ Nothing = True +lens (Just p) (Just p`) = p` == -1 || p == p` -sdsStore :: Shared [MTaskShare] -sdsStore = memoryShare "mTaskShares" [] +realDeviceStore :: Shared [MTaskDevice] +realDeviceStore = sharedStore "mTaskDevices" [] bcStateStore :: Shared BCState bcStateStore = memoryShare "mTaskBCState" zero mTaskTaskStore :: Shared [String] -mTaskTaskStore = memoryShare "mTaskTasks" ["count", "ledon", "ledoff"] +mTaskTaskStore = memoryShare "mTaskTasks" $ 'DM'.keys allmTasks