aboutsummaryrefslogtreecommitdiffstats
path: root/samd21-host/TODO.org
diff options
context:
space:
mode:
Diffstat (limited to 'samd21-host/TODO.org')
-rw-r--r--samd21-host/TODO.org34
1 files changed, 34 insertions, 0 deletions
diff --git a/samd21-host/TODO.org b/samd21-host/TODO.org
new file mode 100644
index 0000000..bb8b5b0
--- /dev/null
+++ b/samd21-host/TODO.org
@@ -0,0 +1,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.