add task deletion and acknowledgements
[mTask.git] / Devices / mTaskDevice.dcl
1 definition module Devices.mTaskDevice
2
3 from Data.Maybe import :: Maybe
4 import iTasks
5 import Devices.mTaskSerial
6 import Devices.mTaskTCP
7 import mTaskInterpret
8 import Generics.gCons
9 import iTasksTTY
10
11 derive class iTask MTaskDevice, MTaskResource, MTaskMSGRecv, MTaskMSGSend
12 derive conses MTaskResource, TCPSettings
13 derive consName MTaskResource, TCPSettings
14
15 channels :: MTaskDevice -> Shared Channels
16
17 :: Channels :== ([MTaskMSGRecv], [MTaskMSGSend], Bool)
18
19 :: MTaskResource
20 = TCPDevice TCPSettings
21 | SerialDevice TTYSettings
22
23 :: MTaskDevice = {
24 deviceTask :: Maybe TaskId
25 ,deviceChannels :: String
26 ,deviceName :: String
27 ,deviceTasks :: [(String, Int)]
28 ,deviceData :: MTaskResource
29 }
30
31 class MTaskDuplex a where
32 synFun :: a (Shared Channels) -> Task ()
33
34 manageDevices :: (MTaskDevice (Shared Channels) -> Task ()) [MTaskDevice] -> Task ()
35 sendToDevice :: (Map String (Main (ByteCode () Stmt))) String (MTaskDevice, Int) -> Task ()
36
37 deviceTaskDelete :: MTaskDevice Int -> Task ()
38 deviceTaskAcked :: MTaskDevice Int -> Task ()
39 deviceTaskDeleteAcked :: MTaskDevice Int -> Task ()