From: Mart Lubbers Date: Sun, 12 Mar 2017 14:30:57 +0000 (+0100) Subject: Dynamic only in BCShare X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=4f7354793be250c86dd0d2fda737312d33d54231;p=mTask.git Dynamic only in BCShare --- diff --git a/Devices/mTaskDevice.icl b/Devices/mTaskDevice.icl index 0304e7e..a157e0b 100644 --- a/Devices/mTaskDevice.icl +++ b/Devices/mTaskDevice.icl @@ -114,7 +114,7 @@ sendToDevice wta mTask (device, timeout) = @! () where sharename i = device.deviceChannels +++ "-" +++ toString i - toSDSRecords st = sequence "" [makeShare wta sdsi sdsval\\{sdsi,sdspub,sdsval}<-st.sdss]// | sdspub] + toSDSRecords st = sequence "" [makeShare wta sdsi sdsbc\\{sdsi,sdspub,sdsbc}<-st.sdss]// | sdspub] addTask :: MTaskTask MTaskDevice -> MTaskDevice addTask task device = {device & deviceTasks=[task:device.deviceTasks]} diff --git a/Shares/mTaskShare.dcl b/Shares/mTaskShare.dcl index 3af2eac..a6967af 100644 --- a/Shares/mTaskShare.dcl +++ b/Shares/mTaskShare.dcl @@ -14,4 +14,5 @@ derive class iTask MTaskShareType manageShares :: [MTaskShare] -> Task () +///makeShare :: String Int Dynamic -> Task MTaskShare makeShare :: String Int String -> Task MTaskShare diff --git a/mTaskInterpret.dcl b/mTaskInterpret.dcl index f476232..999d734 100644 --- a/mTaskInterpret.dcl +++ b/mTaskInterpret.dcl @@ -85,7 +85,8 @@ derive class gCons BC :: BCShare = { sdsi :: Int, sdspub :: Bool, - sdsval :: String + sdsval :: Dynamic, + sdsbc :: String } :: BCState = { @@ -97,7 +98,7 @@ instance zero BCState class toByteCode a :: a -> String class fromByteCode a :: String -> a -class mTaskType a | toByteCode, fromByteCode a +class mTaskType a | toByteCode, fromByteCode, TC a instance toByteCode Int, Bool, Char, Long, String, Button, UserLED instance fromByteCode Int, Bool, Char, Long, String, Button, UserLED diff --git a/mTaskInterpret.icl b/mTaskInterpret.icl index 5acd1da..3606e66 100644 --- a/mTaskInterpret.icl +++ b/mTaskInterpret.icl @@ -215,9 +215,10 @@ unBC (BC x) = x instance sds ByteCode where sds f = {main = BC $ freshs >>= \sds->pure (f (tell` [BCSdsFetch sds])) - >>= \(v In bdy)->modify (addSDS sds (toByteCode v)) >>| unBC (unMain bdy)} + >>= \(v In bdy)->modify (addSDS sds v) >>| unBC (unMain bdy)} +// >>= \(v In bdy)->modify (addSDS sds (toByteCode v)) >>| unBC (unMain bdy)} where - addSDS i v s = {s & sdss=[{sdsi=i,sdspub=False,sdsval=v}:s.sdss]} + addSDS i v s = {s & sdss=[{sdsi=i,sdspub=False,sdsval=(dynamic v),sdsbc=toByteCode v}:s.sdss]} con f = undef pub (BC x) = BC $ censor (\[BCSdsFetch s]->[BCSdsPublish s]) @@ -286,7 +287,7 @@ toReadableByteCode x s toMessages :: MTaskInterval (String, BCState) -> ([MTaskMSGSend], BCState) toMessages interval (bytes, st=:{sdss}) = ( - [MTSds s.sdsi (toByteCode s.sdsval)\\s<-sdss] ++ + [MTSds s.sdsi s.sdsbc\\s<-sdss] ++ [MTTask interval bytes], st) toSDSUpdate :: Int Int -> [MTaskMSGSend]