X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;ds=sidebyside;f=Devices%2FmTaskDevice.icl;h=9b26455a6d0cc2055cf1074e1a27c8d687225217;hb=be3f747f775c05facb8a34cf0baba523401b88fb;hp=a157e0b1681246d6d8d9098cb86b30158bf2923e;hpb=4f7354793be250c86dd0d2fda737312d33d54231;p=mTask.git diff --git a/Devices/mTaskDevice.icl b/Devices/mTaskDevice.icl index a157e0b..9b26455 100644 --- a/Devices/mTaskDevice.icl +++ b/Devices/mTaskDevice.icl @@ -36,7 +36,8 @@ makeDevice name res = get randomInt @ \rand->{MTaskDevice ,deviceTasks=[] ,deviceTask=Nothing ,deviceError=Nothing - ,deviceData=res} + ,deviceData=res + ,deviceSpec=Nothing} getSynFun :: MTaskResource -> ((Shared Channels) -> Task ()) getSynFun (TCPDevice t) = synFun t @@ -91,7 +92,7 @@ viewDevice pf d = forever $ traceValue "viewDevice" >>| anyTask deleteDevice :: MTaskDevice -> Task () deleteDevice d = upd (\(r,s,ss)->(r,s,True)) (channels d) >>| maybe (treturn ()) (flip removeTask topLevelTasks) d.deviceTask - >>| upd (filter ((==)d)) deviceStore + >>| upd (filter ((<>)d)) deviceStore @! () sendToDevice :: String (Main (ByteCode () Stmt)) (MTaskDevice, MTaskInterval) -> Task () @@ -114,7 +115,7 @@ sendToDevice wta mTask (device, timeout) = @! () where sharename i = device.deviceChannels +++ "-" +++ toString i - toSDSRecords st = sequence "" [makeShare wta sdsi sdsbc\\{sdsi,sdspub,sdsbc}<-st.sdss]// | sdspub] + toSDSRecords st = sequence "" [makeShare wta sdsi sdsval\\{sdsi,sdspub,sdsval}<-st.sdss]// | sdspub] addTask :: MTaskTask MTaskDevice -> MTaskDevice addTask task device = {device & deviceTasks=[task:device.deviceTasks]} @@ -140,3 +141,6 @@ deviceTaskDelete dev task = sendMessages [MTTaskDel task.ident] dev @! () deviceTaskDeleteAcked :: MTaskDevice Int -> Task () deviceTaskDeleteAcked d i = withDevices d $ deleteTask where deleteTask d = {d & deviceTasks=[s\\s<-d.deviceTasks | i <> s.ident]} + +deviceAddSpec :: MTaskDevice MTaskDeviceSpec -> Task () +deviceAddSpec d s = withDevices d $ \r->{MTaskDevice | r & deviceSpec=Just s}