Dynamic only in BCShare
authorMart Lubbers <mart@martlubbers.net>
Sun, 12 Mar 2017 14:30:57 +0000 (15:30 +0100)
committerMart Lubbers <mart@martlubbers.net>
Sun, 12 Mar 2017 14:31:01 +0000 (15:31 +0100)
Devices/mTaskDevice.icl
Shares/mTaskShare.dcl
mTaskInterpret.dcl
mTaskInterpret.icl

index 0304e7e..a157e0b 100644 (file)
@@ -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]}
index 3af2eac..a6967af 100644 (file)
@@ -14,4 +14,5 @@ derive class iTask MTaskShareType
 
 manageShares :: [MTaskShare] -> Task ()
 
+///makeShare :: String Int Dynamic -> Task MTaskShare
 makeShare :: String Int String -> Task MTaskShare
index f476232..999d734 100644 (file)
@@ -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
index 5acd1da..3606e66 100644 (file)
@@ -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]