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, BCShare derive conses MTaskResource, TCPSettings derive consName MTaskResource, TCPSettings :: Channels :== ([MTaskMSGRecv], [MTaskMSGSend], Bool) :: MTaskResource = TCPDevice TCPSettings | SerialDevice TTYSettings :: MTaskDevice = { deviceTask :: Maybe TaskId ,deviceChannels :: String ,deviceName :: String ,deviceTasks :: [MTaskTask] ,deviceData :: MTaskResource } instance == MTaskDevice class MTaskDuplex a where synFun :: a (Shared Channels) -> Task () manageDevices :: (MTaskDevice (Shared Channels) -> Task ()) [MTaskDevice] -> Task () sendToDevice :: String (Main (ByteCode () Stmt)) (MTaskDevice, MTaskInterval) -> Task () sendMessages :: [MTaskMSGSend] -> (MTaskDevice -> Task Channels) deviceTaskDelete :: MTaskDevice MTaskTask -> Task () deviceTaskAcked :: MTaskDevice Int -> Task () deviceTaskDeleteAcked :: MTaskDevice Int -> Task ()