trying to get the sds lenses to work
[mTask.git] / Devices / mTaskDevice.icl
index e05d61b..378a5e3 100644 (file)
@@ -14,6 +14,7 @@ import Utils.Devices
 import GenBimap
 import Devices.mTaskSerial
 import Devices.mTaskTCP
+import Data.Tuple
 import iTasks._Framework.Store
 import iTasks.UI.Definition, iTasks.UI.Editor, iTasks.UI.Editor.Builtin, iTasks.UI.Editor.Common, iTasks.UI.Layout.Default, iTasks.UI.Layout.Common
 
@@ -44,7 +45,8 @@ makeDevice name res = get randomInt @ \rand->{MTaskDevice
                ,deviceTask=Nothing
                ,deviceError=Nothing
                ,deviceData=res
-               ,deviceSpec=Nothing}
+               ,deviceSpec=Nothing
+               ,deviceShares=[]}
 
 getSynFun :: MTaskResource -> ((Shared Channels) -> Task ())
 getSynFun (TCPDevice t) = synFun t
@@ -104,11 +106,18 @@ deleteDevice d = sendMessages [MTShutdown] d
        >>| upd (\(r,s,ss)->(r,s,True)) (channels d)
        >>| maybe (treturn ()) (flip removeTask topLevelTasks) d.deviceTask
        >>| upd (filter ((<>)d)) deviceStore
-       >>| cleanSharesDevice d.deviceName
+//     >>| cleanSharesDevice d.deviceName
        @! ()
 
-sendMessages :: [MTaskMSGSend] -> (MTaskDevice -> Task Channels)
-sendMessages msgs = upd (\(r,s,ss)->(r,msgs++s,ss)) o channels
+sendMessages :: [MTaskMSGSend] MTaskDevice -> Task Channels
+sendMessages msgs dev = upd (realMessageSend msgs) $ channels dev
+
+sendMessagesIW :: [MTaskMSGSend] MTaskDevice *IWorld -> *(MaybeError TaskException (), *IWorld)
+sendMessagesIW msgs dev iworld 
+       = modify (tuple () o realMessageSend msgs) (channels dev) iworld
+
+realMessageSend :: [MTaskMSGSend] Channels -> Channels
+realMessageSend msgs (r,s,ss) = (r,msgs++s,ss)
 
 withDevices :: MTaskDevice (MTaskDevice -> MTaskDevice) -> Task ()
 withDevices a trans = upd (map \b->if (b == a) (trans b) b) deviceStore @! ()