definition module Devices.mTaskDevice from Data.Maybe import :: Maybe import iTasks import Devices.mTaskSerial import Devices.mTaskTCP import Utils.SDS 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 , deviceError :: Maybe String , deviceChannels :: String , deviceName :: String , deviceTasks :: [MTaskTask] , deviceData :: MTaskResource , deviceSpec :: Maybe MTaskDeviceSpec } instance == MTaskDevice class MTaskDuplex a where synFun :: a (Shared Channels) -> Task () withDevice :: (MTaskDevice -> Task a) String -> Task a | iTask a startupDevices :: Task [MTaskDevice] connectDevice :: (MTaskDevice (Shared Channels) -> Task ()) MTaskDevice -> Task () manageDevices :: (MTaskDevice (Shared Channels) -> Task ()) [MTaskDevice] -> Task () sendMessages :: [MTaskMSGSend] -> (MTaskDevice -> Task Channels) withDevices :: MTaskDevice (MTaskDevice -> MTaskDevice) -> Task () deviceTaskDelete :: MTaskDevice MTaskTask -> Task () deviceTaskAcked :: MTaskDevice Int Int -> Task () deviceTaskDeleteAcked :: MTaskDevice Int -> Task () deviceAddSpec :: MTaskDevice MTaskDeviceSpec -> Task ()