started externalizing devices
[mTask.git] / miTaskDevices.dcl
1 definition module miTaskDevices
2
3 import mTask
4 import iTasks
5 import iTasksTTY
6
7 :: Channels :== ([MTaskMSGRecv], [MTaskMSGSend], Bool)
8 :: TCPDevice = {hostname :: String, port :: Int}
9 :: SerialDevice = {settings :: TTYSettings}
10
11 derive class iTask TCPDevice, SerialDevice
12
13 getmTaskDevice :: Task a | mTaskDevice a
14
15 class mTaskDevice a where
16 syncTask :: a (Shared Channels) -> Task ()
17 entermTaskDevice :: Task a
18 viewmTaskDevice :: a -> Task a
19
20 instance mTaskDevice TCPDevice
21 instance mTaskDevice SerialDevice