X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=Tasks%2FmTaskTask.icl;h=e8282576116ca1f56420a76720048d4078a6dd7a;hb=6d956995e169ae8fd44d62e26e35d499a9660225;hp=d15f8f338515c6f90992a23bc8fa23a80929a095;hpb=acd239b3f29e215ade0b63d5b26b6cf8e8ae0d63;p=mTask.git diff --git a/Tasks/mTaskTask.icl b/Tasks/mTaskTask.icl index d15f8f3..e828257 100644 --- a/Tasks/mTaskTask.icl +++ b/Tasks/mTaskTask.icl @@ -2,11 +2,35 @@ implementation module Tasks.mTaskTask import mTask import iTasks +import Devices.mTaskDevice import iTasks._Framework.Serialization -derive class iTask MTaskTask, MTaskInterval, Main, ByteCode, Stmt, Expr, BC, BCState +derive class iTask MTaskTask, MTaskInterval, Main, ByteCode, Stmt, Expr, BC, BCState, RWST, Identity makeTask :: String Int -> Task MTaskTask -makeTask name ident = get currentDateTime +makeTask name ident = get currentDateTime @ \dt->{MTaskTask | name=name,ident=ident,dateAdded=dt} + +import StdDebug +import StdMisc +sendTaskToDevice :: String (Main (ByteCode a Stmt)) (MTaskDevice, MTaskInterval) -> Task [MTaskDevice] +sendTaskToDevice wta mTask (device, timeout) +| not (trace_tn "compiling task") = undef +# (msgs, newState=:{sdss}) = toMessages timeout mTask device.deviceState +| not (trace_tn "Done compiling task") = undef +# shares = [makeShare wta "" sdsi sdsval\\{sdsi,sdsval}<-sdss, (MTSds sdsi` _)<-msgs | sdsi == sdsi`] += updateShares device ((++) shares) + >>| sendMessages msgs device + >>| makeTask wta -1 + >>= withDevices device o addTaskUpState newState + where + addTaskUpState :: BCState MTaskTask MTaskDevice -> MTaskDevice + addTaskUpState st task device = { MTaskDevice | device & + deviceState=st, deviceTasks=[task:device.deviceTasks]} + +//liftmTask :: String (Main (ByteCode a Stmt)) (MTaskDevice, MTaskInterval) -> Task a +//liftmTask wta mTask (device, timeout) +// = sendTaskToDevice wta mTask (device, timeout) +// >>| wait "waiting for task to return" $ sdsFocus +// >>| treturn