definition module Devices.mTaskDevice from Data.Maybe import :: Maybe import iTasks import Devices.mTaskSerial import Devices.mTaskTCP import Tasks.mTaskTask import mTaskInterpret import Generics.gCons import iTasksTTY derive class iTask MTaskDevice, MTaskResource, MTaskMSGRecv, MTaskMSGSend derive conses MTaskResource, TCPSettings derive consName MTaskResource, TCPSettings channels :: MTaskDevice -> Shared Channels :: Channels :== ([MTaskMSGRecv], [MTaskMSGSend], Bool) :: MTaskResource = TCPDevice TCPSettings | SerialDevice TTYSettings :: MTaskDevice = { deviceTask :: Maybe TaskId ,deviceChannels :: String ,deviceName :: String ,deviceTasks :: [MTaskTask] ,deviceData :: MTaskResource } class MTaskDuplex a where synFun :: a (Shared Channels) -> Task () manageDevices :: (MTaskDevice (Shared Channels) -> Task ()) [MTaskDevice] -> Task () sendToDevice :: String (Main (ByteCode () Stmt)) (MTaskDevice, Int) -> Task () deviceTaskDelete :: MTaskDevice MTaskTask -> Task () deviceTaskAcked :: MTaskDevice Int -> Task () deviceTaskDeleteAcked :: MTaskDevice Int -> Task ()