►
From YouTube: .NET Design Reviews: GPIO
Description
We took a look at an API proposal for general purpose IO (GPIO). Notes are here:
https://github.com/dotnet/apireviews/pull/66
C
Have
a
chance
of
seeing
what's
happening
on
the
screen
next
time
we
should
bring
popcorn,
it's
almost
like
a
movie
with
you
with
a
boy
movie.
So
let
me
just
quickly
pull
up
the
notes
from
last
time.
So
I
can
ask
you
the
hard
questions
of
like.
Have
you
done
what
you
promised
you?
Would
you
say
that,
but.
E
F
F
C
C
C
Yeah
I'm
just
copying
basics
of
also
don't
forget
it.
It's
the
one
thing
we
talked
about
extensively.
The
last
time
was
the
whole
wait
for
a
bend
pattern.
Have
you
done
any?
Maybe.
F
F
F
One
is
kind
of
like
a
method
that
you're
just
gonna
call
once
because
you're
just
waiting
for
a
specific
event
to
happen
once
and
you
want
to
block
or
you
can
call
it
a
sink,
but
it's
just
a
look
for
one
one
event
of
this
type
and
then
we
want
it
to
also
provide
a
way
of
having
a
callback
so
that
you
would
get
for
every
single
time
that
you
get
an
event
like
that.
You
can
submit
a
callback.
F
So
those
are
our
two
scenarios
we
want
to
support,
so
we
have
four
api's
that
have
to
do
with
the
venting.
We
have
the
way
prevent
that
we
prevent
a
sink,
and
we
have
the
add
callback
for
pin
value
change,
events,
which
is
probably
a
little
bit
verbose,
which
was
the
type
of
it's
the
third
member,
so
add
callback
for
opinion,
value
change
event.
It's
kind.
D
F
So
those
are,
those
are
the
four
methods
that
have
to
do
week.
Inventing
I
bought
a
bunch
of
concerns
last
time,
we're
like
yeah
what
you
call
wait
for
event
you're
blocking,
and
then
you
don't
get
that
event,
because
you
missed
it
because
you
called
wait
for
event
too
late
and
I
I
I
talked
to
Stephen
about
this,
and
we
were
basically
saying
that
it's
okay
for
us
to
have.
You
have
to
press
the
button
again
if
you're
waiting
for
that,
we
see
that.
But
that's
why
you
have
a
timeout.
F
Block
forever,
that's
one
and
the
other
is
we
see
people
like
I've
seen
how
people
use
this
and
the
Python
examples,
and
they
sometimes
use
it
for
kind
of,
like
I,
want
to
wait
to
make
sure
that
everything
is
hooked
up
correctly.
Once
my
program
has
already
started
and
then
I'm
just
gonna
start
looping,
but
before
I
start
looping
I
want
to
like
block
a
little
for
and
wait
for
a
signal
to
say:
okay,
go
on
so
like
a
press
of
a
button
or
something
your.
E
F
We
can
we
can
do
one
thing,
which
is
what
Christoph
suggested,
which
is
while
you're
pulling
on
that
on
that
file
to
see
if
there
was
an
event.
What
you
can
do
is
even
though
you're
passing
in
a
time
out,
we
can
eyeball
for
a
millisecond
so
force
it
to
only
block
for
a
millisecond
and
then
check
again
and
basically
so
have
a
have
a
loop.
That's
checking
every
millisecond
or
it
doesn't.
D
F
A
A
A
On
the
scenarios
that
we
expect
for
the
synchronous
bottom
could
also
imagine
having
a
cancellation
token
there
as
well
like
we.
We
have
like
on
semaphore
slim,
for
example,
on
both
the
wait
and
wait.
A
think
that
that's
they
both
accept
cancellation
token,
so
that
you
can
unblock
both
synchronous
and
asynchronous
waiting.
So.
A
H
H
F
D
A
An
ADD
method
that
returns
some
sort
of
I
disposable.
We
have
both
patterns
in
the
framework
and
so
I
think
it's
a
you
know,
a
judgment
call
about
which
we
go
with
but
right.
This
is
fine.
Yeah.
F
H
F
That's
the
same
thing
that
Stephen
pointed
out
and
I
told
them
well
most
of
the
apps
for
that
are
gonna
consumer
library.
The
way
they're
gonna
look
like
is
very
much
like
an
Arduino
type
of
app
where
you
have
a
set
up,
and
then
you
have
a
loop
that
just
runs
forever
yeah,
so
I
don't
expect
people
to
be
moving
callbacks.
That
much
of
that.
That
often
that's
why
we
didn't
want
to
return
an
object,
but
then
you
have
to
like.
Have
it
someone
that
matches
my
expectation
on
the
right?
F
H
E
We
just
like
turn
like
a
tiny
like
a
lightweight
structure
which
would
reference
back
to
the
GPIO
controller,
so
we
could
think
of
like
an
already,
not
matter
the
indexer
and
which
would
like,
instead
of
instead
of
taking
the
arguments,
you
could
take
the
election.
So
you
can
say
something
like
GPIO
controller
like
say
the
arguments,
and
then
you
can
say
like
something
like
an
index
like.
F
F
C
Something
like
this
and
then
the
the
eternal
the
index
it
would
be,
instructed
just
basically
stores
the
pin
the
event
type
and
as
a
reference
back
to
the
controller
and
then
the
then
you
just
override
the
event,
add
or
remove
just
basic
making.
C
The
question
is:
what
is
the
theme
you're
returning
there
and
like
what?
What
name
do
we
get
there,
but
yeah
I
think
they
like
what
I
don't
like
and
then
at
the
same
reaction
that
Christophe
at
is
I.
Don't
like
this
add
or
remove,
said
parent,
because,
basically
it's
it's
poor
man's
eventing,
like
the
events
already
have
shaken
Lynette,
but
I,
don't
know
how
we
would
we
have
a
is.
Is
part
of.
F
M
H
E
F
F
D
H
B
H
H
H
H
F
F
F
C
G
F
F
H
But
I
mean
if
you,
if
you
called
the
the
property
that
forwards
into
some
transparent
struct,
you
know,
pin
events
which
would
then
had
an
indexer.
Well,
it
was
an
indexed
property
then
like
that
seems
like.
Maybe
it
would
convince
so
you
know,
oh,
that
pin
of
is
my
time,
in
wit,
josub
pin
number
like
$5.00
isin,
plus
equal
yeah
I,
think
it
could
be
done
and
could
look
that
levy
and
discover
me.
Okay,
it's
a
consider.
H
C
C
Think
the
like
my
initial
reaction
to
the
add
or
remove
his
just
I,
don't
find
it
I,
don't
think
it's
particularly
discoverable
either
because
you
kind
of
have
to
know
what
you're
looking
forward
to
begin
with
versus
events
are
something
people
kind
of
know
what
it
is.
Then
you
go
to
the
documentation
like
if
this
is
the
own
section
and
like
you,
depending
on,
but
depending
on
how
people
discover
this,
it
might
be
better
or
worse
right.
E
H
B
M
E
B
F
First
of
all,
one
thing
was
which
I
think
that
this
like
this
morning,
actually
we
made
a
big
improvement
in
there,
but
this
is
the
driver,
so
you
can
think
of
the
controller.
We
actually
have
a
very
similar
case
with
HTTP
client,
but
you
can
think
of
GPIO
controller
is
the
thing
that
user
interacts
with
and
then
the
driver
is
the
one
that
actually
knows
how
to
perform
the
operations.
Could
that
because
that's
board
specific,
so
what
we're
thinking
is.
F
F
So
what
we
were
thinking
is
making
this
GPIO
driver
an
interface
so
that
as
a
lot
of
methods
for
an
interface,
yes,
but
we
were
thinking
of
doing
that,
so
that
we
can
first
of
all
allow
people
that
are
writing
so
quest
for
GPIO
driver
to
extend
from
from
other
parent
classes,
and
the
other
reason
was
so
that
they
can
they
can.
They
can
extend
it
from
at
different
DLL.
F
So
the
we
were
thinking
of
having
an
like
a
world
where
NuGet
packages
would
be
added
for
different
boards
that
we
wanted
to
add
support
for,
and
they
would
just
implement
this
IG
Pio
driver
and
add
support
for
that.
That's
the
way
we
used
to
have
it
now
we
changed
it
to
be
an
abstract
class
with
protected
internal
abstract
methods.
Instead,
because
that
way,
we
will
force
people
to
always
go
through
the
controller,
because
the
controller
will.
F
A
Depends
on
the
default
interface
methods
feature
that
we're
looking
at
Bercy,
sharkbait
and
donna
core
3,
whether
that
actually
lands
or
not
yep
yeah.
So
so
that's
really
not
if
you
wanted.
If
you
wanted
this
for
a
you
know,
a
portable
thing
that
didn't
require
the
new
versions,
then
yeah,
that's
like
one
of
the
big.
A
There
are
several
reasons
you
go
for
an
abstract
class
instead
of
an
interface
a
if
you
care
about
the
difference
in
performance,
which
is
probably
not
relevant
here,
B,
if
you
care
about
the
ability
to
add
to
it,
which
may
be
relevant
here
and
three
or
C
whatever
I
was
using.
If
you
want
to
have
default,
ánewá
functionality
with
implementation,
so
you
wanted
to
have
you
know
several
abstract
methods
and
then
a
virtual
method
or
several
abstract
methods
and
the
non
virtual
that
you
added
some
functionality
and
called
them
right.
F
C
C
A
F
D
F
B
H
Also
describe
to
me
that
the
controller,
at
least
this
sets
up
for
the
controller
to
be
inputs
and
any
validation,
and
now
the
driver
is
considered
as
if
it's
calling
a
protected
member.
So
the
all
of
the
implementers
of
these
don't
don't
need
to.
There
should
be
some
basic
validation
that
they
can
assume,
that's
been
done
and
they
don't
right.
N
H
D
B
K
A
B
A
D
F
F
F
So
yeah
that's
the
exception,
then
another
thing
that
might
be
interesting
to
get
feedback
on
is
the
first-class
support.
Drivers
we're
providing
in
the
same
well,
I,
don't
know
if
they're
gonna
ship
them
to
sandy
ll.
For
now
they
are,
we
might
think
of.
So,
as
you
can
see
today,
we
have
like
the
humming
board
driver,
the
Windows
driver,
the
UNIX
driver
and
the
Raspberry
Pi
3
driver.
B
F
F
But
anyway,
right
now,
since
they're
in
the
same
DLL,
we
have
them
all
to
be
internal
because
we
don't.
We
are
doing
the
internal
logic
for
you
in
the
factory
methods.
When
you
initialize
a
controller,
we
are
doing
some
parsing
and
we
are
making
sure
that
you're
getting
the
best
one
out
of
those
four.
B
F
B
F
F
B
E
E
Or
like
conversate
a
frank
conversation
we
interact
like
so
did
the
feedback.
The
feedback
here
was
like.
If
we
ever
like
me
to
like,
find
the
user
that
people
actually
need
to
override
it,
then
we
can
always
make
it
public,
but
if
you
make
it
public
right
now,
it's
like
gonna
be
harder
to
remove
them
anything
right,
yeah.
F
E
B
C
H
Exact
right,
the
the
only
scenario
that
I
see
someone
wanting
to
do
based
off
the
types
that
we
have.
That
here
is
you
want
to
ignore
the
specific
driver
and
all
that
of
generic
one,
which
then
like.
Maybe
that
could
be
covered
with
a
you
know,
or
an
extra
an
extra
create
method
which
is
you
know,
use
generic
driver
or
whatever
so
Windows
10
only
uses
the
windows
in
the
dark
driver.
I
think
it's
all
it
needs.
F
F
H
E
Lot
of
something
they
don't
okay
like
if
you
make
them
internal,
this
would
kind
of
make
people
actually
want
to
contribute
and
like
fix
it
into
when
you
fix
it,
it's
like
it's.
It
should
be
simple,
fixed
I
think
we
like
keep
that
in
your
hummingbird
like
shows
up
like
didn't,
percent
and
liked
it
I,
just
like
you
can
go
to
our
code,
contribute
under.
N
C
N
E
C
You
can,
even
if
it's
easier
but
I,
don't
get
it
binary
instantaneously
right,
like
I
accepted,
wait
until
somebody
actually
goes
through
the
motions
of
publishing
and
you
on
like,
like
it's
hard
to
be
like
Oh.
Instead
of
doing
let's,
let's
clone
the
repo,
let's
provide
a
fake,
such
as
new
of
the
other
type
of
positive
directly
like
that's
like
it
to
be
ten
seconds
rather
than
like
half
an
hour
of
work
and
then
an
indistinguishable
number
of
days.
It's
regular
binary.
What.
F
B
M
F
M
F
It
was
more
about
like
new
is
glue.
That
was
just
one
thing
and
the
other
is.
It
was
yeah,
that's
just
what
they
say
for
the
factory
pattern:
okay,
okay,
yeah,
when
you,
when
you
new
up
something
you're
glue,
okay,
guys,
are
tight,
that's
wearing
and
get
control
like
a
factory
method,
but
it's
a
seal
class
that
extends
object
include
to
it
anyway.
F
H
I
F
F
C
Perfection
almost
consistency
with
the
rest,
so
it's
all
looks
uniform
because
everything
else
was
driven
from
factory
methods
at
some
point
with
the
pin
part
of
the
controller
part
and
then
well
you
sorry
she
was
we
talked
about.
Was
the
whole
class
hierarchy
right?
So
there
was
some
at
some
point.
We
talked
about
not
having
the
driver
at
all
just
having
the
controller
items
entirely,
so
you
want
to
be
able
to
change
your
class
hierarchy
and
hide
the
instances.
Factory
makes
sense
and
then
the
third
one
was.
You
know
the
lifetime
management.
C
If
you
don't
want
to
disclose
whether
an
object
gets
created
or
you
have
a
single
non,
your
cache
or
whatever
right
yeah,
give
me
do
always
create
one
now,
given
that
the
class
hierarchy
is
sealed
and
giving
it
you
don't
really
have
any
factories
left
just
turn
it
back
to
yeah
I
mean
if
you
can
get
away
with
just
Miu,
then
it
tends
to
be
better
because
people
know
what
to
do
with
it.
Make
sure
and.
M
H
If
there
are
no
defaults
are
general
overloading
rules
and
order
of
complexity
says
that
you
inflict
driver
and
numbering
scheme
in
that
way,
because
you
go
from
zero
to
numbering
scheme
to
number
your
student
driver.
There
are
times
when
it
makes
sense
to
do
the
other
one
and
if
it's
so
things
to
consider
well.
C
C
B
Events
is
fine
all
of
the
no
losses
but
which
way
like
so
one
is.
You
can
have
the
buffer
right
like
the
filesystemwatcher
once
the
buffer
is
full.
You
start
losing
cuz
the
other
than
processing
enough
or
there's
this
way
here,
where
you
lose
them,
because
you're
in
the
customers,
callback
code
and
you're
losing
events,
because
it's
unbuffered,
but
because
they
because
the
customer
come
back,
hasn't
finished.
It
done
right.
B
F
You
doing
if
you're
doing
wake
prevent
theoretically
you're
only
waiting
for
the
one.
So
you
don't
have
this
problem
if
you're
doing
the
callback,
what
we
do
internally
is,
if
you
register
for
a
callback,
we
do
have
some
sort
of
buffer,
so
you
don't
lose
again.
So
there's
like
a
separate
thread,
that's
listening
in
into
those
and
and
and
then
like.
We
can
definitely
implement
another
thread
that
will
just
check
some
sort
of
queue
or
something
up
like
hey.
F
E
H
G
H
It's
a
sealed
class,
so
if
the
only
time
you're
supposed
to
have
a
finalizar,
if
you're
holding
native
resources
and
then
the
thing,
the
only
thing
they
should
hold
native
resources
now
is
the
safe
handle.
So
when
the
one
object
gets
garbage
collected,
it
would
lose
its
reference
to
a
safe
handle
and
the
safe
handle
would
then
get
finalized
in
what
state
handles
finalize.
What
would
be
with
it?
That's.
D
F
H
H
We
so
we
always
have
a
composition
problem
when
disposable
things
are
passed
in
a
constructor.
If
you
pass
snow
for
the
driver,
then
clearly
the
controller
owns
the
driver
that
it
built.
If
you
pass
your
own
I,
assume
we're
disposing
it
and
dispose
that
can
just
be
solved
with
docks,
because
I
can't
think
of
the
reason
that
you'd
want
to
use
one.
After,
of
course,
people
said
that,
with
all
the
screen
types
too
and
then
all
the
streams
have
a
now
have
a
leave
open,
parameter
yeah.
H
I
M
F
J
B
B
C
C
M
F
B
C
J
F
For
I
to
see
this
is
pretty
basic,
you
have
it
kind
of
a
echoes
what
you
have
in
GPIO
in
a
way.
So
you
have
this
connection
settings
class
that
will
just
represent
the
specific
like
which
address
am
I
connected
to
well,
which
device
address,
do
I
have
and
what's
the
boss,
ID
I'm
connected
to,
and
so
in
the
interface
I
to
see
device
that
just
represents,
like
yeah
like
like
something
that
can
interact
with
we're.
F
Gonna
have
how
it's
gonna
look
in
the
end
code
is
you're,
gonna
have
for
a
sensor,
and
the
sensor
is
gonna.
Let's
say
that
it
supports
us
both
SPI
and
i2c,
so
that
sensor
library
will
have
an
i2c
device
and
it
will
have
an
SPI
device
and
depending
on
which
protocol
you
hooked
it
up
to
your
PI
or
whatever
board.
You
have
you've
been
calling
either
the
i2c
device
methods
or
the
SPI
device
method.
B
Why
don't
we
have
some
some
things
other
than
just
a
friend
bytes,
and
it's
like
we
have
like
display
boards
that
you
know
display
a
string
of
text
and
things
and
so
I
know
like
you
can
do
that
with
this
via.
If
people
have
to
cast
it
to
ask
you
values
and
then
pass
the
character
at
a
time,
one
make
sure.
F
D
F
F
Across
right,
yeah
right
so
yeah,
usually
most
of
i2c
devices.
The
way
they
work.
If
you
look
at
their
data
sheets,
are
just
registers
and
they
they
are
different
sizes
and
then,
depending
on
the
size,
you
either
read
or
write
into
those
registers.
So
you
never
really
deal
with
like
characters,
ASCII
characters
or
anything.
So
for
me,
like
this,.
E
E
How
are
you
actually
writing
those
integers
so
like
but
like
if
you
make
it
like
a
stream
or
just
read
and
like
only
to
read
and
write
and
then
maybe
like,
provide
some
implementation
which,
like
ends
up
being
a
stream
in
the
end
like
so
something
like
I,
just
see
stream,
or
something
like
that,
then,
which
like
takes
T
this
thing,
which
only
in
first
act.
We
denied
simplify
that.
Why.
F
A
D
H
N
H
A
C
Because
then
you
compose
with
everything
else,
because
realistically
what
you
have
underlying
is
is
just
you
can
reap
Isaac
and
right
by
it,
but
that's
exactly
what
stream
does
so
like
I
would
think
he
UNIX
I
to
see
device
would
have
open,
read
and
it
gives
you
back
a
readable
stream
and
you
have
open
for
ride.
It
gives
it
back
to
write
about
stream,
and
then
you
can
do
whatever
you
want
to
do
like
we
have
all
the
spy
novels
in
the
world.
C
You
can
you
can
you
can
you
can
pass
it
to
a
binary
reader?
If
you
want
to
just
read
a
few
ins
or
whatever
right
and
then
you
don't
have
to
do
any
of
that,
the
only
thing
you
have
to
do
is
implement
stream.
That
writes
to
your
device
and
that's
it.
Otherwise,
it's
a
never-ending
thing
of
like
adding
more
over
loads
of
we
derive
from
stream.
F
M
C
I
mean
one
thing
you
could
do.
Is
you
could
just
completely
remove
this
one
or
this
replace
this
one
with
an
abstract
base
class?
You
could
potentially
hide
this
one
and
make
this
effect.
Your
method
here
that
just
gives
you
back
this
guy,
similar
to
the
other
founded
you
that
you
had,
or
you
just
say
screw
it
in
this
guy
is
a
is
a
virtual
base
class,
meaning
your
virtual
methods,
but
you
can
soon
you
it
out,
and
then
you
just
have
one
type
that
represents.
D
I
H
B
B
F
That
you
have
a
little
bit
more
stuff.
You
can
configure
like
the
clock
rate
yeah
and
some
of
the
like
there
there's
just
a
little
bit
different
things
than
you
configure,
and
the
difference
in
SPI
is
that
you
have
that
extra
pin
that
you
have
to
keep
around
and
that's
to
the
chips
left
right.
The
chip
select
pin.
So
that's
the
one
that
you
drop.
B
F
L
C
F
So
it's
kind
of
like
how
do
you
call
that
language
code
Morse
code
yeah
it's
a
little
bit
like
Morse
code
but
anyway,
when
the
different
modes
are
is
two
modes
will
which
I
believe
are
zero
and
more
2
means
that
the
value
is
like
the
ticks
are
when,
when
the
clock
is
on
one
not
on
zero,
and
it's
called
see
like
that,
variable
is
called
see,
fog
or
yeah,
clock,
Larry,
or
something
and
and
then
mode
1
and
mode
like
they.
They
use
the
other.
D
F
Same
clock
on
and
off
and
the
other,
the
other
variable
is
the
clock
face,
which
means
the
ticks:
will
they
come
half
a
tick
after
the
pulse
it's
registered,
so
if
the
pulse
is
1
or
0?
Well,
the
value
be
like
half
a
second
off
faced
from
from
my
poles
or
it
will
it
be
at
the
time
of
my
clothes.
What.
E
So
again
like
one
is
like,
so
basically,
one
bit
is
controlling
if
you're
getting
the
inputs
like
in
the
middle
or
one
is
in
the
beginning
and
the
other
one
is.
Is
it
high
or
low,
except
you
could
make
this
flux
and
add
those
option
there
and
make
them
of
0
I
wanted
to
like
do
bit
most
of
those
too.
E
So
like
so
like
leave
mode
0,
1,
2,
3
and,
like
others
like,
because
they
are
kind
of
spider
names,
yeah
lame.
But
you
can
also
and
other
things
like,
like
whatever
the
names
for
those
two
variables
merrily.
E
E
D
M
D
E
H
F
So
yeah,
that's
so
the
only
thing
different.
If
you
see
is
the
connection
settings,
it
has
a
little
bit
more
stuff.
It
has
the
it
doesn't,
only
have
the
bus
ID,
but
it
also
has
the
chip
select
line.
It
has
the
clock
frequency.
It
has
the
length
of
the
data
that
you've
got
a
descending
or
you're
going
to
be
taking
and
the
mode
you're
operating,
but
other
than
that.
It's
the
exact
same
thing.
If
you
see
the
interface,
it
has
the
same
numbers,
the
same
values,
so
I
guess
I.
C
B
C
B
C
C
L
C
C
B
D
F
B
Writing,
but
when
we
support
reading
is
that
mean
to
these
names
no
longer
work?
Well,
if
we
start
adding
read,
write
mean
sorry:
yeah
Oh
cuz
we're
using
start
yeah.
F
B
L
L
E
L
B
I
M
D
B
C
G
C
2.4
I
have
to
do
that
yeah,
but
I
mean
that
practically
speaking,
WPF
like
was
very
sorry
that
the
winner
of
the
holes
everywhere
very
good
at
the
decision,
but
again
because
it's
just
not
pointing
of
the
hardware
words
like
all
the
hardware
uses
floats.
So
you
have
this
constant
back
and
forth,
especially
bad
for
things
like
vectors.
We
pack
the
whole
thing
and
then
you
want
to
send
it
to
the
graphics
card
and
I
can
you
have
to?
C
Let
me
do
both
conversion
there,
but
I
think
in
general,
like
4matic
from
this
kind
of
stuff,
it
does
matter
I
guess
where
they
go.
We've
seen
as
a
flow
I
mean
the
worst
thing
could
happen.
Is
you?
The
underlying
representation
is
slightly
officer
than
you
have
some
wrong
anyway,
because
under
like.
E
E
F
F
F
B
D
F
C
Mean
that's
the
let's
see
antenna
I,
think
it's
all
fuzzy
I
mean
they
be
using
your
system
because
it
happens
to
be
the
most
of
our
team
publishes
their
stuff
on
all
right,
but
they're,
not
very
consistent
with,
like
the
guidelines
in
general.
My
gaming
system
used
to
be
a
very
simple
definition
like
ships
in
box
right
now,
it's
a
bit
more.
So
what
do
you
want?
Send
you
want
to.
M
E
D
B
F
E
B
F
B
D
F
Said
it's
not
good.
If
you
start
mixing
these
two
wells
of
GPIO
and
PWM,
there
are
two
completely
different
concepts
which
they
both
happen
to
align
in
the
sense
that
they
both
use
the
same
pin.
But
it's
kind
of
like
an
SPI
where
you
use
the
buzz
ID.
You
never
use
the
pin
number
you're
connecting
student
whatever
after
talk,
but.
B
F
M
Kind
of
going
to
the
same
binary
decision,
or
both
best
of
both
decision
here,
we're
here,
you're
specifying
channel
number
versus
channel
object,
yeah,
because
they're
actually
pwm
pin
object
is
what
Windows
uses
and
it's
the
one.
That's
got
the
start/stop
get
activity
duty
cycles,
so
that
could
give
you
cycle
percentage,
wonder
if
we
should
follow
that
a
little
more
closely
yeah.
B
M
M
E
F
F
M
M
F
F
B
D
F
D
B
F
E
F
A
certain
stop
induce,
it
is
two
different
operations
that
you
perform
in
the
hardware
level
like
you
do,
you
do
have
to
set
it
up,
export
the
channel
first,
and
then
you
started
whether
or
not
you
want
to
mix
those
two
together.
Yes,
it
is
this
to
call.
It
was
also
kind
of
like
to
mimic
what
we
do
in
in
GPIO
and
if
in
the
future,
we
want
to
do
what
you
just
said
like
opening
and.
F
K
C
F
B
K
F
F
C
C
D
C
Around
and
then
just
agree
on,
that's
the
name
we
go
after
and
then,
unless
something
drastically
changes
then
I
would
I
would
keep
the
name.
I
mean
I.
Think
we
can
all
agree
that
it's
and
you
get
package
that
it
doesn't
go
into
the
platform,
probably
not
in
the
foreseeable
future.
So
having
this
is
an
idiot
package
makes
sense
to
me.
That's
the
way
we
would
ship
things,
it's
big
enough
to
warrant
being
its
own
package
areas,
and
then
the
question
is
just
you
know
what
platforms
will
become?
M
B
E
M
J
D
B
O
M
I
C
I
L
C
But
if
we
decide
to
go
for
mica,
so
that
would
go
all
the
way
it
would
make
the
picture
and
what
the
Microsoft,
if
I
don't
know,
logo
would
make
the
Microsoft
device
namespace
right,
but
otherwise
I,
don't
really
like
I
mean
I.
Think
this
is
a
discussion
we
should.
We
should
have
whether
we
want
to
ship
in
our
system
or
on
a
Microsoft,
and
the
question
is
like
what
namespace
so.
C
Don't
have
a
hard
wall
that
Sydney's
being
left
aligned.
There
needs
to
be
some
sane
organization
like
if
it's
system
devised
or
low-level
it
seems
reasonable
that
the
system
device,
the
expense
exists
somewhere
right,
but,
like
we
have
this
today
with
systems
or
reflections
or
primitive
systems
or
reflections
or
blah
right
there,
there's
no
namespace
called
primitives
right.
It's
just
it's
like
like
the
prefix
should
exist
as
a
namespace
somewhere
and
the
suffix
is
then
why
you
have
to
spit
it
into
some
sort
of
assembly.
C
C
C
O
E
C
Like
so
when
my
matter
of
feedback
is
like
you
should
you
should
try
to
align
the
naming
in
the
pattern
across
all
the
technologies
that
you
can
like
it's
a
bit
weird
that
some
things
have
driver.
Some
things
have
control,
or
some
things
have.
What
would
the
other
trilogy
I'd
like
to
buy
some
energy
a.
C
Ideally,
you
aligned
and
pattern
wise
so
that
once
people
learn
one
in
space,
they
go
to
the
other.
One
and
I
go
I,
know
it's,
and
that
same
goes
for
whether
you
have
a
constructor
versus
a
factory,
and
if
you
have
a
factory
like
what
do
you
name
it
right
so
that
these
things
gel
and
like
once,
you
know
the
pattern
like
everything
else
just
follows:
I
mean,
of
course
there
will
be
differences,
but.
D
M
E
E
But
the
other
scenario
is
that
you,
you
know
you
get
the
other
VM
with
stuff
which
is
already
connected
and
then
actually
connect
it.
And
then
you
wanna
know:
what's
there
right
I
mean
technically
they
can
add
UI
and
you
can
check
how
it's
connected,
but
like
you,
you
don't
have
to
do
that'll
be
like
13,
I,
think
yeah.