uart-period := RESOLUTION / BAUD-RATE
uart-start := rmt.Signals 2
// There must always be two signals, and neither must have a period of 0.
uart-start.set 0 --level=0 --period=uart-period - 1
uart-start.set 1 --level=0 --period=1
// A combination of the stop and start signals.
uart-between := rmt.Signals 2
uart-between.set 0 --level=1 --period=uart-period // A stop bit.
uart-between.set 1 --level=0 --period=uart-period // A start bit.
uart-stop := rmt.Signals 2
uart-stop.set 0 --level=1 --period=uart-period - 1
uart-stop.set 1 --level=1 --period=1
// Since we must always have two signals, we use a chunk-size of 2.
uart-00 := rmt.Signals 2
uart-00.set 0 --level=0 --period=uart-period
uart-00.set 1 --level=0 --period=uart-period
uart-01 := rmt.Signals 2
uart-01.set 0 --level=1 --period=uart-period
uart-01.set 1 --level=0 --period=uart-period
uart-10 := rmt.Signals 2
uart-10.set 0 --level=0 --period=uart-period
uart-10.set 1 --level=1 --period=uart-period
uart-11 := rmt.Signals 2
uart-11.set 0 --level=1 --period=uart-period
uart-11.set 1 --level=1 --period=uart-period
uart-start := Signals 1
uart-start.set 0 --level=0 --period=uart-period
encoder := Encoder
--msb=false // UART is LSB first.
--start=uart-start
--between=uart-between
--stop=uart-stop
{
0b00: uart-00,
0b01: uart-01,
0b10: uart-10,
0b11: uart-11,
}
class Pin:
number/int
constructor .number:
operator == other:
if other is not Pin: return false
return number == other.number
hash-code method. That is, if a class has a hash-code member, then the equality and hash-code must agree. If two instances are equal (a == b), then their hash codes must also be equal (a.hash-code == b.hash-code).