make share unique for device
authorMart Lubbers <mart@martlubbers.net>
Sun, 11 Jun 2017 07:43:52 +0000 (09:43 +0200)
committerMart Lubbers <mart@martlubbers.net>
Sun, 11 Jun 2017 07:43:52 +0000 (09:43 +0200)
Devices/mTaskDevice.dcl
Devices/mTaskDevice.icl
Shares/mTaskShare.dcl
Shares/mTaskShare.icl
Tasks/mTaskTask.icl

index dc097f5..bae443e 100644 (file)
@@ -25,6 +25,7 @@ derive consName MTaskResource, TCPSettings
                , deviceError :: Maybe String
                , deviceChannels :: String
                , deviceName :: String
+               , deviceState :: BCState
                , deviceTasks :: [MTaskTask]
                , deviceData :: MTaskResource
                , deviceSpec :: Maybe MTaskDeviceSpec
index 0a6ab0f..f4789cc 100644 (file)
@@ -44,6 +44,7 @@ makeDevice name res = get randomInt @ \rand->{MTaskDevice
                ,deviceTasks=[]
                ,deviceTask=Nothing
                ,deviceError=Nothing
+               ,deviceState=zero
                ,deviceData=res
                ,deviceSpec=Nothing
                ,deviceShares=[]}
index 57855c1..2ba97cb 100644 (file)
@@ -6,6 +6,7 @@ import mTask
 import Devices.mTaskDevice
 
 derive class iTask MTaskShare
+derive gPrint BCState
 
 :: MTaskShare =
                {withTask :: [String]
index 81ebb8b..43350e1 100644 (file)
@@ -68,6 +68,9 @@ makeShare withTask identifier value = {MTaskShare
                }
 
 import GenPrint, StdMisc, StdDebug, TTY
+
+gPrint{|BCState|} x st = gPrint{|*|} "BCState..." st
+
 derive gPrint MTaskDevice, MTaskShare, Maybe, MTaskResource, MTaskTask, TaskId, TTYSettings, TCPSettings, DateTime
 derive gPrint Parity, BaudRate, ByteSize
 
index 27edc82..41741d2 100644 (file)
@@ -13,14 +13,13 @@ makeTask name ident = get currentDateTime
        @ \dt->{MTaskTask | name=name,ident=ident,dateAdded=dt}
 
 sendTaskToDevice :: String (Main (ByteCode a Stmt)) (MTaskDevice, MTaskInterval) -> Task ()
-sendTaskToDevice wta mTask (device, timeout) =
-               get bcStateStore @ toMessages timeout mTask
-       >>= \(msgs, st1)->set st1 bcStateStore
-       >>| toSDSRecords msgs st1 device
+sendTaskToDevice wta mTask (device, timeout)
+# (msgs, newState) = toMessages timeout mTask device.deviceState
+=      toSDSRecords msgs newState device
        >>= \sdss->updateShares device ((++) sdss)
        >>| sendMessages msgs device
        >>| makeTask wta -1
-       >>= withDevices device o addTask
+       >>= withDevices device o addTaskUpState newState
        @! ()
        where
                sharename i = device.deviceChannels +++ "-" +++ toString i
@@ -30,5 +29,9 @@ sendTaskToDevice wta mTask (device, timeout) =
                        [makeShare wta sdsi sdsval
                        \\{sdsi,sdsval}<-st.sdss, (MTSds sdsi` _)<-s | sdsi == sdsi`]
 
-               addTask :: MTaskTask MTaskDevice -> MTaskDevice
-               addTask task device = {device & deviceTasks=[task:device.deviceTasks]}
+               addTaskUpState :: BCState MTaskTask MTaskDevice -> MTaskDevice
+               addTaskUpState st task device = 
+                       { MTaskDevice
+                       | device
+                       & deviceState=st
+                       , deviceTasks=[task:device.deviceTasks]}