import iTasksTTY
import TTY
import qualified Data.Map as DM
+import qualified Data.List as DL
import Utils.SDS
import Utils.Devices
// >>| upd (removeShares d) sdsStore
@! ()
-sendToDevice :: String (Main (ByteCode () Stmt)) (MTaskDevice, MTaskInterval) -> Task ()
-sendToDevice wta mTask (device, timeout) =
- get bcStateStore @ toMessages timeout o toRealByteCode (unMain mTask)
- >>= \(msgs, st1)->set st1 bcStateStore
- >>| toSDSRecords st1
- >>= \sdss->set sdss sdsStore//MTaskShareaddToSDSShare
- >>| sendMessages msgs device
- >>| makeTask wta -1
- >>= withDevices device o addTask
- @! ()
- 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
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 @! ()