update device name instead of record
[mTask.git] / Devices / mTaskDevice.icl
index 537a3b9..a99097d 100644 (file)
@@ -7,6 +7,7 @@ import iTasks
 import iTasksTTY
 import TTY
 import qualified Data.Map as DM
 import iTasksTTY
 import TTY
 import qualified Data.Map as DM
+import qualified Data.List as DL
 import Utils.SDS
 import Utils.Devices
 
 import Utils.SDS
 import Utils.Devices
 
@@ -18,7 +19,7 @@ import iTasks.UI.Definition, iTasks.UI.Editor, iTasks.UI.Editor.Builtin, iTasks.
 
 from Data.Func import $
 
 
 from Data.Func import $
 
-derive class iTask MTaskDevice, MTaskResource, MTaskDeviceSpec, MTaskMSGRecv, MTaskMSGSend, BCShare
+derive class iTask MTaskDevice, MTaskResource, MTaskMSGRecv, MTaskMSGSend, BCShare
 derive conses MTaskResource, TTYSettings, BaudRate, Parity, ByteSize, TCPSettings
 derive consName MTaskResource, TTYSettings, BaudRate, Parity, ByteSize, TCPSettings
 
 derive conses MTaskResource, TTYSettings, BaudRate, Parity, ByteSize, TCPSettings
 derive consName MTaskResource, TTYSettings, BaudRate, Parity, ByteSize, TCPSettings
 
@@ -63,7 +64,9 @@ addDevice devices processFun
 connectDevice :: (MTaskDevice (Shared Channels) -> Task ()) MTaskDevice -> Task ()
 connectDevice pf d = let ch = channels d in appendTopLevelTask 'DM'.newMap True
        (pf d ch -||- catchAll (getSynFun d.deviceData ch) errorHandle)
 connectDevice :: (MTaskDevice (Shared Channels) -> Task ()) MTaskDevice -> Task ()
 connectDevice pf d = let ch = channels d in appendTopLevelTask 'DM'.newMap True
        (pf d ch -||- catchAll (getSynFun d.deviceData ch) errorHandle)
-       >>= \tid->withDevices d (\d->{d&deviceTask=Just tid,deviceError=Nothing}) @! ()
+       >>= \tid->withDevices d (\d->{d&deviceTask=Just tid,deviceError=Nothing})
+       >>| upd (\(r,s,ss)->(r,s++[MTSpec],ss)) ch
+       @! ()
        where
                errorHandle e = withDevices d (\d->{d&deviceTask=Nothing,deviceError=Just e})
 
        where
                errorHandle e = withDevices d (\d->{d&deviceTask=Nothing,deviceError=Just e})
 
@@ -93,32 +96,9 @@ 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
 deleteDevice d = upd (\(r,s,ss)->(r,s,True)) (channels d)
        >>| maybe (treturn ()) (flip removeTask topLevelTasks) d.deviceTask
        >>| upd (filter ((<>)d)) deviceStore
+//     >>| upd (removeShares d) sdsStore
        @! ()
 
        @! ()
 
-sendToDevice :: String (Main (ByteCode () Stmt)) (MTaskDevice, MTaskInterval) -> Task ()
-sendToDevice wta mTask (device, timeout) =
-               traceValue "starting to send"
-       >>| get bcStateStore @ toMessages timeout o toRealByteCode (unMain mTask)
-       >>= \(msgs, st1)->traceValue "messages generated"
-       >>| set st1 bcStateStore
-       >>| traceValue "bcstate store updated"
-       >>| toSDSRecords st1
-       >>= \sdss->traceValue "Shares created"
-       >>| set sdss sdsStore//MTaskShareaddToSDSShare
-       >>| traceValue "Shares store updated"
-       >>| sendMessages msgs device
-       >>| traceValue "Messages sent"
-       >>| makeTask wta -1
-       >>= \t->traceValue "Task made"
-       >>| withDevices device (addTask t)
-       >>| traceValue "Tasks share updated"
-       @! ()
-       where
-               sharename i = device.deviceChannels +++ "-" +++ toString i
-               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]}
 
 sendMessages :: [MTaskMSGSend] -> (MTaskDevice -> Task Channels)
 sendMessages msgs = upd (\(r,s,ss)->(r,msgs++s,ss)) o channels
 
 sendMessages :: [MTaskMSGSend] -> (MTaskDevice -> Task Channels)
 sendMessages msgs = upd (\(r,s,ss)->(r,msgs++s,ss)) o channels
@@ -135,6 +115,9 @@ deviceTaskAcked dev i
                ackFirst [t:ts] = if (t.ident == -1)
                        [{t & ident=i}:ts] [t:ackFirst ts]
 
                ackFirst [t:ts] = if (t.ident == -1)
                        [{t & ident=i}:ts] [t:ackFirst ts]
 
+getDevice :: String -> Task MTaskDevice
+getDevice n = get deviceStore @ fromJust o 'DL'.find (\s->s.deviceName == n)
+
 deviceTaskDelete :: MTaskDevice MTaskTask -> Task ()
 deviceTaskDelete dev task = sendMessages [MTTaskDel task.ident] dev @! ()
 
 deviceTaskDelete :: MTaskDevice MTaskTask -> Task ()
 deviceTaskDelete dev task = sendMessages [MTTaskDel task.ident] dev @! ()
 
@@ -143,4 +126,4 @@ deviceTaskDeleteAcked d i = withDevices d $ deleteTask
        where deleteTask d = {d & deviceTasks=[s\\s<-d.deviceTasks | i <> s.ident]}
 
 deviceAddSpec :: MTaskDevice MTaskDeviceSpec -> Task ()
        where deleteTask d = {d & deviceTasks=[s\\s<-d.deviceTasks | i <> s.ident]}
 
 deviceAddSpec :: MTaskDevice MTaskDeviceSpec -> Task ()
-deviceAddSpec d s = withDevices d $ \r->{r&deviceSpec=Just s}
+deviceAddSpec d s = withDevices d $ \r->{MTaskDevice | r & deviceSpec=Just s}