refactoors
[mTask.git] / mTaskSerial.icl
1 implementation module mTaskSerial
2
3 import iTasks
4 import GenEq, StdMisc, StdArray
5 import mTask
6
7 instance serial Code where
8 serialAvailable = embed (c "Serial.available()")
9 serialPrint x = embed (c "Serial.print(" +.+ x +.+ c ")")
10 serialPrintln x = embed (c "Serial.println(" +.+ x +.+ c ")")
11 serialRead = embed (c "Serial.read()")
12 serialParseInt = embed (c "Serial.parseInt()")
13
14 instance serial Eval where
15 serialAvailable = rtrn False
16 serialPrint x = x >>== \a.E \r s.let str = toCode a in (size str,{s & serial = s.serial ++ [str]})
17 serialPrintln x = x >>== \a.E \r s.let str = toCode a + "\n" in (size str,{s & serial = s.serial ++ [str]})
18 serialRead = rtrn undef
19 serialParseInt = rtrn undef
20
21 instance char2int Code where char2int (C f) = C \rw c.f Rd c
22
23 :: SerialObject v t p =
24 { available :: v Bool Expr
25 , print :: (v t p) -> v Int Expr
26 , println :: (v t p) -> v Int Expr
27 , read :: (v Char Expr)
28 }