X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=mTask.dcl;h=e8f62f205031794ad8446410b3b8a11898d5ef4e;hb=ff7049a99f7fdd701d49222019df65a9aee8f05a;hp=7d9e976369cda8ff1ba3d73a8ff21dac06a0f1f9;hpb=0d7dc6966d2f428cd7543708e220aa4315d64978;p=mTask.git diff --git a/mTask.dcl b/mTask.dcl index 7d9e976..e8f62f2 100644 --- a/mTask.dcl +++ b/mTask.dcl @@ -14,11 +14,16 @@ todo: imporove setp: >>*. */ -//import iTasks +import GenPrint +import Generics.gCons +import Generics.gdynamic + +import iTasks + import iTasks._Framework.Generic from iTasks._Framework.Task import :: Task import StdClass -import gdynamic, gCons, GenEq, StdMisc, StdArray +import GenEq, StdMisc, StdArray import mTaskCode, mTaskSimulation, mTaskInterpret import mTaskSerial, mTaskLCD @@ -31,6 +36,7 @@ import mTaskSerial, mTaskLCD :: DigitalPin = D0 | D1 | D2 | D3 | D4 | D5 |D6 | D7 | D8 | D9 | D10 | D11 | D12 | D13 :: AnalogPin = A0 | A1 | A2 | A3 | A4 | A5 +:: UserLED = LED1 | LED2 | LED3 :: PinMode = INPUT | OUTPUT | INPUT_PULLUP :: Pin = Digital DigitalPin | Analog AnalogPin @@ -87,6 +93,7 @@ class var2 v where class sds v where sds :: ((v t Upd)->In t (Main (v c s))) -> (Main (v c s)) | type, toByteCode, toCode t con :: ((v t Expr) ->In t (Main (v c s))) -> (Main (v c s)) | type t + pub :: (v t Upd) -> v t Expr | type t class seq v where (>>=.) infixr 0 :: (v t p) ((v t Expr) -> (v u q)) -> (v u Stmt) | type t & type u (:.) infixr 0 :: (v t p) (v u q) -> v u Stmt | type t & type u @@ -125,6 +132,10 @@ class time v where delay :: (v Long p) -> (v Long Expr) millis :: (v Long Expr) +class userLed v where + ledOn :: UserLED -> (v () Stmt) + ledOff :: UserLED -> (v () Stmt) + class pio p t where pio :: p -> v t Upd | aIO v & dIO v instance pio AnalogPin Int instance pio AnalogPin Bool @@ -202,13 +213,12 @@ instance long Eval Long // ----- tools ----- // -derive consName DigitalPin, AnalogPin, PinMode +derive gPrint Pin, Button, UserLED, AnalogPin, DigitalPin, PinMode +derive class gCons Pin, Button, UserLED, AnalogPin, DigitalPin, PinMode instance == DigitalPin instance == AnalogPin -derive consIndex DigitalPin, AnalogPin - tab =: toString (repeatn tabSize ' ') tabSize :== 2