From bab543af77aaa0e99e678582411d14a8066ba2c9 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Sun, 11 Jun 2017 09:43:52 +0200 Subject: [PATCH] make share unique for device --- Devices/mTaskDevice.dcl | 1 + Devices/mTaskDevice.icl | 1 + Shares/mTaskShare.dcl | 1 + Shares/mTaskShare.icl | 3 +++ Tasks/mTaskTask.icl | 17 ++++++++++------- 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Devices/mTaskDevice.dcl b/Devices/mTaskDevice.dcl index dc097f5..bae443e 100644 --- a/Devices/mTaskDevice.dcl +++ b/Devices/mTaskDevice.dcl @@ -25,6 +25,7 @@ derive consName MTaskResource, TCPSettings , deviceError :: Maybe String , deviceChannels :: String , deviceName :: String + , deviceState :: BCState , deviceTasks :: [MTaskTask] , deviceData :: MTaskResource , deviceSpec :: Maybe MTaskDeviceSpec diff --git a/Devices/mTaskDevice.icl b/Devices/mTaskDevice.icl index 0a6ab0f..f4789cc 100644 --- a/Devices/mTaskDevice.icl +++ b/Devices/mTaskDevice.icl @@ -44,6 +44,7 @@ makeDevice name res = get randomInt @ \rand->{MTaskDevice ,deviceTasks=[] ,deviceTask=Nothing ,deviceError=Nothing + ,deviceState=zero ,deviceData=res ,deviceSpec=Nothing ,deviceShares=[]} diff --git a/Shares/mTaskShare.dcl b/Shares/mTaskShare.dcl index 57855c1..2ba97cb 100644 --- a/Shares/mTaskShare.dcl +++ b/Shares/mTaskShare.dcl @@ -6,6 +6,7 @@ import mTask import Devices.mTaskDevice derive class iTask MTaskShare +derive gPrint BCState :: MTaskShare = {withTask :: [String] diff --git a/Shares/mTaskShare.icl b/Shares/mTaskShare.icl index 81ebb8b..43350e1 100644 --- a/Shares/mTaskShare.icl +++ b/Shares/mTaskShare.icl @@ -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 diff --git a/Tasks/mTaskTask.icl b/Tasks/mTaskTask.icl index 27edc82..41741d2 100644 --- a/Tasks/mTaskTask.icl +++ b/Tasks/mTaskTask.icl @@ -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]} -- 2.20.1