aboutsummaryrefslogtreecommitdiffstats
path: root/samd21-host/TODO.org
blob: bb8b5b0b60e38492713ba37eb3cf9652dfd0efa5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
* Use channel for interrupt -> task messages.
Currently we use a static mut which holds the latest event. This was
done for expediency to try and get somethnig working and this was
working in Arduino. It's also massively wrong in the general case and
overflowing with race conditions.

A channel will allow us to deterministically walk events and make sure
everything's ordered properly.


* Clean up pipe descriptor stuff.
There's a bunch of unsafe functions that can be made safe.

* Some SVD patches needed for SAMD21/51.
There's a lot of `unsafe` code where there shouldn't be, because the
SVD files are lacking.

* Stop passing millis function around.
This is horrible, but currently necessary because there are places
where we need to loop on a timer at it needs to be
hardware-independent.

If the USB host library can be made asynchronouse, we could instead
pass a current timestamp around and use that for delays where
necessary.

As a last resort, there's a countdown timer trait in embedded-hal that
may be useful.

* Tighten up timings on requests.
There are a few timer checks on USB requests, but not necessarily of
the right duration nor subdivided correctly. For instance, the
setup-with-data cycle has requirements on total duration as well as
per-packet duration, but currently we're only using the total.