feat: use task_result to indicate blocking
There should be no spin loops inside of the
interrupts, so this change removes them,
and instead uses a result system that has
WOULD_BLOCK result. When this result is returned,
it is expected there was no side-effect and the
function can safely be reran later.
feat: implement enumeration fully
chore: update pin, exti, delay
fix: fifo has to be volatile
docs: add documentation comments to most functions
feat: implement usb devicd cdc descriptors, init, setup
feat: move all sending instructions to generic send functions
fix: make sure to error if endpoint id not found in interrupt
This generally shouldn't happen,
but it needs to be ensured that the
memory at incorrect place won't be read
or written to!
Otherwise there could be undefined behavior!
This would possibly write to the fifos,
meaning the data the usb sends could be
different than what the application intended!
feat: implement most of enumeration
feat: receive setup packets
feat: implement simple control usb read, writes
fix: into_alternate choose alternate mode
feat: rewrite main to use types
feat: add registers, pin, exti, usb_device skeleton
feat: add support for newlib
feat: toggle led on exti interrupt push button
feat: use cmsis for register definitions